Aller au contenu principal

Système de fichiers avancé


Table des matières

  1. Types de systèmes de fichiers
  2. Inodes et structure interne
  3. Liens symboliques vs liens physiques
  4. Commandes : ln, stat, df, du
  5. Exercices pratiques


1 - Types de systèmes de fichiers

Qu'est-ce qu'un système de fichiers ?

Un système de fichiers organise la façon dont les données sont stockées et récupérées sur un disque.

Systèmes de fichiers Linux

TypeUsageCaractéristiques
ext4Standard LinuxJournalisé, stable, performant
xfsEnterpriseHautes performances, grands fichiers
btrfsModerneSnapshots, compression
zfsAvancéIntégrité données, RAID
ntfsWindowsLecture/écriture avec ntfs-3g
fat32/exfatUSBCompatibilité universelle
tmpfsRAMFichiers temporaires ultra-rapides

Voir le système de fichiers

# Voir les systèmes de fichiers montés
df -T

# Exemple de sortie
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 50G 15G 32G 32% /
tmpfs tmpfs 4.0G 0 4.0G 0% /dev/shm

# Informations détaillées d'une partition
sudo file -s /dev/sda1

# Type du système de fichiers d'un point de montage
stat -f / | grep Type

Caractéristiques importantes

CaractéristiqueDescription
JournalisationRécupération après crash
Taille max fichierLimite de taille par fichier
Taille max volumeLimite de taille totale
PermissionsSupport POSIX
ACLPermissions étendues

🔝 Retour à la table des matières



2 - Inodes et structure interne

Qu'est-ce qu'un inode ?

Un inode (index node) est une structure de données qui contient les métadonnées d'un fichier.

Contenu d'un inode

InformationDescription
TypeFichier, répertoire, lien...
Permissionsrwx pour user/group/others
PropriétaireUID et GID
TailleEn octets
Timestampsatime, mtime, ctime
Compteur de liensNombre de liens physiques
PointeursVers les blocs de données
Important

L'inode ne contient PAS le nom du fichier ! Le nom est stocké dans le répertoire parent.

Voir les inodes

# Afficher le numéro d'inode
ls -i fichier.txt
# 12345678 fichier.txt

# Détails complets avec stat
stat fichier.txt

Sortie de stat :

  File: fichier.txt
Size: 1234 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 12345678 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ john) Gid: ( 1000/ john)
Access: 2024-01-15 10:30:00.000000000 +0000
Modify: 2024-01-15 10:25:00.000000000 +0000
Change: 2024-01-15 10:25:00.000000000 +0000
Birth: 2024-01-15 10:20:00.000000000 +0000

Timestamps

TimestampSignificationMis à jour quand
atimeAccess timeLecture du fichier
mtimeModify timeContenu modifié
ctimeChange timeMétadonnées modifiées

Limite d'inodes

# Voir l'utilisation des inodes
df -i

# Exemple
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 3276800 234567 3042233 8% /
attention

Vous pouvez manquer d'inodes avant de manquer d'espace disque ! Cela arrive avec beaucoup de petits fichiers.

🔝 Retour à la table des matières



3 - Liens symboliques vs liens physiques

Un lien physique crée une nouvelle entrée de répertoire pointant vers le même inode.

# Créer un lien physique
ln fichier.txt lien_physique.txt

# Vérifier : même inode
ls -li fichier.txt lien_physique.txt
# 12345 -rw-r--r-- 2 john john 100 Jan 15 fichier.txt
# 12345 -rw-r--r-- 2 john john 100 Jan 15 lien_physique.txt

Caractéristiques :

  • Même inode, mêmes données
  • Le fichier existe tant qu'un lien existe
  • Ne peut pas traverser les systèmes de fichiers
  • Ne peut pas pointer vers un répertoire

Un lien symbolique est un fichier spécial qui pointe vers un chemin.

# Créer un lien symbolique
ln -s fichier.txt lien_symbolique.txt

# Vérifier
ls -l lien_symbolique.txt
# lrwxrwxrwx 1 john john 11 Jan 15 lien_symbolique.txt -> fichier.txt

# Différent inode
ls -li fichier.txt lien_symbolique.txt

Caractéristiques :

  • Inode différent, fichier spécial
  • Peut pointer vers des répertoires
  • Peut traverser les systèmes de fichiers
  • Devient cassé si la cible est supprimée

Comparaison

AspectLien physiqueLien symbolique
InodeMêmeDifférent
RépertoiresNonOui
Cross-filesystemNonOui
TailleIdentiqueTaille du chemin
Si cible suppriméeDonnées conservéesLien cassé
Commandelnln -s

🔝 Retour à la table des matières



4 - Commandes : ln, stat, df, du

ln - Créer des liens

# Lien physique
ln source.txt hardlink.txt

# Lien symbolique
ln -s source.txt symlink.txt

# Lien symbolique vers répertoire
ln -s /var/log logs

# Forcer le remplacement
ln -sf nouvelle_cible.txt symlink.txt

# Verbose
ln -sv source.txt symlink.txt

stat - Informations détaillées

# Informations complètes
stat fichier.txt

# Format personnalisé
stat --format='%n: %s bytes, inode %i' fichier.txt
# fichier.txt: 1234 bytes, inode 12345678

# Formats utiles
stat -c '%a' fichier.txt # Permissions octales (644)
stat -c '%U:%G' fichier.txt # user:group
stat -c '%y' fichier.txt # Date modification

df - Espace disque (partitions)

# Affichage lisible
df -h

# Avec type de filesystem
df -hT

# Une partition spécifique
df -h /home

# Inodes
df -i

Exemple de sortie :

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1 50G 15G 32G 32% /
/dev/sda2 100G 60G 35G 63% /home
tmpfs 4.0G 0 4.0G 0% /dev/shm

du - Espace utilisé (fichiers/dossiers)

# Taille d'un dossier
du -sh /var/log

# Taille de chaque sous-dossier
du -h --max-depth=1 /var

# Top 10 des plus gros dossiers
du -h /var | sort -rh | head -10

# Exclure certains fichiers
du -sh --exclude='*.log' /var

# Taille totale de plusieurs éléments
du -ch *.txt

Exemples pratiques

# Trouver les gros fichiers
find / -type f -size +100M 2>/dev/null

# Espace utilisé par utilisateur
sudo du -sh /home/*

# Vérifier avant de manquer d'espace
df -h | awk '$5 > 80 {print "ALERTE:", $6, "à", $5}'

🔝 Retour à la table des matières



5 - Exercices pratiques

Exercice 1 : Explorer les inodes

# 1. Créez un fichier
echo "Hello" > test.txt

# 2. Affichez son inode
ls -i test.txt

# 3. Affichez les détails complets
stat test.txt

# 4. Notez le nombre de liens (Links: 1)

Exercice 2 : Liens physiques et symboliques

# 1. Créez un fichier source
echo "Contenu original" > original.txt

# 2. Créez un lien physique
ln original.txt hardlink.txt

# 3. Créez un lien symbolique
ln -s original.txt symlink.txt

# 4. Comparez les inodes
ls -li original.txt hardlink.txt symlink.txt

# 5. Modifiez via le lien physique
echo "Modification" >> hardlink.txt
cat original.txt # Vérifie que c'est modifié

# 6. Supprimez l'original
rm original.txt

# 7. Testez les liens
cat hardlink.txt # Fonctionne (même inode)
cat symlink.txt # Erreur (lien cassé)

Exercice 3 : Espace disque

# 1. Vérifiez l'espace global
df -h

# 2. Trouvez les 5 plus gros dossiers dans /var
sudo du -h /var --max-depth=1 | sort -rh | head -5

# 3. Vérifiez les inodes
df -i

Quiz

Q1. Quelle information n'est PAS stockée dans l'inode ?

Réponse

Le nom du fichier ! Il est stocké dans le répertoire parent.

Q2. Peut-on créer un lien physique vers un répertoire ?

Réponse

Non, seuls les liens symboliques peuvent pointer vers des répertoires.

Q3. Quelle commande affiche l'espace disque par partition ?

Réponse

df -h (disk free)

🔝 Retour à la table des matières



Points clés à retenir

  • ext4 est le système de fichiers standard Linux
  • L'inode contient les métadonnées mais PAS le nom
  • Lien physique = même inode, lien symbolique = chemin
  • df -h = espace par partition, du -sh = espace par dossier
  • On peut manquer d'inodes avant de manquer d'espace
  • stat donne toutes les infos d'un fichier

🔝 Retour à la table des matières


Chapitre suivant : Gestion du stockage →