kubenow
Se connecterCommencer gratuitement

L.11 · Pour aller plus loin

Disques, partitions et systèmes de fichiers

Leçon théorique · questionnaire de validation · gratuit, dans le navigateur

Un serveur reçoit un nouveau disque, une partition est pleine, un volume doit être agrandi sans coupure : la gestion du stockage fait partie du quotidien de l'administrateur. Cette leçon est théorique, car ces opérations demandent les droits d'administration, que votre machine de lab n'a pas. Les commandes de lecture (lsblk, df, mount) peuvent toutefois s'essayer dans le terminal de la leçon L.4.

Ce que vous saurez à la fin : lire l'organisation des disques d'une machine, enchaîner les étapes pour mettre un nouveau disque en service (partition, système de fichiers, montage, /etc/fstab), et connaître LVM, qui permet d'agrandir un volume à chaud.

1. Lire l'existant

lsblk                 # disques, partitions et points de montage, en arbre
lsblk -f              # avec le type de système de fichiers et l'UUID
df -hT                # espace libre de chaque système de fichiers monté
mount | column -t     # tout ce qui est monté
NAME    SIZE TYPE MOUNTPOINT
sda      50G disk
├─sda1    1G part /boot
└─sda2   49G part /
sdb     100G disk                  ← le nouveau disque, vierge

Les disques s'appellent /dev/sda, /dev/sdb… (ou /dev/vda, /dev/nvme0n1 selon le matériel), et leurs partitions sda1, sda2…

2. Mettre un nouveau disque en service

sudo fdisk /dev/sdb            # 1. créer une partition (n, puis w pour écrire) ; parted ou gdisk font de même
sudo mkfs.ext4 /dev/sdb1       # 2. créer un système de fichiers (ext4, ou xfs : mkfs.xfs)
sudo mkdir -p /srv/donnees     # 3. le point de montage
sudo mount /dev/sdb1 /srv/donnees
df -h /srv/donnees

Un mount à la main ne survit pas au redémarrage. Pour cela, une ligne dans /etc/fstab, en désignant la partition par son UUID (stable, contrairement à sdb, dont le nom peut changer) :

# <périphérique>                           <point de montage> <type> <options>  <dump> <ordre>
UUID=3f6c2a1e-…                             /srv/donnees       ext4   defaults,nofail  0  2
sudo blkid /dev/sdb1     # donne l'UUID
sudo mount -a            # teste fstab sans redémarrer : une erreur ici, c'est une machine qui ne redémarre plus

L'option nofail évite qu'un disque absent bloque le démarrage.

3. LVM : des volumes souples

LVM (Logical Volume Manager) ajoute une couche entre les disques et les systèmes de fichiers :

disques physiques (PV)  →  groupe de volumes (VG)  →  volumes logiques (LV)  →  système de fichiers
   /dev/sdb, /dev/sdc         vg_donnees                lv_bases                    ext4 / xfs
sudo pvcreate /dev/sdc                       # un disque de plus pour LVM
sudo vgextend vg_donnees /dev/sdc            # il rejoint le groupe
sudo lvextend -r -L +50G /vg_donnees/lv_bases   # le volume grandit, -r agrandit aussi le système de fichiers

Avec LVM, agrandir un volume plein se fait à chaud, sans démonter. On ne réduit en revanche pas un volume xfs.

4. Diagnostiquer « disque plein »

df -h                          # quel système de fichiers est plein ?
du -xh / --max-depth=1 | sort -h   # quel dossier occupe la place (-x : sans changer de disque)
df -i                          # plus d'inodes : des millions de petits fichiers, même s'il reste de la place
lsof +L1                       # fichiers supprimés mais encore ouverts : la place n'est rendue qu'à la fermeture

Les deux derniers pièges sont classiques : un disque « plein » avec de la place libre (inodes épuisés), ou un gros journal supprimé que le service garde ouvert (il faut redémarrer le service, ou vider le fichier avec : > fichier au lieu de le supprimer).

5. Et dans Kubernetes ?

Les nœuds d'un cluster ont les mêmes besoins : un disque séparé pour les données des conteneurs (/var/lib/containerd) et des volumes. Un nœud dont le disque se remplit passe en DiskPressure et commence à expulser des pods (leçon 2.10). Le stockage des applications, lui, passe par les PersistentVolumes (leçons 4.5 et 4.6).

Validez la leçon avec le questionnaire.

Contenu aligné sur les programmes publiés par la CNCF (KCNA, CKAD, CKA, CKS), par le Linux Professional Institute (LPIC-1) et par Cisco (CCNA 200-301). KubeNow n'est ni affilié ni approuvé par la CNCF, la Linux Foundation, le LPI ou Cisco ; CKA, CKAD, CKS et KCNA sont des marques de la Linux Foundation, LPIC-1 est une marque du Linux Professional Institute, Cisco et CCNA sont des marques de Cisco Systems.