Tidak mungkin melakukannya seperti yang Anda gambarkan. Ukuran sektor adalah properti perangkat blok yang tidak dimiliki file secara inheren. File hanyalah urutan dari sejumlah byte tertentu, bagaimana file disimpan adalah detail implementasi...
Jadi jika Anda menginginkan ukuran sektor tertentu, Anda memerlukan perangkat blok. Dan Linux menawarkan perangkat loop hanya untuk tujuan ini, jadi gunakan losetup
untuk membuat perangkat blok virtual yang didukung file dengan ukuran sektor tertentu.
File percobaan:
# dd if=/dev/zero of=empty4k.img bs=4096 count=8192
Perangkat loop reguler:
# losetup --find --show empty4k.img
/dev/loop0
# fdisk -l /dev/loop0
Disk /dev/loop0: 32 MiB, 33554432 bytes, 65536 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Perangkat loop sektor 4096 byte:
# losetup --find --show --sector-size=4096 empty4k.img
/dev/loop1
# fdisk -l /dev/loop1
Disk /dev/loop1: 32 MiB, 33554432 bytes, 8192 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Dalam kedua kasus, file benar-benar identik, properti ukuran sektor disediakan oleh lapisan perangkat loop blok.
bs
diberikan ke dd
hanya memberi tahu seberapa besar buffer seharusnya selama membuat file. Pada akhirnya, file hanya terdiri dari nol-byte, tidak ada informasi tentang penyelarasan.
Anda harus menggunakan parameter khusus untuk fdisk
, yaitu -b
, sesuai dengan man
-halaman dari fdisk(8)
:
-b, --sector-size sectorsize
Specify the sector size of the disk. Valid values are 512, 1024, 2048, and 4096. (Recent kernels know the sector size. Use this option only on old kernels or to override the kernel's
ideas.) Since util-linux-2.17, fdisk differentiates between logical and physical sector size. This option changes both sector sizes to sectorsize.