L'histoire du fractionnement des grappes
Une grande partie du savoir machinal du domaine informatique, en particulier celui du secteur des PME, est apparue à la toute fin des années 1990 sous l'effet de divers facteurs. Les principaux facteurs étaient que, soudainement, des entreprises de plus en plus petites se précipitaient pour s'informatiser, que Microsoft avait rendu Windows NT 4 si stable qu'il existait une base standard autour de laquelle toute l'informatique des PME pouvait s'articuler, que l'ère d'Internet s'était enfin imposée et que Microsoft avait introduit ses programmes de certification et de formation qui ont remodelé la diffusion des connaissances dans l'industrie. Réunis, ces éléments ont à la fois créé un besoin de nouvelles formations et de bonnes pratiques et provoqué un foisonnement massif de réflexions, d'écrits, de documentation, de formations, de bonnes pratiques, de règles empiriques, etc., nouveaux.
Pendant quelques années, presque tout le domaine a été formé sur le même petit corpus de connaissances et de nombreuses règles empiriques sont devenues des standards de fait ; une grande partie du savoir de l'époque a été apprise machinalement et transmise de mentor à stagiaire dans un cycle qui a fait passer une bonne part des connaissances techniques de 1998 dans les processus incontestés et gravés dans le marbre de 2012. À l'époque, cela était efficace parce que ces pratiques étaient pertinentes, mais c'était il y a quinze ans ; la technologie, l'économie, les cas d'usage et les connaissances ont considérablement évolué depuis.
L'un des meilleurs exemples en est la célèbre recommandation de Microsoft pour SQL Server : du RAID 1 pour le système d'exploitation, du RAID 5 pour les fichiers de base de données et un autre RAID 1 pour les journaux. Cette configuration a perduré pendant presque toute la vie du produit et a été si bien promue qu'elle s'est répandue dans presque tous les aspects de la conception de serveurs dans le secteur des PME. Le recours au RAID 1 pour le système d'exploitation et au RAID 5 pour les données est si répandu qu'il est souvent simplement tenu pour acquis, sans la moindre réflexion sur les raisons pour lesquelles il avait été recommandé à l'époque.
Examinons l'historique et voyons pourquoi le R1/5/1 était bon en 1998 et pourquoi il ne devrait plus exister aujourd'hui. Gardez à l'esprit une certaine perspective : l'écart entre le moment où ces recommandations sont apparues pour la première fois (dès 1995) et aujourd'hui est immense. Revenez mentalement en 1995 et songez à l'écart équivalent à l'époque. Cela aurait reviendrait à utiliser, aux débuts de l'ère d'Internet, des recommandations fondées sur les besoins informatiques domestiques de la première génération de possesseurs d'Apple ][ ! L'ère des ordinateurs domestiques 8 bits commençait à peine en 1978. Commodore était encore à deux ans de la sortie de son premier ordinateur domestique (le VIC-20) et allait traverser toute l'ère Commodore et Commodore Amiga, faire faillite et disparaître, le tout avant 1995. L'Apple ][+ était encore à un an de sa sortie. Les gens s'apprêtaient tout juste à commencer à utiliser des lecteurs de cassettes analogiques comme support de stockage. COBOL et Fortran étaient les seuls langages sérieux utilisés en entreprise. En somme, l'écart est prodigieux. Les choses changent.
Tout d'abord, il nous faut examiner les facteurs qui existaient à la fin des années 1990 et qui ont créé le besoin de notre configuration historique.
- Les disques étaient petits, très petits. Une grande grappe de base de données pouvait se composer de quatre disques SCSI de 2,1 Go en grappe R5, pour seulement ~6 Go d'espace de stockage utilisable sur une seule grappe. Le domaine de défaillance d'un RAID à parité était minuscule (comparé à des éléments tels que les taux d'erreurs irrécupérables, ou URE).
- Les technologies de connexion des disques étaient parallèles et lentes. Les disques durs de l'époque n'étaient que légèrement plus lents que les disques actuels, mais les technologies de connexion représentaient un goulet d'étranglement considérable. Il était courant de répartir le trafic afin de réduire les goulets d'étranglement du bus.
- La technologie de disque SCSI était la seule utilisée pour les serveurs. L'usage d'un disque PATA (on l'appelait alors IDE) dans un serveur était impensable.
- Les disques étaient coûteux au gigaoctet, de sorte que la réduction des coûts, tout en préservant la capacité, était l'enjeu central pour la quasi-totalité des entreprises.
- Les systèmes de fichiers étaient fragiles et défaillaient plus souvent que les disques.
- Le RAID matériel était indispensable et seuls les niveaux RAID de base 1 et 5 étaient couramment disponibles. Le RAID 6 et le RAID 10 étaient encore à des années d'être accessibles à la plupart des entreprises. Le RAID 0 n'est pas pris en compte car il n'offre aucune redondance.
- Les systèmes de stockage étaient rarement, voire jamais, partagés entre serveurs, de sorte que l'accès était presque toujours dédié à une seule file d'attente de requêtes.
- Les caches de stockage étaient minuscules ou inexistants, ce qui répercutait directement les limitations d'accès aux disques sur le système d'exploitation. Cela impliquait de disposer de grappes différentes aux caractéristiques différentes pour gérer divers mélanges d'accès lecture/écriture ou aléatoire/séquentiel.
- La défaillance des disques était fréquente et constituait la préoccupation principale de la conception des systèmes de stockage.
- Souvent, la taille des grappes de disques était limitée par des contraintes physiques, si bien que les décisions de fractionnement des grappes relevaient fréquemment de la nécessité, non du choix.
- La combinaison des facteurs ci-dessus faisait que le RAID 1 convenait le mieux à certaines parties du système où une faible taille était acceptable et où l'accès était fortement séquentiel ou dominé par l'écriture, et que le RAID 5 convenait le mieux à d'autres où la capacité l'emportait sur la fiabilité et où l'accès était fortement aléatoire et dominé par la lecture.
Au cours des quelque deux décennies écoulées depuis la publication des recommandations d'origine, tous ces facteurs ont changé. Dans certains cas, les changements sont en cascade : le passage du RAID 5 d'usage général au RAID 10 d'usage général fait que ce qui aurait été les deux types de grappes les plus courants, le RAID 1 et le RAID 10, partagent désormais les mêmes caractéristiques d'accès, de sorte que le besoin ou l'envie d'utiliser l'un ou l'autre selon le type de charge a disparu.
- Les disques sont désormais immenses. Plutôt que de peiner à y faire tenir ce dont nous avons besoin, nous disposons généralement d'une capacité excédentaire. Les disques uniques de plus d'un téraoctet sont courants, même dans les serveurs. Les domaines de défaillance pour la parité sont énormes (comparés à des éléments tels que les taux d'erreurs irrécupérables, ou URE).
- Les connexions des disques sont série et rapides. Les connexions des disques ne constituent plus un goulet d'étranglement.
- Le SATA est désormais courant sur les serveurs, ce qui fausse les risques potentiels d'URE d'une manière qui n'existait pas auparavant.
- La capacité est désormais bon marché, mais la performance et la fiabilité sont désormais les préoccupations centrales pour chaque dollar dépensé.
- Les systèmes de fichiers sont aujourd'hui extrêmement robustes et leurs défaillances ne sont qu'un “bruit de fond” dans le tableau plus large de la fiabilité des grappes.
- Le RAID matériel et le RAID logiciel sont aujourd'hui deux options possibles, et les niveaux de RAID disponibles offrent de nombreux choix mais, surtout, le RAID 10 est disponible partout.
- Les systèmes de stockage sont couramment partagés, ce qui rend l'accès séquentiel encore moins fréquent.
- Les caches de stockage sont courants et souvent très volumineux. Des caches de 512 Mo et de 1 Go sont aujourd'hui considérés comme normaux, ce qui fait que de nombreuses grappes de 1995 tiendraient aujourd'hui entièrement dans la mémoire du contrôleur RAID. Les caches croissant rapidement par rapport à la capacité de stockage, et avec l'ajout récent, au cours des deux dernières années, de disques SSD en tant que cache L2 dans le stockage, il n'est pas exclu que même une petite entreprise exécute des bases de données et d'autres applications sensibles aux performances entièrement depuis le cache.
- La défaillance des disques est rare et d'une importance négligeable pour la conception des systèmes de stockage (comparée à d'autres types de défaillances).
- La taille des grappes de disques est rarement limitée par des contraintes physiques.
- Le recours au RAID 1 et au RAID 10 comme principaux types de grappes aujourd'hui fait qu'il n'y a aucun avantage à utiliser des niveaux de grappe différents pour l'optimisation des performances.
Ces facteurs mettent en lumière pourquoi le système de grappes fractionnées de 1995 avait parfaitement du sens à l'époque et pourquoi il n'en a plus aujourd'hui. L'OBR10, le standard d'aujourd'hui, n'était pas disponible à l'époque et son coût était prohibitif. Le RAID 5 était relativement sûr en 1995, mais ne l'est plus aujourd'hui. Presque chacun des facteurs intervenant dans le processus de décision a changé de manière spectaculaire au cours des dix-sept dernières années et continuera de changer à mesure que le SSD se généralisera, de pair avec le hiérarchisation automatique des données, des caches encore plus volumineux et des systèmes de stockage entièrement SSD.
L'évolution de la conception du stockage au cours des deux dernières décennies met également en évidence les dangers auxquels l'informatique est confrontée lorsqu'une grande partie du domaine apprend, comme c'est courant en ingénierie, des “règles empiriques” ou des “bonnes pratiques” de base sans nécessairement comprendre les principes sous-jacents qui motivent ces décisions, ce qui rend difficile de savoir quand ne pas appliquer ces bonnes pratiques ou, plus important encore, de reconnaître quand la règle ne s'applique plus. Contrairement à l'ingénierie mécanique ou civile traditionnelle, où de nouvelles avancées et des changements de facteurs significatifs peuvent survenir une seule fois, voire jamais, au cours d'une carrière, l'informatique change encore suffisamment vite pour que des “remises à plat” complètes des règles empiriques de base soient nécessaires à plusieurs reprises au fil d'une carrière. Peut-être pas chaque année, mais une fois par décennie ou davantage est presque toujours nécessaire.
Le passage actuel des architectures monoprocessus aux architectures multithread est un autre changement similaire et majeur, qui exige du domaine informatique qu'il modifie entièrement sa manière d'aborder la conception des systèmes.
