Introduction
Linux dispose de systèmes et d’outils robustes pour gérer les périphériques matériels, y compris les lecteurs de stockage. Dans cet article, nous couvrirons, à un niveau élevé, comment Linux représente ces périphériques et comment le stockage brut est transformé en espace utilisable sur le serveur.
Qu’est-ce que le stockage par blocs?
Le stockage par blocs est un autre nom pour ce que le noyau Linux appelle un périphérique de bloc. Un périphérique de bloc est un morceau de matériel qui peut être utilisé pour stocker des données, comme un disque dur traditionnel à plateaux, un disque SSD (Solid State Drive), une clé USB, etc. Il est appelé périphérique de bloc car le noyau interagit avec le matériel en faisant référence à des blocs de taille fixe, ou des morceaux d’espace.
En d’autres termes, le stockage par blocs est ce que vous considérez comme un stockage de disque régulier sur un ordinateur. Une fois configuré, il agit comme une extension de l’arborescence du système de fichiers actuel, et vous devriez pouvoir écrire ou lire des informations à partir de chaque lecteur de manière interchangeable.
Qu’est-ce que les partitions de disque?
Les partitions de disque sont une manière de diviser un disque de stockage en unités plus petites et utilisables. Une partition est une section d’un disque de stockage qui peut être traitée de la même manière qu’un disque lui-même.
Le partitionnement vous permet de segmenter l’espace disponible et d’utiliser chaque partition à des fins différentes. Cela offre à l’utilisateur plus de flexibilité, lui permettant éventuellement de segmenter un seul disque pour plusieurs systèmes d’exploitation, de l’espace d’échange ou des systèmes de fichiers spécialisés.
Bien que les disques puissent être formatés et utilisés sans partitionnement, les systèmes d’exploitation s’attendent généralement à trouver une table de partitions, même s’il n’y a qu’une seule partition écrite sur le disque. Il est généralement recommandé de partitionner de nouveaux disques pour une plus grande flexibilité.
MBR vs GPT
Lors du partitionnement d’un disque, il est important de savoir quelle format de partitionnement sera utilisé. Cela se résume généralement au choix entre MBR (Master Boot Record) et GPT (GUID Partition Table).
MBR a plus de 30 ans. En raison de son âge, il présente certaines limitations sérieuses. Par exemple, il ne peut pas être utilisé pour les disques de plus de 2 To et ne peut avoir qu’un maximum de quatre partitions primaires.
GPT est un schéma de partitionnement plus moderne qui résout certains des problèmes inhérents à MBR. Les systèmes utilisant GPT peuvent avoir beaucoup plus de partitions par disque, généralement limités uniquement par les restrictions imposées par le système d’exploitation lui-même. De plus, la limitation de la taille du disque n’existe pas avec GPT, et les informations de la table de partition sont disponibles à plusieurs emplacements pour se prémunir contre la corruption. GPT peut également écrire un « MBR protecteur » pour assurer la compatibilité avec les outils utilisant uniquement MBR.
Dans la plupart des cas, GPT est le meilleur choix, sauf si votre système d’exploitation vous en empêche.
Formatage et Systèmes de Fichiers
Alors que le noyau Linux peut reconnaître un disque brut, il doit être formaté pour être utilisé. Le formatage est le processus d’écriture d’un système de fichiers sur le disque et de sa préparation pour les opérations de fichiers. Un système de fichiers est le système qui structure les données et contrôle comment les informations sont écrites et extraites du disque sous-jacent. Sans un système de fichiers, vous ne pourriez pas utiliser le dispositif de stockage pour des opérations de système de fichiers standard.
Il existe de nombreux formats de systèmes de fichiers, chacun ayant des compromis, y compris le support du système d’exploitation. Tous présentent à l’utilisateur une représentation similaire du disque, mais les fonctionnalités et les plateformes qu’ils prennent en charge peuvent être très différentes.
Certains des systèmes de fichiers les plus populaires pour Linux sont :
- Ext4: Le système de fichiers par défaut le plus populaire est Ext4, successeur d’Ext2 et Ext3. Le système de fichiers Ext4 est journalisé, rétrocompatible avec les systèmes hérités, stable, et bénéficie d’une prise en charge et d’outils matures. C’est un bon choix si vous n’avez pas de besoins spécialisés.
- XFS: XFS se spécialise dans les performances et les fichiers de données volumineux. Il se formate rapidement et présente de bonnes caractéristiques de débit lors du traitement de fichiers volumineux et lors de l’utilisation de grands disques. Il dispose également de fonctionnalités de création instantanée de clichés (live snapshotting). XFS utilise la journalisation des métadonnées plutôt que la journalisation des métadonnées et des données. Cela entraîne des performances rapides, mais peut potentiellement conduire à la corruption des données en cas de perte brutale de courant.
- Btrfs: Btrfs est un système de fichiers moderne avec une riche fonctionnalité de copie sur écriture. Cette architecture permet d’intégrer certaines fonctionnalités de gestion de volume dans la couche du système de fichiers, y compris des instantanés (snapshots) et des clonages. Il est utilisé par défaut sur certains matériels NAS (stockage connecté en réseau) grand public et commerciaux, et est populaire pour des matrices de disques dédiées et multi-disques
- ZFS: ZFS est un autre système de fichiers et gestionnaire de volumes de copie sur écriture avec un ensemble de fonctionnalités robuste et mature. Il rivalise assez directement avec Btrfs, dispose de fonctionnalités d’intégrité des données, peut gérer des tailles de système de fichiers importantes, présente des fonctionnalités de volumes typiques telles que la création d’instantanés et de clonages, et peut organiser les volumes en matrices RAID et RAID-like pour la redondance et les performances. ZFS a une histoire controversée en raison de problèmes de licence, mais il n’est pas beaucoup plus ou moins populaire que Btrfs lorsqu’on prend en compte le support commercial.
De plus, Windows utilise principalement *NTFS* et ExFAT, et macOS utilise principalement HFS+ et APFS. Il est généralement possible de lire et parfois d’écrire ces formats de système de fichiers sur différentes plates-formes, mais cela peut nécessiter des outils de compatibilité supplémentaires.
Comment Linux gère les périphériques de stockage
Fichiers de périphériques dans /dev
En Linux, presque tout est représenté par un fichier quelque part dans la hiérarchie du système de fichiers. Cela inclut le matériel tel que les lecteurs de stockage, qui sont représentés sur le système en tant que fichiers dans le répertoire /dev
. En général, les fichiers représentant les périphériques de stockage commencent par sd
ou hd
suivi d’une lettre. Par exemple, le premier lecteur sur un serveur est généralement quelque chose comme /dev/sda
.
Les partitions sur ces lecteurs ont également des fichiers dans /dev
, représentés en ajoutant le numéro de partition à la fin du nom du lecteur. Par exemple, la première partition sur le lecteur de l’exemple précédent serait /dev/sda1
.
Tandis que les fichiers de périphérique /dev/sd*
et /dev/hd*
représentent la méthode traditionnelle pour faire référence aux lecteurs et partitions, il existe un inconvénient significatif à utiliser uniquement ces valeurs. Le noyau Linux décide quel périphérique reçoit quel nom à chaque démarrage, ce qui peut conduire à des scénarios déroutants où vos périphériques changent de nœuds de périphérique.
Pour contourner ce problème, le répertoire /dev/disk
contient des sous-répertoires correspondant à différentes manières persistantes d’identifier les disques et partitions sur le système. Ils contiennent des liens symboliques créés au démarrage renvoyant aux fichiers /dev/[sh]da*
corrects. Les liens sont nommés selon le trait d’identification du répertoire (par exemple, par étiquette de partition dans le répertoire /dev/disk/by-partlabel
). Ces liens pointeront toujours vers les périphériques corrects, et peuvent être utilisés comme identifiants statiques pour les espaces de stockage.
Certains ou tous les sous-répertoires suivants peuvent exister sous /dev/disk
:
by-label
: La plupart des systèmes de fichiers disposent d’un mécanisme d’étiquetage permettant l’attribution de noms arbitraires spécifiés par l’utilisateur pour un disque ou une partition. Ce répertoire est constitué de liens portant ces étiquettes fournies par l’utilisateur.by-uuid
: Les UUID, ou identifiants universellement uniques, sont une longue chaîne de lettres et de chiffres unique pouvant être utilisée comme identifiant pour une ressource de stockage. Ils ne sont généralement pas très lisibles pour l’homme, mais sont presque toujours uniques, même entre les systèmes. Ainsi, il pourrait être judicieux d’utiliser les UUID pour faire référence au stockage pouvant migrer entre les systèmes, car les collisions de noms sont moins probables.by-partlabel
etby-partuuid
: Les tables GPT proposent leur propre ensemble d’étiquettes et d’UUID, qui peuvent également être utilisés pour l’identification. Cela fonctionne de la même manière que les deux répertoires précédents, mais utilise des identifiants spécifiques à GPT.by-id
: Ce répertoire contient des liens générés par les numéros de série propres au matériel et le matériel auquel ils sont attachés. Ceci n’est pas entièrement persistant, car la manière dont le dispositif est connecté au système peut modifier son nomby-id
.by-path
: Commeby-id
, ce répertoire repose sur la connexion d’un dispositif de stockage au système lui-même. Les liens ici sont construits en utilisant l’interprétation du système du matériel utilisé pour accéder au dispositif. Cela présente les mêmes inconvénients queby-id
, car connecter un dispositif à un port différent peut modifier cette valeur.
En général, by-label
ou by-uuid
sont les meilleures options pour l’identification persistante de dispositifs spécifiques.
Note : Les volumes de stockage bloc de DigitalOcean contrôlent les numéros de série du dispositif rapportés au système d’exploitation. Cela permet à la catégorisation by-id
d’être fiablement persistante sur cette plateforme. C’est la méthode préférée pour faire référence aux volumes DigitalOcean car elle est à la fois persistante et prévisible lors du premier démarrage.
Montage des dispositifs de bloc
Dans Linux et d’autres systèmes d’exploitation de type Unix, l’ensemble du système, quel que soit le nombre de périphériques physiques impliqués, est représenté par une seule arborescence de fichiers unifiée. Lorsqu’un système de fichiers sur un lecteur ou une partition doit être utilisé, il doit être connecté à l’arborescence existante. Le montage est le processus de rattachement d’une partition ou d’un lecteur formaté à un répertoire dans le système de fichiers Linux. Le contenu du lecteur peut ensuite être accessible depuis ce répertoire.
Les lecteurs sont presque toujours montés sur des répertoires vides dédiés – le montage sur un répertoire non vide signifie que le contenu habituel du répertoire sera inaccessible jusqu’à ce que le lecteur soit démonté. Il existe de nombreuses options de montage différentes qui peuvent être définies pour modifier le comportement d’un périphérique monté. Par exemple, le lecteur peut être monté en mode lecture seule pour garantir que son contenu ne sera pas modifié.
La norme de hiérarchie des systèmes de fichiers recommande d’utiliser /mnt
ou un sous-répertoire de celui-ci pour les systèmes de fichiers temporairement montés. Elle ne fait aucune recommandation sur l’emplacement où monter le stockage plus permanent, vous pouvez donc choisir le schéma qui vous convient. Dans de nombreux cas, les sous-répertoires de /mnt
sont également utilisés pour le stockage plus permanent.
Rendre les montages permanents avec /etc/fstab
Les systèmes Linux utilisent un fichier appelé /etc/fstab
(tableau de système de fichiers) pour déterminer quels systèmes de fichiers monter lors du processus de démarrage. Les systèmes de fichiers qui n’ont pas d’entrée dans ce fichier ne seront pas automatiquement montés à moins d’être scriptés par un autre logiciel.
Chaque ligne du fichier /etc/fstab
représente un système de fichiers différent qui doit être monté. Cette ligne spécifie le périphérique de bloc, le point de montage auquel l’attacher, le format du lecteur, les options de montage, ainsi que quelques autres informations.
Gestion de stockage plus complexe
Alors que de nombreux cas d’utilisation seront pris en charge par ces fonctionnalités de base, il existe des paradigmes de gestion plus complexes pour rassembler plusieurs disques, notamment RAID.
Qu’est-ce que le RAID?
RAID signifie redondant array of independent disks. RAID est une technologie de gestion de stockage et de virtualisation qui vous permet de regrouper des lecteurs et de les gérer comme une seule unité avec des capacités supplémentaires.
Les caractéristiques d’un tableau RAID dépendent de son niveau RAID, qui définit comment les disques dans le tableau sont liés les uns aux autres. Certains des niveaux les plus courants sont :
- RAID 0 : Ce niveau indique le striping du disque. Cela signifie que lorsque des données sont écrites dans le tableau, elles sont divisées et réparties linéairement entre les disques de l’ensemble. Cela offre un boost de performance car plusieurs disques peuvent être écrits ou lus simultanément. L’inconvénient est qu’une défaillance d’un seul disque peut entraîner la perte de toutes les données de l’ensemble du tableau, car aucun disque ne contient suffisamment d’informations sur le contenu pour la reconstruction. En raison de cette raison, le RAID 0 est généralement rarement utilisé en production, bien qu’il puisse être utile à des fins de comparaison.
- RAID 1 : RAID 1 indique la mise en miroir du disque. Tout ce qui est écrit dans un tableau RAID 1 est écrit sur plusieurs disques. Son principal avantage est la redondance des données, ce qui permet aux données de survivre à la perte d’un disque dur de chaque côté du miroir. Étant donné que plusieurs disques contiendront les mêmes données exactes, votre capacité utilisable est réduite d’au moins la moitié.
- RAID 5 : RAID 5 répartit les données sur plusieurs disques, similaire à RAID 0. Cependant, ce niveau met également en œuvre une parité distribuée entre les disques. Cela signifie qu’en cas de défaillance d’un disque, les disques restants peuvent reconstruire le tableau en utilisant les informations de parité partagées entre eux. En général, cela suffit pour reconstruire un disque, ce qui signifie que le tableau peut survivre à la perte d’un disque. RAID 5 réduit l’espace disponible dans un tableau de la capacité d’un disque.
- RAID 6: RAID 6 a les mêmes propriétés que RAID 5, mais fournit une double parité. Cela signifie que les matrices RAID 6 peuvent supporter la perte de n’importe quel 2 disques. La capacité de la matrice est à nouveau affectée par la quantité de parité, ce qui signifie que la capacité utilisable est réduite de deux disques d’espace.
- RAID 10: RAID 10 est une combinaison des niveaux 1 et 0. Tout d’abord, deux ensembles de matrices miroir sont créés. Ensuite, les données sont réparties entre eux. Cela crée une matrice qui a certaines caractéristiques de redondance tout en fournissant de bonnes performances. Cependant, cela nécessite assez de disques, et la capacité totale est encore inférieure à la moitié de l’espace disque combiné.
Que faire ensuite?
Si vous avez un nouveau périphérique de stockage que vous souhaitez utiliser dans votre système Linux, cet article vous guidera à travers le processus de partitionnement, de formatage et de montage de votre nouveau système de fichiers. Cela devrait être suffisant pour la plupart des cas d’utilisation où vous êtes principalement préoccupé par l’ajout de capacité supplémentaire. Pour apprendre comment effectuer des tâches d’administration de stockage, consultez Comment Effectuer des Tâches d’Administration de Base pour les Périphériques de Stockage sous Linux.