Recherche de la taille de secteur d'une partition

24

J'ai répondu à cette question , en supposant que le *.imgfichier avait une taille de secteur de 512.

Comment interroger un appareil ou l'image d'un appareil pour trouver la bonne taille de secteur?

Stefan
la source

Réponses:

26

fdisk -l (c'est un L plus bas dans le paramètre) vous montrera, entre autres informations, la taille du secteur aussi.

$ 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

Cela montre que la taille du secteur est de 512 octets.

EDIT: Des versions plus récentes fdisk, par exemple, fdisk(du package util-linux 2.20.1), vous montreront également les tailles de secteur logique et physique. Par exemple, sortie pertinente d'un "variateur WDC WD10EFRX 1 To":

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
la source
C'était donc 4096 octets, pas 512 octets.
Hibou57
26

Selon la documentation des fichiers sysfs de file d'attente :

# cat /sys/block/sda/queue/hw_sector_size
512
Anthony Ananich
la source
1
Cela ne fonctionnera pas pour les fichiers image arbitraires. Comment le noyau devrait-il les connaître?
Christian Pietsch
1
@ChristianPietsch fichiers d'images arbitraires sont normalement montés par des dispositifs de boucle, donc cela va travailler pour eux. Assurez-vous simplement d'utiliser loopNau lieu de sdX. Pourtant, c'est plutôt inutile dans un sens, car les fichiers image n'ont pas vraiment de secteurs, et cette information vous indiquera simplement la taille de secteur du périphérique actuellement monté.
Ruslan
1

On peut simplement utiliser la file(1)commande et faire le calcul lui-même. Cela fonctionne même si vous n'avez qu'une image du système FAT.

Par exemple:

$ 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

Cette partition a 64 secteurs par cluster. Le nombre d'octets dans chaque secteur est de 512, car il s'agit de la valeur par défaut, par conséquent, la taille du cluster est de 32 Ko.

Notez que la taille du secteur peut être supérieure à 512 (la spécification FAT la limite à 4096 mais vous pouvez aller plus haut). Lorsque cela se produit, vous verrez un champ supplémentaire "Octets / secteur" dans la sortie.

$ 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

Faites à nouveau la correspondance, 4096 octets × 16 secteurs = 64 Ko par cluster.

Tankman 六四
la source
0

merci les réponses ci-dessus, à propos de fdisk montrant la taille du secteur physique, et à propos du chemin / sys ... mais une note ... par Lucas dans le livre Absolute FreeBSD .... presque tous les disques durs mentiront sur la taille du secteur, donc dans le cas de Linux

/sys/block/sda/queue/hw_sector_size

sera toujours, autant que je peux comprendre, afficher 512 pour de meilleures performances, il est bon de prendre en compte la taille du secteur physique, réel, qui est vraiment utilisé dans la logique matérielle. Il a montré par fdisk, et il présente dans

cat /sys/block/sdc/queue/physical_block_size 
4096
Hex
la source