web-dev-qa-db-fra.com

Optimisation de la taille du secteur logique pour la taille du secteur physique 4096 HDD

Avec de nombreux nouveaux disques durs, la taille du secteur physique est de 4096. Serait-il possible de faire en sorte que le système utilise une taille de secteur logique de la même taille, plutôt que la taille de secteur logique par défaut de 512?

Cela accélérera-t-il les lectures et les écritures en masse? Où peut-il être configuré?

23
Matan

512 octets n'est pas vraiment la taille de secteur par défaut. Cela dépend de votre matériel.

Vous pouvez afficher les tailles de secteurs physiques/logiques que votre disque signale via le /sys pseudo système de fichiers, par exemple:

# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512

Quelle est la différence entre ces deux valeurs?

  • Le physical_block_size est la taille minimale d'un bloc que le lecteur est capable d'écrire dans une opération atomique.
  • Le logical_block_size est la plus petite taille que le lecteur est capable d'écrire (cf. la documentation du noyau linux).

Ainsi, si vous avez un lecteur 4k, il est logique que votre pile de stockage (système de fichiers, etc.) utilise quelque chose d'égal ou supérieur à la taille du secteur physique.

Ces valeurs sont également affichées dans les versions récentes de fdisk, par exemple:

# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes

Sur les distributions Linux actuelles, les programmes (qui devraient se soucier de la taille optimale du secteur) comme mkfs.xfs choisira la taille de secteur optimale par défaut (par exemple 4096 octets).

Mais vous pouvez également le spécifier explicitement via une option, par exemple:

# mkfs.xfs -f -s size=4096 /dev/sda

Ou:

# mkfs.ext4 -F -b 4096 /dev/sda

Dans tous les cas, la plupart des variantes de mkfs afficheront également la taille de bloc utilisée lors de l'exécution.

Pour un système de fichiers existant, la taille du bloc peut être déterminée avec une commande comme:

# xfs_info /mnt
[..]
meta-data=                       sectsz=4096
data     =                       bsize=4096
naming   =version 2              bsize=4096
log      =internal               bsize=4096
         =                       sectsz=4096
realtime =none                   extsz=4096

Ou:

# tune2fs -l /dev/sda
Block size:               4096
Fragment size:            4096

Ou:

# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size             4
sys_array_size        97
sectorsize            4096
nodesize              16384
leafsize              16384
stripesize            4096
dev_item.sector_size  4096

Lors de la création du système de fichiers sur une partition, une autre chose à vérifier est alors si l'adresse de début de la partition est réellement alignée sur la taille du bloc physique. Par exemple, regardez le fdisk -l sortie, convertissez les adresses de début en octets, divisez-les par la taille du bloc physique - le rappel doit être nul si les partitions sont alignées.

30
maxschlepzig

Non, ce n'est pas possible, et cela n'aurait pas d'importance s'il l'était. IO se fait généralement en unités d'au moins 4096 octets de toute façon, et généralement beaucoup plus.

2
psusi

Oui, c'est possible, mais cela entraînerait le remplissage du lecteur beaucoup plus rapidement qu'il ne le devrait. Pour les fichiers de moins de 512 Ko, chaque fichier occuperait alors un total de 4 096 Ko (4 Mo) et remplirait le reste du secteur avec des 0 en raison de l'impossibilité pour la plupart des systèmes de fichiers (NTFS et similaires) de permettre aux fichiers de partager des secteurs. La meilleure option pour un système de fichiers serait d'autoriser des tailles de secteur variables, mais cela augmente la taille du MFT (table de fichiers maîtres) et augmente le risque de corruption de données tout en réduisant la capacité de récupérer facilement des données. En d'autres termes, les limites ne seraient pas entièrement connues du logiciel de récupération. Ainsi, bien qu'une taille de secteur logique de 4096 Ko soit géniale pour les gros fichiers, pour un PC à usage quotidien normal, ce n'est qu'un tas de 0. Maintenant, cela dit, il y a la possibilité de stocker des données dans le MFT lui-même lorsqu'il s'agit de données plus petites que la taille du secteur logique. Cela signifie cependant que votre MFT devient énorme et que les données seront écrites deux fois (il y a deux copies du MFT sur votre disque dur). Vous devrez également spécifier la taille maximale du MFT qui peut causer des problèmes lorsque vous atteignez son maximum ou que l'utilisation du lecteur dépasse ce qui serait gratuit pour le MFT. Tout cela est basé sur l'utilisation d'un système de fichiers NTFS. Du côté positif, NTFS vous permet d'utiliser la compression native pour les fichiers au niveau du bloc pour toute taille de secteur logique de 4 Mo ou moins. Cette limitation est appliquée en raison de la façon dont fonctionne la compression NTFS. Les blocs de 4 Mo sont lus et compressés quelle que soit la taille du secteur logique. Cela, bien sûr, ne peut pas se produire pour une taille de secteur supérieure à 4 Mo, car il franchit alors les frontières et perd des données.

Alors, cela clarifie-t-il un peu les choses pour vous?

1
D337z