查找分区的扇区大小


24

我回答这个问题假设*.img文件有一个扇区大小512

如何查询设备或设备映像以找到正确的扇区大小?

Answers:


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(从package 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

根据有关sysfs队列文件的文档

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

1
这不适用于任意图像文件。内核应该如何了解它们?
Christian Pietsch 2014年

1
@ChristianPietsch任意图像文件通常安装通过循环设备,所以这为他们工作。只要确保使用loopN而不是即可sdX。不过,从某种意义上说,这是毫无意义的,因为图像文件实际上没有任何扇区,并且此信息只会告诉您当前安装的设备的扇区大小。
罗斯兰

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 KiB。


0

感谢上面的回答,关于fdisk显示物理扇区大小,以及/ sys路径...,但请注意,Lucas在书中提到了FreeBSD...。几乎每个硬盘都将关于扇区大小,因此在linux

/sys/block/sda/queue/hw_sector_size

据我所知,将始终显示512,以获得更好的性能,最好考虑到实际用于硬件逻辑的物理扇区大小。它由fdisk显示,并存在于

cat /sys/block/sdc/queue/physical_block_size 
4096
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.