Le Blog Utux

HTTP 200 GET /

RAID matériel vs RAID logiciel

Rédigé par uTux 3 commentaires

Je lis souvent que le RAID matériel c'est mal car on se retrouve prisonnier du hardware et cela peut poser des problèmes en cas de panne. C'est une idée un peu simpliste c'est pourquoi j'ai décidé de rédiger cet article.

Définition : RAID matériel, semi-matériel, logiciel ?

Même si je pense que tout le monde connaît déjà les différences, voici un petit résumé :

  • Logiciel : entièrement géré par le système d'exploitation, ce dernier voit les disques physiques et les utilise pour créer un ou plusieurs périphériques block virtuels qui peuvent ensuite être formatés avec n'importe quel système de fichiers. Sous Linux, c'est md qui remplit ce rôle et il est pris en charge par l'installeur Debian. Il est possible de booter sur du RAID logiciel.
  • Matériel : une carte additionnelle disposant d'un contrôleur (CPU + firmware + RAM) sert de couche d'abstraction. Le système d'exploitation ne voit plus les disques, uniquement les grappes (ou unités) gérées par la carte RAID. Il faut parfois un driver additionnel, mais la plupart du temps ils sont en upstream dans le kernel Linux (même avec Debian et son kernel sans blob propriétaire).
  • Semi-matériel : aussi appelé fake-RAID, c'est ce qui est proposé sur les cartes mères en complément de l'AHCI et de l'IDE par votre contrôleur de stockage (Intel, JMicron...). Ce dernier agit comme une espèce de parasite et puise dans les ressources système et a besoin de pilotes spécifiques pour être reconnu par le système d'exploitation, sous Linux c'est dmraid, sous Windows ça dépend.<-- Lire entre les lignes : c'est de la merde lowcost et vous ne devez jamais l'utiliser.
  • Géré par le FS (ex: ZFS ) : Certains systèmes de fichiers n'ont pas besoin de RAID à proprement parler, ils savent gérer directement la répartition/réplication des données. C'est le cas avec LVM qui dispose d'une implémentation basique ou encore ZFS, le meilleur FS du monde, qui lui dispose de fonctionalités avancées (mirror, stripping, raidz, spares...). <-- Lire entre les lignes : je suis un fanatique de zfs, vous devez l'utiliser.

Mon expérience

Le RAID matériel est souvent le plus simple car abstrait pour l'OS. Le changement des disques se fait à chaud et sur certains modèles il n'y a aucune manipulation à faire pour enclencher la reconstruction de la grappe. Il apporte aussi un gain en performances en raison du cache mais aussi parce qu'il soulage votre système lorsqu'il s'agit de calculer des parités (RAID5,6,50...). Il devient quasiment indispensable si vous souhaitez gérer de très nombreux disques (les cartes mères n'ont souvent pas plus de 8 ports SATA). En revanche, il est vrai que le RAID matériel peut poser des problèmes. Je n'ai jamais vu un contrôleur claquer mais j'ai "souvent" (au moins 3 fois par an sur une dizaine de cartes) subit des lag ou micro-coupures qui peuvent faire passer le système de fichiers en read-only et donc planter le serveur.

Le RAID semi-matériel c'est de la merde, très difficile à faire prendre en charge sous Linux en raison de drivers exotiques non libres. Il puise dans les ressources système pour fonctionner et on ne sait pas comment il se comporte si on change de carte mère ou même si on décide de reset le bios. A réserver au bidouillage ou aux gamers windowsiens qui veulent avoir 2 disques en RAID0 pour gagner en performances (encore qu'un unique SSD les écrase de loin). Mais à fuir en prod.

Le RAID logiciel est le plus sûr, il est upstream, non buggué et le CLI est assez évident. Attention je parle de Linux uniquement, je n'ai pas d'expérience avec le RAID logiciel de Windows. Pensez à installer Grub sur vos deux disques en cas de mirroring (RAID1). En cas de panne du serveur vous pouvez monter vos disques dans une autre machine et récupérer vos données. En cas de changement de disque il y a des opérations à faire en CLI mais ce n'est pas très compliqué.

La gestion par le FS (ZFS) est la méthode la plus souple et la plus puissante puisqu'on élimine une couche. Le FS a accès aux disques et à leur cache et sait comment les gérer et contrôler l'intégrité des données. En plus, en cas de changement de disque l'identification est plus simple et la procédure facilitée. Là encore vous devez faire les opérations en CLI, mais les commandes ZFS sont bien conçues et quasi intuitives.

Conclusion

Tout dépend de l'utilisation du serveur :

  1. ZFS est à privilégier si votre serveur est destiné à stocker des données (usage NAS ou SAN) très clairement. Et contrairement à ce qu'on pense, il ne faut pas des quantités astronomiques de mémoire vive, 8GB suffisent pour ZFS + vos services habituels (après ça dépend de la quantité de cache ZARC que vous souhaitez avoir).
  2. Le RAID logiciel pour vos serveurs Linux parce que c'est facile à installer, c'est fiable, et le CLI n'est pas très compliqué quand il s'agit de remplacer un disque.
  3. Le RAID matériel pour vos serveurs Windows (plus facile pour le boot) ou encore Linux si vous ne souhaitez pas vous embêter à gérer vous-même le RAID ou si vous avez des besoins spécifiques (très grand nombre de disques).
Fil RSS des articles de ce mot clé