Ci-dessous, les différences entre deux révisions de la page.
wiki:cluster:ceph:remplacement_disque [2018/07/21 17:39] simtrami [Si vous vous fichez des données sur le(s) disque(s) (grâce à votre politique de réplication)] |
wiki:cluster:ceph:remplacement_disque [2020/06/27 18:16] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Remplacer un disque sur le cluster Ceph ====== | ||
- | <WRAP center round todo 60%> | ||
- | disque signe de défaillances.... explications, | ||
- | </ | ||
- | |||
- | Pour des erreurs de lecture sur le disque vous allez probablement avoir des erreurs sur les placements groups, du type : '' | ||
- | |||
- | Vous avez la documentation officielle de ceph sur le [[http:// | ||
- | |||
- | Normalement ce type d' | ||
- | |||
- | Pour connaître exactement le problème, vous pouvez utiliser '' | ||
- | |||
- | On regarde donc pour chaque pg quel est le problème grâce à < | ||
- | |||
- | |||
- | Si dans les champs errors vous voyiez // | ||
- | |||
- | ===== Identifier le disque ===== | ||
- | |||
- | Grâce à la commande qui liste les objets affectés vous remarquez sans doute qu'un seul (j' | ||
- | |||
- | Bon donc on a l'ID de l'OSD, maintenant il nous faut récupérer le disque correspondant, | ||
- | On identifie la machine qui possède l'OSD avec un simple '' | ||
- | On a donc l' | ||
- | Un petit '' | ||
- | |||
- | Parce qu'on aime les one-liners (pas sur qu'il fonctionne encore dans quelques années), en voici un qui à partir de l'OSD vous donne le disque associé (<color # | ||
- | < | ||
- | lsblk | grep -B1 $(ceph-volume lvm list | grep -A14 osd.X | tail -n1 \ | ||
- | | cut -d'/' | ||
- | </ | ||
- | |||
- | ===== Tests sur le disque ===== | ||
- | |||
- | Maintenant que le disque est identifié, il nous reste plus qu'à le tester et prendre une décision. | ||
- | Pour ça on utilise l' | ||
- | On peut déjà regarder l' | ||
- | |||
- | Puis tester le disque grâce à l' | ||
- | |||
- | |||
- | <WRAP center round important 60%> | ||
- | Le test de santé peut être **PASS**, bien que le disque cause des erreurs, et **PASS** ne veut pas forcément dire garder le disque. | ||
- | </ | ||
- | |||
- | ===== Remplacer le disque ===== | ||
- | |||
- | |||
- | C'est bon, vous avez décidé de remplacer le disque. | ||
- | |||
- | Pour vous aider il y a la documentation officielle de ceph : [[http:// | ||
- | |||
- | |||
- | |||
- | ==== Si vous vous fichez des données sur le(s) disque(s) (grâce à votre politique de réplication) ==== | ||
- | |||
- | Vous pouvez directement suivre l' | ||
- | < | ||
- | ceph-volume lvm prepare --osd-id {id} --data /dev/sdX --block.db /dev/sdY | ||
- | </ | ||
- | |||
- | [[http:// | ||
- | |||
- | ==== Si vous avez absolument besoin de récupérer des données sur le(s) disque(s) ==== | ||
- | |||
- | |||
- | <WRAP center round important 60%> | ||
- | Je répète : Si vous avez absolument besoin de récupérer des données sur le(s) disque(s) | ||
- | </ | ||
- | |||
- | |||
- | On commence par sortir l'OSD du cluster : | ||
- | < | ||
- | |||
- | Il ne vous reste plus qu'à attendre que Ceph déplace les données dont il ne peut pas se passer si l'OSD est down : les PGs qui sont présents uniquement sur le disque vont être déplacés ailleurs. C'est ce qui arrive si vous n'avez pas de réplication ni de correction d' | ||
- | |||
- | Vous pouvez observez le déplacement des PGs avec | ||
- | < | ||
- | qui de manière générale vous affiche ce que fait le cluster lorsqu' | ||
- | |||
- | Dans le cas où des données sont introuvables, | ||
- | |||
- | Une fois que vous avez réussi à revenir dans un état correct, on stoppe l'OSD grâce à : | ||
- | < | ||
- | |||
- | On vérifie que le service est bien down : | ||
- | < | ||
- | ceph osd tree | ||
- | systemctl status ceph-osd@OSD_ID.service | ||
- | </ | ||
- | |||
- | Si ce n'est pas le cas, éteignez l'OSD avec systemd : | ||
- | < | ||
- | |||
- | Ensuite on enlève l'OSD de la crushmap, pour que ceph déplace les objets qui étaient présents sur l'OSD ailleurs, grâce à la politique de réplication : les PGs présents sur le disque sont déplacés grâce aux réplicas. | ||
- | < | ||
- | |||
- | Encore une fois vous allez devoir attendre. Une fois que l' | ||
- | < | ||
- | Puis le supprimer: | ||
- | < | ||
- | |||
- | |||
- | Pour identifier le disque dans le serveur vous pouvez essayer de trouver le disque dont la LED reste éteinte, pour confirmer votre supposition vous pouvez utiliser : | ||
- | Attention à bien effectuer cette commande sur le disque que vous allez remplacer, sinon vous allez perdre des données. | ||
- | < | ||
- | La LED devrait s' | ||
- | |||
- | Vous pouvez maintenant retirer le disque et le remplacer. | ||
- | |||
- | Vous pouvez donc identifier le nouveau disque et recréer un OSD. Bien penser à spécifier la partition de cache si vous utiliser bluestore avec du cache. Vous pouvez l' | ||
- | < | ||
- | |||
- | Si vous utilisez **ceph-deploy** merci de vous réferer au blog cité plus haut. | ||
- | |||
- | Vous pouvez donc lancer un : | ||
- | < | ||
- | Cela va vous donner l'ID de l'OSD qui devrait, si vous avez bien supprimé le précédent, | ||
- | |||
- | /dev/sdX : votre nouveau disque | ||
- | |||
- | /dev/sdY : votre cache utilisé pour cet OSD | ||
- | < | ||
- | ceph-volume lvm zap /dev/sdX | ||
- | ceph-volume lvm prepare --osd-id OSD_ID --data /dev/sdX --block.db /dev/sdY | ||
- | </ | ||
- | |||
- | Avec '' | ||
- | < | ||
- | |||
- | Et voilà ! | ||
- | |||
- | --- // |