Les fichiers et leur manipulation sont au centre de l'informatique moderne. Même l'un des principes fondamentaux de tous les systèmes de type Unix est de décrire tout ce qui se trouve sur le système sous forme de fichiers. Il est valable pour pratiquement tous les systèmes Linux. Des répertoires aux appareils, votre distribution Linux traite tout sur votre système comme des fichiers. Désormais, les systèmes doivent également intégrer un moyen de stockage et de gestion de ces fichiers. C'est là que les systèmes de fichiers Linux entrent en jeu. Étant donné que Linux prend en charge de nombreux systèmes de fichiers et implémente diverses opérations pour eux, nous estimons qu'il est nécessaire de fournir à nos lecteurs des connaissances sur le fonctionnement des systèmes de fichiers sous Linux.
Principes de base du système de fichiers Linux
Le système de fichiers Linux est responsable du stockage de vos données système et de leur gestion. Un système de fichiers peut être défini comme le mécanisme derrière le stockage et la récupération des données. Les systèmes de fichiers sont généralement composés de plusieurs couches, y compris une couche logique qui fournit une interaction utilisateur, des API pour différentes opérations sur les fichiers, etc.
Vous avez peut-être remarqué que toute votre installation Linux se résout autour du / indiquer. C'est ce qu'on appelle la racine du système de fichiers et c'est essentiellement le point de départ de votre système. Il contient plusieurs répertoires, la plupart ayant une certaine importance historique. Nous aborderons la hiérarchie des systèmes de fichiers de Linux et d'autres Unix plus loin dans ce guide.
Vous pouvez connecter des composants supplémentaires à cette hiérarchie de système de fichiers en les montant sur un point de montage. Une fois monté, les utilisateurs peuvent traverser de nouveaux systèmes de fichiers en utilisant ce point. Nous vous montrerons comment procéder dans les sections suivantes. Maintenant, comment le système garde-t-il une trace de ces systèmes de fichiers ? En bref, il utilise des tables de partition prédéfinies pour déterminer les inodes (points de départ), les limites, les noms et d'autres informations pour ce faire.
Lors de la définition de tables de partition à l'aide de gestionnaires de partition Linux, vous avez peut-être remarqué qu'il existe plusieurs types de système de fichiers. Quelques exemples courants sont NTFS, FAT et EXT. Linux prend en charge un large éventail de types de systèmes de fichiers, comme vous le verrez plus tard.
Découverte de la structure du système de fichiers Linux
Le système de fichiers Linux présente une ressemblance significative avec le système de fichiers Unix d'origine. Bien que les innovations informatiques modernes aient contribué à l'augmentation des nouvelles tendances, la hiérarchie du système de fichiers reste presque la même en raison de son importance historique. Nous avons décrit cette hiérarchie à l'aide d'exemples appropriés dans cette section. Nous supposons que vous connaissez l'interpréteur de ligne de commande, alias les shells Linux.
Par défaut, l'utilisateur est présenté avec le /home/USER répertoire à chaque connexion. Vous pouvez le confirmer en tapant pwd dans le terminal. Nous utiliserons tree, l'un des utilitaires de facto pour visualiser les hiérarchies de répertoires sous Linux. Vous pouvez l'obtenir dans Ubuntu en émettant sudo apt install tree.
- -
Si vous exécutez tree dans votre répertoire actuel, il y a de fortes chances que vous vous retrouviez dans une structure complexe et cryptique. Cela se produit parce que l'arborescence traverse chaque élément à cet emplacement (c'est-à-dire les images, les documents, les téléchargements, etc.) de manière récursive et crée la structure finale en les combinant. Cependant, vous pouvez ajouter le -L flag pour spécifier la profondeur de cette commande.
$ tree -L 1
L'exécution de cette commande vous donnera une structure arborescente simple composée uniquement des composants de premier niveau de votre point de départ. Vous pouvez augmenter cette valeur pour obtenir une visualisation plus transparente et robuste. Vous pouvez utiliser la commande cd pour modifier les emplacements dans votre système de fichiers. Maintenant, nous avons discuté plus tôt que tout dans Linux est un fichier. Ainsi, un répertoire doit être un fichier. En effet, c'est le cas.
Les répertoires ne sont que des fichiers spéciaux qui contiennent le nom d'autres fichiers (c'est-à-dire ses éléments enfants). Les nouvelles installations Linux sont livrées avec des répertoires intégrés. Nous en discuterons ci-dessous. Cela vous aidera à mieux comprendre votre système.
Tout d'abord, allez à la racine de votre système en utilisant cd / et lancez ls. Cela vous montrera tous ces répertoires par défaut. Continuez à lire pour découvrir leur objectif.
/bin
Il contient les binaires, c'est-à-dire les exécutables des différents programmes installés sur votre machine. Dans de nombreux systèmes, cela n'existe pas en tant que répertoire réel mais sert de lien symbolique vers /usr/bin répertoire.
/démarrage
Tous les fichiers essentiels requis pour le démarrage du système se trouvent ici. Vous ne devriez pas expérimenter avec le contenu de ce répertoire à moins de savoir ce que vous faites. Sinon, vous pourriez corrompre le système lui-même et perturber les fonctionnalités.
/dev
Le répertoire /dev contient les fichiers de périphérique de votre système. Ce sont les représentations de fichiers de vos clés USB, disques durs, webcam, etc.
/etc
Historiquement, le /etc répertoire a été utilisé pour conserver divers fichiers divers. Aujourd'hui, cependant, c'est une convention standard de stocker les fichiers de configuration à l'échelle du système dans ce répertoire. Des informations telles que votre nom d'utilisateur/mot de passe, vos informations d'identification réseau, le point de montage des partitions sont stockées ici.
/accueil
Il s'agit du répertoire personnel de l'utilisateur. Il peut héberger plusieurs sous-répertoires en fonction du nombre d'utilisateurs de votre machine. Dites que vous êtes l'utilisateur "maniac", alors le répertoire /home/maniac vous sera attribué. Une fois connecté, le répertoire /home/maniac vous sera présenté dans votre terminal. Il est également noté :~$ dans le shell Bash.
/lib
Les bibliothèques système se trouvent ici. Ce sont les extraits de code utilisés par vos applications pour effectuer certaines tâches. Leur exemple inclut des extraits de code qui dessinent des fenêtres ou envoient des fichiers.
/médias
Ce répertoire est le point de montage des périphériques plug and play tels que le stockage externe. Il s'agit d'un ajout relativement récent au système de fichiers Linux.
/min
Les anciens et grincheux administrateurs Unix utilisaient ce répertoire pour monter manuellement des périphériques ou des partitions à la demande. Bien qu'il soit rarement utilisé, il reste dans le système de fichiers Linux en raison de son importance historique.
/opter
Signifie facultatif et destiné à contenir des fichiers système facultatifs. Les administrateurs l'utilisent souvent pour héberger des applications tierces qu'ils ont installées à partir de la source.
/proc
Il héberge les fichiers de processus, les modules du noyau et des données dynamiques similaires. Vous ne devez pas interférer avec cela, sinon vous risquez de rendre votre système obsolète.
/racine
Comme /home mais pour le superutilisateur du système. C'est le répertoire qui vous sera présenté lorsque vous passerez au compte root.
/exécuter
Ceci est utilisé pour conserver les données temporaires utilisées par les processus du système Linux. Ne plaisante pas ici à moins que vous ne sachiez ce que vous faites.
/sbin
Comme /bin mais ne contient que les fichiers binaires essentiels au système. Divers utilitaires utilisés quotidiennement comme ls, cd, cp, etc. sont situés ici. Ne les manipulez pas.
/usr
Un emplacement "à utiliser pour tout type" où diverses informations sont stockées. Ils peuvent inclure des fichiers binaires, des bibliothèques, des icônes, des manuels, etc.
/srv
Le répertoire du serveur. Il contient les fichiers source des applications Web et héberge d'autres protocoles de communication.
/sys
Un autre répertoire virtuel, tel que /dev . Il contient des informations sensibles et ne doit pas être expérimenté à moins que l'utilisateur ne sache ce qu'il fait.
/tmp
Il est utilisé pour conserver les valeurs temporaires qui seront supprimées lors du redémarrage du système.
/var
L'objectif initial de ce répertoire était d'héberger tous les fichiers variables. De nos jours, il contient plusieurs sous-répertoires pour stocker des éléments tels que les journaux, les caches, etc.
Il peut y avoir des répertoires supplémentaires dans votre racine. Il est généralement soumis à la distribution Linux spécifique et peut varier d'un système à l'autre.
Inspection de la hiérarchie du système de fichiers Linux
Vous pouvez vous déplacer rapidement dans la hiérarchie de votre système de fichiers à l'aide d'outils de ligne de commande standard. Nous avons compilé une liste de certaines des commandes de terminal Linux les plus utilisées à cette fin. Allez-y si vous avez du mal à suivre la section suivante.
Donc, après avoir allumé votre terminal, vous êtes au /home/USER emplacement, pointé par le :~$ signe. Vous pouvez vous déplacer vers un nouvel emplacement en utilisant la commande cd (changer de répertoire) comme cd /etc. Utilisez la commande tree comme ci-dessous pour générer une structure de visualisation simple de votre répertoire actuel, comme indiqué ci-dessous.
$ tree -L 1
Vous pouvez afficher le type d'un fichier à l'aide de la commande ls -l. La première section de sa sortie indique les types de fichiers que vous traitez. Par exemple, supposons que votre répertoire actuel contienne un sous-répertoire appelé Images et un fichier texte appelé test. Exécutez la commande ls -l dans ce répertoire et recherchez la ligne qui contient des informations sur ces deux éléments.
Vous verrez que la ligne contenant le dossier Images commence par d , comme dans répertoire. Pendant ce temps, l'élément de départ de la ligne pour le test doit être – , désignant des fichiers réguliers. D'autres fichiers comme les périphériques et les sockets sont représentés de la même manière. Les fichiers spéciaux sont désignés par c , sockets utilisant s , tuyaux avec p , bloquer les appareils avec b , et des liens symboliques avec l .
Une autre commande robuste qui peut être utilisée pour déterminer le type d'un fichier est le fichier commande lui-même. Pour l'exemple ci-dessus, l'exécution du fichier de commande Pictures donnerait le résultat "répertoire". De plus, le test de fichier devrait donner quelque chose comme du texte ASCII, désignant un simple fichier texte.
$ file FILENAME
Vous pouvez également utiliser le montage commande pour attacher un système de fichiers à un emplacement spécifique dans votre hiérarchie. La commande suivante monte le /dev/sdb périphérique vers /home/USER/devices .
$ sudo mount /dev/sdb /home/USER/devices
L'utilisateur peut maintenant accéder au contenu de cet appareil à partir de l'emplacement sélectionné. Pour trouver le nom d'un périphérique de bloc, vous pouvez utiliser le lsblk commande. De même, lspci peut être utilisé pour détecter les périphériques PCI, lsusb pour lister les USB, et lsdev pour lister tous les appareils.
Comprendre les types de fichiers et les autorisations
Comme mentionné précédemment, il existe plusieurs types de fichiers dans le système de fichiers Linux. Chacun a son propre objectif, mais nous traiterons principalement des fichiers et des répertoires réguliers. Les fichiers réguliers incluent les fichiers de tous les jours tels que les codes sources, les exécutables, les documents, la musique, etc. Les répertoires sont de simples fichiers contenant le nom d'autres fichiers. Pendant ce temps, les fichiers spéciaux sont des composants système de bas niveau comme les tuyaux et les sockets. Habituellement, ceux-ci sont traités par le noyau Linux.
Désormais, les autorisations sont un tout autre concept et sont extrêmement importantes pour les utilisateurs de Linux. Vous devez les comprendre clairement si vous voulez exceller dans vos compétences en administration système. Linux, comme les autres Unix, utilise les autorisations de fichiers pour déterminer le niveau de privilège d'un utilisateur sur un fichier.
Les autorisations garantissent que les utilisateurs ne peuvent accéder ou modifier que le contenu du système auquel ils sont autorisés. C'est l'aspect le plus crucial derrière la sécurité de votre système Linux. Étant donné que les autorisations de fichiers Linux sont un sujet extrêmement important en soi, nous en parlerons en détail dans un guide ultérieur. Pour aujourd'hui, nous nous en tiendrons à l'essentiel.
Nous avons précédemment utilisé la commande ls -l pour déterminer les types de fichiers. Nous l'avons déterminé en regardant simplement le premier caractère de la colonne de départ. Maintenant, c'est la colonne qui dicte les autorisations. Exécutez à nouveau ls -l, mais sur un fichier/répertoire spécifique.
La première section de la sortie doit contenir trois champs séparés par le – symbole. Le premier caractère indique le type de fichier. Ce sera – pour les fichiers réguliers, comme nous l'avons dit plus tôt. La partie suivante doit contenir un ou plusieurs caractères de l'ensemble {r, w, x} . Par exemple, si c'est rw , l'utilisateur y a accès en lecture(r) et en écriture(w). Si c'est (rwx ), l'utilisateur dispose des autorisations de lecture, d'écriture et d'exécution(x).
Donc, si cette section indique le contrôle d'accès de l'utilisateur, alors pourquoi y a-t-il deux autres sections similaires ? Ce sont les autorisations du groupe et des autres utilisateurs. Comme Unix est un système multi-utilisateurs, le système de fichiers a été conçu pour faciliter l'utilisation simultanée du même système par différents utilisateurs. Chaque utilisateur avait sa propre paire de login et mot de passe, qu'il pouvait utiliser pour accéder à un système. Les autorisations définissent simplement le degré de contrôle d'un utilisateur spécifique sur certains contenus.
Vous pouvez modifier les permissions de certains contenus en utilisant le chmod , et chown commandes. Ils seront démontrés dans un guide gratuit.
Un aperçu des différents types de systèmes de fichiers Linux
Il existe plusieurs types de système de fichiers dans les systèmes d'exploitation basés sur Linux. Les types de système de fichiers Linux courants sont ext3, ext4, zfs, FAT, XFS et Btrfs. Il y en a sans aucun doute beaucoup plus dans cette liste, et nous en donnerons un aperçu concis en bref. Trouver le bon type de système de fichiers dépend généralement des besoins des utilisateurs. Nous conseillons aux utilisateurs Linux débutants de s'en tenir au système de fichiers de journalisation ext4.
Puisqu'il existe plusieurs types de systèmes de fichiers Linux, nous pensons qu'il est essentiel d'en avoir quelques connaissances. Ici, nous introduisons 10 types de système de fichiers largement utilisés sous Linux.
1. Systèmes de fichiers EXT
L'ext (Extended File System) est conçu spécialement pour Linux et compte 4 versions à ce jour. Ce sont ext, ext2, ext3 et ext4. La plupart des distributions modernes ne prennent plus en charge ext et ext2. La version ext3 a implémenté la journalisation, une fonctionnalité qui empêche la corruption des données en cas de panne de courant accidentelle. Son utilisation a connu une baisse relative depuis la sortie de la version ext4. Ext4 est le type de système de fichiers par défaut dans les distributions les plus récentes.
2. BtrFS
Le « B-Tree File System » est un système de fichiers innovant développé par Oracle. Il offre des fonctionnalités étonnantes absentes des types de systèmes de fichiers Linux standard. Certains d'entre eux incluent la possibilité de prendre des instantanés en déplacement, des capacités de regroupement de lecteurs, une défragmentation en ligne et des méthodes de compression transparentes. Beaucoup de gens prononcent BtrFS comme "Meilleur FS" et le considèrent comme le prochain grand type de système de fichiers dans les serveurs Linux et les postes de travail personnels.
3. ReiserFS
ReiserFS est un autre système de fichiers basé sur un journal qui peut être utilisé pour l'informatique à usage général. Il est pris en charge sur Linux et arbore une licence open source GNU GPL. ReiserFS a gagné en popularité au cours de ses premières années en raison de certaines des fonctionnalités qui étaient relativement nouvelles à l'époque. Parmi celles-ci figuraient la possibilité de redimensionner les volumes à partir d'en ligne, le tail packing pour réduire la fragmentation interne et la journalisation des métadonnées uniquement. Le développement de ReiserFS est au point mort car son développeur principal purge une peine de prison.
4. ZFS
ZFS est un système de fichiers et un gestionnaire de volumes robustes développés par Sun Microsystems et actuellement gérés par Oracle. Il s'agit d'un système de fichiers extrêmement puissant qui prend en charge des stockages massifs, des techniques de compression efficaces, des modèles RAID modernes, la déduplication des données et bien d'autres fonctionnalités. ZFS est disponible dans la plupart des distributions Linux et BSD aux côtés de Mac OS et FUSE. Les utilisateurs d'Ubuntu peuvent en savoir plus sur ZFS ici.
5. XFS
XFS est un système de fichiers de type Ext4 développé par Silicon Graphics et disponible sous Linux depuis 2001. Il offre de nombreuses fonctionnalités trouvées dans le système de fichiers ext4 standard mais limite certaines de ses capacités. XFS utilise une technique appelée allocation différée pour détecter plus efficacement les fragmentations de fichiers. Il convient donc à la configuration des stockages Linux NAS et SAN. Nous avons constaté qu'il fonctionnait mieux avec des fichiers volumineux, mais plus lent lorsqu'il s'agissait d'un grand nombre de fichiers plus petits.
6. JFS
JFS est l'acronyme de "Journaled File System", un système de fichiers Linux développé par IBM. Il est connu pour son utilisation limitée des ressources du processeur et offre des performances nettement meilleures pour les fichiers volumineux et les collections de plusieurs fichiers plus petits. De plus, il permet aux administrateurs système de redimensionner leurs partitions de manière dynamique. Cette fonctionnalité, cependant, ne prend en charge que l'agrandissement, pas la réduction.
7. MARTEAU
HAMMER est un type de fichier extrêmement robuste développé pour la version DragonFly BSD. Il s'agit d'un système de fichiers à haute disponibilité qui ne prend en charge que les systèmes 64 bits. Hammer utilise des arborescences B+ pour implémenter ses fonctionnalités, qui incluent la possibilité de prendre un nombre illimité d'instantanés exportables par NFS, la conservation de l'historique, les sommes de contrôle et les opérations maître-multi-esclaves, entre autres. Il prend également en charge la déduplication à la demande des données et les compressions transparentes.
8. GRAISSE
FAT ou File Allocation Table est une classe de système de fichiers connue pour sa flexibilité et son ensemble de fonctionnalités robustes. Certains systèmes de fichiers FAT populaires incluent FAT 16, FAT32, exFAT et vFAT. Ils sont l'un des systèmes de fichiers les plus largement utilisés en raison de leur incorporation dans les anciennes machines Windows. Linux prend en charge un large éventail de systèmes de fichiers FAT courants connus pour leurs hautes performances.
9. NTFS
NTFS (New Technology File System) est un autre type de système de fichiers courant pour de nombreux utilisateurs. C'est le système de fichiers par défaut des machines Windows modernes et il est pris en charge par Linux et d'autres systèmes BSD. NTFS implémente plusieurs techniques pour augmenter ses performances et est un système de fichiers journalisé. Il prend en charge les flux de données alternatifs, diverses méthodes de compression, le redimensionnement, les fichiers fragmentés et bien d'autres fonctionnalités.
10. cramfs
Le système de fichiers ROM compressé, alias cramfs, est l'un des types de systèmes de fichiers les plus largement utilisés dans les systèmes embarqués. C'est seulement un système de fichiers en lecture seule qui permet au système de lire des images sans avoir besoin de les décompresser au préalable. C'est la raison pour laquelle de nombreuses distributions Linux l'utilisent pour les images initrd et les images d'installation.
Il existe de nombreux autres types de systèmes de fichiers sous Linux. De plus, il permet aux utilisateurs d'attacher plusieurs types de partitions dans la structure du système de fichiers. C'est en effet une pratique répandue. Un type spécial de système de fichiers Linux est le swap. Ce n'est en fait pas un système de fichiers, mais une technique utilisée pour implémenter la mémoire virtuelle.
Vérification du type de système de fichiers sous Linux
Étant donné que Linux permet aux utilisateurs d'utiliser plusieurs types de système de fichiers en même temps, il est souvent nécessaire de vérifier le type de système de fichiers avant d'effectuer des opérations sur les fichiers. Nous décrirons quelques méthodes conventionnelles pour déterminer le type de système de fichiers d'une partition à partir de la ligne de commande.
1. Identification du type de système de fichiers à l'aide de la commande df
Vous pouvez déterminer le type de système de fichiers sous Linux à l'aide de la commande df ci-dessous. Consultez nos exemples de commandes Linux df pour comprendre la commande df en détail.
$ df -T /
Cela donnerait le type de système de fichiers racine (/) sous la colonne de sortie Type.
2. Identification du type de système de fichiers à l'aide de la commande fsck
La commande fsck (File System Check) peut être utilisée pour déterminer le type de système de fichiers d'une partition. Le -N flag est utilisé pour désactiver les vérifications d'erreurs.
$ fsck -N /
Cette commande doit afficher le type de système de fichiers et son identifiant de bloc.
3. Identification du type de système de fichiers à l'aide de la commande lsblk
La commande lsblk est utilisée pour afficher les périphériques de bloc dans une machine Linux. Vous pouvez ajouter le -f flag pour indiquer à lsblk d'afficher le type de système de fichiers.
$ lsblk -f
Il imprimera tous les périphériques de bloc avec leur type, leur point de montage et leur disponibilité.
4. Identification du type de système de fichiers à l'aide de la commande mount
Comme indiqué précédemment, le montage est utilisé pour attacher un périphérique ou une partition à un emplacement sélectionné dans votre système de fichiers. Vous pouvez également l'utiliser avec grep pour déterminer le type de fichier des systèmes de fichiers Linux actuellement montés.
$ mount | grep "^/dev"
Il affichera toutes les partitions montées avec leur type.
5. Identification du type de système de fichiers à l'aide de la commande blkid
La commande blkid est utilisée pour imprimer les propriétés des périphériques de bloc. Il affiche également le type de système de fichiers, comme le montre l'exemple ci-dessous.
$ blkid /dev/sda9
Il contient des informations supplémentaires. Vous pouvez utiliser la commande Linux cut pour extraire les informations spécifiques.
$ blkid /dev/sda9 | cut -d ' ' -f 3
6. Identification du type de système de fichiers à l'aide de la commande file
La commande file imprime des informations concernant les fichiers et les répertoires. Ajout du -sL l'option de fichier lui permet de déterminer également le type de système de fichiers.
$ sudo file -sL /dev/sda9
Il affichera le type de système de fichiers de la partition /dev/sda9.
7. Identification du type de système de fichiers à l'aide du fichier fstab
Le fichier fstab contient les informations utilisées par votre système pour déterminer le type d'un système de fichiers. Vous pouvez l'utiliser pour obtenir le type de système de fichiers, comme indiqué ci-dessous.
$ cat /etc/fstab
Cette commande imprimera le type de système de fichiers de vos partitions avec d'autres informations.
8. Identification du type de système de fichiers à l'aide de la commande parted
La commande parted est l'un des moyens les plus utiles de déterminer les types de systèmes de fichiers sous Linux. Vous pouvez l'utiliser, comme indiqué ci-dessous.
$ sudo parted -l
Cette commande doit imprimer toutes les partitions avec leur type de système de fichiers Linux et d'autres informations. Utilisez cette méthode lorsque vous devez déterminer le type de tous les systèmes de fichiers de votre système.
9. Identification du type de système de fichiers à l'aide de la commande inxi
Une autre commande utile qui permet aux utilisateurs de connaître le type de système de fichiers est inxi. Vous pouvez utiliser la commande suivante pour découvrir le type de système de fichiers de toutes les partitions.
$ inxi -p
Il imprimera tous les appareils avec leurs informations de type.
10. Identification du type de système de fichiers à l'aide du fichier mtab
Vous pouvez également grep le fichier mtab pour obtenir les informations de type pour les systèmes de fichiers montés. La commande ci-dessous vous montre comment faire cela.
$ cat /etc/mtab | grep "/dev/sd*"
Il imprimera le type d'informations des appareils actuellement montés.
Fin des pensées
Le système de fichiers Linux couvre de nombreux aspects de votre distribution Linux préférée. Du point de vue de l'ingénierie logicielle, nous avons discuté de la manière dont Linux structure ses systèmes de fichiers et dicté diverses commandes pour parcourir efficacement cette hiérarchie. Le type de système de fichiers sous Linux désigne l'entité logique d'un système de fichiers particulier. Nous avons décrit dix types de systèmes de fichiers Linux largement utilisés, puis vous avons montré comment le déterminer à partir du terminal. Bien qu'il soit très difficile d'englober le système de fichiers dans un seul guide, nos éditeurs ont fait de leur mieux pour faire l'impossible. Laissez-nous un commentaire si vous êtes confronté à une confusion ou si vous avez d'autres questions.