Introduction à la terminologie et aux concepts de stockage sous Linux

introduction

Linux possède des systèmes et des outils robustes pour gérer les périphériques matériels, y compris les lecteurs de stockage. Dans cet article, nous verrons en détail 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 en bloc?

Stockage en bloc est un autre nom pour ce que le noyau Linux appelle un périphérique en mode bloc. Unblock device est un élément matériel qui peut être utilisé pour stocker des données, comme un disque dur rotatif traditionnel (HDD), un disque SSD (SSD), une clé USB, etc. Il est appelé un périphérique de bloc parce que le noyau s'interface avec le matériel en référençant des blocs de taille fixe ou des blocs d'espace.

Donc, fondamentalement, le stockage en mode bloc est ce que vous appelez un stockage sur disque normal sur un ordinateur. Une fois qu'il est configuré, il agit essentiellement comme une extension de l'arborescence du système de fichiers actuel. Vous pouvez écrire ou lire des informations de manière transparente à partir du lecteur.

Que sont les partitions de disque?

Les partitions de disque permettent de diviser un lecteur de stockage en unités utilisables plus petites. Une partition est une section d’un lecteur de stockage qui peut être traitée de la même manière qu’un lecteur.

Le partitionnement vous permet de segmenter l'espace disponible et d'utiliser chaque partition à des fins différentes. Cela donne à l'utilisateur une grande flexibilité lui permettant de segmenter éventuellement son installation pour une mise à niveau facile, des systèmes d'exploitation multiples, un 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, certains systèmes d'exploitation s'attendent à trouver une table de partition, même s'il n'y a qu'une seule partition écrite sur le disque. Il est généralement recommandé de partitionner les nouveaux disques pour une plus grande flexibilité sur la route.

MBR vs GPT

Lors du partitionnement d'un disque, il est important de savoir quel partitionnementformat sera utilisé. Cela revient généralement à choisir entre MBR (Master Boot Record) et GPT (GUID Partition Table).

MBR est le système de partitionnement traditionnel, utilisé depuis plus de 30 ans. En raison de son âge, il a de sérieuses limitations. Par exemple, il ne peut pas être utilisé pour des disques d'une taille supérieure à 2 To et ne peut comporter que quatre partitions principales au maximum. De ce fait, la quatrième partition est généralement configurée en tant que «partition étendue», dans laquelle des «partitions logiques» peuvent être créées. Cela vous permet de subdiviser la dernière partition pour autoriser efficacement des partitions supplémentaires.

GPT est un schéma de partitionnement plus moderne qui tente de résoudre certains des problèmes inhérents au MBR. Les systèmes exécutant GPT peuvent avoir beaucoup plus de partitions par disque. Cela n’est généralement limité que par les restrictions imposées par le système d’exploitation lui-même. En outre, la limitation de la taille du disque n'existe pas avec GPT et les informations de la table de partition sont disponibles dans plusieurs emplacements pour éviter toute corruption. GPT peut également écrire un «MBR de protection» qui indique aux outils exclusivement MBR que le disque est utilisé.

Dans la plupart des cas, GPT est le meilleur choix, à moins que votre système d'exploitation ou vos outils ne vous empêchent de l'utiliser.

Formatage et systèmes de fichiers

Bien que le noyau Linux puisse reconnaître un disque brut, le lecteur ne peut pas être utilisé tel quel. Pour l'utiliser, il doit être formaté. Formatting est le processus d'écriture d'un système de fichiers sur le disque et de sa préparation pour les opérations sur les fichiers. Unfilesystem est le système qui structure les données et contrôle la manière dont les informations sont écrites et récupérées sur le disque sous-jacent. Sans système de fichiers, vous ne pourriez utiliser le périphérique de stockage pour aucune opération liée à un fichier.

Il existe de nombreux formats de système de fichiers différents, chacun avec des compromis entre différentes dimensions, y compris la prise en charge du système d'exploitation. Au niveau de base, ils présentent tous à l'utilisateur une représentation similaire du disque, mais les fonctionnalités prises en charge par chacun et les mécanismes utilisés pour permettre des opérations d'utilisateur et de maintenance peuvent être très différents.

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, ou la quatrième version du système de fichiers étendu. Le système de fichiers Ext4 est journalisé, rétrocompatible avec les systèmes existants, d’une stabilité incroyable, et dispose d’un support et d’outils matures. C'est un bon choix si vous n'avez pas de besoins particuliers.

  • XFS: XFS est spécialisé dans les performances et les gros fichiers de données. Il se formate rapidement et présente de bonnes caractéristiques de débit lors de la manipulation de fichiers volumineux et lors de l'utilisation de disques volumineux. Il a également des fonctionnalités de capture instantanée en direct. XFS utilise la journalisation des métadonnées par opposition à la journalisation des métadonnées et des données. Cela entraîne des performances rapides, mais peut potentiellement entraîner une corruption des données en cas de coupure de courant soudaine.

  • Btrfs: Btrfs est un système de fichiers de copie sur écriture moderne et riche en fonctionnalités. Cette architecture permet d'intégrer certaines fonctionnalités de gestion des volumes dans la couche système de fichiers, notamment les instantanés, le clonage, les volumes, etc. Btrfs rencontre encore quelques problèmes lorsqu’il s’agit de disques entiers. Il y a un débat sur son état de préparation pour les charges de travail de production et de nombreux administrateurs système attendent que le système de fichiers atteigne une maturité supérieure.

  • ZFS: ZFS est un système de fichiers et un gestionnaire de volumes de copie sur écriture avec un ensemble de fonctionnalités robuste et mature. Il offre d'excellentes fonctionnalités d'intégrité des données, peut gérer des systèmes de fichiers volumineux, des fonctionnalités de volume typiques telles que la capture instantanée et le clonage, et peut organiser des volumes en RAID et des baies de type RAID à des fins de redondance et de performance. En termes d'utilisation sous Linux, ZFS a une histoire controversée en raison de problèmes de licence. Cependant, Ubuntu fournit maintenant un module de noyau binaire, et Debian inclut le code source dans ses référentiels. Le support sur les autres distributions reste à déterminer.

Comment Linux gère les périphériques de stockage

Fichiers de périphérique dans / dev

Sous Linux, presque tout est représenté par un fichier. Cela inclut le matériel comme les lecteurs de stockage, qui sont représentés sur le système sous forme de fichiers dans le répertoire/dev. En règle générale, les fichiers représentant les périphériques de stockage commencent parsd ouhd 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 les/dev, représentés en ajoutant le numéro de partition à la fin du nom du lecteur. Par exemple, la première partition du lecteur de l'exemple précédent serait/dev/sda1.

Bien que les fichiers de périphérique/dev/sd* et/dev/hd* représentent la manière traditionnelle de faire référence aux lecteurs et aux partitions, il y a un inconvénient majeur à utiliser ces valeurs par elles-mêmes. Le noyau Linux décide quel périphérique reçoit le nom de chaque démarrage, ce qui peut entraîner des situations confuses dans lesquelles vos périphériques changent de nœud de périphérique.

Pour contourner ce problème, le répertoire/dev/disk contient des sous-répertoires correspondant à des méthodes différentes et plus persistantes pour identifier les disques et les partitions sur le système. Ceux-ci contiennent des liens symboliques créés au démarrage vers les fichiers/dev/[sh]da* corrects. Les liens sont nommés en fonction du trait d’identification du répertoire (par exemple, par l’étiquette de partition dans le répertoire/dev/disk/by-partlabel). Ces liens pointeront toujours vers les périphériques appropriés, ils peuvent donc être utilisés comme identificateurs 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 ont un mécanisme d'étiquetage qui permet l'attribution de noms arbitraires spécifiés par l'utilisateur pour un disque ou une partition. Ce répertoire est composé de liens nommés d'après ces étiquettes fournies par l'utilisateur.

  • by-uuid: les UUID, ou identificateurs universellement uniques, sont une longue chaîne unique de lettres et de chiffres qui peut être utilisée comme identifiant pour une ressource de stockage. Celles-ci ne sont généralement pas très lisibles par l'homme, mais sont pratiquement garanties d'être uniques, même à travers les systèmes. En tant que tel, il pourrait être judicieux d'utiliser des UUID pour référencer le stockage susceptible de migrer entre les systèmes, car les collisions de dénomination sont moins probables.

  • by-partlabel etby-partuuid: les tables GPT offrent 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 propres numéros de série du matériel et le matériel auquel ils sont connectés. Ce n'est pas entièrement persistant, car la façon dont le périphérique est connecté au système peut changer son nomby-id.

  • by-path: commeby-id, ce répertoire dépend de la connexion des périphériques 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 périphérique. Cela présente les mêmes inconvénients queby-id car la connexion d'un périphérique à un port différent peut modifier cette valeur.

En général,by-label ouby-uuid sont les meilleures options pour l'identification persistante de périphériques spécifiques.

Note

[.note] # Les volumes de stockage en bloc DigitalOcean contrôlent les numéros de série des périphériques signalés au système d'exploitation. Cela permet à la catégorisationby-id d'être persistante de manière fiable sur cette plate-forme. 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 au premier démarrage.
#

Dispositifs de bloc de montage

Le fichier de périphérique dans/dev est utilisé pour communiquer avec le pilote du noyau pour le périphérique en question. Cependant, une abstraction plus utile est nécessaire pour traiter le périphérique comme un segment d'espace disponible.

Sous Linux et les 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. En tant que tel, lorsqu'un système de fichiers sur un lecteur ou une partition doit être utilisé, il doit être connecté à l'arborescence existante. Mounting est le processus d'attachement d'une partition ou d'un lecteur formaté à un répertoire dans le système de fichiers Linux. Le contenu du lecteur est alors accessible à partir de ce répertoire.

Les lecteurs sont presque toujours montés sur des répertoires vides dédiés (monter sur un répertoire non vide signifie que le contenu habituel du répertoire sera inaccessible jusqu’à ce que le lecteur soit démonté). De nombreuses options de montage peuvent être définies pour modifier le comportement du périphérique monté. Par exemple, le lecteur peut être monté en lecture seule pour s’assurer que son contenu ne sera pas modifié.

LeFilesystem Hierarchy Standard recommande d'utiliser/mnt ou un sous-répertoire sous celui-ci pour les systèmes de fichiers montés temporairement. Si cela correspond à votre cas d'utilisation, c'est probablement le meilleur endroit pour le monter. Il ne fait aucune recommandation sur l'emplacement de stockage plus permanent, vous pouvez donc choisir le schéma de votre choix. Dans de nombreux cas, les sous-répertoires/mnt ou/mnt sont également utilisés pour un stockage plus permanent.

Rendre les montages permanents avec / etc / fstab

Les systèmes Linux examinent un fichier appelé/etc/fstab (table du système de fichiers) pour déterminer les systèmes de fichiers à monter pendant le processus de démarrage. Les systèmes de fichiers qui n'ont pas d'entrée dans ce fichier ne seront pas montés automatiquement (à l'exception de ceux définis par les fichiers unitaires de systemd.mount, bien qu'ils ne soient pas courants pour le moment).

Le fichier/etc/fstab est assez simple. Chaque ligne 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 le connecter, le format du lecteur, les options de montage, ainsi que quelques autres informations.

Gestion de stockage plus complexe

Bien que la plupart des cas d'utilisation simples ne nécessitent pas de structures de gestion supplémentaires, des paradigmes de gestion plus complexes permettent d'obtenir plus de performances, de redondance ou de flexibilité.

Qu'est-ce que le RAID?

RAID représenteredundantarray ofindependentdisks. Le RAID est une technologie de gestion de stockage et de virtualisation qui vous permet de regrouper des disques et de les gérer comme une seule unité dotée de fonctionnalités supplémentaires.

Les caractéristiques d'une matrice RAID dépendent de son niveau RAID, ce qui définit fondamentalement la relation entre les disques de la matrice. Le niveau choisi a un impact sur les performances et la redondance de l'ensemble. Certains des niveaux les plus communs sont:

  • RAID 0: ce niveau indique la répartition des lecteurs. Cela signifie que lorsque les données sont écrites dans la matrice, elles sont divisées et réparties entre les disques de l'ensemble. Cela améliore les performances, car plusieurs disques peuvent être écrits ou lus simultanément. L'inconvénient est qu'une panne de lecteur unique peut perdre toutes les données de l'ensemble du groupe, car aucun disque ne contient suffisamment d'informations sur le contenu à reconstruire.

  • RAID 1: RAID 1 est essentiellement une mise en miroir de disque. Tout ce qui est écrit sur une matrice RAID 1 est écrit sur plusieurs disques. Le principal avantage est la redondance des données, qui permet aux données de survivre sur le disque dur perdu de chaque côté du miroir. Étant donné que plusieurs disques contiennent les mêmes données, la capacité utilisable est réduite de moitié.

  • RAID 5: RAID 5 répartit les données sur plusieurs disques, similaire à RAID 0. Cependant, ce niveau implémente également une parité répartie sur les lecteurs. Cela signifie fondamentalement que si le lecteur tombe en panne, les lecteurs restants peuvent reconstruire la matrice en utilisant les informations de parité partagées entre eux. Les informations de parité sont suffisantes pour reconstruire n'importe quel disque, ce qui signifie que la matrice peut survivre à toute perte de disque. Les informations de parité réduisent l'espace disponible dans la matrice de la capacité d'un disque.

  • RAID 6: RAID 6 a les mêmes propriétés que RAID 5, mais offre une double parité. Cela signifie que les baies RAID 6 peuvent supporter la perte de 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.

  • RAID 10: RAID 10 est une combinaison des niveaux 1 et 0. Tout d'abord, deux ensembles de tableaux en miroir sont créés. Ensuite, les données sont réparties sur eux. Cela crée un tableau qui présente certaines caractéristiques de redondance tout en offrant de bonnes performances. Cela nécessite cependant quelques lecteurs et la capacité totale est la moitié de l’espace disque combiné.

Qu'est-ce que LVM?

LVM, ouLogicalVolumeManagement, est un système qui résume les caractéristiques physiques des périphériques de stockage sous-jacents afin de fournir une flexibilité et une puissance accrues. LVM vous permet de créer des groupes de périphériques physiques et de les gérer comme s'il s'agissait d'un seul bloc d'espace. Vous pouvez ensuite segmenter l'espace en fonction des besoins en volumes logiques, qui fonctionnent en tant que partitions.

LVM est implémenté au-dessus des partitions classiques et contourne bon nombre des limitations inhérentes aux partitions classiques. Par exemple, en utilisant des volumes LVM, vous pouvez facilement développer des partitions, créer des partitions qui couvrent plusieurs lecteurs, prendre des instantanés en direct de partitions et déplacer des volumes sur différents disques physiques. LVM peut être utilisé conjointement avec RAID pour fournir une gestion flexible avec les caractéristiques de performances RAID traditionnelles.

Où aller ensuite?

Si vous avez un nouveau périphérique de stockage que vous souhaitez utiliser dans votre système Linux,this article vous guidera à travers le processus de base de partitionnement, de formatage et de montage de votre nouveau système de fichiers. Cela devrait suffire dans la plupart des cas d'utilisation où vous souhaitez principalement augmenter la capacité. Pour savoir comment effectuer des tâches d'administration de stockage de base, consultezthis article.

Related