Mais ils sont où mes octets de mon disque dur ?

Twitter Facebook Google Plus Linkedin email
closeCet article a été publié il y a 5 ans 4 mois 13 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées, les commandes ne sont peut-être plus valides.

J’aurais pu titrer ce billet « Mais ils ne savent pas compter les fabricants ! », mais ça aurait été un peu abusé. En effet, vous avez certainement déjà remarqué des écarts parfois conséquents entre les tailles des disques durs annoncés par les constructeurs, et celle utilisée/utilisable par nos systèmes d’exploitation. Avec des disques qui atteignent les 10To (bonjour la perte quand ça casse), l’écart lui sera bientôt d’1To. Mais pourquoi ? Ben on va voir, c’est tout bête. Euh…

Pas besoin de dire que j’ai fait une faute de français dans le titre, c’est voulu, parce qu’on m’a posé la question telle quelle…

Non pas qu’ils ne savent pas compter, mais les constructeurs vous mentent, pour annoncer de plus gros chiffres. Oui, encore cette histoire de celui qui a la plus grosse. Toujours. Pour être tout à fait honnête, sur le principe ils ne mentent pas vraiment, juste, ils comptent différemment.

Pitié, pas des maths !

Eh si, pas possible d’y échapper, comme dirait David Krumholtz : « Les maths sont partout ». Il est question plus particulièrement de base. Et du fait que nos chers ordinateurs ne comptent pas de la même façon que nous, car pour eux, tout est noir ou blanc. Enfin, pas exactement, mais l’idée est là.

Un monde binaire (ou « c’est quoi une base ? »)

En effet, un CPU est constitué de transistors, qui sont soit ouverts, soit fermés (pour laisser passer ou non le courant électrique), ce qui veut dire qu’il ne travaille qu’avec des 0 et des 1. On parle de chiffres binaires, ou de base binaire (ou encore base 2).

Ah oui, les bases. Vous avez appris à compter avec des chiffres de 0 à 9, soit dix chiffres. On dit donc qu’on travaille en base 10, ou base décimale. En clair, dans un nombre, chaque chiffre correspond à une puissance de 10 (pitié, dites-moi que vous avez encore une idée de ce que veut dire une puissance). Un exemple est plus parlant, avec par exemple le nombre 1982 :

hddbase-decimal2

Vous avez compris ? Comme je l’ai dit, contrairement à nous, un ordinateur ne dispose que des chiffres 0 et 1. Et donc chaque chiffre représentera une puissance de 2 au lieu d’une puissance de 10. Si l’on devait reprendre mon année de naissance utilisée plus haut, ça piquerait un peu plus :

hddbase-binaire2On comprend mieux maintenant pourquoi on utilise des ordinateurs et des systèmes d’exploitation dits « 64 bits » : plus le volume de données est important, plus on a besoin de chiffres pour les représenter.

Et nos disques durs là-dedans ?

Avec une base binaire un kilo-octet (ko) ne correspond plus à 1000 octets, mais à 1024 octets. Pareil, 1méga-octet (Mo) contient 1024 ko, et non pas 1000. Et ainsi de suite. En clair, on utilise plus d’octets pour faire un kilo-octet « informatique » qu’un kilo-octet « standard ». Hors, les fabricants comptent les octets présents sur leurs disques en utilisant la base 10. Donc pour eux 1 ko = 1000 octets. De par leur façon de calculer en binaire, les ordinateurs « consomment » donc plus d’octets que prévus pour représenter un « kilo » ce qui fait qu’au final ils en affichent moins que ce qu’on s’attend à voir.

Pour faire la différence, sous Linux, on utilise la notion de préfixes binaires (kibioctet, gibioctet…) pour différencier le kilo-octet informatique du kilo-octet standard. Et pour votre gouverne, chez Microsoft (sous Windows donc), ils mélangent les deux, à savoir qu’ils affichent des kilo-octets, des méga-octets, mais ce sont bien des kibioctets, mébioctets… qui sont comptés. Un joyeux bordel.

Plus important encore, les tailles de disques durs sont annoncées brutes. Hors, chaque disque nécessite l’utilisation de partitions, qui demandent à être délimitées (et dont il faut une table, qu’il faut bien stocker quelque part), d’un secteur de démarrage, lui aussi dédié, et si on rentre un peu plus, le système de fichiers de chaque partition a besoin de place dédiée à son bon fonctionnement (journal, table des matières). Autant d’octets « réservés » qui ne seront pas utilisables par le commun des mortels.

Le cas particulier des SSD

Les SSD ne sont pas des disques durs mécaniques (pas de plateaux tournants ni de bras de lecture), mais des circuits imprimés constitués de puces de mémoire dites « flash » (dont le contenu n’est pas effacé quand ils sont débranchés, comme les cartes mémoire). Néanmoins, puisqu’on utilise le même système de partitions, et les mêmes systèmes de fichiers, les octets réservés sont là aussi retranchés de la taille qui s’affichera (Windows, Linux, même combat).

Un Samsung 830 les puces à l'air

Un Samsung 830 les puces à l’air

Et particularité de ces bébêtes, qui sera très variable d’un modèle à l’autre, l’over-provisioning (je n’ai pas trouvé de traduction française, libre à vous de me corriger). Dans les SSD, les puces de mémoire ont une durée de vie limitée (pas catastrophique, théoriquement plusieurs années), notamment en nombre de lectures et d’écriture. Pour éviter de perdre l’intégralité des données d’une puce arrivant en fin de vie, le fabricant peut décider de « mettre de côté » une partie de la capacité totale du disque pour remplacer « les vieux ». Par exemple, un SSD affichant une capacité de 240Go aura certainement en réalité 256Go (2⁸ Go, on en revient à la base 2) sur son circuit, les 16Go (2⁴) retranchés servant, en interne, à prendre la relève en cas de signe de défaillance de ce qu’on appelle une cellule (une unité d’écriture au sein des puces).

Conclusion

Promis, j’arrête les maths pour aujourd’hui. Et non, ces histoires de préfixes binaires ne doivent pas vous empêcher de dormir : la majorité des personnes continuent de parler de mégaoctets au lieu de mébioctets, y compris une grande majorité de linuxiens (moi le premier). Juste maintenant vous savez pourquoi vous ne stockerez que 2,67To sur les 3To que le fabricant de votre disque annonçait. Ça fait un peu plus de 300Go de décalage mine de rien. La taille de zizi que les constructeurs aimeraient avoir ?