Aller au contenu

Fonctionnement d'un ordinateur/Compléments sur les mémoires de masse

Un livre de Wikilivres.

Dans ce chapitre, nous allons parler de sujets qui n'avaient pas directement leur place dans les chapitres précédents, bien qu'ils soient liés aux mémoires de masse. Nous allons parler des technologies RAID et des RAM drive.

Les technologies RAID

[modifier | modifier le wikicode]

Les technologies RAID (Redundant Array of Inexpensives Disks) sont des technologies qui permettent d'utiliser plusieurs disques durs ou SSD afin de gagner en performances, en espace disque ou en fiabilité. Ces technologies sont apparues dans les années 70, sur des ordinateurs devant supporter des pannes de disque dur et sont toujours utilisées dans ce cas de figure à l'heure actuelle, notamment sur les serveurs dits à haute disponibilité.

Ces techniques peuvent être prises en charge aussi bien par le logiciel que par le matériel. Dans le premier cas, c'est le système d'exploitation (et plus précisément le système de fichiers) qui se charge de la gestion des disques durs et de la répartition des données sur ceux-ci. Dans l'autre cas, le RAID est pris en charge par un contrôleur spécialisé, intégré à la carte mère ou présent sous la forme d'une carte d'extension. La dernière méthode est évidemment plus rapide, les calculs étant déportés sur une carte spécialisée au lieu d'être pris en charge par le processeur. Voyons maintenant à quoi ressemblent ces techniques.

Le JBOD (Just a Bunch Of Disks)

[modifier | modifier le wikicode]

La technologie JBOD permet de regrouper plusieurs disques durs en une seule partition. JBOD est l'acronyme de l'expression Just a Bunch Of Disks. Avec cette technique, on attend qu'un disque dur soit rempli pour commencer à entamer le suivant. Les capacités totales des disques durs s'additionnent. Il est parfaitement possible d'utiliser des disques durs de taille différentes.

Le RAID classique : 0, 1, 2, 3, 4, 5 et 6

[modifier | modifier le wikicode]

Avec le RAID 0, des données consécutives sont réparties sur des disques durs différents. Là encore, le système RAID contient plusieurs disques durs, mais est reconnu comme une seule et unique partition par le système d'exploitation. La capacité totale du RAID 0 est égale à la somme des capacités de chaque disque dur, comme avec le JBOD. La différence avec le JBOD tient dans le fait que les données d'un même fichier étant systématiquement réparties sur plusieurs HDDs, ce que ne faisait pas le JBOD. Cela permet une amélioration des performances lors de l'accès à des données consécutives, celles-ci étant lues/écrites depuis plusieurs disques durs en parallèle.

Avec le RAID 1, les données sont copiées à l'identique sur tous les disques durs. Chaque disque dur est ainsi une copie de tous les autres, chaque disque dur ayant exactement le même contenu. L'avantage de cette technique réside dans la résistance aux pannes : cela permet de résister à une panne qui touche un grand nombre de disque dur, tant qu'au moins un disque dur est épargné. Par contre, cette technique ne permet pas de gagner en espace disque : l'ensemble des disques durs est vu comme un unique disque de même capacité qu'un disque individuel. Des gains en performances sont possibles, vu que des données consécutives peuvent être lues depuis plusieurs disques durs. Mais cette optimisation entraine une baisse des performances en écriture, ce qui fait que peu de contrôleurs RAID l'utilisent.

RAID 0.
RAID 1.

Les RAID 2, 3, 4, 5 et 6 font appel à des bits de parité. Cela leur permet d'obtenir une résilience aux pannes plus attractive que le RAID1. Ces techniques ont tendance à utiliser un seul HDD pour stocker des données redondantes, soit nettement moins que le RAID1. En contrepartie, la récupération suite à une panne est plus lente, vu qu'il faut reconstituer les données originelles via un calcul qui fait intervenir les données de tous les disques durs, ainsi que les données de parité.

Les RAID 2, 3 et 4 peuvent être vu comme une sorte de RAID 0 amélioré. Il est amélioré dans le sens où on ajoute un disque pour les données de parité à un RAID 0. L'idée est simplement de calculer, pour tous les secteurs ayant la même adresse, un secteur de parité. Les octets des différents disques du RAID 0 seront utilisés pour calculer un octet de parité, qui sera enregistré sur un disque de parité à part. Il faut noter que certaines formes améliorées du RAID 4 dupliquent les disques de parité, ce qui permet de résister à plus d'une panne de disque dur (autant qu'il y a de disques de parité). Mais ces améliorations ne font pas partie des niveaux de RAID standard.

RAID 3.
RAID 4.

Le RAID 5 est similaire au RAID 4, sauf que les secteurs de parité sont répartis sur les différents disques dur, afin de gagner en performances.

Le RAID 6 est une amélioration du RAID 5 où les données de parité sont elles-mêmes dupliquées en plusieurs exemplaires. Cela permet de résister à la défaillance de plus d'un HDD.

RAID 5.
RAID 6.
Type de RAID JBOD RAID 0 RAID 1 RAID 2, 3 et 4 RAID 5 RAID 6
Performances Pas d'amélioration Amélioration en lecture et écriture Amélioration en lecture, sous conditions Amélioration en lecture et écriture, inférieure au RAID 0.

Avantage au RAID 5 et 6

Espace disque Somme des capacités des HDD Pas d'amélioration Somme des capacités de tous les HDD, sauf un
Résilience aux pannes Pas d'amélioration Excellente : survit à autant de pannes qu'il y a de HDD, sauf un Minimale : survit à la panne d'un seul HDD Intermédiaire, dépend des données de parité

Les technologies de RAID combiné

[modifier | modifier le wikicode]

Il est possible de combiner des disques durs en utilisant diverses techniques de RAID. Par exemple, on peut utiliser un RAID1 de disques en RAID 0 : on parle alors de RAID 01. Il est aussi possible d'utiliser un RAID 0 de disques en RAID 1 : on parle alors de RAID 10.

RAID 01.
RAID 10.

De même, utiliser un RAID 0 de RAID 3, 4, 5 ou 6 est possible : on parle respectivement de RAID 3+0, 4+0, 5+0, 6+0.

RAID 5+0.

On peut aussi faire un RAID de plusieurs disques en RAID 0, ce qui donne du RAID 0+1, 0+2, 0+3, 0+4, ...

RAID 0+3
RAM drive.

Les RAM drive matériels sont des mémoires de masse fabriquées en combinant des barrettes de RAM et une batterie. Ils sont connectés sur un bus S-ATA, PCI, PCI Express ou tout autre bus compatible avec un SSD ou un disque dur. Concrètement, leur interface est celle d'un disque dur ou d'un SSD, avec des secteurs et tout ce qui va avec. Simplement, l'implémentation n'utilise pas un support de mémorisation magnétique ou FLASH, mais des barrettes de RAM. Un circuit intégré simule un disque dur à partir des barrettes de RAM, il sert d'interface entre le connecteur du disque dur et les barrettes de mémoire.

Elles sont non-volatiles ou presque, tout dépend du RAM drive. Une première possibilité alimente les barrettes de RAM avec une batterie intégrée dans le RAM drive, ce qui permet de conserver des données sur une période de quelques heures maximum. L'autonomie est de 5 à 15 heures une fois l'ordinateur complétement coupé, pas plus. Une autre possibilité combine les barrettes de RAM avec une mémoire de masse de même capacité, comme une mémoire FLASH, intégrée au RAM drive. En cas de coupure de l'alimentation, le contenu des barrettes de RAM est copié sur la mémoire de masse, une batterie alimentant le disque pendant la sauvegarde.

Des exemples de RAM drive

[modifier | modifier le wikicode]

Les RAM drive sont apparus dans les années 80 et sont restés un marché de niche depuis. Un exemple des RAM drive de l'époque était l'Excalibur, un RAM drive destiné aux Macintosh. Il pouvait contenir jusqu'à 2 mébi-octets de RAM, avait une autonomie de 6 à 8 heures, était connecté sur le connecteur du lecteur de disquette, et coutait au mieux 600 dollars de l'époque.

Durant les années 2000, divers RAM Drive ont été commercialisés, le plus connu d'entre eux étant sans doute le I-RAM de Gigabyte, commercialisé en juin 2005. Il prenait la forme d'une carte connectée sur laquelle on pouvait clipser 4 barrettes de RAM de type DDR1. Elle était connectée à un bus S-ATA pour les transferts de données, mais aussi au bus/connecteur PCI pour l'alimentation. Il faut savoir que le bus PCI reste alimenté tant que le secteur est branché, même si l'ordinateur est éteint. Pour le dire autrement, le bus PCI est dans le standby domain de la carte mère. L'I-RAM était donc alimenté et les barrettes de DRAM étaient rafraichies tant que le secteur était branché, même ordinateur éteint. Une batterie intégrée alimentait les barrettes de RAM lorsque l'alimentation était débranchée, le secteur coupé. L'autonomie sur batterie était alors de 10 heures à 15 heures.

Le DDRDrive X1 a été commercialisé en 2009 et disposait d'un mécanisme de sauvegarde assez intelligent, semblable aux nvRAM vues plus haut. Il couple 4 gibioctets de DDR avec un SSD de même capacité. En cours d'utilisation, seule la DDR RAM est utilisée. Mais en cas de coupure de l'alimentation, le contenu de la DDR RAM est sauvegardée sur le SSD en environ une minute, une batterie de secours alimentant le RAM drive pendant ce temps.

L'intérêt de ces mémoires de masse

[modifier | modifier le wikicode]

Les RAM drive sont des mémoires de masse ayant des performances nettement meilleures que celles des disques durs et SSD de même génération. Il faut dire que les barrettes de RAM ont un temps de latence et un débit binaire bien supérieur à celui d'un support magnétique ou même que d'une mémoire FLASH. Les performances sont donc censées être meilleures, mais avec un bémol qu'il faut aborder. L'avantage par rapport aux autres SSD et HDD n'est pas le débit binaire, mais le temps d'accès. Il est bien plus faibles qu'avec un HDD ou un SSD, ce qui leur donne un léger avantage en termes de performances. Pour ce qui est du débit binaire, les choses sont plus compliquées...

Pour le débit binaire, les RAM drive sont limités par la vitesse du bus PCI ou PCI-Express utilisé par les disques durs/SSD. Pour donner une idée d'à quel point le bus limite les performances, prenons l'exemple des RAM drive HyperDrive de la compagnie HyperOs, qui utilisaient de la DDR2 avec un bus S-ATA v2. Le bus S-ATA v2 avait un débit binaire de 250 mébi-octets par secondes, alors que la DDR2 la plus lente avait un débit de 6,4 gibi-octets par seconde. Les RAM Drive de cette marque réduisaient la fréquence de la DDR2 pour gagner en consommation électrique sans ruiner les performances. Une barrette de RAM de l'époque aurait donc été plus utile dans un slot mémoire que sur un RAM Drive...

Pour ce qui est des défauts, les RAM drive ont une faible capacité mémoire et sont très cher, ce qui explique qu'ils sont peu utilisés dans le cas général : pour le même prix, mieux vaut acheter de la RAM en plus et la carte mère qui va avec. Leur utilité est assez limitée, ils ont parfois servi pour gérer des fichiers log dans des serveurs, quelques particuliers en ont utilisé pour placer le swapfile sur un RAM Drive, et quelques autres exemples. Quelques particuliers les utilisent pour recycler des barrettes de RAM d'anciennes génération qui ne sont plus compatibles avec les carte mères modernes, mais là encore, c'est très rare.