Les systèmes de fichiers sont utilisés pour contrôler la manière dont les données sont écrites sur le disque, pour contrôler l’accès à ces données et pour stocker des informations et des métadonnées sur les fichiers. Les systèmes de fichiers sont constamment examinés pour fournir plus de fonctionnalités et deviennent de plus en plus efficaces à chaque fois.
Contenu
- Qu'est-ce que le système de fichiers XFS?
- Structure du système de fichiers XFS
- Superbloc
- Informations sur les blocs libres
- Informations sur les nœuds d'information libres et alloués
- Arbres B+
- Caractéristiques de l'architecture
- Système de fichiers 64 bits
- Allocation différée.
- Changement de taille "à la volée" (agrandissement uniquement).
- La défragmentation en temps réel est effectuée avec ces outils:
- Créer et redimensionner en XFS
- Montage de XFS
- Redimensionner XFS
- Avantages de XFS
- Vérification du degré de fragmentation dans XFS
- Journalisation XFS
- Comparaison des performances de XFS avec d'autres systèmes de fichiers.
- Les inconvénients du système de fichiers XFS
- Accéder aux partitions XFS depuis Windows
- Installation de XFS sur un disque SSD
- Avantages de l'utilisation de XFS sur un SSD
- Inconvénients de l'utilisation de XFS sur un SSD
Qu’est-ce que le système de fichiers XFS?
XFS est un système de fichiers journalisé hautement évolutif et performant, offrant tous les avantages des systèmes de fichiers modernes, tels que la journalisation des métadonnées pour une récupération rapide. Il prend également en charge le regroupement de flux d’E/S, ce qui améliore considérablement les performances de lecture et d’écriture, mais uniquement pour les fichiers volumineux. Vous pouvez également augmenter la taille du système de fichiers ou effectuer une défragmentation même s’il est monté.
XFS est considéré comme un système de fichiers étendu. C’est un système de fichiers performant avec des journaux de 64 bits. Le support de XFS a été inclus dans le noyau Linux vers 2002. XFS prend en charge une taille maximale de système de fichiers de 8 exaoctets pour le système de fichiers 64 bits.
Mais XFS présente certaines limitations. Par exemple, la partition de ce système de fichiers ne peut pas être réduite, et il y a une faible performance lors de la manipulation d’un grand nombre de fichiers. RHEL 7.0 utilise XFS comme système de fichiers par défaut.
Structure du système de fichiers XFS
L’ensemble du système de fichiers XFS est divisé en ce qu’on appelle des Groupes d’Allocation, l’équivalent des Groupes de Blocs dans Ext2FS.
La taille/quantité et autres descriptions des Groupes d’Allocation se trouvent dans le superblock, et le superblock est au début de chacun des Groupes de Sélection (c’est-à-dire qu’il est identique à celui d’Ext2FS), donc passons directement à la description de sa structure.
Au moins les premiers 0x800 octets (2048 octets, 2 Ko) de chaque Groupe d’Allocation ont le même format. Et le Groupe d’Allocation zéro (et avec lui le superblock zéro) est situé juste au début du dispositif. Voici une différence importante par rapport au nombre absolu d’autres systèmes de fichiers: lorsque le système de fichiers XFS a été conçu pour la plate-forme IRIX, les développeurs n’ont même pas pensé à des chargeurs d’amorçage au début du disque, donc il n’y a pas de sens à essayer d’installer le chargeur sur une partition XFS.
Le Groupe d’Allocation est divisé en quatre autres structures:
- Superblock
- Informations sur les blocs libres
- Informations sur les nœuds d’information dédiés et libres
- Blocs dédiés à l’extension de l’arbre B
Superbloc
Le Superbloc se trouve au début du groupe d’allocation. Vous pouvez trouver la définition de la structure struct xfs_sb le décrivant dans le fichier /usr/include/xfs/xfs_sb.h.
Vous pouvez citer ce fichier comme vous le feriez normalement dans de tels cas, mais il n’est pas pratique de décrire la structure dans ce cas car les noms de type tels que xfs_drfsbno_t ne disent rien de leur taille.
Il est donc préférable d’enregistrer les structures dans un format qui vous convient mieux.
Nous utiliserons 5 champs pour décrire la structure:
- Décalage depuis le début de la structure (en système de numérotation hexadécimale)
- Taille du champ en bits
- Nom de l’élément dans la structure
- Une valeur typique (qui est prise après la mise en forme d’une image de test)
- Commentaire
Informations sur les blocs libres
Les informations sur les blocs libres du Groupe d’Allocation sont situées à un décalage de 0x0200.
La définition de la structure xfs_agf est située dans le fichier /usr/include/xfs/xfs_ag.h.
Il a été décidé de stocker la liste des blocs libres non pas dans une bitmap, mais dans un arbre B avec des éléments « Bloc initial du fragment de blocs libres »/ »Taille du fragment », et non pas dans un seul arbre B, mais dans deux arbres dupliqués: un élément est trié par numéro du bloc initial du fragment, et le second – par taille de ces fragments d’espace libre.
Cela permet de trouver rapidement un groupe de blocs libres de la taille la plus appropriée.
Informations sur les nœuds d’information libres et alloués
Tout comme les blocs libres, les nœuds d’information libres et dédiés des groupes d’allocation sont décrits dans la structure xfs_agi (voir également /usr/include/xfs/xfs_ag.h pour la définition) à un décalage de 0x400.
Les nœuds d’information sont alloués par groupes de 64 pièces. Les informations sur l’occupation/la disponibilité des nœuds d’information de ce groupe sont stockées dans le même bitmap (nombre de 64 bits).
Mais comme chaque groupe suivant de nœuds d’information n’est pas nécessairement situé derrière le précédent, ces informations doivent encore être stockées dans l’arbre B.
Ce schéma permet de supprimer la limitation du nombre de nœuds d’information typique de nombreux autres systèmes de fichiers. Sur XFS, le message « Pas assez d’espace » est non ambigu, il ne peut pas signifier « débordement de la table des nœuds d’information » lors de la création d’un fichier.
Arbres B+
XFS utilise des arbres B+ partout. Ils sont utilisés pour indexer les paquets d’inodes, les listes d’extents libres, les éléments de répertoire et les enregistrements de cartes de fichiers.
Les arbres B+ XFS ont une structure assez traditionnelle: dans les nœuds internes, seules les clés et les pointeurs vers les descendants sont stockés, et les feuilles contiennent les clés et les données.
Comme il existe plusieurs types d’arbres dans XFS, le code général ne gère que les en-têtes de bloc standard (xfs_btree.h).
Après l’en-tête, il y a des tableaux de données. Pour les nœuds internes, il s’agit de:
- Deux listes – des clés et des pointeurs vers des descendants croissant au milieu. Pour les feuilles, il s’agit d’un tableau d’enregistrements, triés par ordre croissant.
- Le format de clé et les enregistrements sont déterminés par le type d’arbre.
Caractéristiques de l’architecture
Comme mentionné précédemment, XFS se compose de sections de données (contenant des métadonnées et pouvant contenir des journaux), d’un journal et d’une section en temps réel.
La section de données est divisée en groupes égaux de blocs (groupes d’allocation), dont le nombre détermine le niveau de parallélisme dans l’allocation d’espace; chaque groupe contient un superbloc, une gestion de l’espace libre du groupe, une table d’inodes (créée sur demande).
La taille de bloc dans Linux est de 4 Ko. L’allocation d’espace est effectuée par des étendues (jusqu’à 8 Go).
Auparavant, XFS n’était pas adapté pour stocker un grand nombre de petits fichiers (comme un serveur de messagerie) car il était lent à traiter les métadonnées, mais il s’améliore progressivement. Par exemple:
- les fichiers ouverts lors d’un arrêt soudain de l’ordinateur seront remplis de zéros (corrigé);
- création instantanée du système de fichiers et expansion sans surcharge (ext4 a 1,5 %, soit 269 Go pour 16 To) et environ la même surcharge qu’ext4 pour le stockage de fichiers (0,07 % de moins pour un ensemble de 10 To sur 10 millions de fichiers);
- numéros d’inode 64 bits pour un système de fichiers de taille 2 To et plus, tous les programmes 32 bits ne survivront pas (corrigé);
Système de fichiers 64 bits
L’allocation d’espace se fait par des étendues (Extent – pointeur vers le début et nombre de blocs consécutifs). Dans les étendues, l’espace est alloué pour stocker les fichiers et les blocs libres. Les index B-tree sont activement utilisés pour stocker diverses données du système de fichiers: pour la liste des blocs avec des séries d’inodes, la liste des étendues avec le contenu des fichiers, les répertoires de fichiers, les listes d’étendues de blocs libres (les blocs libres sont indexés à la fois par la taille des blocs et leur emplacement). Cependant, l’utilisation d’index B-tree n’est pas un dogme – un petit fichier ou répertoire peut être placé directement à l’intérieur de l’inode.
Allocation différée.
Lorsqu’un fichier est écrit, il est alloué de l’espace en mémoire, tandis que le disque n’alloue de l’espace que lorsque le fichier est écrit sur le disque. De cette manière, il alloue de manière optimale l’espace disque pour le fichier, ce qui réduit la fragmentation.
Changement de taille « à la volée » (agrandissement uniquement).
Placement dans plusieurs zones linéaires (4 par défaut) de ce qu’on appelle des « groupes d’allocation » (augmente les performances en alignant l’activité des demandes sur différents disques sur des matrices RAID telles que « stripe », ainsi qu’en accès asynchrone au système de fichiers sur un disque classique).
La défragmentation en temps réel est effectuée avec ces outils:
- API d’E/S en temps réel (pour les applications temps réel dures ou molles telles que la diffusion de vidéo en continu).
- Interface (DMAPI) pour prendre en charge la gestion hiérarchique des supports (HSM).
- Outils de sauvegarde et de récupération (xfsdump et xfsrestore).
- Les « blocs d’index » d’inode sont alloués dynamiquement (lorsqu’ils sont nécessaires), et les inodes inutilisés peuvent être libérés (libérant ainsi de l’espace de stockage).
- Faibles « surcoûts » – la taille des structures de données de service. Sur le système de fichiers XFS nouvellement créé, environ 0,54 % est consacré aux besoins de service. Cela est obtenu grâce à un petit nombre d’en-têtes pour les groupes (groupes d’allocation) et à l’allocation dynamique d’inode.
Créer et redimensionner en XFS
Supposons que vous avez déjà une partition prête à être utilisée pour créer un système de fichiers. Si ce n’est pas le cas, vous pouvez la créer à l’aide de l’utilitaire Gparted ou de l’utilitaire fdisk. Supposons que la partition sur laquelle vous souhaitez créer le système de fichiers XFS est /dev/sda11, vous pouvez le faire avec l’utilitaire standard mkfs. La commande est:
$ sudo mkfs.xfs /dev/sda11
Si un système de fichiers existe déjà sur la partition spécifiée, vous devez utiliser l’option -f pour l’écraser:
$ sudo mkfs.xfs -f /dev/sda11
Pendant la création, l’utilitaire affichera des informations actuelles sur le système de fichiers et la table de métadonnées.
Montage de XFS
Nous devons maintenant monter la partition que nous venons de créer. Vous pouvez créer un dossier séparé pour le montage ou monter la partition dans /mnt. Par exemple, nous pourrions créer le dossier /mnt/db. Ensuite, vous pouvez monter la partition, tout comme tous les autres systèmes de fichiers, avec la commande mount:
$ sudo mkdir /mnt/da11
$ sudo mount /dev/sda11 /mnt/db
$ sudo mount | grep sda11
Vous pouvez maintenant écrire des fichiers dans cette section. La plupart des options de système de fichiers sont installées à l’aide de mount. Examinons les options de montage de base spécifiques à XFS:
- inode64 – si vous avez un périphérique de plus de 2 To, vous devez utiliser cette option de montage pour améliorer le système de fichiers;
- nobarrier – XFS a une barrière d’écriture de données pour éviter la perte de données importantes lors d’un redémarrage inattendu. Si vous êtes sûr que votre matériel est entièrement fiable, la barrière doit être désactivée pour améliorer les performances;
- logdev – vous permet de journaliser le système de fichiers dans un fichier externe;
- sunit – définit la taille d’un bloc de données pour les matrices RAID. La taille par défaut est de 512 octets;
- norecovery – par défaut, chaque fois que le système de fichiers est monté, il est vérifié et corrigé s’il n’a pas été monté correctement. Cette option désactive cette procédure;
- quota – active la prise en charge des quotas de disque pour les utilisateurs.
Vous pouvez utiliser l’une de ces options pour configurer votre système de fichiers.
Une fois monté, vous pouvez afficher des informations sur les métadonnées du système de fichiers:
$ sudo xfs_info /dev/sda11
Si vous voulez que cette partition soit montée automatiquement, vous devez configurer xfs fstab pour le montage. Tout ce que vous avez à faire est d’ajouter une ligne:
$ sudo vi /etc/fstab/dev/sda11 /mnt/db xfs defaults 0 0
Redimensionner XFS
Vous pouvez redimensionner le système de fichiers XFS à chaud, c’est-à-dire pendant qu’il est monté. Tout d’abord, nous voyons la taille actuelle de la partition:
$ df -h
Ensuite, la taille de XFS est augmentée en deux étapes. Il y a une chose à savoir sur l’expansion de la taille en ligne: vous devez augmenter la taille de la partition dans la table de partition, et la seule façon de le faire sans démonter est en LVM. Dans d’autres configurations, vous devrez toujours démonter. Tout d’abord, redimensionnez la partition à l’aide de Gparted, par exemple, puis vous devez augmenter la taille du système de fichiers. Vous pouvez le faire même si le système de fichiers est monté. Exécutez la commande:
$ xfs_growfs /mnt/db
Pour vous assurer que tout fonctionne, vérifiez à nouveau la taille du système de fichiers en utilisant la commande:
$ df -h
Avant d’agrandir la taille du système de fichiers, vous devez vous rappeler que vous ne pouvez jamais le compresser.
Avantages de XFS
XFS est un excellent système de fichiers qui offre des performances exceptionnelles lorsqu’il s’agit de travailler avec de gros fichiers. En plus d’une opération rapide avec de gros fichiers et d’un redimensionnement en cours de route, il convient également de noter la présence d’un défragmenteur intégré et d’un journalisation des métadonnées pour une récupération rapide.
Pour réorganiser l’emplacement des fichiers (défragmentation), la commande xfs_fsr est utilisée. Elle peut être utilisée soit pour toute la partition, soit pour un fichier séparé. Pour effectuer la défragmentation, vous devez disposer d’un espace libre suffisant sur la partition pour copier n’importe quel fichier. À la fin de l’opération, chaque fichier occupera un seul extent.
Pour défragmenter l’ensemble de la partition, une commande est utilisée:
xfs_fsr -v /dev/
La défragmentation d’un fichier individuel est effectuée par une commande:
xfs_fsr -v
L’option -v affiche des informations supplémentaires.
Vérification du degré de fragmentation dans XFS
Vous pouvez obtenir des informations sur la fragmentation de la partition avec la commande suivante:
xfs_db -r -c frag /dev/
L’option -r est requise pour vérifier la partition qui est actuellement montée et en cours d’utilisation. L’option -c frag est nécessaire pour afficher directement des informations sur la fragmentation de la partition.
Le résultat ressemble à ceci:
Journalisation XFS
Comme la plupart des systèmes de fichiers modernes, XFS prend en charge la journalisation des métadonnées pour une récupération rapide en cas de redémarrage d’urgence. Comme ReiserFS, XFS utilise la journalisation logique. Sinon, la journalisation n’est pas effectuée par blocs de fichiers (comme dans ext3), mais dans un format de disque efficace où seules les métadonnées sont modifiées. Pour XFS, la journalisation logique est particulièrement recommandée. Sur du matériel haut de gamme (ce qui est généralement le cas pour XFS), la journalisation est la ressource la plus controversée. L’utilisation d’une journalisation logique peu gourmande en ressources non productives. De plus, XFS permet de stocker le journal sur un autre périphérique de blocs (partition, disque « bon marché »). Cette fonctionnalité permet d’économiser des ressources coûteuses et « fonctionne » encore plus pour augmenter la vitesse de XFS.
Tout comme ReiserFS, XFS ne journalise que les métadonnées et non les données elles-mêmes. Cela signifie que dans XFS (comme dans ReiserFS), il est possible de perdre les données qui ont été modifiées avant un redémarrage catastrophique. Cependant, le journal XFS possède deux propriétés qui réduisent les risques de perte de données par rapport à ReiserFS.
XFS garantit que tous les blocs « non enregistrés » sont remplis de zéros. Étant donné que les blocs avec des octets nuls dans les fichiers système sont ignorés, une faille de sécurité est éliminée.
Le problème de perte de données dans XFS est minimisé par le fait que l’opération de réinitialisation des modifications de métadonnées en attente de traitement sur le disque dans XFS est plus fréquente que dans ReiserFS, par exemple (surtout avec des opérations d’E/S de haute intensité). Par conséquent, il y aura moins de pertes dans XFS après un crash que dans les mêmes conditions dans ReiserFS. Notez que l’écriture plus fréquente des métadonnées elle-même n’élimine pas le problème, mais ne fait que provoquer des réinitialisations plus fréquentes du disque et des données.
Comparaison des performances de XFS avec d’autres systèmes de fichiers.
Jusqu’à récemment, le choix d’un système de fichiers pour Linux était limité. Ceux qui cherchaient des performances élevées préféraient ReiserFS, et ceux qui se souciaient de l’intégrité des données préféraient ext3. Avec l’arrivée du support de XFS pour Linux, le choix n’était plus aussi simple. La grande question qui s’est posée était de savoir si ReiserFS était toujours le leader en termes de performances dans toutes les conditions.
Récemment, nos experts ont comparé les performances de XFS, ReiserFS et ext3. Mais il convient tout d’abord de noter que les résultats ne montrent que la dynamique générale de la dépendance des performances du système de fichiers sur une charge de système à processeur unique.
Les tests ont montré que XFS est un système de fichiers très rapide. XFS est constamment en tête des tests de manipulation de gros fichiers. Ce résultat est tout à fait prévisible car il a été conçu à cet effet. Des opérations de suppression de fichiers relativement lentes ont également été remarquées. À ce stade, il a perdu face à ReiserFS et ext3.
Dans d’autres tests, les performances de XFS étaient proches de celles de ReiserFS et toujours meilleures que celles de ext3. Une caractéristique intéressante de XFS est qu’il ne génère pas d’activité excessive sur le disque. XFS essaie de mettre en cache autant de données que possible, et la « raison » de la réinitialisation sur le disque est de remplir la mémoire, pas l’intervalle de temps. Lorsque les données sont écrites sur le disque, cela n’a pas d’impact significatif sur les autres opérations d’E/S. En revanche, dans ext3 (mode « data=ordered »), les réinitialisations périodiques des données sur le disque posent des problèmes d’interactivité et, lors d’opérations d’E/S élevées, même de saturation du disque.
Les inconvénients du système de fichiers XFS
Malheureusement, XFS présente également des inconvénients importants, notamment:
- Il est impossible de réduire la taille d’un système de fichiers existant. Si la partition sur le disque est remplie avec XFS, elle ne peut pas être redimensionnée à une taille plus petite (il est important de le considérer lors du partitionnement du disque).
- Récupérer des fichiers supprimés dans XFS est un processus très compliqué, il n’y a donc actuellement que quelques produits logiciels à cette fin, par exemple, « RS Partition Recovery ».
- Perte de données possible lors de l’enregistrement en cas de panne de courant, car un grand nombre de tampons de données sont stockés en mémoire, tandis que les métadonnées sont journalisées (sur le disque) de manière opérationnelle. Cela est également vrai pour d’autres systèmes de fichiers avec journalisation des métadonnées.
- Création et suppression de répertoires relativement lentes (un inconvénient qui peut être considérablement réduit en configurant correctement le système de fichiers).
Accéder aux partitions XFS depuis Windows
Malheureusement, le système d’exploitation Windows ne dispose pas d’une utilité intégrée pour ouvrir des systèmes de fichiers autres que NTFS ou FAT. Par conséquent, pour ouvrir une clé USB, par exemple, vous devrez utiliser soit un logiciel tiers, soit installer Linux sur une machine virtuelle. La deuxième option est moins pratique, nous allons donc considérer l’application Linux File Systems for Windows de Paragon Software. Avec ce programme, vous pouvez afficher, éditer, copier et supprimer les fichiers de votre partition XFS. L’application existe en deux versions: payante et gratuite. La version gratuite donne à l’utilisateur 10 jours pour tester le programme.
Vous pouvez également utiliser l’application XFS Explorer. Il existe également des versions gratuites et payantes. Dans la version gratuite, vous pouvez afficher des fichiers jusqu’à 3 Mo. Si vous avez besoin de travailler avec des fichiers volumineux, vous devrez acheter la version payante.
Installation de XFS sur un disque SSD
XFS est capable de gérer de grandes quantités de données mieux que tout autre système de fichiers, et ce de manière fiable. C’est pourquoi XFS peut être un excellent choix pour une installation sur des disques SSD. À mesure que l’informatique moderne devient de plus en plus avancée, les fichiers de données deviennent de plus en plus exigeants. Il est donc logique de considérer l’installation de ce système de fichiers sur un disque SSD.
XFS, comme Ext4, est un système de fichiers journalisé. Mais contrairement à Extended 4, il est impossible de désactiver le journaling, ce qui peut mettre une lourde charge sur le disque. Cependant, XFS prend en charge les fonctions standard des SSD et même la défragmentation.
Avantages de l’utilisation de XFS sur un SSD
- XFS est connu pour sa capacité à gérer facilement de grandes quantités de données. En utilisant XFS sur votre SSD, vous pouvez vous assurer que vos fichiers sont sécurisés.
- Les avantages de performance de XFS sur les SSD signifient que vous pouvez transférer et accéder à des fichiers et des données beaucoup plus rapidement que d’autres systèmes de fichiers.
- XFS dispose d’une fonctionnalité de défragmentation pour SSD qui est très utile et contribuera à maintenir votre disque en bon état de fonctionnement pendant longtemps.
Inconvénients de l’utilisation de XFS sur un SSD
- XFS est un système de fichiers journalisé et cette fonctionnalité ne peut pas être désactivée. L’impossibilité de désactiver la journalisation est quelque chose à craindre si vous êtes préoccupé par les restrictions de lecture/écriture SSD.
- De plus, l’utilisation du système de fichiers XFS entraîne une usure accrue du SSD. Vous devez donc prendre une décision ici: travailler plus rapidement avec des fichiers volumineux ou prolonger la durée de vie du SSD.