Respondí esta pregunta , suponiendo que el *.img
archivo 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?
Respondí esta pregunta , suponiendo que el *.img
archivo 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?
Respuestas:
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
De acuerdo con la documentación de los archivos sysfs de la cola :
# cat /sys/block/sda/queue/hw_sector_size
512
loopN
lugar 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.
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.
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