Aller au contenu
Site Communauté

[TUTO#2] Et les disques durs dans tout ça ?


Mreve

Messages recommandés

Mise en page temporaire en l'attente d'une modification de la largeur des messages... (ou pas)

Ce n'est pas dans mes habitudes de publier quelque chose d'inachevé mais je ne voulais pas trop tarder étant donné que le tutoriel de @safami aborde des notions techniques (RAID et PCI notamment) que je tente d'expliquer dans cette deuxième et dernière partie de mon tutoriel sur les interfaces et les bus. Le texte est abouti, il manque simplement une mise en page décente et plusieurs illustrations que j'ajouterai lorsque je trouverai le temps. C'est de loin mon tutoriel le plus long et le plus approfondi. (et quand je dis long, c'est vraiment très long -_-)

EDIT : Après une première relecture rapide je me rends compte qu'il reste encore quelques points mal expliqués.

MAJ 22 septembre 2017 : Fin de la première étape de finalisation.
MAJ 22 juillet 2018 : Clarification de certains passage + correction du débordement du tableau (bug) + lien vers le tutoriel sur l'optimisation des SSD.

Note du 30 juillet 2019 : Oui il n'est toujours pas entièrement fini...
 


2. Et les disques durs dans tout ça ?

A) Guerre à la vitesse : les interfaces SATA et PCI

Il est indispensable de connaitre les interfaces et les protocoles utilisés par les disques dur ─ qu'ils soient mécanique (HDD) ou non (SSD) car leur nom est mentionné partout.

Comme tous les composants, le disque dur utilise un bus pour se connecter à la carte mère. Deux standards de bus sont actuellement utilisés : le SATA (Serial-ATA, l'évolution du Parallel ATA aussi appelé IDE) et le PCI. Au fil des années, ces standards ont été amenés à évoluer. Ainsi la révision III de l'interface SATA autorise des débits théoriques et natifs de 6 Gbits/s (750 Mo/s). Il est bon de savoir que débit réel de la bande passante qui est supporté par l'interface ne peut pas dépasser les 600Mo/s.

 

Rappel : 6Gbits ≠ 6Go
8bits = 1octet. La confusion se fait souvent car en anglais 1 Byte = 1 octet
Ainsi 750Mo/s = 750MB/s = 6Gbits/s

Quant au PCI, initialement conçu pour connecter des cartes d'extension (cartes son, carte réseau etc...), il a vite été remplacé par une version plus petite et plus rapide : le PCI-e (PCI Express) qui en plus d'être assez rapide pour remplacer l'AGP, un port exclusivement adapté pour les carte graphiques, a le gros avantage d'être capable d'interfacer toute carte d'extension rapide (dont les SSD) et non plus seulement les cartes graphiques.
 

   Pour aller (beaucoup) plus loin  

 
 
Je vous ai déjà parlé de bus en série ou en parallèle. Instinctivement, on peut penser que la liaison en série est moins rapide que la liaison en parallèle puisque cette dernière transmet plusieurs bits en même temps. Dans les années 80, la transmission en parallèle a d'ailleurs détrôné la liaison série partout où il était possible de multiplier les conducteurs car, vous l'aurez compris, le débit des données est multiplié par le nombre de fils mis côte à côte. Le problème c'est que multiplier les fils sur de courtes distances n'est pas excessivement gênant mais sur des longueurs de plusieurs dizaines de mètres cela finit par faire du poids. Imaginez maintenant qu'il faille relier des capteurs à la boite noir d'un avion...
Toujours est-il que même en dehors du cadre particulier de l'aéronautique, la multiplication des câbles peut avoir des conséquences pratiques gênantes : il faut de la place pour tous ces fils et cela a un coût. Rien que sur un critère de place, la liaison parallèle n'est pas applicable partout.

Par ailleurs, certains systèmes nécessitent de communiquer à des débits très élevés et, dans ce cas, la liaison parallèle est problématique. En effet, des interférences dues à des phénomènes d'induction électromagnétique apparaissent entre les conducteurs électriques mis côte à côte. C'est d'autant plus vrai lorsque la longueur des câbles et le débit de transmission augmentent.
En particulier, les signaux sont susceptibles d'interférer entre eux. C'est-à-dire que que l'on peut retrouver la trace d'un signal A dans un signal B. On parle alors de diaphonie. Ou encore, à cause des légères variations de caractéristiques1 d'un câble à l'autre, les bits peuvent arriver de manière décalée rendant la lecture des données sujette à des erreurs. C'est le phénomène de dérive ou désynchronisation. (Merci les TP d'électricité à l'ESISAR :P)

Quels sont donc les avantages de la liaison série ? Comment transmettre le plus rapidement possible avec moins de câbles ? Prenons un exemple simple :
Si vous devez transmettre 20 bits sur 10 fils, il vous suffit de transmettre 2 paquets de 10 bits. Avec cette technique il est facile de réduire drastiquement le nombre de fils. On peut alors très bien transmettre 20 paquet de 1 bit et n'utiliser qu'un seul fil. Voilà, les bits sont transmis les uns après les autres, il s'agit bien d'une liaison série !
A ce stade vous êtes content car vous n'avez qu'à produire un seul câble. Maintenant, ce que vous aimerez faire c'est améliorer son débit de transmission. Et là, PAF ! Poisson dans la face

Vous tombez nez à nez avec le gros avantage d'une liaison en série : avec un seul fil, il n'y plus de risque de diaphonie ni de désynchronisation. Dieu soit loué ! Il vous est maintenant possible d'augmenter fortement la fréquence de transmission et donc le débit. Il va également de soi que la limite de longueur de câble est repoussée. Vous avez donc tout à gagner à utiliser une liaison série ! :)

Bref tout ça pour dire qu'afin de contourner la limitation en fréquence des données envoyées par une technique de bus parallèle utilisée par le PCI, le PCIe implémente une technologie de transmission des données en série. Cette augmentation en fréquence permet d'atteindre des bandes passantes (nombre d'informations envoyées par seconde) très supérieures à celles des bus parallèles.

 

Remarque : C'est pour ces mêmes raisons de limitation en fréquence que le PATA (Parallel-ATA) a disparu au profit du SATA (Serial-ATA).

1Caractéristiques physiques d'un câble : fréquence maximale du signal supportée, impédance, longueur/diamètre du câble etc...


Les ports PCIe sont désignés 1x, 4x, 8x, 16x ou x32. Cette nomenclature caractérise leur format physique (taille) ainsi que le nombre maximal de lignes PCIe accessibles sur un port donné.

512px-PCIExpress.jpg
Par snickerdo ─ Wikimedia Commons

 

Remarque : Les ports au format 32x (possédant donc 32 lignes de transmission) seraient non seulement énormes mais aussi quasi impossibles à implémenter sur des cartes mères ATX. C'est pour cette raison que vous n'en verrez jamais. :c_satisfied:

La première version du bus PCI autorise un débit théorique de 250 Mo/s par ligne. Un bus PCIe x16 dispose alors d'une bande passante théorique de 4 Go/s. Chaque nouvelle version de la norme PCIe fait doubler ce débit théorique. La version 4.0 doit sortir fin 2017. :)

 

Remarque : Les grosses cartes graphiques actuelles demandant des transfert de données extrêmement rapides se connectent toutes sur un port PCIe x16

[TABLEAU TRANSFERT A FAIRE]

 

Remarque : L'interface mSATA (Mini-SATA) est une adaptation du protocole SATA destinée aux PC portables. Le connecteur mSATA est plus petit que le SATA mais offre les mêmes performances que ce dernier. Il est voué à être remplacé par le format M.2, son évolution. En effet, les SSDs M.2 (c'est un format uniquement réservé aux SSD) peuvent se connecter en PCIe, augmentant ainsi leur bande passante plafond.


Vous avez sûrement déjà entendu parler du SATA Express. Il s'agit d'un standard d'interface fondamentalement créé avec la révision 3.2 qui supporte à la fois le SATA et le PCIe. L'industrie a préféré mélanger faire une fusion des 2 interfaces que de faire une une 4ème révision du SATA (12Gbits/s) jugée plus coûteuse, demandant beaucoup trop de changements et apportant une consommation d'énergie plus élevée que celle désirée.
L'interface SATA Express utilise un port PCIe 2x qui peut également être utilisé pour connecter deux disques durs en SATA III  

EGohONf.png

NikNaks ─ Wikipédia

B) Guerre à la vitesse : les protocoles AHCI, NVME et RAID à la rescousse

AHCI : Ce protocole créé par Intel et à la fois implanté logiciellement et physiquement sur le port SATA fournit des fonctionnalités avancées au standard SATA :

  • Prise en charge de NCQ (Native Command Queuing) qui améliore grandement les performances en optimisant la gestion des requêtes E/S (I/O ─ in english). Plus précisément, cela permet au disque dur de recevoir plus d'une requête I/O à la fois et de décider laquelle accomplir d'abord.
  • Prise en charge du débranchement à chaud de périphériques (hot swaping), par exemple connecter un HDD en SATA lorsque le PC est sous tension.
  • Prise en charge de l'augmentation progressive de la vitesse de rotation de multiples disques durs au moment de l'amorçage.
 

Remarque : L'AHCI est supporté nativement par Windows depuis Windows Vista, et par Linux à partir du noyau 2.6.19.

 

Remarque : Bien que, le PATA/IDE ne soit plus utilisé, il est toujours possible d'émuler en IDE un HDD connecté en SATA. Le disque dur ne profitera alors pas des avantages du AHCI.


RAID :   La technologie RAID, très utilisée pour les serveurs, a été développé pour dépasser les capacités limites des unités de disques durs, améliorer les performances et/ou augmenter la fiabilité en apportant la tolérance de panne.

 

Petit point historique : Créée en 1987 par l'Université de Berkeley, l'acronyme RAID signifiait à l'origine Redundant Arrays of Inexpensive Disks (soit Regroupement Redondant de Disques Peu Onéreux). La technologie RAID avait pour but de remplacer les coûteux disques de 6.5" et 9.5" par des ensembles formés de disques de 3.5" beaucoup moins chers. Le coût des disques durs ayant été divisé par 1 300 000 en 29 ans, l’acronyme RAID signifie aujourd'hui Redundant Array of Independent Disks (c'est-à-dire Regroupement Redondant de Disques Indépendants).

L'objectif du RAID est de rassembler plusieurs disques durs physiques afin de former un agrégat ou grappe (pool) considérée comme un seule unité logique. En clair le système d'exploitation ne verra qu'un seul disque dans le poste de travail mais les données transiteront sur plusieurs disques à la fois. Vous l'aurez compris, il faut au minimum deux disques durs pour former un RAID.

À vrai dire, il existe plusieurs configurations RAID. Chacune d'entre elles utilise un protocole qui va rassembler différemment les données sur l'ensemble des disques et impacter positivement les performances, la capacité ou la sécurité des données.

 

Remarque : L'espace excédentaire des autres éléments de la grappe restera inutilisé. Il est donc conseillé d'utiliser des éléments identiques.

Voici les types de RAID les plus utiles :

Le RAID0 (ou stripping)

Son principe repose sur la mise en parallèle de tous les disques durs permettant alors leur utilisation simultanée et augmentant ainsi leurs performances en lecture et en écriture.

 

Remarque : Le terme disques durs "en parallèles" n'est pas fondamentalement adapté (il faudrait parler d'agrégation en bandes ─ stripping) mais le fonctionnement est le même et tout le monde utilise ce mot beaucoup plus parlant.

Le principe est simple, chaque donnée est coupée en n parties (n représentant le nombre de disques durs) puis chaque partie est mise sur un disque différent. Prenons en exemple la copie d'un fichier de 400Mo dans le cadre d'une configuration RAID0 avec 4 disques :
Le protocole RAID0 va alors découper le fichier en 4 et copier 100Mo sur chaque disque. En théorie la bande passante a été multiplié par 4 !
Bon en pratique c'est loin d'être ça mais on observe tout de même des gains de 40 à 50% ! :)

 

Remarque : Il est très important de constituer un RAID0 avec un seul et unique modèle de disque dur. En effet, dans le cas contraire, le fonctionnement en parallèle limiterait la capacité totale à celle du disque le plus petit et le disque le plus lent serait utilisé comme étalon ralentissant alors tout le système.

 

   Pour aller plus loin  

 
 

 En RAID0, les données sont réparties par bandes de données (stripes en anglais) d'une taille fixe. Cette taille est appelée granularité.

 

Remarque : Un granule représente la plus petite unité d'allocation de mémoire dans un système de fichiers. C'est généralement un multiple de 512 octets (taille taille d'un secteur). La taille du granule définit ainsi la granularité du disque.

 

En pratique, la taille de ces bandes varie le plus souvent de 16 Kio à 1 Mio. Sur la majorité des contrôleurs RAID (qui font office d'interface ), la valeur par défaut est de 64 Kio. Cette granularité par défaut est généralement le compromis qui permet d'obtenir les meilleures performances dans la majorité des cas. Cependant, dans des cas d'utilisation très précis, on peut être amené à la modifier.

 

Remarque : Juger de la pertinence de ces modifications nécessite une connaissance approfondie du fonctionnement interne des disques du contrôleur RAID et du système de fichiers !

En bref, cette configuration utilise l'agrégation en bandes mais ne présente aucune redondance des données. Elle offre donc des performances optimales, mais aucune tolérance aux pannes. En clair un seul disque qui tombe en panne et toutes vos données sont perdues.

Le RAID0 n'apporte aucune sécurité au niveau des données et privilégie les performances. La défaillance d'un disque dur entraîne la perte de toutes les données

 

Le RAID1 (ou mirroring/shadowing)

Le RAID1 consiste en l'utilisation de n disques redondants. Les données sont simultanément écrites sur les n disques. Chaque disque de la grappe contenant ainsi exactement les mêmes données à tout moment ─ d'où l'utilisation du mot « miroir » (mirroring en anglais).
In fine, les données sont préservées en cas de panne physique. Lorsqu’un disque dur tombe en panne, toutes les données sont immédiatement disponibles sans que cela n’altère l’intégrité des données.

 

Remarque : Comme pour le RAID0, la capacité totale est égale à la capacité du disque le plus petit de votre grappe. Il est donc conseillé d'utiliser des éléments identiques.


Les performances en lecture sont améliorées (proportionnellement au nombre de disques et à leurs performances), mais comme les données sont écrites de manière synchrone sur tous les disques, les performances en écriture ne varient pas. 

RAID 3 / RAID 4 / RAID 5

Pour faire simple, le RAID 3 est un mixte du RAID 0 (performances élevées) et du RAID 1 (tolérance de pannes). Je ne parlerais pas de ce niveau de RAID car le RAID 3 et le RAID 4 sont sensiblement semblables sauf que le premier travaille par octets et le second par blocs. Je ne parlerai pas non plus du RAID4 car la seule différence entre le RAID4 et le RAID5 les deux réside dans la gestion de la parité.
En gros : le RAID5 est un RAID4 amélioré qui est lui-même un RAID3 amélioré.

  Oui ! Et bien ça tombe bien que vous me parlez de parité parce que moi je vois quasiment que des crabonautes mâles ici ! C'est inadmissible ! :macron-colere:

Mais voyons ! Il ne faut pas voir le mâle partout ! D'ailleurs je parle ici de bit ! Enfin... de bit de parité. Professeur Calys

Pour ceux qui souhaite comprendre le fonctionnement d'une configuration RAID5 sans trop se prendre la tête, voici un résumé simplifié :

L’idée du RAID5 est de répartir les données sur plusieurs disque ( n étant le nombre de disques ) comme en RAID0. La différence provient du découpage : les données sont découpées en n blocs de données et un bloc de parité. Il faut bien comprendre qu'en RAID5 ce bloc de parité (calculée à partir des données) sera enregistrée sur chacun des disques avec les autres blocs. A qui sert cette parité ? Et bien à partir d'elle, il est possible de reconstruire les données manquantes.

Ainsi, en cas de défaillance de l'un des disques de la grappe, il manquera soit un bloc de données soit le bloc de parité :
  Si c'est le bloc de parité, ce n'est pas grave, car aucune donnée ne manque.
  Si c'est un bloc de données, ce n'est pas grave non plus car on peut calculer son contenu à partir des n-1 n−1{\displaysautres blocs de données et du bloc de parité.

Conclusion : le RAID5 c'est super car la probabilité que 2 de vos disques tombent en panne en même temps est très faible mais ce n'est pas une solution vraiment recommandée pour un particulier.

 

Remarque importante : Il ne faut donc en aucun cas mettre en place un RAID5 dans l'idée ne plus avoir besoin de faire de sauvegardes régulières. Un RAID quel qu’il soit ne remplacera jamais une sauvegarde !

 

 

Explication détaillée du fonctionnement des niveaux 3,4 et 5 d'une configuration RAID

Il va de soi que la mise en miroir (RAID1) est une solution onéreuse car non seulement il faut acheter plusieurs disques identique mais en plus la capacité de stockage finale est divisée par le nombre de copie miroirs. C'est en partant du principe que plusieurs unités de stockage ont une faible probabilité de tomber en panne simultanément que d'autres systèmes ont été imaginés, dont ceux permettant de régénérer les données manquantes à partir des données restant accessibles et d'une ou plusieurs données supplémentaires, dites de redondance.

Le système de redondance le plus simple et le plus largement utilisé est le calcul de parité et repose sur l'opération logique XOR (OU exclusif)

Petit aparté sur l'Algèbre ou logique de Boole

Pourquoi le XOR ?

Considérons deux opérandes A et B ayant pour valeur soit 0, soit 1 (tiens comme c'est étrange, c'est tout comme un bit... 9_9). En logique booléenne, chaque opérande ne peut posséder que 2 valeurs de vérité : VRAI (1) ou FAUX (0)

L'opérateur XOR est défini par sa table de vérité, qui indique pour toutes les valeurs possibles de A et B la valeur de la fonction logique R :

Table de vérité de XOR
A B R = A ⊕ B
0 0 0
0 1 1
1 0 1
1 1 0

On voit très simplement que la valeur de la porte logique XOR est VRAI si un et un seul des opérandes A et B est VRAI. Autrement dit, le résultat est VRAI si un nombre impair d'entrées est VRAI. Vous le voyez venir de système de parité ? ;)

 

Remarque : Le système d'imparité a un résultat identique, vous l'aurez compris.

Le système de redondance le plus simple et le plus largement utilisé est le calcul de parité et repose sur l'opération logique XOR (OU exclusif)

Fonctionnement du système de parité (ou imparité) :

 

Petit rappel : Pour savoir si un nombre binaire est pair ou impair, pas besoin de le convertir en décimal. Oh non ! Il suffit de compter de compter le nombre de bits à 1 qu'il contient. Si cette quantité est paire/impaire alors le nombre binaire est paire/impaire.

Le contrôle de parité (VRC – Vertical Redundancy Check) est un des systèmes de contrôle les plus simples. Il consiste à ajouter un bit supplémentaire, appelé bit de parité à un certain nombre de bits (généralement 7 bits, pour former un octet avec le bit de parité).  Ce bit de parité est positionné à 0 ou à 1 de manière à ce que le total des bits à 1 soit pair.
En clair, on ajoute un 1 si le nombre de bits à 1 est impair, 0 dans le cas contraire. Ainsi, le nombre binaire voulu sera toujours pair. Il suffit ensuite de créer une fonction qui vérifie la parité de chaque octet.

Exemple : 
1001001 ==> 10010011 ===(alteration)===> 10011011 ==> parité non respecté : erreur

Le système de contrôle de parité ne détectant que les erreurs en nombre impair, il ne permet donc de détecter que 50% des erreurs (un seul bit est erroné)
Ce système de détection d'erreurs possède également l'inconvénient majeur de ne pas permettre de corriger les erreurs détectées

  Euh c'est bien sympa votre truc mais pour les RAID3 RAID4 et RAID5 qui se veulent tolérant aux pannes, 50% ça craint un peu ! Et en plus vous venez de dire qu'il ne peut rien corriger ! :S

Ah ah ! Rassurez-vous. À vrai dire les configurations RAID n'utilisent pas le contrôle de parité mais un calcul de parité basé sur l'opérateur XOR. Vous allez voir, c'est très simple mais rudement efficace ! :)

Le RAID 3

j0Q6Cwa.png

 

Dans le cas d'une configuration RAID3, les données de chaque disque dur sont traitées simultanément octet par octet et un disque est dédié aux informations de parité.
Dans cet exemple, les disques sont donc découpés en octets que j'ai explicités. Regardons ensemble comment le premier octet de parité est calculé :

Ap(1-2) = A1 XOR A2 =  10010111
                XOR   11011000
                 =    01001111

Maintenant imaginons que les octets D1 et C2 soient corrompus (cf. schéma). Comment faire pour les récupérer à partir de D2, C1, Cp(1-2) et Dp(1-2) ? Je vous laisse réfléchir quelques instants, il n'y a pas de piège. :)
 

Révélation

Bravo ! Il suffisait effectivement de calculer D2 XOR Dp(1-2) et  C1 XOR Cp(1-2) :

Octet   Octet
C1 10001100 01010101 D2
Cp(1-2) 10010111 10010111 Dp(1-2)
C2 = C1 XOR Cp(1-2) 00011011 11000010 D1 = D2 XOR Dp(1-2)

 

Le gros problème avec le RAID3 que chaque écriture sur un disque entraîne aussi une écriture sur le disque de parité qui devient donc une des limitations du RAID3.
Exemple : Si j'enregistre l'octet B1 et C1 sur le disque 1 alors le disque de parité devra écrire l'octet de parité correspondants. Si j'enregistre les B1 et C1 sur le disque 1 et B2 et C2 sur le disque 2 alors le disque de parité devra écrire Ap(1-2) et Dp(1-2)

Le RAID 4

Le RAID4 reprends exactement le même principe que sa version précédente. La seule différence c'est que les données sont découpées en secteurs (aussi appelés blocs) de 512o au minimum. Travailler avec de plus grandes unités de données permet de limiter fortement le synchronisme permanent entre les disques. Le RAID4 est donc plus performant mais le disque de parité reste toujours un goulet d'étranglement pour le système ─ surtout pour des configuration avec beaucoup de disques.

Le RAID 5

Le RAID5 est le niveau le plus abouté. Il est d'ailleurs le plus utilisé aujourd'hui. Reprenant le principe du RAID4 et du découpage par bloc, le RAID5 répartit les données de parités sur tous les disques. Ainsi, le débit des données est également réparti sur tous les disques. Le système tourne donc au maximum de ses capacités matérielles et permet d'obtenir des performances très proches de celles obtenues en RAID-0, tout en assurant une tolérance aux pannes élevée, c'est la raison pour laquelle c'est un des modes RAID les plus intéressants en terme de performance et de fiabilité.
 

1R8aq68.png

 

Raconté ainsi, vous êtes peut-être en train de vous dire que le RAID5 c'est vraiment génial et que vous feriez bien d'investir un peu de temps et d'argent là dedans ! Faites attention, vraiment. Le fonctionnement du RAID5 est complexe et plein de (mauvaises) surprises. Personnellement, je ne recommanderai pas le RAID5 à un particulier sans réelle expérience. C'est d'ailleurs en cherchant des informations pour rédiger ce tutoriel que j'ai découvert ces "petits soucis" (typiquement les erreurs incorrigibles, problèmes de contrôleurs RAID) que les professionnels connaissent bien. Je ne vais pas détailler ce genre de choses ici mais si le sujet vous intéresse je vous renvoie vers les diverses discussions et article qui en parlent.

 

 

Remarque : Une technique très utilisé pour augmenter la fiabilité de nombreux RAID (dont le RAID5) consiste à ajouter un disque de rechange (Hot Spare). Il s'agit d'un disque complémentaire qui vierge qui n'est pas utilisé en temps normal. Lorsqu'un disque de la grappe vient à défaillir, les données de ce disque dur sont alors reconstruit à partir des données présentes sur les autres disque ce qui peut prendre un certain temps en fonction de la masse de données. Une fois le disque reconstruit, le système redevient un RAID5 classique.

RAID 6

Le RAID 6 nécessite quant à lui au minimum 4 disques. C’est une évolution du RAID 5 qui utilise deux jeux de données de parité distincts et supporte donc la panne de deux disque. Il est aussi à noter que le contrôleur RAID (qui interface avec les disques) est encore plus sollicité et gère 2 fois plus d'informations de parité.

 

Cette configuration RAID est principalement utilisé pour optimiser l’espace disque tout en offrant une protection pouvant aller jusqu’à deux défaillances de disque.
 

Le RAID10 (1+0)

A ne pas confondre avec son homologue RAID01 (relativement inutile), le RAID10 mets en RAID0 au minimum deux grappes de deux disques en RAID1 : [IMAGE]

Il en découle une bonne fiabilité puisqu'il faut que tous les éléments d'une grappe soient défectueux pour entraîner un défaut global. La reconstruction est assez performante puisqu'elle ne mobilise que les disques d'une seule grappe et non la totalité.
On peut faire la même chose avec les RAID 5 et 6 mais je ne vais pas en parler ici.


Tableau récapitulatif des configurations RAID les plus connues :

 Fonctionnalités    RAID 0 RAID 1 RAID 5 RAID 6 RAID 10 RAID 50 RAID 60
Nombre minimum de disques requis 2 2 3 4 4 6 8
Protection des données                                   Panne d'un seul disque          Panne d'un seul disque     Panne de deux disques Une panne maximale par sous-grappe Une panne maximale par sous-grappe Deux pannes maximales par sous-grappe
Performances en lecture  Élevées Élevées+ Élevées Élevées Élevées Élevées Élevées
Performances en écriture Élevées Normales Moyennes Faibles/ Moyennes Élevées Moyennes Moyennes
Performances en lecture (mode dégradé) (*)   Normales Moyennes Moyennes Élevées Moyennes Moyennes
Performances en écriture (mode dégradé) (*)   Normales Faibles Faibles Élevées Moyennes Faibles
Utilisation de la capacité totale des disques 100% 50% 67% - 94% (**) 50% - 88%
(**)
50% 67% - 94%
(**)
80% - 88%
(**)
Applications types journalisation de données peu sensibles, rendu en temps réel, données très transitoires Système d'exploitation (PC personnel) mise en œuvre de serveurs web, archivage archivage, solution à haute disponibilité, serveurs web base de données à accès rapide, OS sur un PC personnel Base de données volumineuses, serveurs de fichiers, serveurs d'applications archivage, solution à haute disponibilité, serveurs web, sauvegarde sur disque

(*) Lorsqu'un ou plusieurs disques tombe(nt) en panne, le RAID entre en mode dégradé.

(**) En fonction du nombre de disques utilisés.

Liens complémentaires (la page Wikipédia est très complète) :

 

NVMe :

Le protocole AHCI avait été conçu pour des disques durs mécaniques utilisant l'interface SATA. Après l'avènement des SSDs en SATA, les constructeurs ont mis au point des SSDs toujours plus rapides connectés cette fois-ci en PCI-e. Le problème ? Le protocole AHCI ne gérait pas de façon optimale l'accès à la mémoire flash, bridant ainsi ces nouveaux SSD. Un nouveau protocole a donc été mis au spécialement pour les SSD connectés en PCIe le NVMe (Non-Volatile Memory Host Controller Interface Specification). Créé en 2011, la version 1.3, sorti mi-juin 2017, est capable d’exploiter les nouveaux débits du prochain PCIe 4.0 prévu pour 2018.

 

Remarque : Le protocole NVMe est supporté nativement à partir de Windows 8.1. Avec le kernel Linux 3.3, les distributions Linux profitent de tous les avantages du NVMe.

Les principaux avantages de la spécification NVMe pour les SSD en PCIe par rapport au standard SATA et AHCI sont :

  • Réduction de la latence (2.8μs contre 6μs)
  • Augmentation majeure de le bande passante  (i.e du nombre d'opérations Entrées/Sortie par seconde (IOPS))
    Pour vous donner un ordre d'idée, il est possible d'atteindre 3 millions d'IOPS avec un système de ce type, là où le SATA plafonne à 150 000 IOPS.
  • Diminution de la consommation électrique des SSDs

Bref, le NVME c'est le protocole le plus optimisé qu'il soit pour les SSDs.
 

   Pour aller plus loin  

 
 
Les SSD NVMe utilisent un jeu de commandes simplifié qui permet de réduire le nombre d’instructions CPU nécessaires pour traiter une demande d’E/S par rapport aux disques SATA. De plus, le protocole NVMe prend en charge 65535 commandes par file d'attente et supporte 65536 files d'attente par périphérique. Le protocole AHCI quant-à lui ne supporte qu'une file de 32 commandes. On comprend facilement pourquoi la bande passante explose avec le NVME. :c_satisfied:

Quelques liens complémentaires :
 

 

[TL;NR] Synthèse 

Pendant l'aire du HDD, remplaçant l'ancienne norme PATA, l'interface SATA était reine et n'avait aucun mal à suivre les besoins en bande passante. L'augmentation des performances des disques mécaniques était limité physiquement par la densité du plateau et la vitesse de rotation de la tête de lecture. Le protocole AHCI était suffisamment efficace et les fabricants étaient occupés à réviser une vieille interface moins rapide que le SATA : le PCI.
En 2004, ils mettent au point le PCIe qu'ils utilisent pour les périphériques rapides (typiquement la carte graphique). Très vite, les révisions s'enchaînent des deux côté et au final, le PCIe 3.0 domine de loin le SATA III. En parallèle, les disques à mémoire flash (SSD) se démocratisent et ne cessent de s'améliorer au point de bouder l'interface SATA et le protocole AHCI pour l'interface PCI-e et le tout nouveau protocole NVME.
Quant à la technologie RAID, elle reste depuis sa création en 1987 très majoritairement utilisée pour les serveurs. Ses nombreuses améliorations et avantages expliquent qu'elle soit toujours utilisée aujourd’hui.

  Voilà, vous êtes arrivés à la fin de mon tutoriel diptyque purement orienté sur la théorie. Un tutoriel pratique sur l'optimisation des SSD est disponible ici. Je vous rassure de suite, il est beaucoup plus léger à lire ! Séraphin Lampion

Modifié par Mreve
Il faut que je termine ce truc
  • J'aime 2
  • J'adore 2
Lien vers le commentaire

Bonjour......le seul point commun que nous ayons, est le manque de temps suite à nos diverses occupations, mais cela ne m' empêche pas de venir autant que faire ce peut, lire quelques infos ou sujets traités ici ou là sur ce forum.Sans jouir d'une grande connaissance dans le domaine informatique, je suis subjugué par l'aisance en écriture de ce grand Renard Aquatique ( Mreve) qui décrit d'une manière éclairée, toutes les subtilités à connaitre sur les disques durs. un peu comme mon prof de physique au temps de ma jeunesse....car je suis un vieux monsieur avide de lire de tels tutos, rien que pour le plaisir des yeux et faire travailler les neurones, car il est des passages où je n'y pige rien, exemple ( le débit réel de la bande passante ) j'en parle à mon épouse et elle se met à rire, je n'ose imaginer à quoi elle fait allusion....autant vous dire qu'il n'est pas question de lui parler de débit,de bits,de l'avoir en Raid le plus possible ainsi que la théorie de la vitesse, les grandes fréquences ne sont plus, pratiquées chez moi. C'était un aparté bien évidement, mais j'ai eu un grand plaisir à vous lire..........j'espère que vous me pardonnerez, ou au moins serez indulgent concernant ces quelques lignes, à vrai dire Mreve, elles m'ont servi à vous saluer amicalement.......Ernest Monnot

 

  • J'aime 1
  • J'adore 1
Lien vers le commentaire

Salut !

Superbe tuto, même inachevé ça vaut son pesant de chips ! :c_happy:

Le 11/09/2017 à 22:08, Mreve a dit :

il manque simplement une mise en page décente et plusieurs illustrations que j'ajouterai lorsque je trouverai le temps.

Alors je me suis permis de modifier les encarts verts : les couleurs étaient vraiment trop moches. :c_lol:
Je peux te donner un coup de main si tu veux bien me dire ce qu'il te faut.

Modifié par Le PoissonClown
Lien vers le commentaire

Merci à vous quatre pour vos compliments ! :c_happy:

Le 13/09/2017 à 12:21, ernest MONNOT a dit :

Sans jouir d'une grande connaissance dans le domaine informatique, je suis subjugué par l'aisance en écriture de ce grand Renard Aquatique ( Mreve) qui décrit d'une manière éclairée, toutes les subtilités à connaitre sur les disques durs.

Personne ne m'a encore jamais dit ça ! Moi je suis subjugué devant tant d'éloge et de panégyrique ! :c_inlove:
 

Le 13/09/2017 à 12:21, ernest MONNOT a dit :

[...] Il est des passages où je n'y pige rien, exemple (le débit réel de la bande passante ) j'en parle à mon épouse et elle se met à rire, je n'ose imaginer à quoi elle fait allusion....autant vous dire qu'il n'est pas question de lui parler de débit,de bits,de l'avoir en Raid le plus possible ainsi que la théorie de la vitesse, les grandes fréquences ne sont plus, pratiquées chez moi.

Vous faîtes bien de me le dire. Je tacherai de revoir mes explications ;)
Je ne veux pas savoir à quoi pensait votre femme lorsque vous avez utilisé les mots bit, bande, RAID, vitesse et débit ! Yao Ming

Merci beaucoup pour votre message. En plus de m'avoir fait beaucoup rire, il a franchement fait exploser mon égo ! :D

 

Il y a 19 heures, Le PoissonClown a dit :

Superbe tuto, même inachevé ça vaut son pesant de chips ! :c_happy:

Venant de toi, c'est un gros compliment ! :P
 

Il y a 19 heures, Le PoissonClown a dit :

Alors je me suis permis de modifier les encarts verts : les couleurs étaient vraiment trop moches. :c_lol:

Sur le coup, je me suis dis : "Nan ça va c'était pas trop moche" puis après avoir vu les nouvelles couleurs puis revu les anciennes je peux effectivement confirmer que les couleurs utilisées sur le bandeau supérieur n'étaient pas très belles ! :kiddin:
Tes couleurs sont bien moins agressives et le encadrés s'intègrent beaucoup mieux. :)

AJTyMWK.png

J'adore ! :lol:
 

Il y a 19 heures, Le PoissonClown a dit :

Je peux te donner un coup de main si tu veux bien me dire ce qu'il te faut.

C'est gentil de proposer ton aide mais il faut que je fasse parler ma créativité ! :D
Mais ne t'inquiète pas, je viendrais t'embêter si besoin ! Pépé Soupalonion Y Crouton

Modifié par Mreve
Fôte !
  • Ahah 1
Lien vers le commentaire
il y a 6 minutes, Mreve a dit :

Tes couleurs sont bien moins agressives et le encadrés s'intègrent beaucoup mieux. :)

Cool. Mais c'est pas les miennes : c'est celles du bouton « Répondre à ce sujet ». :ph34r:

il y a 7 minutes, Mreve a dit :

AJTyMWK.png

J'adore ! :lol:

Désolé, c'était plus fort que moi : le orange sur fond vert, ça me fait l'effet d'une fourchette qui grince sur l'assiette. :ph34r:

Lien vers le commentaire
  • 4 semaines plus tard...
Le 11/09/2017 à 22:08, Mreve a dit :
Révélation

Mise en page temporaire en l'attente d'une modification de la largeur des messages... (ou pas)

Ce n'est pas dans mes habitudes de publier quelque chose d'inachevé mais je ne voulais pas trop tarder étant donné que le tutoriel de @safami aborde des notions techniques (RAID et PCI notamment) que je tente d'expliquer dans cette deuxième et dernière partie de mon tutoriel sur les interfaces et les bus. Le texte est abouti, il manque simplement une mise en page décente et plusieurs illustrations que j'ajouterai lorsque je trouverai le temps. C'est de loin mon tutoriel le plus long et le plus approfondi. (et quand je dis long, c'est vraiment très long -_-)

EDIT : Après une première relecture rapide je me rends compte qu'il reste encore quelques points mal expliqués.

MAJ 22 septembre : Fin de la première étape de finalisation.
 


2. Et les disques durs dans tout ça ?

A) Guerre à la vitesse : les interfaces SATA et PCI

Il est indispensable de connaitre les interfaces et les protocoles utilisés par les disques dur ─ qu'ils soient mécanique (HDD) ou non (SSD) car leur nom est mentionné partout.

Comme tous les composants, le disque dur utilise un bus pour se connecter à la carte mère. Deux standards de bus sont actuellement utilisés : le SATA (Serial-ATA, l'évolution du Parallel ATA aussi appelé IDE) et le PCI. Au fil des années, ces standards ont été amenés à évoluer. Ainsi la révision III de l'interface SATA autorise des débits théoriques et natifs de 6 Gbits/s (750 Mo/s). Il est bon de savoir que débit réel de la bande passante qui est supporté par l'interface ne peut pas dépasser les 600Mo/s.

 

Rappel : 6Gbits ≠ 6Go
8bits = 1octet. La confusion se fait souvent car en anglais 1 Byte = 1 octet
Ainsi 750Mo/s = 750MB/s = 6Gbits/s

Quant au PCI, initialement conçu pour connecter des cartes d'extension (cartes son, carte réseau etc...), il a vite été remplacé par une version plus petite et plus rapide : le PCI-e (PCI Express) qui en plus d'être assez rapide pour remplacer l'AGP, un port exclusivement adapté pour les carte graphiques, a le gros avantage d'être capable d'interfacer toute carte d'extension rapide (dont les SSD) et non plus seulement les cartes graphiques.
 

   Pour aller (beaucoup) plus loin  

 
 
Je vous ai déjà parlé de bus en série ou en parallèle. Instinctivement, on peut penser que la liaison en série est moins rapide que la liaison en parallèle puisque cette dernière transmet plusieurs bits en même temps. Dans les années 80, la transmission en parallèle a d'ailleurs détrôné la liaison série partout où il était possible de multiplier les conducteurs car, vous l'aurez compris, le débit des données est multiplié par le nombre de fils mis côte à côte. Le problème c'est que multiplier les fils sur de courtes distances n'est pas excessivement gênant mais sur des longueurs de plusieurs dizaines de mètres cela finit par faire du poids. Imaginez maintenant qu'il faille relier des capteurs à la boite noir d'un avion...
Toujours est-il que même en dehors du cadre particulier de l'aéronautique, la multiplication des câbles peut avoir des conséquences pratiques gênantes : il faut de la place pour tous ces fils et cela a un coût. Rien que sur un critère de place, la liaison parallèle n'est pas applicable partout.

Par ailleurs, certains systèmes nécessitent de communiquer à des débits très élevés et, dans ce cas, la liaison parallèle est problématique. En effet, des interférences dues à des phénomènes d'induction électromagnétique apparaissent entre les conducteurs électriques mis côte à côte. C'est d'autant plus vrai lorsque la longueur des câbles et le débit de transmission augmentent.
En particulier, les signaux sont susceptibles d'interférer entre eux. C'est-à-dire que que l'on peut retrouver la trace d'un signal A dans un signal B. On parle alors de diaphonie. Ou encore, à cause des légères variations de caractéristiques1 d'un câble à l'autre, les bits peuvent arriver de manière décalée rendant la lecture des données sujette à des erreurs. C'est le phénomène de dérive ou désynchronisation. (Merci les TP d'électricité à l'ESISAR :P)

Quels sont donc les avantages de la liaison série ? Comment transmettre le plus rapidement possible avec moins de câbles ? Prenons un exemple simple :
Si vous devez transmettre 20 bits sur 10 fils, il vous suffit de transmettre 2 paquets de 10 bits. Avec cette technique il est facile de réduire drastiquement le nombre de fils. On peut alors très bien transmettre 20 paquet de 1 bit et n'utiliser qu'un seul fil. Voilà, les bits sont transmis les uns après les autres, il s'agit bien d'une liaison série !
A ce stade vous êtes content car vous n'avez qu'à produire un seul câble. Maintenant, ce que vous aimerez faire c'est améliorer son débit de transmission. Et là, PAF ! Poisson dans la face

Vous tombez nez à nez avec le gros avantage d'une liaison en série : avec un seul fil, il n'y plus de risque de diaphonie ni de désynchronisation. Dieu soit loué ! Il vous est maintenant possible d'augmenter fortement la fréquence de transmission et donc le débit. Il va également de soi que la limite de longueur de câble est repoussée. Vous avez donc tout à gagner à utiliser une liaison série ! :)

Bref tout ça pour dire qu'afin de contourner la limitation en fréquence des données envoyées par une technique de bus parallèle utilisée par le PCI, le PCIe implémente une technologie de transmission des données en série. Cette augmentation en fréquence permet d'atteindre des bandes passantes (nombre d'informations envoyées par seconde) très supérieures à celles des bus parallèles.

 

Remarque : C'est pour ces mêmes raisons de limitation en fréquence que le PATA (Parallel-ATA) a disparu au profit du SATA (Serial-ATA).

1Caractéristiques physiques d'un câble : fréquence maximale du signal supportée, impédance, longueur/diamètre du câble etc...


Les ports PCIe sont désignés 1x, 4x, 8x, 16x ou x32. Cette nomenclature caractérise leur format physique (taille) ainsi que le nombre maximal de lignes PCIe accessibles sur un port donné.

512px-PCIExpress.jpg
Par snickerdo ─ Wikimedia Commons

 

Remarque : Les ports au format 32x (possédant donc 32 lignes de transmission) seraient non seulement énormes mais aussi quasi impossibles à implémenter sur des cartes mères ATX. C'est pour cette raison que vous n'en verrez jamais. :c_satisfied:

La première version du bus PCI autorise un débit théorique de 250 Mo/s par ligne. Un bus PCIe x16 dispose alors d'une bande passante théorique de 4 Go/s. Chaque nouvelle version de la norme PCIe fait doubler ce débit théorique. La version 4.0 doit sortir fin 2017. :)

 

Remarque : Les grosses cartes graphiques actuelles demandant des transfert de données extrêmement rapides se connectent toutes sur un port PCIe x16

[TABLEAU TRANSFERT A FAIRE]

 

Remarque : L'interface mSATA (Mini-SATA) est une adaptation du protocole SATA destinée aux PC portables. Le connecteur mSATA est plus petit que le SATA mais offre les mêmes performances que ce dernier. Il est voué à être remplacé par le format M.2, son évolution. En effet, les SSDs M.2 (c'est un format uniquement réservé aux SSD) peuvent se connecter en PCIe, augmentant ainsi leur bande passante plafond.


Vous avez sûrement déjà entendu parler du SATA Express. Il s'agit d'un standard d'interface fondamentalement créé avec la révision 3.2 qui supporte à la fois le SATA et le PCIe. L'industrie a préféré mélanger faire une fusion des 2 interfaces que de faire une une 4ème révision du SATA (12Gbits/s) jugée plus coûteuse, demandant beaucoup trop de changements et apportant une consommation d'énergie plus élevée que celle désirée.
L'interface SATA Express utilise un port PCIe 2x qui peut également être utilisé pour connecter deux disques durs en SATA III  

EGohONf.png

NikNaks ─ Wikipédia

B) Guerre à la vitesse : les protocoles AHCI, NVME et RAID à la rescousse

AHCI : Ce protocole créé par Intel et à la fois implanté logiciellement et physiquement sur le port SATA fournit des fonctionnalités avancées au standard SATA :

  • Prise en charge de NCQ (Native Command Queuing) qui améliore grandement les performances en optimisant la gestion des requêtes E/S (I/O ─ in english). Plus précisément, cela permet au disque dur de recevoir plus d'une requête I/O à la fois et de décider laquelle accomplir d'abord.
  • Prise en charge du débranchement à chaud de périphériques (hot swaping), par exemple connecter un HDD en SATA lorsque le PC est sous tension.
  • Prise en charge de l'augmentation progressive de la vitesse de rotation de multiples disques durs au moment de l'amorçage.
 

Remarque : L'AHCI est supporté nativement par Windows depuis Windows Vista, et par Linux à partir du noyau 2.6.19.

 

Remarque : Bien que, le PATA/IDE ne soit plus utilisé, il est toujours possible d'émuler en IDE un HDD connecté en SATA. Le disque dur ne profitera alors pas des avantages du AHCI.


RAID :   La technologie RAID, très utilisée pour les serveurs, a été développé pour dépasser les capacités limites des unités de disques durs, améliorer les performances et/ou augmenter la fiabilité en apportant la tolérance de panne.

 

Petit point historique : Créée en 1987 par l'Université de Berkeley, l'acronyme RAID signifiait à l'origine Redundant Arrays of Inexpensive Disks (soit Regroupement Redondant de Disques Peu Onéreux). La technologie RAID avait pour but de remplacer les coûteux disques de 6.5" et 9.5" par des ensembles formés de disques de 3.5" beaucoup moins chers. Le coût des disques durs ayant été divisé par 1 300 000 en 29 ans, l’acronyme RAID signifie aujourd'hui Redundant Array of Independent Disks (c'est-à-dire Regroupement Redondant de Disques Indépendants).

L'objectif du RAID est de rassembler plusieurs disques durs physiques afin de former un agrégat ou grappe (pool) considérée comme un seule unité logique. En clair le système d'exploitation ne verra qu'un seul disque dans le poste de travail mais les données seront transiteront sur plusieurs disques à la fois. Vous l'aurez compris, il faut au minimum deux disques durs pour former un RAID.

À vrai dire, il existe plusieurs configurations RAID. Chacune d'entre elles utilise un protocole qui va rassembler différemment les données sur l'ensemble des disques et impacter positivement les performances, la capacité ou la sécurité des données.

 

Remarque : L'espace excédentaire des autres éléments de la grappe restera inutilisé. Il est donc conseillé d'utiliser des éléments identiques.

Voici les types de RAID les plus utiles :

Le RAID0 (ou stripping)

Son principe repose sur la mise en parallèle de tous les disques durs permettant alors leur utilisation simultanée et augmentant ainsi leurs performances en lecture et en écriture.

 

Remarque : Le terme disques durs "en parallèles" n'est pas fondamentalement adapté (il faudrait parler d'agrégation en bandes ─ stripping) mais le fonctionnement est le même et tout le monde utilise ce mot beaucoup plus parlant.

Le principe est simple, chaque donnée est coupée en n parties (n représentant le nombre de disques durs) puis chaque partie est mise sur un disque différent. Prenons en exemple la copie d'un fichier de 400Mo dans le cadre d'une configuration RAID0 avec 4 disques :
Le protocole RAID0 va alors découper le fichier en 4 et copier 100Mo sur chaque disque. En théorie la bande passante a été multiplié par 4 !
Bon en pratique c'est loin d'être ça mais on observe tout de même des gains de 40 à 50% ! :)

 

Remarque : Il est très important de constituer un RAID0 avec un seul et unique modèle de disque dur. En effet, dans le cas contraire, le fonctionnement en parallèle limiterait la capacité totale à celle du disque le plus petit et le disque le plus lent serait utilisé comme étalon ralentissant alors tout le système.

 

   Pour aller plus loin  

 
 

 En RAID0, les données sont réparties par bandes de données (stripes en anglais) d'une taille fixe. Cette taille est appelée granularité.

 

Remarque : Un granule représente la plus petite unité d'allocation de mémoire dans un système de fichiers. C'est généralement un multiple de 512 octets (taille taille d'un secteur). La taille du granule définit ainsi la granularité du disque.

 

En pratique, la taille de ces bandes varie le plus souvent de 16 Kio à 1 Mio. Sur la majorité des contrôleurs RAID (qui font office d'interface ), la valeur par défaut est de 64 Kio. Cette granularité par défaut est généralement le compromis qui permet d'obtenir les meilleures performances dans la majorité des cas. Cependant, dans des cas d'utilisation très précis, on peut être amené à la modifier.

 

Remarque : Juger de la pertinence de ces modifications nécessite une connaissance approfondie du fonctionnement interne des disques du contrôleur RAID et du système de fichiers !

En bref, cette configuration utilise l'agrégation en bandes mais ne présente aucune redondance des données. Elle offre donc des performances optimales, mais aucune tolérance aux pannes. En clair un seul disque qui tombe en panne et toutes vos données sont perdues.

Le RAID0 n'apporte aucune sécurité au niveau des données et privilégie les performances. La défaillance d'un disque dur entraîne la perte de toutes les données

 

Le RAID1 (ou mirroring/shadowing)

Le RAID1 consiste en l'utilisation de n disques redondants. Les données sont simultanément écrites sur les n disques. Chaque disque de la grappe contenant ainsi exactement les mêmes données à tout moment ─ d'où l'utilisation du mot « miroir » (mirroring en anglais).
In fine, les données sont préservées en cas de panne physique. Lorsqu’un disque dur tombe en panne, toutes les données sont immédiatement disponibles sans que cela n’altère l’intégrité des données.

 

Remarque : Comme pour le RAID0, la capacité totale est égale à la capacité du disque le plus petit de votre grappe. Il est donc conseillé d'utiliser des éléments identiques.


Les performances en lecture sont améliorées (proportionnellement au nombre de disques et à leurs performances), mais comme les données sont écrites de manière synchrone sur tous les disques, les performances en écriture ne varient pas. 

RAID 3 / RAID 4 / RAID 5

Pour faire simple, le RAID 3 est un mixte du RAID 0 (performances élevées) et du RAID 1 (tolérance de pannes). Je ne parlerais pas de ce niveau de RAID car le RAID 3 et le RAID 4 sont sensiblement semblables sauf que le premier travaille par octets et le second par blocs. Je ne parlerai pas non plus du RAID4 car la seule différence entre le RAID4 et le RAID5 les deux réside dans la gestion de la parité.
En gros : le RAID5 est un RAID4 amélioré qui est lui-même un RAID3 amélioré.

  Oui ! Et bien ça tombe bien que vous me parlez de parité parce que moi je vois quasiment que des crabonautes mâles ici ! C'est inadmissible ! :macron-colere:
D'ailleurs je ne comprends pas trop ce que ça vient faire ici... en fait j'ai rien compris à ce que vous êtes en train de me raconter...:/

Mais voyons ! Il ne faut pas voir le mâle partout ! D'ailleurs je parle ici de bit ! Enfin... de bit de parité. -_-

Pour ceux qui souhaite comprendre le fonctionnement d'une configuration RAID5 sans trop se prendre la tête, voici un résumé simplifié :

L’idée du RAID5 est de répartir les données sur plusieurs disques (n\ge3 ; n étant le nombre de disques ) comme en RAID0. La différence provient du découpage : les données sont découpées en n blocs de données et un bloc de parité. Il faut bien comprendre qu'en RAID5 ce bloc de parité (calculée à partir des données) sera enregistrée sur chacun des disques avec les autres blocs. A qui sert cette parité ? Et bien à partir d'elle, il est possible de reconstruire les données manquantes.

Ainsi, en cas de défaillance de l'un des disques de la grappe, il manquera soit un bloc de données soit le bloc de parité :
  Si c'est le bloc de parité, ce n'est pas grave, car aucune donnée ne manque.
  Si c'est un bloc de données, ce n'est pas grave non plus car on peut calculer son contenu à partir des n ─ 1 autres blocs de données et du bloc de parité.

Conclusion : le RAID5 c'est super car la probabilité que 2 de vos disques tombent en panne en même temps est très faible mais ce n'est pas une solution vraiment recommandée pour un particulier.

 

Remarque importante : Il ne faut donc en aucun cas mettre en place un RAID5 dans l'idée ne plus avoir besoin de faire de sauvegardes régulières. Un RAID quel qu’il soit ne remplacera jamais une sauvegarde !

 

 

Explication détaillée du fonctionnement des niveaux 3,4 et 5 d'une configuration RAID

Il va de soi que la mise en miroir (RAID1) est une solution onéreuse car non seulement il faut acheter plusieurs disques identique mais en plus la capacité de stockage finale est divisée par le nombre de copie miroirs. C'est en partant du principe que plusieurs unités de stockage ont une faible probabilité de tomber en panne simultanément que d'autres systèmes ont été imaginés, dont ceux permettant de régénérer les données manquantes à partir des données restant accessibles et d'une ou plusieurs données supplémentaires, dites de redondance.

Le système de redondance le plus simple et le plus largement utilisé est le calcul de parité et repose sur l'opération logique XOR (OU exclusif)

Petit aparté sur l'Algèbre ou logique de Boole

Pourquoi le XOR ?

Considérons deux opérandes A et B ayant pour valeur soit 0, soit 1 (tiens comme c'est étrange, c'est tout comme un bit... 9_9). En logique booléenne, chaque opérande ne peut posséder que 2 valeurs de vérité : VRAI (1) ou FAUX (0)

L'opérateur XOR est défini par sa table de vérité, qui indique pour toutes les valeurs possibles de A et B la valeur de la fonction logique R :

Table de vérité de XOR
A B R = A ⊕ B
0 0 0
0 1 1
1 0 1
1 1 0

On voit très simplement que la valeur de la porte logique XOR est VRAI si un et un seul des opérandes A et B est VRAI. Autrement dit, le résultat est VRAI si un nombre impair d'entrées est VRAI. Vous le voyez venir de système de parité ? ;)

 

Remarque : Le système d'imparité a un résultat identique, vous l'aurez compris.

Le système de redondance le plus simple et le plus largement utilisé est le calcul de parité et repose sur l'opération logique XOR (OU exclusif)

Fonctionnement du système de parité (ou imparité) :

 

Petit rappel : Pour savoir si un nombre binaire est pair ou impair, pas besoin de le convertir en décimal. Oh non ! Il suffit de compter de compter le nombre de bits à 1 qu'il contient. Si cette quantité est paire/impaire alors le nombre binaire est paire/impaire.

Le contrôle de parité (VRC – Vertical Redundancy Check) est un des systèmes de contrôle les plus simples. Il consiste à ajouter un bit supplémentaire, appelé bit de parité à un certain nombre de bits (généralement 7 bits, pour former un octet avec le bit de parité).  Ce bit de parité est positionné à {\displaystyle 0} ou à 1 de manière à ce que le total des bits à 1 soit pair. En clair, le contrôle de parité consiste à ajouter un 1 si le nombre de bits du mot de code est impair, {\displaystyle 0} dans le cas contraire. Ainsi, on sait que le nombre binaire voulu est pair.

Un exemple :  1001001 ... [FAIRE TABLEAU]

Remarque importante : Pour ceux qui ne sont pas très à l'aise avec le binaire, sachez qu'un nombre binaire se lit de droite à gauche ...
Il est donc crucial de positionner le bit de parité à l'extrême gauche.

Le système de contrôle de parité ne détectant que les erreurs en nombre impair, il ne permet donc de détecter que 50% des erreurs (un seul bit est erroné)
Ce système de détection d'erreurs possède également l'inconvénient majeur de ne pas permettre de corriger les erreurs détectées

  Euh c'est bien sympa votre truc mais pour les RAID3 RAID4 et RAID5 qui se veulent tolérant aux pannes, 50% ça craint un peu ! Et en plus vous venez de dire qu'il ne peut rien corriger ! :S

Ah ah ! Rassurez-vous. À vrai dire les configurations RAID n'utilisent pas le contrôle de parité mais un calcul de parité basé sur l'opérateur XOR. Vous allez voir, c'est très simple mais rudement efficace ! :)

Le RAID 3

j0Q6Cwa.png

 

Dans le cas d'une configuration RAID3, les données de chaque disque dur sont traitées simultanément octet par octet et un disque est dédié aux informations de parité.
Dans cet exemple, les disques sont donc découpés en octets que j'ai explicités. Regardons ensemble comment le premier octet de parité est calculé :

Ap(1-2) = A1 XOR A2 =         10010111
                                        XOR   11011000
                                      =          01001111

Maintenant imaginons que les octets D1 et C2 soient corrompus (cf. schéma). Comment faire pour les récupérer à partir de D2, C1, Cp(1-2) et Dp(1-2) ? Je vous laisse réfléchir quelques instants, il n'y a pas de piège. :)
 

  Révéler le contenu masqué

Bravo ! Il suffisait effectivement de calculer D2 XOR Dp(1-2) et  C1 XOR Cp(1-2) :

Octet   Octet
C1 10001100 01010101 D2
Cp(1-2) 10010111 10010111 Dp(1-2)
C2 = C1 XOR Cp(1-2) 00011011 11000010 D1 = D2 XOR Dp(1-2)

 

Le gros problème avec le RAID3 que chaque écriture sur un disque entraîne aussi une écriture sur le disque de parité qui devient donc une des limitations du RAID3.
Exemple : Si j'enregistre l'octet B1 et C1 sur le disque 1 alors le disque de parité devra écrire l'octet de parité correspondants. Si j'enregistre les B1 et C1 sur le disque 1 et B2 et C2 sur le disque 2 alors le disque de parité devra écrire Ap(1-2) et Dp(1-2)

Le RAID 4

Le RAID4 reprends exactement le même principe que sa version précédente. La seule différence c'est que les données sont découpées en secteurs (aussi appelés blocs) de 512o au minimum. Travailler avec de plus grandes unités de données permet de limiter fortement le synchronisme permanent entre les disques. Le RAID4 est donc plus performant mais le disque de parité reste toujours un goulet d'étranglement pour le système ─ surtout pour des configuration avec beaucoup de disques.

Le RAID 5

Le RAID5 est le niveau le plus abouté. Il est d'ailleurs le plus utilisé aujourd'hui. Reprenant le principe du RAID4 et du découpage par bloc, le RAID5 répartit les données de parités sur tous les disques. Ainsi, le débit des données est également réparti sur tous les disques. Le système tourne donc au maximum de ses capacités matérielles et permet d'obtenir des performances très proches de celles obtenues en RAID-0, tout en assurant une tolérance aux pannes élevée, c'est la raison pour laquelle c'est un des modes RAID les plus intéressants en terme de performance et de fiabilité.
 

1R8aq68.png

 

Raconté ainsi, vous êtes peut-être en train de vous dire que le RAID5 c'est vraiment génial et que vous feriez bien d'investir un peu de temps et d'argent là dedans ! Faites attention, vraiment. Le fonctionnement du RAID5 est complexe et plein de (mauvaises) surprises. Personnellement, je ne recommanderai pas le RAID5 à un particulier sans réelle expérience. C'est d'ailleurs en cherchant des informations pour rédiger ce tutoriel que j'ai découvert ces "petits soucis" (typiquement les erreurs incorrigibles, problèmes de contrôleurs RAID) que les professionnels connaissent bien. Je ne vais pas détailler ce genre de choses ici mais si le sujet vous intéresse je vous renvoie vers les diverses discussions et article qui en parlent.

 

 

Remarque : Une technique très utilisé pour augmenter la fiabilité de nombreux RAID (dont le RAID5) consiste à ajouter un disque de rechange (Hot Spare). Il s'agit d'un disque complémentaire qui vierge qui n'est pas utilisé en temps normal. Lorsqu'un disque de la grappe vient à défaillir, les données de ce disque dur sont alors reconstruit à partir des données présentes sur les autres disque ce qui peut prendre un certain temps en fonction de la masse de données. Une fois le disque reconstruit, le système redevient un RAID5 classique.

RAID 6

Le RAID 6 nécessite quant à lui au minimum 4 disques. C’est une évolution du RAID 5 qui utilise deux jeux de données de parité distincts et supporte donc la panne de deux disque. Il est aussi à noter que le contrôleur RAID (qui interface avec les disques) est encore plus sollicité et gère 2 fois plus d'informations de parité.

 

Cette configuration RAID est principalement utilisé pour optimiser l’espace disque tout en offrant une protection pouvant aller jusqu’à deux défaillances de disque.
 

Le RAID10 (1+0)

A ne pas confondre avec son homologue RAID01 (relativement inutile), le RAID10 mets en RAID0 au minimum deux grappes de deux disques en RAID1 : [IMAGE]

Il en découle une bonne fiabilité puisqu'il faut que tous les éléments d'une grappe soient défectueux pour entraîner un défaut global. La reconstruction est assez performante puisqu'elle ne mobilise que les disques d'une seule grappe et non la totalité.
On peut faire la même chose avec les RAID 5 et 6 mais je ne vais pas en parler ici.


Tableau récapitulatif des configuration RAID les plus connues :

 Fonctionnalités    RAID 0 RAID 1 RAID 5 RAID 6 RAID 10 RAID 50 RAID 60
Nombre minimum de disques requis 2 2 3 4 4 6 8
Protection des données                                   Panne d'un seul        disque          Panne d'un seul disque     Panne de deux disques Une panne maximale par sous-grappe Une panne maximale par sous-grappe Deux pannes maximales par sous-grappe
Performances en lecture  Élevées Élevées+ Élevées Élevées Élevées Élevées Élevées
Performances en écriture Élevées Normales Moyennes Faibles/ Moyennes Élevées Moyennes Moyennes
Performances en lecture (mode dégradé) (*)   Normales Moyennes Moyennes Élevées Moyennes Moyennes
Performances en écriture (mode dégradé) (*)   Normales Faibles Faibles Élevées Moyennes Faibles
Utilisation de la capacité totale des disques 100% 50% 67% - 94% (**) 50% - 88%
(**)
50% 67% - 94%
(**)
80% - 88%
(**)
Applications types journalisation de données peu sensibles, rendu en temps réel, données très transitoires Système d'exploitation (PC personnel) mise en œuvre de serveurs web, archivage archivage, solution à haute disponibilité, serveurs web base de données à accès rapide, OS sur un PC personnel Base de données volumineuses, serveurs de fichiers, serveurs d'applications archivage, solution à haute disponibilité, serveurs web, sauvegarde sur disque

(*) Lorsqu'un ou plusieurs disques tombe(nt) en panne, le RAID entre en mode dégradé.

(**) En fonction du nombre de disques utilisés.

Liens complémentaires (la page wikipédia est très complet) :

 

NVMe :

Le protocole AHCI avait été conçu pour des disques durs mécaniques utilisant l'interface SATA. Après l'avènement des SSDs en SATA, les constructeurs ont mis au point des SSDs toujours plus rapides connectés cette fois-ci en PCI-e. Le problème ? Le protocole AHCI ne gérait pas de façon optimale l'accès à la mémoire flash, bridant ainsi ces nouveaux SSD. Un nouveau protocole a donc été mis au spécialement pour les SSD connectés en PCIe le NVMe (Non-Volatile Memory Host Controller Interface Specification). Créé en 2011, la version 1.3, sorti mi-juin 2017, est capable d’exploiter les nouveaux débits du prochain PCIe 4.0 prévu pour 2018.

 

Remarque : Le protocole NVMe est supporté nativement à partir de Windows 8.1. Avec le kernel Linux 3.3, les distributions Linux profitent de tous les avantages du NVMe.

Les principaux avantages de la spécification NVMe pour les SSD en PCIe par rapport au standard SATA et AHCI sont :

  • Réduction de la latence (2.8μs contre 6μs)
  • Augmentation majeure de le bande passante  (i.e du nombre d'opérations Entrées/Sortie par seconde (IOPS))
    Pour vous donner un ordre d'idée, il est possible d'atteindre 3 millions d'IOPS avec un système de ce type, là où le SATA plafonne à 150 000 IOPS.
  • Diminution de la consommation électrique des SSDs

Bref, le NVME c'est le protocole le plus optimisé qu'il soit pour les SSDs.
 

   Pour aller plus loin  

 
 
Les SSD NVMe utilisent un jeu de commandes simplifié qui permet de réduire le nombre d’instructions CPU nécessaires pour traiter une demande d’E/S par rapport aux disques SATA. De plus, le protocole NVMe prend en charge 65535 commandes par file d'attente et supporte 65536 files d'attente par périphérique. Le protocole AHCI quant-à lui ne supporte qu'une file de 32 commandes. On comprend facilement pourquoi la bande passante explose avec le NVME. :c_satisfied:

Quelques liens complémentaires :
 

 

[TL;NR] Synthèse 

Pendant l'aire du HDD, remplaçant l'ancienne norme PATA, l'interface SATA était reine et n'avait aucun mal à suivre les besoins en bande passante. L'augmentation des performances des disques mécaniques était limité physiquement par la densité du plateau et la vitesse de rotation de la tête de lecture. Le protocole AHCI était suffisamment efficace pour et les fabricants étaient occupés à réviser une vieille interface moins rapide que le SATA : le PCI. En 2004, ils mettent au point le PCIe qu'ils utilisent pour les périphériques rapides (typiquement la carte graphique). Très vite, les révisions s'enchaînent des deux côté et au final, le PCIe 3.0 domine de loin le SATA III. En parallèle, les disques à mémoire flash (SSD) se démocratisent et ne cessent de s'améliorer au point de bouder l'interface SATA et le protocole AHCI pour l'interface PCI-e et le tout nouveau protocole NVME.
Quant à la technologie RAID, elle reste depuis sa création en 1987 très majoritairement utilisé pour les serveurs. Ses nombreuses améliorations et avantages expliquent qu'elle soit toujours utilisée aujourd’hui.

  Voilà, vous êtes arrivés à la fin de mon tutoriel diptyque purement orienté sur la théorie. Un tutoriel pratique sur l'optimisation des SSDs est en cours de rédaction.

Salut !

 

A ce stade ce n'est plus un tutoriel mais une histoire pour faire endormir les petits quand c'est l'heure d'aller au lit !

 

C'est lonnng ! O.o

 

Mais c'est très bien donc franchement, au top !

 

J'ai appris pas mal de choses en lisant certains passages :) Merci pour ça !

Modifié par Invité
La citation aussi est très longue :D
Lien vers le commentaire
  • 2 semaines plus tard...

Salut @safami,

Ah non je n'en avais jamais entendu parler (en même temps ce n'est pas courant du tout).

De ce que je viens de comprendre, les connecteurs U.2 sont théoriquement plus performants que les M.2 (4Go/s vs 2Go/s) mais coûtent plus cher à la production. Pour l'utilisateur, il faut un câblage spécial, largement plus coûteux que le câblage de base pour un SSD M.2. C'est pour cette raison qu'il n'est pas très répandu chez les particuliers (mais l'est pas mal chez les professionnels). Pour moi l'investissement n'est pas rentable du tout.
Il faut que je rajoute ça dans mon guide d'achat SSD. Merci pour la découverte ;)

Lien vers le commentaire
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...