Un laboratoire Ceph local est l'endroit le plus sûr pour apprendre le stockage distribué en pratique, répéter des changements et dépanner sans risquer des données de production. Dans ce guide, vous construirez un cluster Ceph pratique à trois nœuds sur des machines virtuelles locales en utilisant une installation par paquets (sans conteneurs), créerez du RBD et du CephFS pour des exercices concrets, vérifierez la santé du cluster avec des contrôles observables, et pratiquerez la récupération face aux modes de défaillance courants. Le résultat final est un flux de travail reproductible que vous pourrez reconstruire et étendre au fur et à mesure que votre compréhension progresse.
Périmètre de ce guide
- Trois VMs (ceph1, ceph2, ceph3) avec un disque système et un disque de données chacune
- Pools répliqués avec une taille de 3 pour observer un vrai comportement de quorum et de placement
- Exemples RBD et CephFS pour pratiquer les flux de travail bloc et système de fichiers
Inventaire des versions et de l'environnement
Choisissez des versions simples et cohérentes ainsi qu'une topologie adaptée à un ordinateur portable ou une station de travail. Gardez le premier pilote petit, mesurable et facile à inspecter.
Exemple construit (adaptez selon la capacité de votre hôte) :
- OS : Ubuntu Server 22.04 LTS sur tous les nœuds
- Version Ceph : Reef 18.x (installation par paquets, sans conteneurs)
- CPU et RAM par VM : 2 vCPU, 4-8 Go RAM
- Disques par VM : 1 x OS (40 Go), 1 x données (50-200 Go)
- Réseau : un segment de réseau privé (exemple 192.168.56.0/24)
- Noms d'hôtes et IPs (exemple) : ceph1 192.168.56.11, ceph2 192.168.56.12, ceph3 192.168.56.13
Inventaire du laboratoire :
| Hôte | Rôles (initiaux) | vCPU/RAM | OS | Disques (OS + données) |
|---|---|---|---|---|
| ceph1 | mon, mgr, osd, mds | 2/8G | Ubuntu 22.04 | 40G + 100G |
| ceph2 | mon, osd | 2/4G | Ubuntu 22.04 | 40G + 100G |
| ceph3 | mon, osd | 2/4G | Ubuntu 22.04 | 40G + 100G |
Notes :
- Trois moniteurs (un par nœud) forment un quorum approprié. Évitez les laboratoires à moniteur unique si vous voulez pratiquer le vrai basculement.
- Utilisez des disques de données dédiés pour les OSD. Ne placez pas les données OSD sur le disque OS.
- La synchronisation de l'heure est obligatoire. Activez NTP ou chrony sur tous les nœuds.
Chemin de configuration sécurisé
Cette section fournit un chemin clair et réversible vers un laboratoire fonctionnel. Toutes les commandes destructives sont étiquetées ; vérifiez deux fois les noms des périphériques avant d'exécuter quoi que ce soit qui modifie les disques.
Prérequis sur les trois nœuds (exécutez en tant qu'utilisateur avec sudo)
- Définissez les noms d'hôtes et assurez la résolution de noms directe et inverse (ou entrées statiques /etc/hosts) entre les nœuds.
- Assurez la synchronisation de l'heure :
sudo apt update && sudo apt install -y chrony
sudo systemctl enable --now chrony
- Désactivez le swap (Ceph préfère fortement l'absence de swap) :
sudo swapoff -a
# Commentez toute ligne swap dans /etc/fstab
- Ouvrez le pare-feu ou désactivez-le dans le réseau de laboratoire. Pour des laboratoires rapides sur Ubuntu, vous pouvez autoriser le trafic Ceph courant ou désactiver temporairement UFW dans le réseau de laboratoire isolé :
sudo ufw disable
Préparer un nœud d'administration
- Utilisez ceph1 comme nœud d'administration. Générez une clé SSH et copiez-la sur ceph1, ceph2, ceph3 pour un accès sans mot de passe :
ssh-keygen -t ed25519 -C "ceph-admin"
ssh-copy-id user@ceph1; ssh-copy-id user@ceph2; ssh-copy-id user@ceph3
- Créez un répertoire de travail :
mkdir -p ~/ceph-lab && cd ~/ceph-lab
- Installez ceph-deploy sur le nœud d'administration (installation par paquets, sans conteneurs) :
sudo apt update && sudo apt install -y ceph-deploy
Initialiser la configuration du cluster (adresses d'exemple construites)
- Créez un nouveau cluster avec trois moniteurs :
ceph-deploy new ceph1 ceph2 ceph3
- Éditez le fichier ceph.conf généré dans ~/ceph-lab et ajoutez des lignes correspondant à votre réseau :
public_network = 192.168.56.0/24
osd_pool_default_size = 3
osd_pool_default_min_size = 2
mon_allow_pool_delete = true # laboratoire seulement ; ne pas utiliser en production
Installer les paquets Ceph sur tous les nœuds
ceph-deploy install ceph1 ceph2 ceph3
Optionnellement, épinglez une version prise en charge par les paquets de votre distribution.
Créer les moniteurs initiaux et rassembler les clés
ceph-deploy mon create-initial
ceph-deploy admin ceph1 ceph2 ceph3
Sur chaque nœud, vérifiez que /etc/ceph/ceph.client.admin.keyring existe et est lisible par votre utilisateur ou via sudo.
Déployer un démon gestionnaire
ceph-deploy mgr create ceph1
Préparer et créer les OSD (DESTRUCTIF : efface le périphérique cible)
- Assurez-vous que chaque nœud a un disque dédié vide (exemple
/dev/sdb). Vérifiez aveclsblk. - Pour chaque nœud, exécutez l'une des commandes suivantes depuis le répertoire d'administration :
ceph-deploy osd create --data /dev/sdb ceph1
ceph-deploy osd create --data /dev/sdb ceph2
ceph-deploy osd create --data /dev/sdb ceph3
Optionnel : déployer un serveur de métadonnées pour CephFS ultérieurement
ceph-deploy mds create ceph1
À ce stade, le cluster devrait avoir 3 mons, 1 mgr et 3 OSDs up/in.
Créer un petit RBD pour tests pratiques
- Créez un pool et activez l'application :
sudo ceph osd pool create rbd 32 32 # comptes PG d'exemple construits
sudo ceph osd pool application enable rbd rbd
- Créez et mappez une image :
rbd create --size 512M rbd/labimg
sudo rbd map rbd/labimg --name client.admin
sudo mkfs.ext4 /dev/rbd0
sudo mkdir -p /mnt/rbd && sudo mount /dev/rbd0 /mnt/rbd
- Test d'écriture rapide et nettoyage :
dd if=/dev/zero of=/mnt/rbd/testfile bs=4M count=16 status=progress
ls -lh /mnt/rbd
Créer un CephFS minimal pour tests basés sur répertoires
- Créez les pools de données et de métadonnées et un système de fichiers (comptes PG d'exemple construits) :
sudo ceph osd pool create cephfs_data 32 32
sudo ceph osd pool create cephfs_metadata 8 8
sudo ceph fs new cephfs cephfs_metadata cephfs_data
- Montez via le client noyau (utilise les adresses mon ou noms résolvables dans votre laboratoire) :
sudo mkdir -p /mnt/cephfs
sudo mount -t ceph ceph1,ceph2,ceph3:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/ceph.client.admin.keyring
- Test de répertoire rapide :
sudo mkdir -p /mnt/cephfs/lab && sudo sh -c 'echo hello > /mnt/cephfs/lab/greeting.txt'
sudo ls -l /mnt/cephfs/lab
Vérification et diagnostics
Utilisez ces contrôles pour confirmer que le cluster est sain et que les chemins de données fonctionnent comme prévu.
Matrice de vérification
| Commande | Ce qu'elle montre | Motif attendu |
|---|---|---|
ceph -s | Santé globale | HEALTH_OK, 3 mons en quorum, 3 osds up/in |
ceph health detail | Avertissements ou erreurs | Aucun PG bloqué, aucun nearfull/full |
ceph osd tree | Placement OSD | 3 OSDs sous 3 hôtes, poids correspondant aux disques |
ceph df | Utilisation de l'espace | Pools listés, used/avail raisonnables |
rbd ls rbd | Présence RBD | labimg visible |
mount | Montages de systèmes de fichiers | /mnt/rbd et /mnt/cephfs présents si montés |
Résultats attendus (exemples construits)
ceph -saffiche quelque chose comme :health: HEALTH_OK; mon: 3 daemons, quorum ceph1, ceph2, ceph3; osd: 3 up, 3 in; mgr: active: ceph1.ddvers/mnt/rbdse termine et le fichier apparaît avec ~64 Mio quandbs=4M count=16./mnt/cephfs/lab/greeting.txtcontient "hello\).
Diagnostics utiles pendant les expériences
- Suivez l'état des groupes de placement pendant les écritures :
watch -n2 "ceph pg stat"
- Inspectez les logs OSD pour un démon individuel (chemins variables selon la distribution, exemple construit) :
sudo journalctl -u ceph-osd@0 -f
- Confirmez l'état MDS pour CephFS :
ceph fs status
Modes de défaillance et récupération
Pratiquez-les dans le laboratoire pour développer votre intuition. Notez toujours l'état du cluster avant et après.
1. Défaillance de disque OSD (simulée en arrêtant un OSD ou en éteignant un nœud)
Déclencheur : éteignez ceph2 ou arrêtez son OSD :
sudo systemctl stop ceph-osd@0 sur ceph2
Observation : ceph -s montre une redondance de données dégradée, PGs remappés, le backfilling peut démarrer.
Chemin de récupération :
- Si transitoire, redémarrez l'OSD :
sudo systemctl start ceph-osd@0 - Si disque perdu, marquez l'OSD out, supprimez-le, remplacez le disque et recréez l'OSD :
ceph osd out 0
ceph osd purge 0 --yes-i-really-mean-it
# Préparez le disque de remplacement et exécutez :
ceph-deploy osd create --data /dev/nouveaudisque ceph2
Vérification : ceph -s revient à HEALTH_OK et PGs active+clean.
2. Perte de quorum des moniteurs (ne pas faire avec moins de 3 mons)
Déclencheur : arrêtez deux démons moniteurs (pour démonstration seulement). Attendez-vous à ce que le cluster devienne indisponible pour les écritures.
Approche de pratique sûre : Arrêtez seulement un moniteur pour voir le quorum réduire à 2/3 :
sudo systemctl stop ceph-mon@ceph2
Observation : mon: 2 daemons in quorum ; les clients continuent de fonctionner.
Chemin de récupération : Redémarrez le moniteur et vérifiez que le quorum revient à 3 :
sudo systemctl start ceph-mon@ceph2
Vérification : ceph quorum_status
3. Cluster nearfull ou full (exemple construit ; attention à ne pas réellement remplir votre disque hôte)
Déclencheur : écrivez de grosses données vers /mnt/rbd jusqu'à l'apparition de l'avertissement nearfull.
Observation : ceph health detail affiche des avertissements nearfull/full et bloque les écritures quand full.
Chemin de récupération : Supprimez les données de test, augmentez optionnellement la capacité en ajoutant un OSD, ou réduisez temporairement la réplication dans le laboratoire (ne compromettez jamais la durabilité en production) :
ceph osd pool set rbd size 2 # laboratoire seulement, revenez à 3 après les tests
Vérification : La santé revient à OK ; les écritures réussissent à nouveau.
4. PGs mal placés ou sous-dimensionnés après changements de topologie
Déclencheur : ajoutez ou supprimez un OSD.
Observation : ceph -s montre des PGs remapped, backfilling, recovering ; la performance chute temporairement.
Chemin de récupération : Attendez la fin du backfill. Évitez de redémarrer les démons en plein milieu de la récupération.
Vérification : Les PGs atteignent l'état active+clean.
5. Échecs d'authentification client ou de montage
Déclencheur : mauvaise clé ou ceph.conf manquant sur le client.
Observation : Le montage ou rbd map échoue avec des erreurs de permission ou introuvable.
Chemin de récupération : Copiez /etc/ceph/* depuis le nœud d'administration vers le client et assurez les bonnes permissions sur la clé.
Vérification : Le montage et rbd map réussissent.
Procédures de retour arrière et réinitialisation (laboratoire seulement)
- Supprimez un OSD erroné (DESTRUCTIF) :
ceph osd out <id>
ceph osd purge <id> --yes-i-really-mean-it
# Effacez manuellement le disque avant réutilisation :
sudo sgdisk --zap-all /dev/sdb && sudo wipefs -a /dev/sdb
- Purgez tout le laboratoire (DESTRUCTIF) :
# Depuis le répertoire d'administration :
ceph-deploy purge ceph1 ceph2 ceph3
ceph-deploy purgedata ceph1 ceph2 ceph3
# Supprimez tout /etc/ceph restant sur les nœuds.
- Reconstruisez proprement en utilisant les étapes du Chemin de configuration sécurisé.
Liste de contrôle des opérations
Utilisez cette liste courte pour répéter le laboratoire de manière cohérente.
Planification et inventaire
- Choisissez l'OS et les versions Ceph pour tous les nœuds ; notez-les.
- Allouez 3 VMs avec un disque de données supplémentaire chacune ; vérifiez la synchronisation de l'heure.
- Assurez la résolution de noms et l'accès SSH par clés entre les nœuds.
Mise en route du cluster
- Créez un répertoire de travail et lancez
ceph-deploy new ceph1 ceph2 ceph3. - Définissez
public_networket les défauts de pool dans ceph.conf. ceph-deploy installsur tous les nœuds.ceph-deploy mon create-initial;ceph-deploy adminsur tous les nœuds.ceph-deploy mgr create ceph1.ceph-deploy osd create --data /dev/sdbsur chaque nœud.
Tests fonctionnels
- Créez le pool rbd ; activez l'application ; créez et mappez une image de 512M.
- Écrivez un testfile vers
/mnt/rbdet listez-le. - Créez cephfs_data et cephfs_metadata ;
ceph fs new; montez CephFS.
Vérification
ceph -saffiche HEALTH_OK ; 3 mons ; 3 osds up/in ; 1 mgr actif.ceph dfmontre les pools avec l'utilisation attendue ;rbd lsaffiche labimg.mountmontre/mnt/rbdet/mnt/cephfssi montés.
Exercer les défaillances en sécurité
- Arrêtez un seul moniteur et observez le quorum ; redémarrez-le.
- Arrêtez un seul OSD et vérifiez l'état dégradé puis guéri au redémarrage.
- Optionnellement simulez nearfull avec prudence, puis nettoyez.
Réinitialisation et documentation
- Quand terminé, démontez les clients et supprimez les données de test.
- Si reconstruction,
ceph-deploy purgeetpurgedata, puis répétez la mise en route. - Capturez vos commandes exactes, versions et observations pour la reproductibilité.
Conclusion
Vous disposez maintenant d'un laboratoire Ceph compact et réaliste que vous pouvez construire et reconstruire localement pour pratiquer les flux de travail essentiels : formation du quorum, provisionnement OSD, création et mapping RBD, configuration et montage CephFS. Vous avez vérifié la santé avec des contrôles concrets, exercé les modes de défaillance courants, et utilisé des procédures de retour arrière sécurisées pour réinitialiser l'environnement. Gardez le premier pilote étroit et observable, puis étendez progressivement : ajoutez un OSD supplémentaire, testez différentes tailles de pool, ou essayez un client sur une VM séparée. Avec un inventaire cohérent, un chemin de configuration sûr et un runbook court, votre équipe peut apprendre et dépanner Ceph en confiance avant de changer quoi que ce soit dans des environnements plus complexes.