DRBD (Distributed Replicated Block Device) est un mécanisme de réplication de périphériques blocs entre deux serveurs Linux via le réseau. Souvent qualifié de « RAID 1 réseau », il copie en temps réel les données d’une partition ou d’un volume logique vers un nœud distant, garantissant qu’une panne matérielle ne provoque aucune perte de données.
Intégré au noyau Linux depuis la version 2.6.33 et maintenu par LINBIT, DRBD est aujourd’hui en version 9.x dans les dépôts officiels Debian et Ubuntu. Il constitue la brique de stockage de référence dans les clusters haute disponibilité basés sur Pacemaker et Corosync, notamment pour protéger des bases de données, des partages NFS ou des systèmes de fichiers critiques.
Ce guide couvre l’installation et la configuration complète de DRBD 9 sur deux serveurs Debian 12 ou Ubuntu 22.04/24.04 LTS, depuis la préparation des disques jusqu’au basculement manuel et à l’intégration avec Pacemaker. Toutes les commandes sont testées en environnement réel.
Prérequis et conventions
Avant de commencer, assurez-vous de disposer de :
- Deux serveurs Debian 12 (Bookworm) ou Ubuntu 22.04 / 24.04 LTS
- Une partition ou un volume LVM dédié à la réplication sur chaque nœud (ex.
/dev/sdb) - Connectivité réseau directe entre les deux nœuds — un réseau dédié à la réplication est recommandé en production
- Le port TCP 7788 ouvert entre les deux machines
- Les mêmes versions du noyau et de
drbd-utilssur les deux serveurs
Conventions utilisées dans cet article :
node1— adresse 192.168.10.1, nœud primaire initialnode2— adresse 192.168.10.2, nœud secondaire- Ressource DRBD :
r0, périphérique virtuel/dev/drbd0, disque source/dev/sdb
Note : Les noms
node1etnode2dans la configuration DRBD doivent correspondre exactement à la sortie de la commandehostnamesur chaque machine. Configurez-les avechostnamectl set-hostname node1si nécessaire.
Installation de DRBD
Installer drbd-utils sur les deux nœuds
Le paquet drbd-utils est disponible dans les dépôts standard de Debian et Ubuntu. Exécutez ces commandes sur chaque nœud :
sudo apt update
sudo apt install -y drbd-utils
Sur Ubuntu, notamment sur des machines virtuelles, le module noyau DRBD peut être absent. Vérifiez et installez les modules extra si nécessaire :
# Vérifier la présence du module
modinfo drbd
# Si absent, installer les modules extra du noyau courant
sudo apt install -y linux-modules-extra-$(uname -r)
# Charger le module manuellement
sudo modprobe drbd
# Vérifier le chargement
lsmod | grep drbd
Ouvrir le port de réplication
# Avec ufw (Ubuntu)
sudo ufw allow 7788/tcp
# Vérifier la connectivité depuis node1 vers node2
nc -zv 192.168.10.2 7788
Configuration de la ressource DRBD
Créer le fichier de ressource
DRBD lit sa configuration depuis /etc/drbd.conf et les fichiers /etc/drbd.d/*.res. La bonne pratique est d’isoler chaque ressource dans son propre fichier. Créez /etc/drbd.d/r0.res sur les deux nœuds avec un contenu identique :
sudo tee /etc/drbd.d/r0.res << 'EOF'
resource r0 {
protocol C; # Synchrone : ACK uniquement après écriture sur les deux nœuds
startup {
wfc-timeout 15; # Attente max du pair au démarrage (secondes)
degr-wfc-timeout 60; # Attente en mode dégradé
}
net {
cram-hmac-alg sha1;
shared-secret "VotreSecretPartagé"; # Clé d'authentification entre nœuds
verify-alg sha256;
}
syncer {
rate 100M; # Bande passante allouée à la synchronisation initiale
}
on node1 {
device /dev/drbd0;
disk /dev/sdb; # Disque ou partition source sur node1
address 192.168.10.1:7788;
meta-disk internal; # Métadonnées DRBD sur le même disque
}
on node2 {
device /dev/drbd0;
disk /dev/sdb; # Disque ou partition source sur node2
address 192.168.10.2:7788;
meta-disk internal;
}
}
EOF
Transférez ensuite le fichier sur le second nœud pour garantir l’identité de configuration :
# Depuis node1
scp /etc/drbd.d/r0.res node2:/etc/drbd.d/r0.res
Initialiser les métadonnées DRBD
Cette étape initialise la zone de métadonnées DRBD en fin de disque. Attention : toute donnée préexistante sur /dev/sdb sera écrasée.
# À exécuter sur node1 ET node2
sudo drbdadm create-md r0
Sortie attendue sur chaque nœud :
initializing activity log
initializing bitmap (0 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.
Démarrage et synchronisation initiale
Activer la ressource
# Sur node1 ET node2
sudo drbdadm up r0
Vérifiez l’état immédiatement après :
cat /proc/drbd
# version: 8.4.11 (api:1/proto:86-101)
# 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
Les deux nœuds sont en état Secondary/Secondary. Il faut désigner un primaire initial pour lancer la synchronisation.
Promouvoir node1 en primaire et lancer la synchronisation
Sur node1 uniquement, forcez la promotion — cette commande indique à DRBD que node1 est la source de vérité et lance la copie vers node2 :
sudo drbdadm -- --overwrite-data-of-peer primary r0
Suivez la progression de la synchronisation en temps réel :
watch -n 2 cat /proc/drbd
# Exemple de sortie pendant la synchronisation :
# 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
# ns:2097152 nr:0 dw:0 dr:2098076 al:0 bm:0 lo:0 pe:0 ua:0 ap:0
# [====>...............] sync'ed: 22.4% (17408/22528)M
# finish: 0:02:45 speed: 105,472 K/sec
Attendez que l’état affiche ds:UpToDate/UpToDate avant de passer à l’étape suivante. Sur de gros volumes, la synchronisation peut prendre plusieurs minutes à plusieurs heures.
Utilisation du périphérique DRBD
Créer un système de fichiers et monter le volume
Une fois la synchronisation terminée, /dev/drbd0 est utilisable comme n’importe quel disque bloc. Depuis le nœud primaire (node1) :
# Créer un système de fichiers ext4
sudo mkfs.ext4 /dev/drbd0
# Créer le point de montage
sudo mkdir -p /data
# Monter le volume
sudo mount /dev/drbd0 /data
# Vérifier
df -h /data
# /dev/drbd0 22G 45M 21G 1% /data
Ne montez jamais
/dev/drbd0simultanément sur les deux nœuds avec un système de fichiers classique comme ext4 ou xfs. Cela provoquerait une corruption immédiate. Réservez le montage au nœud primaire uniquement, ou utilisez un système de fichiers cluster (OCFS2, GFS2) si vous avez besoin d’un accès concurrent.
Tester le basculement manuel
Pour simuler un failover et vérifier que les données sont bien répliquées :
# Étape 1 — Sur node1 : démonter et rétrograder en secondaire
sudo umount /data
sudo drbdadm secondary r0
# Étape 2 — Sur node2 : promouvoir en primaire et monter
sudo drbdadm primary r0
sudo mount /dev/drbd0 /data
# Vérifier que les données créées sur node1 sont présentes
ls -la /data
Les données sont intactes sur node2. C’est le comportement attendu du protocole C : aucune écriture n’est acquittée à l’application avant d’être confirmée sur les deux disques.
Les trois protocoles de réplication
DRBD propose trois modes de réplication adaptés à des scénarios différents :
- Protocole A — Asynchrone : l’écriture est confirmée dès que les données ont quitté le buffer TCP local. Risque de perte de données en cas de panne avant réception par le pair. Adapté aux réplications longue distance (WAN).
- Protocole B — Semi-synchrone : l’écriture est confirmée dès que le pair a reçu les données en mémoire, mais avant l’écriture sur disque. Bonne compromise entre performance et sécurité sur réseau rapide.
- Protocole C — Synchrone : l’écriture n’est confirmée qu’après que les deux disques l’ont physiquement écrite. Aucune perte de données possible sur panne d’un nœud. Recommandé pour tous les clusters HA locaux.
La pénalité de performance du protocole C est négligeable sur un réseau local 1 Gbit/s ou 10 Gbit/s dédié à la réplication.
Intégration avec Pacemaker
DRBD gère la réplication, mais c’est Pacemaker qui orchestre le basculement automatique en cas de panne. L’intégration repose sur le Resource Agent ocf:linbit:drbd.
Désactiver le démarrage automatique de DRBD
Pacemaker doit être le seul à démarrer et arrêter les ressources DRBD. Désactivez le service systemd sur les deux nœuds :
# Sur node1 ET node2
sudo systemctl disable drbd
sudo drbdadm down r0 # Si la ressource est encore active
Déclarer DRBD comme ressource Pacemaker
# Créer la ressource DRBD (mode promotable = primaire/secondaire automatique)
sudo pcs resource create drbd_r0 ocf:linbit:drbd
drbd_resource=r0
op monitor interval=15s
# Déclarer la ressource comme promotable (un seul primaire à la fois)
sudo pcs resource promotable drbd_r0
promoted-max=1 promoted-node-max=1
clone-max=2 clone-node-max=1
notify=true
# Vérifier l'état du cluster
sudo pcs status
Vous pouvez ensuite ajouter une ressource de montage et définir des contraintes d’ordre (DRBD promu avant montage) pour automatiser complètement le cycle de vie. Référez-vous à notre article sur Pacemaker et Corosync pour la configuration complète du cluster HA.
Commandes d’administration courantes
# État détaillé de toutes les ressources DRBD
sudo drbdadm status
# Affichage temps réel du statut
watch -n 1 drbdadm status
# Lancer une vérification d'intégrité des données (à planifier hors pic d'activité)
sudo drbdadm verify r0
# Forcer la resynchronisation complète depuis le primaire
sudo drbdadm invalidate-remote r0
# Statistiques de réplication réseau
sudo drbdsetup show-statistics r0
# Surveiller les événements en temps réel
sudo drbdadm events2 r0
# Voir les journaux DRBD
sudo journalctl -u drbd -f
À lire également
- Pacemaker et Corosync — cluster haute disponibilité Linux — Comment orchestrer le basculement automatique et gérer les ressources de cluster avec Pacemaker, le compagnon naturel de DRBD.
- ZFS sur Linux : snapshots, clones et RAID-Z en pratique — Une alternative de stockage avancé avec redondance locale, snapshots instantanés et compression intégrée.
- Gestion des services avec systemd sur Debian et Ubuntu — Maîtriser systemd pour administrer les services Linux, utile pour gérer les dépendances au démarrage dans un contexte DRBD/Pacemaker.