Menemukan ukuran sektor dari partisi

24

Saya menjawab pertanyaan ini , dengan asumsi bahwa *.imgfile tersebut memiliki ukuran sektor 512.

Bagaimana cara saya meminta perangkat, atau gambar perangkat, untuk menemukan ukuran sektor yang benar?

Stefan
sumber

Jawaban:

26

fdisk -l (itu lebih rendah L dalam parameter) akan menunjukkan kepada Anda, di antara informasi lain, ukuran sektor juga.

$ sudo fdisk -l

Disk /dev/sda: 150.3 GB, 150323855360 bytes
255 heads, 63 sectors/track, 18275 cylinders, total 293601280 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
   /dev/sda1   *          63      208844      104391   83  Linux
   /dev/sda2          208845   209712509   104751832+  83  Linux

Ini menunjukkan bahwa ukuran sektor adalah 512 byte.

EDIT: Versi yang lebih baru fdiskmisalnya, fdisk(dari paket util-linux 2.20.1), juga akan menunjukkan ukuran sektor logis dan fisik. Misalnya, output yang relevan dari "WDC WD10EFRX 1TB drive":

Disk /dev/sdn: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Patkos Csaba
sumber
Jadi itu adalah 4.096 byte, bukan 512 byte.
Hibou57
26

Menurut dokumentasi untuk file sysfs antrian :

# cat /sys/block/sda/queue/hw_sector_size
512
Anthony Ananich
sumber
1
Ini tidak akan berfungsi untuk file gambar sewenang-wenang. Bagaimana seharusnya kernel tahu tentang mereka?
Christian Pietsch
1
@ChristianPietsch file gambar sewenang-wenang biasanya dipasang melalui perangkat loop, jadi ini akan bekerja untuk mereka. Hanya pastikan untuk menggunakan loopNbukan sdX. Namun, ini agak tidak berarti, karena file gambar tidak benar-benar memiliki sektor apa pun, dan info ini hanya akan memberi tahu Anda ukuran sektor dari perangkat yang saat ini dipasang.
Ruslan
1

Orang bisa menggunakan file(1)perintah dan melakukan matematika sendiri. Ini berfungsi bahkan jika Anda hanya memiliki gambar sistem FAT.

Sebagai contoh:

$ sudo file -s /dev/sda5 | tr , '\n'
/dev/sda5: DOS/MBR boot sector
 code offset 0x58+2
 OEM-ID "mkfs.fat"
 sectors/cluster 64
 reserved sectors 64
 Media descriptor 0xf8
 sectors/track 63
 heads 255
 hidden sectors 147632128
 sectors 536870912 (volumes > 32 MB)
 FAT (32 bit)
 sectors/FAT 65536
 serial number 0x9f981691
 unlabeled

Partisi ini memiliki 64 sektor per kluster. Jumlah byte di setiap sektor adalah 512, karena ini adalah default, oleh karena itu, ukuran cluster adalah 32KB.

Perhatikan bahwa ukuran sektor bisa lebih besar dari 512 (spesifikasi FAT membatasi ke 4096 tetapi Anda bisa lebih tinggi). Ketika itu terjadi, Anda akan melihat bidang "Bytes / sektor" tambahan di output.

$ sudo mkfs.fat -S 4096 -s 16 /dev/sda5
mkfs.fat 4.1 (2017-01-24)

$ sudo file -s /dev/sda5 | tr , '\n'
/dev/sda5: DOS/MBR boot sector
 code offset 0x58+2
 OEM-ID "mkfs.fat"
 Bytes/sector 4096
 sectors/cluster 16
 Media descriptor 0xf8
 sectors/track 63
 heads 255
 hidden sectors 147632128
 sectors 67108864 (volumes > 32 MB)
 FAT (32 bit)
 sectors/FAT 4096
 serial number 0xb059d826
 label: unlabeled

Lakukan pencocokan lagi, 4096 byte × 16 sektor = 64 KiB per cluster.

Tankman 六四
sumber
0

terima kasih jawaban di atas, tentang fdisk menampilkan ukuran sektor fisik, dan tentang / sys path ... tapi satu catatan ... oleh Lucas dalam buku Absolute FreeBSD .... hampir setiap hdd akan berbohong tentang ukuran sektor, jadi dalam kasus linux

/sys/block/sda/queue/hw_sector_size

akan selalu, sejauh yang saya mengerti, menunjukkan 512 untuk kinerja yang lebih baik ada baiknya memperhitungkan ukuran sektor fisik, nyata, yang benar-benar digunakan dalam logika perangkat keras. Itu ditunjukkan oleh fdisk, dan hadir di

cat /sys/block/sdc/queue/physical_block_size 
4096
Hex
sumber