adplus-dvertising

Gestion, configuration et vérification des filesystems

Gestion, configuration et vérification des filesystems

Gestion et configuration des systèmes de fichiers

Lorsque vous travaillez avec votre système Linux, l'une des décisions que vous devrez prendre est le système de fichiers (filesystem) à utiliser pour les périphériques de stockage. La plupart des distributions Linux vous fournissent un système de fichiers par défaut au moment de l'installation. Bien que l'utilisation du choix du système de fichiers par défaut ne soit pas nécessairement une mauvaise chose, il est parfois utile de connaître les autres options qui s'offrent à vous.

Linux prend en charge plusieurs types de systèmes de fichiers pour gérer les fichiers et les dossiers. Chaque système de fichiers implémente la structure de répertoire virtuel sur les périphériques de stockage en utilisant des fonctionnalités légèrement différentes.

Sous Linux, le système de fichiers crée une arborescence. Tous les fichiers sont organisés sous forme d'arbre et de ses branches. Le répertoire le plus haut appelé répertoire racine (/). Tous les autres répertoires sous Linux sont accessibles à partir du répertoire racine.

Certaines fonctionnalités clés du système de fichiers Linux sont les suivantes :

  •  Partition, répertoires et lecteurs : Linux n'utilise pas de lettres de lecteur pour organiser le lecteur comme le fait Windows. Dans Linux, nous ne pouvons pas dire si nous nous adressons à une partition, à un périphérique réseau, ou à un répertoire "ordinaire" et à un lecteur.
  •  Sensibilité à la casse : Le système de fichiers Linux est sensible à la casse. Il fait la distinction entre les noms de fichiers en minuscules et en majuscules. Par exemple, il existe une différence entre test.txt et Test.txt sous Linux. Cette règle s'applique également aux répertoires et aux commandes Linux.
  •  Extensions de fichiers : Sous Linux, un fichier peut avoir l'extension '.txt', mais il n'est pas nécessaire qu'un fichier ait une extension de fichier. Tout en travaillant avec Shell, cela crée des problèmes pour les débutants pour différencier les fichiers et les répertoires. Si nous utilisons le gestionnaire de fichiers graphique, il symbolise les fichiers et dossiers.
  •  Fichiers cachés : Linux fait la distinction entre les fichiers standard et les fichiers cachés. La plupart des fichiers de configuration sont cachés dans le système d'exploitation Linux. En général, nous n'avons pas besoin d'accéder aux fichiers cachés ou de les lire. Les fichiers cachés dans Linux sont représentés par un point (.) devant le nom du fichier (par exemple, .ignore). Pour accéder aux fichiers, nous devons changer la vue dans le gestionnaire de fichiers ou utiliser une commande spécifique dans le shell.

Lorsque nous installons le système d'exploitation Linux, Linux propose de nombreux systèmes de fichiers tels que Ext, Ext2, Ext3, Ext4, JFS, ReiserFS, XFS, btrfs.

Les systèmes de fichiers Linux de base

Le système de fichiers original introduit avec le système d'exploitation Linux est appelé le système de fichiers étendu (ou simplement ext pour faire court). Il fournit un système de fichiers de base de type Unix pour Linux, utilisant des répertoires virtuels pour gérer les périphériques physiques et stockant les données dans des blocs de longueur fixe sur les périphériques physiques.

Système de fichiers ext

Le système de fichiers ext utilise un système appelé inodes pour suivre les informations sur les fichiers stockés dans le répertoire virtuel. Le système d'inode crée une table distincte sur chaque périphérique physique, appelée table d'inode, pour stocker les informations de fichier. Chaque fichier stocké dans le répertoire virtuel a une entrée dans la table des inodes. La partie étendue du nom provient des données supplémentaires qu'il suit sur chaque fichier, qui se compose de ces éléments :

  •  Le nom de fichier
  •  La taille du fichier
  •  Le propriétaire du fichier
  •  Le groupe auquel appartient le fichier
  •  Autorisations d'accès au fichier
  •  Pointeurs vers chaque bloc de disque contenant des données du fichier

Linux référence chaque inode dans la table des inodes à l'aide d'un numéro unique (appelé numéro d'inode), attribué par le système de fichiers lors de la création des fichiers de données. Le système de fichiers utilise le numéro d'inode pour identifier le fichier plutôt que d'avoir à utiliser le nom et le chemin complets du fichier.

Système de fichiers ext2

Le système de fichiers ext original avait quelques limitations, telles que la restriction des fichiers à seulement 2 Go. Peu de temps après l'introduction de Linux, le système de fichiers ext a été mis à niveau pour créer le deuxième système de fichiers étendu, appelé ext2.

Le système de fichiers ext2 est une extension des capacités de base du système de fichiers ext mais conserve la même structure. Le système de fichiers ext2 étend le format de la table des inodes pour suivre des informations supplémentaires sur chaque fichier du système. La table des inodes ext2 ajoute les valeurs de temps de création, de modification et de dernier accès pour les fichiers afin d'aider les administrateurs système à suivre l'accès aux fichiers sur le système. Le système de fichiers ext2 augmente également la taille de fichier maximale autorisée à 2 To (puis dans les versions ultérieures d'ext2, qui a été augmentée à 32 To) pour aider à gérer les fichiers volumineux couramment trouvés dans les serveurs de base de données.

En plus d'étendre la table des inodes, le système de fichiers ext2 a également modifié la manière dont les fichiers sont stockés dans les blocs de données. Un problème courant avec le système de fichiers ext était que lorsqu'un fichier est écrit sur le périphérique physique, les blocs utilisés pour stocker les données ont tendance à être dispersés dans tout le périphérique (appelé fragmentation). La fragmentation des blocs de données peut réduire les performances du système de fichiers car il faut plus de temps pour rechercher le périphérique de stockage pour accéder à tous les blocs d'un fichier spécifique.

Le système de fichiers ext2 permet de réduire la fragmentation en allouant des blocs de disque en groupes lorsque vous enregistrez un fichier. En regroupant les blocs de données pour un fichier, le système de fichiers n'a pas à rechercher sur tout le périphérique physique les blocs de données pour lire le fichier.

Systèmes de fichiers journalisés

Les systèmes de fichiers de journalisation offrent un nouveau niveau de sécurité au système Linux. Au lieu d'écrire des données directement sur le périphérique de stockage, puis de mettre à jour la table des inodes, les systèmes de fichiers de journalisation écrivent d'abord les modifications de fichier dans un fichier temporaire (appelé journal). Une fois les données écrites avec succès sur le périphérique de stockage et la table des inodes, l'entrée de journal est supprimée.

Linux utilise généralement trois méthodes différentes de journalisation, chacune avec différents niveaux de protection.

  •  Mode données - Les données d'inode et de fichier sont journalisées. Faible risque de perte de données, mais performances médiocres.
  •  Mode ordonné - Seules les données d'inode sont écrites dans le journal, mais ne sont pas supprimées tant que les données du fichier ne sont pas écrites avec succès. Un bon compromis entre performance et sécurité.
  •  Mode d'écriture différée - Seules les données d'inode sont écrites dans le journal, aucun contrôle sur le moment où les données du fichier sont écrites. Risque plus élevé de perte de données, mais c'est toujours mieux que de ne pas utiliser la journalisation.
Système de fichiers ext3

Le système de fichiers ext3 a été ajouté au noyau Linux en 2001, et jusqu'à récemment, il était le système de fichiers par défaut utilisé par à peu près toutes les distributions Linux. Il utilise la même structure de table d'inode que le système de fichiers ext2, mais ajoute un fichier journal à chaque périphérique de stockage pour journaliser les données écrites sur le périphérique de stockage.

Par défaut, le système de fichiers ext3 utilise la méthode de journalisation en mode ordonné, écrivant uniquement les informations d'inode dans le fichier journal, mais ne les supprimant pas tant que les blocs de données n'ont pas été écrits avec succès sur le périphérique de stockage. Vous pouvez changer la méthode de journalisation utilisée dans le système de fichiers ext3 en mode données ou en écriture avec une simple option de ligne de commande lors de la création du système de fichiers.

Bien que le système de fichiers ext3 ait ajouté une journalisation de base au système de fichiers Linux, il lui manquait encore quelques éléments. Par exemple, le système de fichiers ext3 ne fournit aucune récupération après une suppression accidentelle de fichiers, aucune compression de données intégrée n'est disponible et le système de fichiers ext3 ne prend pas en charge le cryptage des fichiers.

Système de fichiers ext4

Le résultat de l'extension du système de fichiers ext3 était le système de fichiers ext4. Le système de fichiers ext4 a été officiellement pris en charge dans le noyau Linux en 2008 et est désormais le système de fichiers par défaut utilisé dans les distributions Linux populaires, telles que Ubuntu.

En plus de prendre en charge la compression et le cryptage, le système de fichiers ext4 prend également en charge une fonctionnalité appelée «extents ». « extents » alloue de l'espace sur un périphérique de stockage en blocs et ne stocke que l'emplacement du bloc de départ dans la table des inodes. Cela permet d'économiser de l'espace dans la table des inodes en n'ayant pas à répertorier tous les blocs de données utilisés pour stocker les données du fichier.

Le système de fichiers ext4 intègre également la pré-allocation des blocs. Si vous voulez réserver de l'espace sur un périphérique de stockage pour un fichier dont vous savez que la taille va augmenter, avec le système de fichiers ext4, il est possible d'allouer tous les blocs attendus pour le fichier, et pas seulement les blocs qui existent physiquement. Le système de fichiers ext4 remplit les blocs de données réservés avec des zéros et sait qu'il ne faut pas les allouer à d'autres fichiers.

Système de fichiers Reiser

En 2001, Hans Reiser a créé le premier système de fichiers de journalisation pour Linux, appelé ReiserFS. Le système de fichiers ReiserFS prend uniquement en charge le mode de journalisation en écriture différée, en écrivant uniquement les données de la table des inodes dans le fichier journal. Comme il n'écrit que les données de la table des inodes dans le journal, le système de fichiers ReiserFS est l'un des systèmes de fichiers de journalisation Linux les plus rapides.

Le système de fichiers ReiserFS présente deux caractéristiques intéressantes : vous pouvez redimensionner un système de fichiers existant alors qu'il est encore actif et il utilise une technique appelée tailpacking, qui consiste à insérer les données d'un fichier dans l'espace vide d'un bloc de données d'un autre fichier. La fonction de redimensionnement actif du système de fichiers est idéale si vous devez étendre un système de fichiers déjà créé pour accueillir davantage de données.

Système de fichiers XFS

XFS est un filesystem conçu par la société SGI (Silicon Graphics Inc) pour ses systèmes Unix IRIX. Créé en 1994, il bénéficie donc d’une longue expérience. Il est surtout utilisé dans des environnements de production, avec des serveurs gérant de très grands espaces de stockage disque.

Le système de fichiers XFS utilise le mode de journalisation écriture différée, qui offre des performances élevées mais introduit un certain risque car les données réelles ne sont pas stockées dans le fichier journal. Le système de fichiers XFS permet également le redimensionnement en ligne du système de fichiers, similaire au système de fichiers Reiser4, sauf que les systèmes de fichiers XFS peuvent uniquement être étendus et non réduits.

Systèmes de fichiers copy-on-write

Avec la journalisation, vous devez choisir entre sécurité et performance. Bien que la journalisation en mode données offre la sécurité la plus élevée, les performances en pâtissent car l'inode et les données sont journalisés. Avec la journalisation en mode écriture différée, les performances sont acceptables, mais la sécurité est compromise.

Pour les systèmes de fichiers, une alternative à la journalisation est une technique appelée copy-on-write (COW). COW offre à la fois sécurité et performances via des instantanés (snapshots). Pour modifier les données, un clone ou un instantané inscriptible est utilisé. Au lieu d'écrire les données modifiées sur les données actuelles, les données modifiées sont placées dans un nouvel emplacement du système de fichiers. Même lorsque la modification des données est terminée, les anciennes données ne sont jamais écrasées.

Système de fichiers ZFS

Le système de fichiers COW ZFS a été développé en 2005 par Sun Microsystems pour le système d'exploitation OpenSolaris. Il a commencé à être porté sur Linux en 2008 et était enfin disponible pour une utilisation en production Linux en 2012.

ZFS est un système de fichiers stable et rivalise bien avec Resier4, Btrfs et ext4. Son plus gros détracteur est que ZFS n'a pas de licence GPL. Le projet OpenZFS a été lancé en 2013, ce qui peut aider à changer cette situation. Cependant, il est possible que jusqu'à ce qu'une licence GPL soit obtenue, ZFS ne soit jamais un système de fichiers Linux par défaut.

Système de fichiers Btrfs

Le dernier COW est le système de fichiers Btrfs, également appelé système de fichiers B-tree. Oracle a commencé le développement sur Btrfs en 2007. Il était basé sur de nombreuses fonctionnalités de Reiser4 mais offrait des améliorations en termes de fiabilité. Des développeurs supplémentaires ont finalement rejoint Btrfs et ont aidé Btrfs à se hisser rapidement au sommet de la liste des systèmes de fichiers populaires. Cette popularité est due à la stabilité, la facilité d'utilisation, ainsi que la possibilité de redimensionner dynamiquement un système de fichiers monté. La distribution openSUSE Linux a récemment établi Btrfs comme son système de fichiers par défaut. Il est également proposé dans d'autres distributions Linux, telles que RHEL, mais pas en tant que système de fichiers par défaut.

Travailler avec des systèmes de fichiers

Linux fournit quelques utilitaires différents qui facilitent le travail avec les systèmes de fichiers à partir de la ligne de commande.

Création de partitions

L'utilitaire fdisk est utilisé pour vous aider à organiser les partitions sur n'importe quel périphérique de stockage installé sur le système. La commande fdisk est un programme interactif qui vous permet d'entrer des commandes pour parcourir les étapes de partitionnement d'un disque dur.

Pour lancer la commande fdisk, vous devez spécifier le nom de périphérique du périphérique de stockage que vous souhaitez partitionner et vous devez disposer de privilèges de superutilisateur.

L'invite de commande interactive fdisk utilise des commandes à une lettre pour indiquer à fdisk ce qu'il faut faire. Le tableau ci-dessous présente les commandes disponibles à l'invite de commande fdisk.

CommandeDescription
aBascule un drapeau indiquant si la partition est amorçable
bModifie l'étiquette de disque utilisée par les systèmes BSD Unix
cBascule l'indicateur de compatibilité DOS
dSupprime la partition
lRépertorie les types de partitions disponibles
mAffiche les options de commande
nAjoute une nouvelle partition
oCrée une table de partition DOS
pAffiche la table de partition actuelle
qQuitte sans enregistrer les modifications
sCrée une nouvelle étiquette de disque pour les systèmes Sun Unix
tModifie l'ID du système de partition
uModifie les unités de stockage utilisées
vVérifie la table de partition
wÉcrit la table de partition sur le disque
xFonctions avancées

Pour commencer, vous pouvez afficher les détails d'un périphérique de stockage à l'aide de la commande p :

devinfo@ubuntu:~$ sudo fdisk /dev/sdb

Bienvenue dans fdisk (util-linux 2.34).
Les modifications resteront en mémoire jusqu'à écriture.
Soyez prudent avant d'utiliser la commande d'écriture.

Le périphérique ne contient pas de table de partitions reconnue.
Création d'une nouvelle étiquette pour disque de type DOS avec identifiant de disque 0xaee3e834.

Commande (m pour l'aide) : p
Disque /dev/sdb : 2 GiB, 2147483648 octets, 4194304 secteurs
Disk model: VMware Virtual S
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0xaee3e834

Ensuite, vous voudrez créer une nouvelle partition sur le périphérique de stockage. Utilisez la commande n pour cela :

Commande (m pour l'aide) : n
Type de partition
   p   primaire (0 primaire, 0 étendue, 4 libre)
   e   étendue (conteneur pour partitions logiques)
Sélectionnez (p par défaut) : p
Numéro de partition (1-4, 1 par défaut) : 1
Premier secteur (2048-4194303, 2048 par défaut) : 2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-4194303, 4194303 par défaut) : +1G

Une nouvelle partition 1 de type « Linux » et de taille 1 GiB a été créée.

Les partitions peuvent être créées en tant que partition principale (primaire) ou partition étendue. Les partitions primaires peuvent être formatées directement avec un système de fichiers, tandis que les partitions étendues ne peuvent contenir que d'autres partitions primaires. La raison des partitions étendues est qu'il ne peut y avoir que quatre partitions sur un seul périphérique de stockage. Vous pouvez étendre cela en créant plusieurs partitions étendues, puis en créant des partitions principales à l'intérieur des partitions étendues. Cet exemple crée un périphérique de stockage principal, lui attribue le numéro de partition 1, puis lui alloue 1 Go d'espace de périphérique de stockage. Vous pouvez à nouveau voir les résultats en utilisant la commande p :

Commande (m pour l'aide) : p
Disque /dev/sdb : 2 GiB, 2147483648 octets, 4194304 secteurs
Disk model: VMware Virtual S
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0xaee3e834

Périphérique Amorçage Début     Fin Secteurs Taille Id Type
/dev/sdb1              2048 2099199  2097152     1G 83 Linux

Maintenant, dans la sortie, il y a une partition affichée sur le périphérique de stockage (appelée /dev/sdb1). L'entrée Id définit comment Linux traite la partition. fdisk vous permet de créer de nombreux types de partitions. L'utilisation de la commande l répertorie les différents types disponibles. La valeur par défaut est le type 83, qui définit un système de fichiers Linux. Si vous souhaitez créer une partition pour un système de fichiers différent (comme une partition Windows NTFS), sélectionnez simplement un type de partition différent.

Vous pouvez répéter le processus pour allouer l'espace restant sur le périphérique de stockage à une autre partition Linux. Après avoir créé les partitions souhaitées, utilisez la commande w pour enregistrer les modifications apportées au périphérique de stockage :

Commande (m pour l'aide) : w
La table de partitions a été altérée.
Appel d'ioctl() pour relire la table de partitions.
Synchronisation des disques.

Les informations de partition du périphérique de stockage ont été écrites dans la table de partition et Linux a été informé de la nouvelle partition via l'appel ioctl(). Maintenant que vous avez configuré une partition sur le périphérique de stockage, vous êtes prêt à la formater avec un système de fichiers Linux.

Création d'un système de fichiers

Avant de pouvoir stocker des données sur la partition, vous devez la formater avec un système de fichiers afin que Linux puisse l'utiliser. Chaque type de système de fichiers utilise son propre programme de ligne de commande pour formater les partitions.

ProgrammeDescription
mkefsCrée un système de fichiers ext
mke2fsCrée un système de fichiers ext2
mkfs.ext3Crée un système de fichiers ext3
mkfs.ext4Crée un système de fichiers ext4
mkreiserfsCrée un système de fichiers Reiserfs
jfs_mkfsCrée un système de fichiers JFS
mkfs.xfsCrée un système de fichiers XFS
mkfs.zfsCrée un système de fichiers ZFS
mkfs.btrfsCrée un système de fichiers Btrfs

Chaque commande de l'utilitaire de système de fichiers comporte de nombreuses options de ligne de commande qui vous permettent de personnaliser la manière dont le système de fichiers est créé dans la partition. Pour voir toutes les options de ligne de commande disponibles, utilisez la commande man pour afficher les pages de manuel de la commande de système de fichiers. Toutes les commandes du système de fichiers vous permettent de créer un système de fichiers par défaut avec une simple commande sans options :

devinfo@ubuntu:~$ sudo mkfs.ext4 /dev/sdb1
[sudo] Mot de passe de devinfo : 
mke2fs 1.45.5 (07-Jan-2020)
En train de créer un système de fichiers avec 262144 4k blocs et 65536 i-noeuds.
UUID de système de fichiers=3c22b9a6-4461-4d6e-8a95-b107a0bda048
Superblocs de secours stockés sur les blocs : 
	32768, 98304, 163840, 229376

Allocation des tables de groupe : complété                            
Écriture des tables d'i-noeuds : complété                            
Création du journal (8192 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Le nouveau système de fichiers utilise le type de système de fichiers ext4, qui est un système de fichiers de journalisation sous Linux. Notez qu'une partie du processus de création consistait à créer le nouveau journal.

Vérification et réparation d'un système de fichiers

Même avec les systèmes de fichiers modernes, les choses peuvent mal tourner si l'alimentation est coupée de manière inattendue ou si une application capricieuse bloque le système pendant que l'accès aux fichiers est en cours. Heureusement, certains outils de ligne de commande sont disponibles pour vous aider à tenter de restaurer le système de fichiers dans l'ordre.

La commande fsck est utilisée pour vérifier et réparer la plupart des types de systèmes de fichiers Linux, y compris ceux évoqués précédemment : ext, ext2, ext3, ext4, Reiser4, JFS et XFS. Le format de la commande est :

fsck options filesystem

Vous pouvez répertorier plusieurs entrées de système de fichiers sur la ligne de commande à vérifier. Les systèmes de fichiers peuvent être référencés à l'aide du nom du périphérique, du point de montage dans le répertoire virtuel ou d'une valeur UUID Linux spéciale attribuée au système de fichiers.

La commande fsck utilise le fichier /etc/fstab pour déterminer automatiquement le système de fichiers sur un périphérique de stockage qui est normalement monté sur le système. Si le périphérique de stockage n'est pas normalement monté (par exemple, si vous venez de créer un système de fichiers sur un nouveau périphérique de stockage), vous devez utiliser l'option de ligne de commande -t pour spécifier le type de système de fichiers.

OptionDescription
-aRépare automatiquement le système de fichiers si des erreurs sont détectées
-AVérifie tous les systèmes de fichiers répertoriés dans le fichier /etc/fstab
-CAffiche une barre de progression pour les systèmes de fichiers qui prennent en charge cette fonctionnalité (uniquement ext2 et ext3)
-NN'exécute pas la vérification, affiche uniquement les vérifications qui seraient effectuées
-rInvite à corriger si des erreurs sont détectées
-RIgnore le système de fichiers racine si vous utilisez l'option -A
-SEn cas de vérification de plusieurs systèmes de fichiers, effectue les vérifications une à la fois
-tSpécifie le type de système de fichiers à vérifier
-TN'affiche pas les informations d'en-tête au démarrage
-VProduit une sortie verbeuse pendant les contrôles
-yRépare automatiquement le système de fichiers si des erreurs sont détectées

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.