Solid State Disk et Advanced Format
Optimalisation des partitions
SSD • AF
Root » Serveurs » Electro-ménager » Ordinateurs » Disques durs » Advanced format, SSD et partitions

Les disques durs classiques (jusqu'il y a quelques années...) traitaient tous les blocs de manière identique. Mais les disques durs modernes utilisent un nouveau format (appellé Advanced Format) qui regroupe 8 blocs consécutifs (4kb). Les disques SSD travaillent également avec 8 blocs consécutifs. Il y a donc tout intéret à optimaliser le système pour tenir compte de ces particularités!
-

-

Advanced Format et SSD


Une simple opération d'écriture d'un bloc de 512 bytes produit une opération de lecture-modification-écriture qui "coûte" une rotation du disque dur, donc environ 10 millisecondes.
Un disque avec deux partitions mal alignées


L'écriture d'un bloc de la bonne grandeur (4096 bytes), mais placé dans une partition mal-alignée produit également une opération de lecture-modification-écriture qu'on aurait pû éviter en positionnant mieux les partitions.



Avant positionnement correct des partitions


Après le repositionnement correct des partitions


Partition non-alignée


Partition correctement alignée


msinfo32

Quel est en fait le problème? Les disques durs modernes regroupent 8 blocs consécutifs de 512 bytes (les secteurs commes nous les connaissons depuis des décennies). L'accès s'effectue à partir d'un bloc de 4096 bytes, même si le système d'exploitation ne demande qu'un bloc de 512 bytes (les nouveaux disques sont totalement compatibles avec les systèmes d'exploitation, dont les plus anciens ne connaissent pas l'organisation en blocs de 4096 bytes).

L'Advanced Format et les formats qui l'ont précédés sont décrits sur cette page.

Tant que l'ordinateur se contente de lire des blocs, il n'y a pratiquement pas de différence entre la lecture d'un bloc classique de 512 bytes ou celui d'un bloc de 4096 bytes. Dans les deux cas, le disque lit tout un bloc physique (de 4096 bytes), mais dans le premier cas, seul 512 bytes sont effectivement transférées à l'ordinateur.

La situation devient différente quand il faut écrire des données. Supposons une écriture d'un bloc de 512 bytes. Avec une organisation classique avec des blocs de 512 bytes, pas de problème, le bloc est simplement écrit sur le disque dur à la place de l'ancien. Par contre, quand ce même bloc de 512 bytes doit être écrit dans un disque qui utilise une organisation de 4096 bytes, il faut d'abord lire le bloc en mémoire (4096 bytes), modifier 512 bytes, recalculer le code d'erreur (ECC: error correcting code) et puis réécrire les 4096 bytes. L'écriture d'un bloc de 512 bytes est donc au moins 2× plus lent avec un disque qui utilise l'Advanced Format. Lors de l'écriture, il faut attendre que le secteur repasse sous les têtes, ce qui demande plusieurs millisecondes.

Mais on peut éliminer ce problème. Tout d'abord, tous les systèmes d'exploitation travaillent avec des clusters, c.à.d. un groupe de blocs contigus. En effet, le nombre de blocs devient si important, que sa gestion par le système d'exploitation devient beaucoup trop complexe. Le système d'exploitation utilise donc des clusters de 4k (8 blocs qui se suivent), tout comme les disques durs modernes.

Le problème causé par les partitions mal-alignées

Les partitions sont expliquées ici

Est-ce que tous les problèmes sont résolus? Non: il en reste un, et il est de taille. Il était de coutume de commencer une partition à partir du bloc 63. Il y a une raison historique pour cela, mais cela nous mènerait trop loin que de vouloir en donner l'explication technique. Sachez que le début du disque contient du code de démarrage (master boot record et boot sector). Donc même si le système d'exploitation utilise des blocs de 4096 bytes comme le disque, les deux blocs ne correspondent pas physiquement.

La situation est tout aussi grâve comparée à la situation précédente. Ici il faut effectuer l'opération sur deux blocs de 4096 blocs consécutifs. L'écriture sur un disque dont les partitions sont mal alignées est donc également 2× plus lent. Il faut que les secteurs à modifier passent deux fois sous les têtes, ce qui demande en moyenne 10ms par opération.

Si les disques durs magnétiques souffrent surtout de la perte de temps (lecture-modification-écriture), les disques SSD sont eux limités en ce qui concerne le nombre maximal d'opérations d'écriture. Si une partition est mal alignée, la modification d'un cluster (bloc logique) correspond à l'écriture de deux blocs sur le SSD. Si le système écrit surtout des petits fichiers ou des fichiers fragmentés (blocs non consécutifs) ces opérations d'écriture mal alignées réduisent l'espérance de vie du disque de 50%!

Les deux tableaux à droite ("before" et "after") montrent la différence avec une partition non-alignée (en haut) et correctement alignée en bas. S'il n'y a pratiquement pas de différence pour les opérations de lecture, la différence est notable pour les opérations d'écriture.

  • L'écriture séquentielle passe de 164 à 208MB/sec
  • L'écriture aléatoire passe de 4975 à 15500 opérations par seconde
Il va de soit que les routines d'optimalisation du firmware du disque dur jouent également, ce qui explique le nombre élevé d'opérations d'écriture: le disque dur est en mesure de garder les opérations dans une mémoire-tampon, ce qui fausse un peu la mesure.

Notez que la plupart des disques durs ont des routines pour réduire cet overhead (le firmware maintient les blocs en mémoire-tampon sur le disque pour réduire le nombre d'opérations). Mais n'empèche, il est possible de faire mieux! Mon ordinateur démarre complètement en 15 secondes quand la partition de démarrage est alignée correctement (il faut 35 secondes si la partition n'est pas alignée correctement).

Il existe de nombreux utilitaires qui permettent de voir l'alignement des partitions d'un disque dur. L'exemple montre deux disques durs (à chaque fois la première partition du disque est montrée). Le premier exemple montre une partition DOS classique, donc mal alignée. Le second exemple montre une partition correctement alignée. La valeur 2048 tient compte des nouvelles technologies: aussi bien le Advanced Format classique qui utilise des blocs de 4k (comme les SSD) que le Advanced Format II qui utilise des blocs de 1MB (2048 * 512 = 1.048.576).

Après alignement, chaque partition du disque (s'il a plusieurs partitions) commence à une adresse qui est un multiple de 2048 blocs.

Il n'est pas possible de commencer une partition sur le bloc 0 (en théorie une adresse valable) parce que les deux premiers blocs sont toujours réservés pour l'identification.

La place perdue par l'alignement des partitions est vraiment minuscule en comparaison du gain de temps qui est possible (1 MB, soit la taille d'une seule photo au format JPEG).

Si on utilise des partitions logiques, un nouveau problème apparait: ce n'est pas la partition primaire qui sert de conteneur qui doit etre alignée, mais les partitions logiques présentes dans le conteneur. Tant qu'on ne place pas plus de 4 partitions sur un disque dur, on a intérêt à utiliser des partitions primaires.

Il existe des utilitaires comme Partition Magic Lite qui permettent d'aligner automatiquement les partitions (les trois derniers PrintScreen proviennent de cet utilitaire). Cet utilitaire peut déterminer le placement de toutes les partitions (une partition est un conteneur) mais ne peut déplacer que les partitions windows (puisqu'un déplacement équivaut à une légère réduction de taille). Quand on réduit la taille de la partition, il faut en modifier la structure. Unix dispose d'utilitaires identiques comme Gparted.

Erase Block Size

On retrouve sur certains forums de discussion le terme Erase Block Size. Un SSD travaille de façon particulière et il n'est pas possible d'effacer un seul bloc à la fois. Des visiteurs demandent s'il ne serait pas interessant d'aligner les partitions sur le bloc d'effacement, et non sur le bloc d'écriture (qui a une taille de 4096 bytes).

Malheureusement, la grandeur du bloc d'effacement n'est pas standardisée et dépend de la technologie utilisée par le fabricant. On retrouve des valeurs qui vont de 512kB à 2MB. Certains commentaires soulignent que si les utilitaires alignent les partitions sur 1MB, c'est pour profiter de l'aligmement sur les blocs d'effacement. Cela est faux, car cette taille n'est que très rarement publiée et n'est pas nécessairement de 1MB.

La raison de l'alignement sur 1MB est pour tenir compte des nouvelles normes (Advanced Format II), et non pas pour tenir compte de la taille de l'erase block.

Aucun fabricant de SSD ne publie la taille de l'EBS, car cela n'a en pratique aucun effet sur le fonctionnement du SSD, qui travaille par blocs de 4096 bytes en écriture et lecture. Le système d'exploitation travaille lui aussi avec des clusters de 4096 bytes. Un alignement d'une partition sur une adresse qui est un multiple de 8 secteurs (512 bytes) est parfait. Même si les partitions sont alignées sur le EBS, le système d'exploitation n'en tient pas compte et travaille avec des clusters de 4096 bytes.

msinfo32 (un petit utilitaire fourni avec windows) donne de nombreuses informations sur le système. Il indique également l'offset de chaque partition. Ce système se compose de deux disques durs, le premier ayant une partition, le second en ayant quatre. Les partitions correctement alignées sont indiquées en rouge.

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's