Intro
Cette version française explique Ceph local lab setup with practical examples avec le même objectif pratique que l article source : aider le lecteur à comprendre le contexte, les décisions à prendre et les points à vérifier avant de passer à l action.
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 vos données de production. Dans ce guide, vous allez construire un cluster Ceph à trois nœuds sur des machines virtuelles locales via une installation par paquets (sans conteneurs), créer RBD et CephFS pour des exercices concrets, vérifier la santé du cluster avec des contrôles observables, et pratiquer la récupération face à des pannes courantes. Vous obtiendrez un flux de travail reproductible que vous pourrez reconstruire et étendre à mesure que vous progressez.
Portée de l'exemple construit utilisée dans ce guide:
- Trois VMs (ceph1, ceph2, ceph3) avec un disque système et un disque de données chacune
- Pools répliqués taille 3 pour observer quorum et placement réels
- Exercices RBD et CephFS pour pratiquer bloc et système de fichiers
Version et inventaire d'environnement
Choisissez des versions simples et une topologie adaptées à un PC portable ou un poste de travail. Gardez un premier pilote réduit, mesurable et facile à inspecter.
Exemple construit (adaptez à la capacité de l'hôte):
- OS: Ubuntu Server 22.04 LTS sur tous les nœuds
- Version Ceph: Reef 18.x (installation par paquets, sans conteneurs)
- CPU/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 privé (ex. 192.168.56.0/24)
- Hôtes et IP (ex.): ceph1 192.168.56.11, ceph2 192.168.56.12, ceph3 192.168.56.13
Inventaire de labo (exemple):
| Hostname | Rôles (initiaux) | vCPU/RAM | OS | Disques (OS + data) |
|---|---|---|---|---|
| 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 correct. Évitez un labo mono-mon si vous souhaitez pratiquer le vrai basculement.
- Utilisez des disques de données dédiés pour les OSD. Ne mettez 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ûre
Ce parcours fournit une voie claire et réversible vers un labo fonctionnel. Les commandes destructives sont signalées; vérifiez deux fois les noms de périphériques avant d'exécuter quoi que ce soit qui modifie des disques.
Prérequis sur les trois nœuds (exécuter avec sudo):
- Définissez les noms d'hôtes et assurez la résolution directe/inverse (ou entrées /etc/hosts) entre nœuds.
- Assurez la synchro horaire:
sudo apt update && sudo apt install -y chrony
sudo systemctl enable --now chrony
- Désactivez le swap (Ceph préfère fortement sans swap):
sudo swapoff -a
# Commentez les lignes swap dans /etc/fstab
- Ouvrez le pare-feu ou désactivez-le sur le réseau du labo. Pour aller vite sur Ubuntu dans un réseau isolé:
sudo ufw disable
Préparer un nœud d'administration
- Utilisez ceph1 comme nœud admin. Générez une clé SSH et copiez-la vers ceph1, ceph2, ceph3 pour l'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 admin (installation par paquets):
sudo apt update && sudo apt install -y ceph-deploy
Initialiser la configuration du cluster (adresses d'exemple)
- Créez un nouveau cluster avec trois mon:
ceph-deploy new ceph1 ceph2 ceph3
- Éditez le ceph.conf généré dans ~/ceph-lab et ajoutez:
public_network = 192.168.56.0/24
osd_pool_default_size = 3
osd_pool_default_min_size = 2
mon_allow_pool_delete = true # labo uniquement; jamais en production
Installer les paquets Ceph sur tous les nœuds
ceph-deploy install ceph1 ceph2 ceph3
# Optionnel: épinglez une release supportée par vos paquets distro
Créer les moniteurs initiaux et récupérer les clés
ceph-deploy mon create-initial
# Distribuez les clés admin pour exécuter "ceph" depuis tous les nœuds
ceph-deploy admin ceph1 ceph2 ceph3
# Vérifiez sur chaque nœud que /etc/ceph/ceph.client.admin.keyring existe
Déployer un démon manager
ceph-deploy mgr create ceph1
Préparer et créer les OSD (DESTRUCTIF: efface le disque cible)
- Assurez-vous que chaque nœud possède un disque vide dédié (ex. /dev/sdb). Contrôlez avec lsblk.
- Depuis le répertoire admin, pour chaque nœud:
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
ceph-deploy mds create ceph1
À ce stade, le cluster devrait avoir 3 mons, 1 mgr et 3 OSD up/in.
Créer un petit RBD pour les tests pratiques
- Créez un pool et activez l'application:
sudo ceph osd pool create rbd 32 32 # valeurs PG d'exemple (labo)
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 vérification:
dd if=/dev/zero of=/mnt/rbd/testfile bs=4M count=16 status=progress
ls -lh /mnt/rbd
Créer un CephFS minimal pour des tests orientés dossiers
- Créez les pools data et metadata puis le filesystem:
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
- Monter via le client noyau (noms/mon résolvables):
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érifications et diagnostics
Utilisez ces contrôles pour confirmer la santé du cluster et le bon fonctionnement des chemins de données.
Matrice de vérification (exemple):
| Commande | Ce que ça montre | Motif attendu |
|---|---|---|
| ceph -s | Santé globale | HEALTH_OK, 3 mons en quorum, 3 osds up/in |
| ceph health detail | Avertissements/erreurs | Pas de PG bloqués, pas nearfull/full |
| ceph osd tree | Placement OSD | 3 OSD sous 3 hôtes, poids cohérents |
| ceph df | Utilisation d'espace | Pools listés, used/avail raisonnables |
| rbd ls rbd | Présence RBD | labimg visible |
| mount | Systèmes montés | /mnt/rbd et /mnt/cephfs si montés |
Résultats attendus (exemples):
- ceph -s affiche: health: HEALTH_OK; mon: 3 daemons, quorum ceph1, ceph2, ceph3; osd: 3 up, 3 in; mgr: active: ceph1.
- dd vers /mnt/rbd se termine et le fichier mesure ~64 MiB (bs=4M count=16).
- /mnt/cephfs/lab/greeting.txt contient "hello".
Diagnostics utiles pendant les expériences:
- Suivre l'état des PG pendant les écritures:
watch -n2 "ceph pg stat"
- Inspecter les journaux d'un OSD (chemins variables selon distro):
sudo journalctl -u ceph-osd@0 -f
- Confirmer l'état MDS pour CephFS:
ceph fs status
Modes de panne et récupération
Entraînez-vous dans le labo pour gagner en intuition. Notez toujours l'état du cluster avant et après.
- Panne de disque OSD (simulée par l'arrêt d'un OSD ou l'extinction d'un nœud)
- Déclencheur: éteindre ceph2 ou arrêter son OSD:
sudo systemctl stop ceph-osd@<id>
- Observation:
ceph -smontre une redondance dégradée, des PG remappées, un backfilling possible. - Récupération:
- Si transitoire, redémarrer l'OSD:
sudo systemctl start ceph-osd@<id>
- Si disque perdu, marquer out, purger, remplacer le disque et recréer l'OSD:
ceph osd out <id>
ceph osd purge <id> --yes-i-really-mean-it
ceph-deploy osd create --data /dev/newdisk ceph2
- Vérification: retour à HEALTH_OK; PG en active+clean.
- Perte de quorum mon (ne pas faire avec < 3 mon)
- Déclencheur: arrêtez un seul mon pour voir un quorum 2/3:
sudo systemctl stop ceph-mon@ceph2
- Observation: mon: 2 démons en quorum; les clients continuent.
- Récupération: redémarrer le mon et vérifier le retour à 3:
sudo systemctl start ceph-mon@ceph2
ceph quorum_status
- Cluster nearfull ou full (exemple; attention à l'espace hôte)
- Déclencheur: écrire beaucoup de données dans /mnt/rbd jusqu'à nearfull.
- Observation:
ceph health detailmontre nearfull/full; écritures bloquées si full. - Récupération: supprimez les données de test, ajoutez un OSD, ou baissez temporairement la réplication dans le labo (ne jamais compromettre la durabilité en production):
ceph osd pool set rbd size 2
- Vérification: retour à OK; les écritures réussissent.
- PG mal placés ou sous-dimensionnés après changement de topologie
- Déclencheur: ajout/retrait d'un OSD.
- Observation:
ceph -smontre remapping, backfilling, recovering; baisse temporaire de perf. - Récupération: attendre la fin du backfill; éviter de redémarrer au milieu de la récupération.
- Vérification: PG en active+clean.
- Échecs d'authentification ou de montage côté client
- Déclencheur: clé erronée ou ceph.conf manquant.
- Observation: échec de mount ou rbd map (permissions ou not found).
- Récupération: copier /etc/ceph/* depuis le nœud admin et corriger les permissions de la clé.
- Vérification: les montages et mappings réussissent.
Procédures de rollback et réinitialisation (labo uniquement)
- Retirer un OSD en erreur (DESTRUCTIF):
ceph osd out <id>
ceph osd purge <id> --yes-i-really-mean-it
sudo sgdisk --zap-all /dev/sdb && sudo wipefs -a /dev/sdb
- Purger tout le labo (DESTRUCTIF):
ceph-deploy purge ceph1 ceph2 ceph3
ceph-deploy purgedata ceph1 ceph2 ceph3
# Supprimez tout /etc/ceph restant sur les nœuds
- Reconstruire proprement en suivant les étapes du Chemin de configuration sûre.
Liste d'opérations
Pour répéter le labo de manière fiable.
Planification et inventaire
- Choisir les versions OS et Ceph; les consigner.
- Allouer 3 VMs avec un disque de données chacune; vérifier la synchro de l'heure.
- Assurer la résolution de noms et l'accès SSH par clés entre nœuds.
Mise en route du cluster
- Créer un répertoire de travail et lancer
ceph-deploy new ceph1 ceph2 ceph3. - Définir public_network et les tailles par défaut 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éer le pool rbd; activer l'application; créer et mapper une image 512M.
- Écrire un fichier de test dans /mnt/rbd et le lister.
- Créer cephfs_data et cephfs_metadata;
ceph fs new; monter CephFS.
Vérification
ceph -smontre HEALTH_OK; 3 mons; 3 osds up/in; 1 mgr actif.ceph dfmontre des pools avec usages attendus;rbd lsmontre labimg.mountmontre /mnt/rbd et /mnt/cephfs si montés.
Exercice des pannes en sécurité
- Arrêter un mon et observer le quorum; le redémarrer.
- Arrêter un OSD et vérifier l'état dégradé puis le retour à l'équilibre.
- Optionnel: simuler nearfull prudemment, puis nettoyer.
Réinitialisation et documentation
- En fin de session, démonter et supprimer les données de test.
- Pour reconstruire,
ceph-deploy purgeetpurgedata, puis répéter la mise en route. - Capturer commandes, versions et observations pour la répétabilité.
Conclusion
Vous disposez désormais d'un labo Ceph compact et réaliste, que vous pouvez reconstruire à volonté pour pratiquer les workflows essentiels: formation du quorum, provisionnement des OSD, création et mapping RBD, ainsi que mise en place et montage de CephFS. Vous avez vérifié la santé avec des contrôles concrets, exercé des pannes fréquentes et utilisé des procédures de remise au propre pour repartir d'un environnement sain. Gardez le premier pilote étroit et observable, puis étendez progressivement: ajoutez un OSD, 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 court runbook, votre équipe peut apprendre et dépanner Ceph en toute confiance avant de modifier des environnements plus complexes.