Admin Linux :: Stockage & LVM Master Class

Philosophie du Stockage Linux

Contrairement à Windows qui utilise des lettres de lecteur (C:, D:), Linux traite tout périphérique comme un fichier (situé dans /dev) et unifie l'espace de stockage dans une arborescence unique via le mécanisme de montage. Cette approche permet une flexibilité totale : un dossier profond dans l'arborescence peut physiquement résider sur un disque dur à l'autre bout du monde.

1

Identification & Permissions

La première étape de l'administration est de repérer le matériel. Le noyau Linux assigne des noms aux disques dans l'ordre de leur détection au démarrage.

Comprendre les Noms de Périphériques

Les noms de fichiers spéciaux dans /dev suivent une logique historique mais stricte. Savoir les lire permet d'identifier immédiatement le type de matériel.

  • SATA / SCSI / USB /dev/sd[a-z]

    Le 's' signifiait à l'origine SCSI. Aujourd'hui, presque tout stockage bloc standard utilise ce préfixe. La lettre (a, b, c) indique l'ordre physique.

  • NVMe (SSD Rapide) /dev/nvme0n1

    Les disques NVMe se connectent directement au bus PCIe, contournant les contrôleurs SATA lents. nvme0 est le contrôleur, n1 est le namespace (disque).

  • Virtuel (KVM/VirtIO) /dev/vda

    Dans le Cloud ou sur des VM, les pilotes paravirtuels utilisent le préfixe 'v' pour indiquer qu'il ne s'agit pas d'un disque physique réel.

Décrypter "ls -l"

La première lettre de la ligne de permission indique le type de fichier. C'est crucial pour distinguer un disque d'un dossier.

Périphérique Bloc (Disque)
brw-rw---- 1 root disk ... /dev/sda
b = Block device (Stockage)
Dossier (Point de montage)
drwxr-xr-x 2 root root ... /mnt/data
d = Directory (Répertoire)
Permissions (rwx)
read (4) write (2) execute (1)
drwxr-xr-x
Proprio Groupe Autres

Outils d'Analyse

Ne modifiez jamais un disque sans l'avoir analysé avec ces commandes.

Arborescence (lsblk) Vue Hiérarchique
$ lsblk
Identification Unique (blkid) Pour fstab
# blkid
Occupation Espace (df) Monitoring
$ df -hT
2

Partitionnement (fdisk/gdisk)

Le disque brut est inutilisable tel quel. Il faut le découper en partitions.

L'outil fdisk

fdisk est l'outil historique pour manipuler les tables de partition.

Menu interactif (Command m for help) :

m Affiche le menu d'aide.
n Crée une nouvelle partition.
d Supprime une partition existante.
t Change l'ID système (ex: 82 pour Swap, 8e pour LVM).
w Écrit les changements sur le disque.

Le SWAP (Mémoire d'échange)

Lorsque la RAM est pleine, Linux déplace les pages mémoire inactives vers le disque. C'est lent mais évite le crash.

1. Formater mkswap /dev/sdb2
2. Activer swapon /dev/sdb2
3. Vérifier swapon -s
3

Comparatif des Systèmes de Fichiers

Le choix du système de fichiers détermine les performances, la fiabilité et les fonctionnalités de votre stockage. Voici les standards actuels sous Linux.

EXT4

Standard

L'évolution stable de la famille ext. Robuste et compatible partout.

  • Réduction taille Oui
  • Max Fichier 16 To
  • Commande mkfs.ext4

XFS

Enterprise

Optimisé pour le parallélisme et les très gros volumes (RHEL/CentOS).

  • Réduction taille Non
  • Max Fichier 8 EiB
  • Commande mkfs.xfs

Btrfs

Moderne

Système "Copy on Write" avec gestion de volume, snapshots et RAID.

  • Fonction clé Snapshots
  • RAID logiciel Intégré
  • Commande mkfs.btrfs

Interopérabilité (Disques Externes / USB)

Système Linux Windows MacOS Note
NTFS Oui (ntfs-3g) Natif Lecture seule* Standard Windows
exFAT Oui Oui Oui Idéal Clés USB
4

Montage & Persistance (/etc/fstab)

Sous Linux, un disque n'apparait pas tout seul. Il faut le "monter" (l'attacher) sur un dossier vide. Le fichier /etc/fstab est lu au démarrage par systemd (ou init) pour monter automatiquement les disques.

Zone Critique

Une erreur de syntaxe dans ce fichier peut empêcher le serveur de démarrer (Emergency Mode). Toujours tester avec mount -a avant de redémarrer.

1. Périphérique (UUID)
2. Point de montage
3. Type
4. Options
5. Dump
6. Pass
UUID=5b3...a2
/data
ext4
defaults,noatime
0
2
Les Options (Col 4)
  • defaults : L'option passe-partout. Active rw (lecture/écriture), exec (exécuter des programmes), auto (montage au boot).
  • ro : (Read-Only) Sécurise les données sensibles en lecture seule.
  • noatime : Optimisation de performance. Évite d'écrire sur le disque à chaque fois qu'on lit un fichier (mise à jour de l'heure d'accès).
  • _netdev : Indispensable pour les montages réseau (iSCSI, NFS) pour attendre le réseau avant de monter.
Dump (Col 5)

Sert à l'outil de backup historique dump.

  • 0 : (Recommandé) Ne pas sauvegarder.
  • 1 : Sauvegarder si dump est utilisé.
Fsck Check (Col 6)

Définit l'ordre de vérification du système de fichiers au démarrage.

  • 0 : Pas de vérification (XFS, Swap).
  • 1 : Priorité absolue (Réservé à la racine /).
  • 2 : Vérifier après la racine (Pour /home, /data...).
5

LVM : Logical Volume Manager

LVM est une couche d'abstraction qui s'intercale entre le matériel et le système de fichiers. Imaginez LVM comme une fonderie : il prend des disques durs de tailles différentes (PV), les fond dans un grand réservoir de stockage unique (VG), puis puise dans ce réservoir pour créer des partitions sur-mesure (LV) redimensionnables à volonté.

Architecture & Création

Couche 3 : Volume Logique (LV)
/dev/vg_data/lv_compta
C'est ici que l'on formatte (mkfs) et que l'utilisateur voit ses données. Il est élastique.
Couche 2 : Groupe de Volumes (VG)
vg_data
PE Size: 4MB

Le "réservoir" global. Il additionne l'espace des disques physiques.

PV 1 /dev/sdb (50Go)
PV 2 /dev/sdc (100Go)

Couche 1 : Les disques physiques réels initialisés.

Agrandissement (Sans interruption)

C'est la force de LVM. Si /compta est plein, on peut l'agrandir pendant que les comptables travaillent dessus.

# La méthode moderne en 1 commande (-r resize auto)

lvextend -r -L +5G /dev/vg_data/lv_compta

# Si l'espace libre est sur un NOUVEAU disque :

1. pvcreate /dev/sdd 2. vgextend vg_data /dev/sdd 3. lvextend...

Réduction (Procédure Risquée)

ATTENTION : XFS ne peut PAS être réduit !

Seul le système de fichiers EXT4 supporte la réduction. L'opération nécessite de démonter le volume (interruption de service obligatoire) pour éviter la corruption de données.

# 1. Démonter impératif
umount /compta
# 2. Vérifier intégrité (Force check)
e2fsck -f /dev/vg_data/lv_compta
# 3. Réduire le FS (ex: on descend à 8G)
resize2fs /dev/vg_data/lv_compta 8G
# 4. Réduire le conteneur LVM pour coller au FS
lvreduce -L 8G /dev/vg_data/lv_compta
# 5. Remonter
mount -a

Guide de Dépannage

Les problèmes de stockage sont fréquents. Voici les cas classiques et comment les résoudre.

Erreur : "Target is busy"

Vous essayez de démonter un disque (umount) mais le système refuse car un utilisateur ou un processus utilise un fichier sur ce disque.

# 1. Identifier le coupable
lsof /mnt/data
// Affiche le PID et l'utilisateur
# 2. Solution douce
Demander à l'utilisateur de fermer ses fichiers.
# 3. Solution brutale (Kill process)
fuser -km /mnt/data

Emergency Mode au Boot

Le serveur démarre en mode secours (invite root directe). C'est souvent causé par un UUID incorrect dans /etc/fstab ou un disque débranché.

# 1. Le système de fichiers est en Lecture Seule
Il faut le remonter en écriture pour corriger le fichier.
# 2. Commande magique
mount -o remount,rw /
# 3. Corriger l'erreur (commenter la ligne fautive)
nano /etc/fstab
# 4. Redémarrer
reboot

TP Guidé 1 : Ajout d'un Disque Physique Standard

Scénario : Disque de Logs

Votre serveur manque d'espace pour les journaux d'application. Vous ajoutez un disque de 50Go pour le dédier aux logs.
Objectif : Le rendre utilisable et le monter sur /var/log/app.

1. Identification du Disque

Vérifiez le nom attribué par le noyau (ex: sdb, sdc...).

lsblk
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part /
sdd 8:48 0 50G 0 disk

// Le nouveau disque est 'sdd' et il est vide (pas de partition).

2. Partitionnement

Nous allons créer une partition unique prenant tout l'espace.

fdisk /dev/sdd
Command: n (New partition)
Select: p (Primary)
Partition number: 1
First sector: [Entrée] (Défaut)
Last sector: [Entrée] (Défaut = Tout le disque)
Command: w (Write changes)

3. Formatage (Création du FS)

# Formater la partition 1 en ext4
mkfs.ext4 /dev/sdd1

4. Montage et Persistance

# A. Créer le dossier et tester
mkdir -p /var/log/app mount /dev/sdd1 /var/log/app
# B. Récupérer l'UUID
blkid /dev/sdd1
/dev/sdd1: UUID="998877-aabb..." TYPE="ext4"
# C. Configurer /etc/fstab
UUID=998877-aabb... /var/log/app ext4 defaults 0 2
# D. Vérification finale
mount -a

TP Guidé 2 : Montage d'un Stockage Réseau (NAS/NFS)

Scénario : Accès aux Sauvegardes

L'équipe de sauvegarde vous met à disposition un volume sur le NAS d'entreprise (Synology/Linux) pour stocker vos archives.
Serveur NAS : 192.168.1.100
Dossier partagé : /volume1/backups

1. Installer le client NFS

Linux ne parle pas NFS par défaut, il faut installer les paquets.

# Debian / Ubuntu
apt update && apt install nfs-common
# RHEL / Rocky / CentOS
dnf install nfs-utils

2. Découverte (Vérification)

Vérifiez que le NAS autorise votre connexion et listez les dossiers.

showmount -e 192.168.1.100
Export list for 192.168.1.100:
/volume1/backups *

3. Montage Manuel & Test

# Créer le point de montage local
mkdir -p /mnt/nas_backups
# Monter (Type nfs)
mount -t nfs 192.168.1.100:/volume1/backups /mnt/nas_backups
# Vérifier (créer un fichier test)
touch /mnt/nas_backups/test.txt

4. Persistance (Attention Piège !)

Pour le montage réseau dans /etc/fstab, il faut ABSOLUMENT utiliser l'option _netdev. Sinon, Linux essaiera de monter le NAS avant d'avoir une adresse IP au démarrage, et bloquera le boot.

# Ajouter dans /etc/fstab
192.168.1.100:/volume1/backups /mnt/nas_backups nfs defaults,_netdev 0 0

TP Guidé 3 : Montage Partage Windows (SMB/CIFS)

Scénario : Serveur de Fichiers Windows

L'entreprise stocke des documents Excel sur un serveur Windows. Vous devez les rendre accessibles sur votre serveur Linux.
Serveur : 192.168.1.200 (ou //win-server)
Partage : Compta
Compte : utilisateur / MonMotDePasse

1. Installer les utilitaires CIFS

Le protocole SMB (Common Internet File System) nécessite un paquet spécifique.

# Debian / Ubuntu
apt install cifs-utils
# RHEL / CentOS
dnf install cifs-utils

2. Création du point de montage

mkdir -p /mnt/win_compta

3. Montage Manuel (Test)

Attention : Le mot de passe est visible dans l'historique ici (mauvaise pratique pour la prod, ok pour le test).

# Syntaxe : mount -t cifs //IP/Partage /PointMontage -o options
mount -t cifs //192.168.1.200/Compta /mnt/win_compta -o username=utilisateur,password=MonMotDePasse

4. Persistance Sécurisée (fstab + credentials)

Ne mettez JAMAIS de mot de passe en clair dans /etc/fstab car il est lisible par tous. Utilisez un fichier de credentials protégé.

# A. Créer le fichier secret (root seulement)
nano /root/.smbcreds
username=utilisateur
password=MonMotDePasse
# Protéger le fichier
chmod 600 /root/.smbcreds
# B. Ajouter dans /etc/fstab
//192.168.1.200/Compta /mnt/win_compta cifs credentials=/root/.smbcreds,_netdev 0 0
Note: _netdev est obligatoire pour attendre le réseau !

TP Guidé 4 : Scénario LVM (MySQL)

Scénario : Le Serveur de Base de Données

Vous êtes administrateur d'un serveur Linux. Une nouvelle application nécessite un espace de stockage dédié pour MySQL.
Matériel disponible : Un disque dur vierge de 20 Go détecté en /dev/sdb.

Mission 1 : Initialisation

Setup

Créez un volume logique nommé lv_mysql de 10 Go dans un groupe vg_data sur le disque /dev/sdb. Formatez-le en XFS et montez-le sur /var/lib/mysql.

# 1. Créer le Volume Physique (PV)
pvcreate /dev/sdb
# 2. Créer le Groupe (VG)
vgcreate vg_data /dev/sdb
# 3. Créer le Volume Logique (LV)
lvcreate -n lv_mysql -L 10G vg_data
# 4. Formater en XFS
mkfs.xfs /dev/vg_data/lv_mysql
# 5. Créer le dossier et monter
mkdir -p /var/lib/mysql
mount /dev/vg_data/lv_mysql /var/lib/mysql

Mission 2 : Urgence Disque Plein

Extension

Les logs ont rempli l'espace ! Il reste de la place sur /dev/sdb (il faisait 20 Go, on en a pris 10).
Objectif : Allouer tout l'espace restant au volume, sans éteindre le serveur.

# Étendre le LV et le système de fichiers en une seule commande
// -l +100%FREE : Utiliser tout le reste du VG
// -r : Redimensionner le FS automatiquement (resizefs)
lvextend -l +100%FREE -r /dev/vg_data/lv_mysql

Mission 3 : Persistance

Config

Assurez-vous que le montage survive au redémarrage en configurant fstab.

# 1. Récupérer l'UUID
blkid /dev/vg_data/lv_mysql
Output: /dev/...: UUID="550e8400-e29b..." TYPE="xfs"
# 2. Ajouter dans /etc/fstab
UUID=550e8400-e29b... /var/lib/mysql xfs defaults 0 0
# 3. Tester (CRUCIAL)
mount -a // Si pas d'erreur, c'est gagné.