Encontrar el tamaño del sector de una partición

24

Respondí esta pregunta , suponiendo que el *.imgarchivo tenía un tamaño de sector de 512.

¿Cómo consulto un dispositivo, o la imagen de un dispositivo, para encontrar el tamaño de sector correcto?

Stefan
fuente

Respuestas:

26

fdisk -l (eso es L inferior en el parámetro) le mostrará, entre otra información, el tamaño del sector también.

$ 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

Esto muestra que el tamaño del sector es de 512 bytes.

EDITAR: Las versiones más recientes de fdisk, por ejemplo, fdisk(del paquete util-linux 2.20.1), también le mostrarán los tamaños de los sectores lógico y físico. Por ejemplo, salida relevante de una "unidad 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
Patkos Csaba
fuente
Entonces fue 4096 bytes, no 512 bytes.
Hibou57
26

De acuerdo con la documentación de los archivos sysfs de la cola :

# cat /sys/block/sda/queue/hw_sector_size
512
Anthony Ananich
fuente
1
Esto no funcionará para archivos de imagen arbitrarios. ¿Cómo debe saber el núcleo sobre ellos?
Christian Pietsch
1
@ChristianPietsch archivos de imágenes arbitrarias se montan normalmente a través de dispositivos de bucle, por lo que este será trabajar para ellos. Solo asegúrese de usar en loopNlugar de sdX. Aún así, en cierto sentido no tiene sentido, ya que los archivos de imagen realmente no tienen ningún sector, y esta información solo le dirá el tamaño del sector del dispositivo montado actualmente.
Ruslan
1

Uno puede usar el file(1)comando y hacer los cálculos él mismo. Esto funciona incluso si solo tiene una imagen del sistema FAT.

Por ejemplo:

$ 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

Esta partición tiene 64 sectores por clúster. El número de bytes en cada sector es 512, ya que es el predeterminado, por lo tanto, el tamaño del clúster es de 32 KB.

Tenga en cuenta que el tamaño del sector puede ser mayor que 512 (la especificación FAT lo limita a 4096 pero puede ir más alto). Cuando eso suceda, verá un campo adicional "Bytes / sector" en la salida.

$ 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

Haga el partido nuevamente, 4096 bytes × 16 sectores = 64 KiB por cluster.

Tankman 六四
fuente
0

gracias a las respuestas anteriores, sobre fdisk que muestra el tamaño del sector físico y sobre / sys path ... pero una nota ... de Lucas en el libro Absolute FreeBSD ... casi todos los discos duros mienten sobre el tamaño del sector, por lo que en el caso de Linux

/sys/block/sda/queue/hw_sector_size

siempre, por lo que puedo entender, mostrar 512 para un mejor rendimiento, es bueno tener en cuenta el tamaño del sector físico, real, que realmente se usa en la lógica del hardware. Se mostró por fdisk, y se presenta en

cat /sys/block/sdc/queue/physical_block_size 
4096
Maleficio
fuente