Tìm kích thước cung của phân vùng


24

Tôi đã trả lời câu hỏi này , giả sử rằng *.imgtệp có kích thước cung từ 512.

Làm cách nào để truy vấn thiết bị hoặc hình ảnh của thiết bị để tìm kích thước cung cấp chính xác?

Câu trả lời:


26

fdisk -l (đó là L thấp hơn trong tham số) sẽ cho bạn thấy, trong số các thông tin khác, kích thước cung cũng vậy.

$ 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

Điều này cho thấy kích thước cung là 512 byte.

EDIT: Các phiên bản mới hơn của fdiskví dụ, fdisk(từ gói util-linux 2.20.1), cũng sẽ hiển thị cho bạn các kích thước khu vực logic và vật lý. Ví dụ: đầu ra có liên quan từ "ổ đĩa 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

Vì vậy, nó là 4096 byte, không phải 512 byte.
Hibou57

26

Theo tài liệu cho các tệp sysfs hàng đợi :

# cat /sys/block/sda/queue/hw_sector_size
512

1
Điều này sẽ không làm việc cho các tập tin hình ảnh tùy ý. Làm thế nào để hạt nhân biết về họ?
Christian Pietsch

1
Các tệp hình ảnh tùy ý @ChristianPietsch thường được gắn thông qua các thiết bị lặp, vì vậy điều này sẽ làm việc cho chúng. Chỉ cần chắc chắn để sử dụng loopNthay vì sdX. Tuy nhiên, điều này khá vô nghĩa, vì các tệp hình ảnh không thực sự có bất kỳ lĩnh vực nào và thông tin này sẽ chỉ cho bạn biết kích thước khu vực của thiết bị hiện đang được gắn.
Ruslan

1

Người ta chỉ có thể sử dụng file(1)lệnh và tự làm toán. Điều này hoạt động ngay cả khi bạn chỉ có một hình ảnh của hệ thống FAT.

Ví dụ:

$ 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

Phân vùng này có 64 cung trên mỗi cụm. Số lượng byte trong mỗi sector là 512, vì nó là mặc định, do đó, kích thước cụm là 32KB.

Lưu ý rằng kích thước cung có thể lớn hơn 512 (thông số kỹ thuật của FAT giới hạn ở mức 4096 nhưng bạn có thể tăng cao hơn). Khi điều đó xảy ra, bạn sẽ thấy một trường "Byte / sector" bổ sung trong đầu ra.

$ 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

Thực hiện lại lần nữa, 4096 byte × 16 sector = 64 KiB mỗi cụm.


0

cảm ơn các câu trả lời ở trên, về fdisk hiển thị kích thước khu vực vật lý và đường dẫn về / sys ... nhưng một lưu ý ... của Lucas trong cuốn sách Tuyệt đối FreeBSD .... gần như mọi hdd sẽ nói về kích thước khu vực, vì vậy trong trường hợp của linux

/sys/block/sda/queue/hw_sector_size

sẽ luôn luôn, theo như tôi có thể hiểu, hiển thị 512 để có hiệu suất tốt hơn, thật tốt khi tính đến kích thước khu vực vật lý, thực, được sử dụng trong logic phần cứng. Nó được hiển thị bởi fdisk, và nó hiện diện trong

cat /sys/block/sdc/queue/physical_block_size 
4096
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.