La taille du secteur physique par défaut de 512 octets est-elle appropriée pour les disques SSD sous Linux?

10

GSmartControl et tout autre outil de ligne de commande (comme fdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) j'avais rapport utilisé la même chose pour mes deux disques:

Sector Size: 512 bytes logical/physical

Il s'agit d'une installation par défaut d'Ubuntu 18.10 (mise à niveau ultérieure vers la version 19.04). Cependant, la stat -fcommande sur les deux disques signale:

Block size: 4096       Fundamental block size: 4096

Mes deux disques sont des SSD et les disques SSD AFAIK nécessitent une taille de secteur de 4K . Est-ce que ça va ou est-ce que je manque quelque chose? Les informations renvoyées par stat(= 4K) garantissent-elles que le système d'exploitation enverra toujours des E / S au disque en plusieurs 4K et que ces blocs ne franchiront jamais les frontières 4K (les blocs d'E / S seront toujours alignés sur 4K)?

Veuillez noter la sortie suivante ( sdb2est ma partition racine , sdaest mon /homedisque):

# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....

Device       Start       End   Sectors  Size Type
/dev/sdb1     2048   1050623   1048576  512M EFI System
/dev/sdb2  1050624 500117503 499066880  238G Linux filesystem

# df / /home
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      244568380  17799136 214276188   8% /
/dev/sda       479670976 129685112 325550152  29% /home
FedonKadifeli
la source
Oui. Il contient des informations utiles. Mais, je n'ai pas trouvé de réponse faisant autorité à la question: les informations renvoyées par stat (4K) garantissent-elles que le système d'exploitation enverra toujours des E / S au disque en plusieurs 4K et ces blocs ne dépasseront jamais les limites 4K (les blocs IO seront toujours être aligné sur 4K)?
FedonKadifeli
Je ne sais pas ce qu'est "stat (4K)". Mais la plupart des systèmes d'exploitation modernes savent comment gérer les transferts d'E / S 4K natifs. Et non, cela ne signifie pas que les blocs ne franchiront jamais les limites 4K sur le disque à moins que les partitions ne soient correctement alignées. Utilisez fdisk -lpour vérifier les problèmes d'alignement. Et apparemment, le travail des SSD est légèrement différent, en raison de leur construction physique, mais je ne suis pas un expert dans ce domaine.
heynnema

Réponses:

7

Autrefois, les secteurs de 512 octets étaient la norme pour les disques. Le système utilisé pour lire / écrire des secteurs un seul secteur à la fois, et c'était le mieux que les anciens disques durs pouvaient faire.

Maintenant, avec des lecteurs modernes si denses, si rapides et si intelligents, les secteurs de lecture / écriture ne ralentissent vraiment qu'un seul secteur à la fois.

L'astuce était ... comment accélérer le débit total, tout en conservant la compatibilité avec les sous-systèmes de disques anciens / standard? Vous créez une taille de bloc de 4096 composée de huit secteurs physiques de 512 octets. 4096 est maintenant le transfert de lecture / écriture minimum vers / depuis le disque, mais il est transféré dans des mandrins de 512 octets compatibles avec le système d'exploitation.

Cela signifie que même si le système n'a besoin que d'un seul secteur d'informations de 512 octets, le lecteur lit huit secteurs de 512 octets pour les obtenir. Si toutefois le système a besoin des sept secteurs suivants, il les a déjà lus, donc aucune E / S disque ne doit se produire ... d'où une augmentation de la vitesse du débit total.

Les systèmes d'exploitation modernes peuvent tirer pleinement parti des tailles de blocs 4K natives des disques modernes.

heynnema
la source
+1 mais 4096/512 = 8, donc je pense qu'il devrait y avoir 8 secteurs (logiques) de 512 b dans un secteur physique de 4096 b. J'utilise partedpour montrer à la fois la taille du secteur logique et physique.
sudodus
@sudodus Bonne prise. Montage effectué.
heynnema
C'est pourquoi il est important d'aligner vos partitions sur une limite de 4k, sinon chaque chargement / stockage de bloc de 4k touche en fait deux secteurs matériels. (Les systèmes de fichiers à l'intérieur des partitions utilisent souvent des blocs de 4k alignés au début de la partition). Certains outils de formatage alignent la première partition de 1 Mo, laissant un MiB entier inutilisé à l'exception de la table de partition. Les lecteurs modernes ne rendent compte de leur taille du secteur physique 4K, séparé de la taille de leur secteur logique qui est encore 512B.
Peter Cordes
@PeterCordes, Non seulement le secteur de démarrage et la table de partition (dans les 512 premiers octets) sont stockés dans le premier Mibibyte. Dans une table de partition MSDOS, grubmet du code supplémentaire dans le premier Mibibyte pour démarrer en mode BIOS. (Dans un GPT, a grubbesoin d'une petite partition avec le bios_grubdrapeau pour que ce code démarre en mode BIOS).
sudodus
4

Selon Wikipedia, "Advanced Format (AF) est tout format de secteur de disque utilisé pour stocker des données dans des lecteurs de disque qui dépasse 512, 520 ou 528 octets par secteur, tels que les secteurs de 4096 octets d'un lecteur de format avancé (AFD)." Le format avancé (AF) est un format de disque qui utilise nativement une taille de secteur de 4 096 octets au lieu de 512 octets. Pour conserver la compatibilité avec les systèmes hérités, les disques AF émulent une taille de secteur de 512 octets.

J'ai obtenu les mêmes résultats que vous avez obtenus en exécutant stat -fet smartctlsur deux SSD. Les deux SSD ont été automatiquement reconnus par le système d'exploitation lors de leur installation et n'ont nécessité aucune configuration, il semble donc que les données que vous avez obtenues correspondent aux paramètres par défaut pour la taille de bloc et la taille de secteur.

Karel
la source
@heynnema Je ne peux rien faire pour les "secteurs à 4096 octets" car il est copié à partir de Wikipédia, donc je dois le laisser tel qu'il est dans Wikipédia.
karel
2
@heynnema: La taille physique est beaucoup plus grande. Les SSD sont construits à partir de la mémoire flash NAND, "qui est physiquement partitionnée en soi-disant" blocs d'effacement ". Ceux-ci peuvent être beaucoup plus grands, 4 Mo sont certainement possibles.
MSalters
1

La taille du secteur physique par défaut de 512 octets est-elle appropriée pour les disques SSD sous Linux?

Mes deux disques sont des SSD et les disques SSD AFAIK nécessitent une taille de secteur de 4K. Est-ce que ça va ou est-ce que je manque quelque chose?

Les anciens matériels et systèmes d'exploitation utilisaient des secteurs de 512 octets, depuis 2011 (presque) tout le matériel de stockage a des secteurs de 4096 octets (ou plus ); mais certains matériels prennent en charge l'émulation de secteurs de 512 octets pour les systèmes hérités. Il existe des exceptions, le SSD Samsung 840 EVO a des blocs de taille 2048 Ko .

Un code de correction d'erreur (ECC) est calculé pour chaque bloc de 512 octets et, comme vous pouvez l'imaginer, les données ECC nécessitent également de l'espace de stockage. Il va sans dire qu'un secteur de 4096 octets nécessite moins d'informations ECC que huit blocs de 512 octets si les algorithmes ECC restent inchangés. En fin de compte, la capacité de stockage totale d'un disque dur augmente en raison de la surcharge de données ECC.

L'utilisation de secteurs 4K est logique d'un point de vue architectural, car d'autres chiffres clés (comme les pages de mémoire x86 et de nombreux clusters de systèmes de fichiers) utilisent également la taille de 4 Ko. Le format avancé permet des algorithmes ECC plus robustes, ce qui est important compte tenu des capacités toujours croissantes. Les contrôleurs utilisent des techniques supplémentaires au-delà de la correction d'erreurs grâce à une compréhension des caractéristiques d'erreur de la mémoire flash NAND et du comportement de la charge de travail.

Le format avancé (AF) est tout format de secteur de disque utilisé pour stocker des données sur des disques magnétiques dans des disques durs (HDD) qui dépasse 512, 520 ou 528 octets par secteur, tels que les 4096, 4112, 4160 et 4224 octets ( 4 Ko) secteurs d'un lecteur de format avancé (AFD). Des secteurs plus grands permettent l'intégration d'algorithmes de correction d'erreurs plus solides pour maintenir l'intégrité des données à des densités de stockage plus élevées.

Pour les disques SCSI (SAS), la taille du bloc RAID est supérieure à la taille d'un bloc JBOD en raison des champs d'intégrité des données normalisés SCSI T10 ainsi que de la vérification logique des blocs défectueux stockée sur chaque bloc contenant les données. Les adaptateurs SAS RAID prennent en charge des blocs de disques basés sur 512 octets de données ou 4K octets de données. La taille de bloc RAID pour les 512 disques est de 528 octets par secteur et la taille de bloc RAID pour les disques 4K est de 4224 octets par secteur.

Parce que vous écrivez dans la mémoire et non dans une taille de secteur physique de disque en rotation, cela a moins d'effet que de garantir que vos partitions sont alignées avec la taille du bloc d'effacement . Néanmoins, il est préférable d'avoir des logiciels et du matériel à jour et d'utiliser la taille du secteur 4K.

La plus grande taille de secteur est recommandée par Intel - « Gain Optimal Performance by Changes to SSD Physical Sector Size ».

Rob
la source