การหาขนาดเซกเตอร์ของพาร์ติชัน


24

ผมตอบคำถามนี้ , สมมติว่าไฟล์มีเซกเตอร์ขนาด*.img512

ฉันจะสอบถามอุปกรณ์หรือรูปภาพของอุปกรณ์เพื่อค้นหาขนาดเซกเตอร์ที่ถูกต้องได้อย่างไร

คำตอบ:


26

fdisk -l (นั่นคือ L ที่ต่ำกว่าในพารามิเตอร์) จะแสดงให้คุณเห็นถึงขนาดของเซ็กเตอร์เช่นกัน

$ 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

นี่แสดงให้เห็นว่าขนาดของเซกเตอร์คือ 512 ไบต์

แก้ไข: รุ่นที่ใหม่กว่าfdiskเช่นfdisk(จากแพ็คเกจutil-linux 2.20.1) จะแสดงขนาดเซกเตอร์ตรรกะและฟิสิคัลให้คุณเห็นด้วย ตัวอย่างเช่นผลลัพธ์ที่เกี่ยวข้องจากไดรฟ์ "WDC WD10EFRX 1TB":

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

มันคือ 4096 ไบต์ไม่ใช่ 512 ไบต์
Hibou57

26

1
สิ่งนี้จะไม่ทำงานสำหรับไฟล์ภาพที่กำหนดเอง เคอร์เนลควรรู้เกี่ยวกับพวกเขาอย่างไร?
Christian Pietsch

1
@ChristianPietsch ไฟล์ภาพที่กำหนดเองตามปกติจะถูกเมาท์ผ่านอุปกรณ์ลูปดังนั้นสิ่งนี้จะใช้ได้กับพวกมัน เพียงให้แน่ใจว่าจะใช้แทนloopN sdXถึงกระนั้นก็ค่อนข้างไม่มีจุดหมายเนื่องจากไฟล์ภาพไม่มีภาคใด ๆ และข้อมูลนี้จะบอกขนาดเซกเตอร์ของอุปกรณ์ที่ติดตั้งอยู่ในปัจจุบัน
Ruslan

1

หนึ่งสามารถใช้file(1)คำสั่งและทำคณิตศาสตร์เอง สิ่งนี้ใช้ได้แม้ว่าคุณจะมีเพียงภาพของระบบ FAT

ตัวอย่างเช่น:

$ 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

พาร์ติชันนี้มี 64 ภาคต่อคลัสเตอร์ จำนวนไบต์ในแต่ละเซ็กเตอร์คือ 512 เนื่องจากเป็นค่าดีฟอลต์ดังนั้นขนาดคลัสเตอร์คือ 32KB

โปรดสังเกตว่าขนาดเซกเตอร์อาจมากกว่า 512 (ข้อมูลจำเพาะ FAT จำกัด ไว้ที่ 4096 แต่คุณสามารถไปได้สูงกว่า) เมื่อเกิดเหตุการณ์นี้ขึ้นคุณจะเห็นฟิลด์ "ไบต์ / เซกเตอร์" เพิ่มเติมในเอาต์พุต

$ 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

จับคู่อีกครั้ง 4096 ไบต์× 16 ภาค = 64 กิโลไบต์ต่อคลัสเตอร์


0

ขอบคุณคำตอบข้างต้นเกี่ยวกับ fdisk แสดงขนาดเซกเตอร์กายภาพและเกี่ยวกับ / sys เส้นทาง ... แต่ทราบหนึ่ง ... โดยลูคัสในหนังสือ Absolute FreeBSD .... เกือบทุก HDD จะอยู่ที่ขนาดเซกเตอร์ดังนั้นในกรณีของลินุกซ์

/sys/block/sda/queue/hw_sector_size

จะเท่าที่ฉันสามารถเข้าใจได้แสดง 512 เพื่อประสิทธิภาพที่ดีขึ้นเป็นเรื่องดีที่จะคำนึงถึงขนาดเซกเตอร์กายภาพจริงที่ใช้ในตรรกะของฮาร์ดแวร์ มันแสดงให้เห็นโดย fdisk และมันปรากฏตัวใน

cat /sys/block/sdc/queue/physical_block_size 
4096
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.