Systèmes de fichiers et arborescence

De Wiki info-lab.fr
Aller à : Navigation, rechercher

Sommaire

Systèmes de fichiers

Système de fichiers [1] : Façon de stocker des informations sur un support non volatile (Cd-Rom, disque dur, carte mémoire...), de manière transparente pour l'utilisateur. Un système de fichiers prend en charge tout ou partie (partition) d'un support en découpant par blocs les zones de stockage de l'information, en les classant, les organisant, les indexant... Un système de fichiers moderne propose des solutions aux problèmes de fragmentation, de résistance aux erreurs d'écriture, de redimensionnement à chaud des partitions...
Un support physique peut contenir plusieurs partitions (La disquette rigide ou souple ne le peut pas avec un système d'amorce tel que MBR), chacune pouvant être organisée selon un système de fichier différent.
Exemple de système de fichiers : ext, ext2, UFS, ZFS, XFS, ISO9660, ext3, ext4, btrfs, ntfs, fat...

Amorce du support amovible

Les 2 principaux types d'amorces (développés par Intel) utilisés sur les supports physiques sont MBR [2] crée pour les systèmes msdos démarrés à partir du BIOS et GPT [3] prévu pour l'UEFI mais parfois mis en oeuvre sur une machine possédant un BIOS. Ces 2 systèmes d'amorce indiquent au BIOS (ou à l'UEFI) où trouver un chargeur de démarrage (sur quel secteur de quelle partition) et comment est organisé le support (table des partitions). Les limitations de la table de partition type MBR sont un des causes de la genèse de GPT.

EXT2

EXT2 : Système de fichiers sans journalisation, 32 TiO maximum par partition, 2 TiO maximum par fichier, 255 caractères max pour les noms de fichiers.
EXT2 décompose l'espace de la partition en blocs fixes de 1024 à 8192 octets, la taille étant définie lors du formatage. Ces blocs seront agrégés en "groupes" afin de limiter les déplacements des têtes de lecture et le phénomène de fragmentation.

  • Le superbloc présent en début de partition (mais répliqué à plusieurs autres endroits) contient toutes les informations sur la partition :
    • Nombre de blocs
    • Taille des blocs
    • Etat du système de fichier et intégrité
    • Nombre de blocs libres
    • Nombre d'inodes libres

...

# debugfs
debugfs : open /dev/sda1
debugfs : stats
  • La descriptor table qui suit le superbloc contient la liste des groupes de blocs (la liste de tous les blocs alloués ou pré-alloués aux fichiers).
  • Les inodes ou i-noeuds [4] : petite structure contenant toutes les informations sur chaque fichier et répertoire, toutes les métadonnées telles que taille en octets, identifiant du périphérique qui l'héberge, identifiants du propriétaire et du groupe propriétaire, modulus des permissions, horodatages de modification et d'accès ... Toutes les métadonnées ? sauf le nom !
  • Les répertoires : fichier spécial qui contient une liste des inodes qu'il héberge et du nom des fichiers qui correspondent à ces inodes. Un même inode peut apparaître plusieurs fois, dans le même répertoire ou des répertoires différents. On appelle cela les "liens durs" pour les différencier des liens symboliques.

NOTA: Les liens en dur (crées par la commande ln) d'un fichier pointent tous vers le même inode. Ce sont juste plusieurs entrées dans le même répertoire, ou dans des répertoires différents à condition de tous appartenir au même SdF, possédant le même numéro d'inode. Si on supprime un fichier par son nom, seule une entrée dans un répertoire est effacée, le fichier existe tant que tous les liens ne sont pas supprimés. Par contre, effacer un fichier par son numéro d'inode (find . -inum 367919 -exec rm -f {} \;) le supprime quelques soit le nombre de liens qui pointent vers lui.

EXT3

Evolution d'ext2 apportant la journalisation par la création d'un index relatant tous les changements débutés et finalisés sur le système de fichiers. Ce journal permet de simplifier et accélérer la longue vérification nécessaire du système de fichiers s'il n'a pas été démonté proprement.


EXT4

BTRFS

XFS

SdF 64 bits développé par SGI pour ses serveurs et super calculateurs : Allocation dynamique des blocs aux inodes, support des ACL, mise en cache des données pour écriture différée.

Identification des supports de stockage et partitions

Voici quelques commandes pour identifier les supports de stockage locaux:

# fdisk -l      (variante : fdisk /dev/sdx suivi de la sous-commande p) 

Lister les partitions montées :

$ mount

Effacement du contenu d'un disque (ici /dev/sdb) :

# dd if=/dev/zero of=/dev/sdb     (variante   # dd if=/dev/urandom of=/dev/sdb)

Effacer un fichier grâce à son numéro d'inode :

$ ls -li 
367919 -rw-r--r--  1  xxxxx xxxxx 2 1 sept. 18:18 fichier-a-effacer
$ find . -inum 367919 -exec rm -f {} \;

Formatage des partitions

Le formatage de partitions est réalisée au moyen des utilitaires parted (existe version graphique gparted/qparted) ou fdisk.

VFS

Virtual File System est l'interface logicielle présente en espace noyau située entre les applications et les différents systèmes de fichiers (locaux ou distants) d'un système. Ainsi les applications ne se soucient pas des particularités de chacun des SdF, et peuvent basculer de l'un à l'autre sans s'en apercevoir : VFS se charge de communiquer vers les différents SdF.
VFS peut s'appuyer sur FUSE, module du noyau permettant à un utilisateur sans privilège de monter tous ou certains des SdF disponibles.
Une surcouche de VFS comme GVFS (successeur de GnomeVFS) permet de présenter certaines ressources distantes ou exotiques comme un SdF facilement accessible. Exemples : Répertoires SMB distants, SSHFS, WebDAV, Appareil photos numériques et téléphones supportant UMS ou PTP, directement vus comme des répertoires par le navigateur de fichiers (après une authentification éventuelle).

Arborescence

Un système *NIX est en général organisé de la sorte.

  • La racine / appelée root (à ne pas confondre avec l'utilisateur root)
  • Des répertoires à la racine :
    • /home contenant les données (documents) et paramètres (sessions, préférences des programmes...) des utilisateurs.
    • /etc/ contenant les fichiers de configuration des commandes, programmes, démons...
    • /bin et /sbin contenant les commandes normales (bin) et particulières (sbin) nécessaires au système.
    • /root répertoire personnel de l'utilisateur root (non présent donc dans /home).
    • /dev ensemble des périphériques (DEVices).
    • /lib Les bibliothèques sont regroupées ici.
    • /boot Ensemble des fichiers nécessaires au démarrage du système.
    • /tmp Espace de stockage temporaire.
    • /mnt ou /media Points de montage temporaires.
    • /proc Répertoire crée au démarrage contenant les informations sur le système.
    • /var Répertoire destiné à héberger les fichiers qui sont souvent modifiés (logs, impression, messagerie, www...)
    • /usr Ensemble des programmes et commandes appelés par les utilisateurs.

Ces répertoires peuvent se situer sur la même partition, ou être répartis sur plusieurs disques/partitions.

Utilisation de l'espace disque

Remplissage des partitions :

$ df -h
 Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
 /dev/sda1          111G    6,1G   99G   6% /
 udev               3,9G    4,0K  3,9G   1% /dev
 tmpfs              1,6G    920K  1,6G   1% /run
 none               5,0M       0  5,0M   0% /run/lock
 none               3,9G    1,5M  3,9G   1% /run/shm
 /dev/sda3          180G    146G   26G  86% /home

Détection des répertoires les plus volumineux :

# du -sh /var/*
 4,9M	/var/backups
 490M	/var/cache
 4,0K	/var/crash
 ......
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils