Système de fichiers avancé
Table des matières
- Types de systèmes de fichiers
- Inodes et structure interne
- Liens symboliques vs liens physiques
- Commandes : ln, stat, df, du
- 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
| Type | Usage | Caractéristiques |
|---|---|---|
| ext4 | Standard Linux | Journalisé, stable, performant |
| xfs | Enterprise | Hautes performances, grands fichiers |
| btrfs | Moderne | Snapshots, compression |
| zfs | Avancé | Intégrité données, RAID |
| ntfs | Windows | Lecture/écriture avec ntfs-3g |
| fat32/exfat | USB | Compatibilité universelle |
| tmpfs | RAM | Fichiers 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éristique | Description |
|---|---|
| Journalisation | Récupération après crash |
| Taille max fichier | Limite de taille par fichier |
| Taille max volume | Limite de taille totale |
| Permissions | Support POSIX |
| ACL | Permissions é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
| Information | Description |
|---|---|
| Type | Fichier, répertoire, lien... |
| Permissions | rwx pour user/group/others |
| Propriétaire | UID et GID |
| Taille | En octets |
| Timestamps | atime, mtime, ctime |
| Compteur de liens | Nombre de liens physiques |
| Pointeurs | Vers les blocs de données |
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
| Timestamp | Signification | Mis à jour quand |
|---|---|---|
| atime | Access time | Lecture du fichier |
| mtime | Modify time | Contenu modifié |
| ctime | Change time | Mé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% /
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
Lien physique (hard link)
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
Lien symbolique (symlink)
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
| Aspect | Lien physique | Lien symbolique |
|---|---|---|
| Inode | Même | Différent |
| Répertoires | Non | Oui |
| Cross-filesystem | Non | Oui |
| Taille | Identique | Taille du chemin |
| Si cible supprimée | Données conservées | Lien cassé |
| Commande | ln | ln -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
statdonne toutes les infos d'un fichier