Você não nos disse qual foi o comando dd que você tentou inicialmente, que falhou. No entanto, passei um pouco de tempo verificando o código-fonte do comando dd (do pacote coreutils) e parece que tivemos um problema aqui.
1852 /* Some devices require alignment on a sector or page boundary
1853 (e.g. character disk devices). Align the input buffer to a
1854 page boundary to cover all bases. Note that due to the swab
1855 algorithm, we must have at least one byte in the page before
1856 the input buffer; thus we allocate 2 pages of slop in the
1857 real buffer. 8k above the blocksize shouldn't bother anyone.
1858
1859 The page alignment is necessary on any Linux kernel that supports
1860 either the SGI raw I/O patch or Steven Tweedies raw I/O patch.
1861 It is necessary when accessing raw (i.e. character special) disk
1862 devices on Unixware or other SVR4-derived system. */
Se você der a mensagem de erro, posso fazer uma pesquisa adicional. Mas para mim foi aqui que fomos atingidos. Isso está alinhando o limite de 512 bytes da página com um limite de 4 páginas KiB não parece certo.
Agora, chegando à segunda parte, você criou a partição da segunda unidade (com fdisk) como tamanho de 512 bytes. No entanto, o tamanho do setor anunciado pela maioria dos discos modernos para o SO é de 1 MiB, ou seja, 4096 KiB.
Na função update_sector_offset do fdisk.c você verá
/*
* Align the begin of partitions to:
*
* a) topology
* a2) alignment offset
* a1) or physical sector (minimal_io_size, aka "grain")
*
* b) or default to 1MiB (2048 sectrors, Windows Vista default)
*
* c) or for very small devices use 1 phy.sector
*/
sector_t x = 0;
if (fdisk_dev_has_topology(cxt)) {
if (cxt->alignment_offset)
x = cxt->alignment_offset;
else if (cxt->io_size > 2048 * 512)
x = cxt->io_size;
}
/* default to 1MiB */
if (!x)
x = 2048 * 512;
sector_offset = x / cxt->sector_size;
* cxt é o descritor para a estrutura fdisk.
Então, essa parte não está clara para mim. Ou seja, se o seu novo disco anunciava o tamanho do setor como 4096 KiB ou 512 bytes.
Agora, chegando à última parte.
Não, os sistemas de arquivos não se importam com o tamanho do setor. E desde que o tamanho do bloco seja 4 KiB, as coisas devem ficar bem, porque, como o tamanho da página virtual (no contexto mm) é de 4 KiB, o IO mmaped precisa estar alinhado com isso. No meu laptop, o tamanho do bloco e o tamanho do setor físico são os mesmos.
$ sudo blockdev --getpbsz /dev/sda
[sudo] password for chakraborty:
4096
$ sudo blockdev --getbsz /dev/sda
4096
IO acontece no contexto do tamanho do bloco, não do tamanho do setor. Se devido ao tamanho do setor físico FS encontra algum problema, eu ficaria muito surpreso. No entanto, o VFS não chega tão longe. O VFS está entre o aplicativo que está emitindo o IO e o sistema de arquivos real. O que estamos discutindo está abaixo da camada VFS.