Quelqu'un s'y connait pour supprimer un drbd récalcitrant?

Je met ce post technique en public au cas où certains sont intéressés.

Le contexte

Bon alors hier avec @Aleks nous avons bossé pour proposer des VPS YunoHost pré-installés avec ARN car nous pensons que ça peut intéressé du monde. On a réussi à créer un script-template debootstrap pour yunohost et à l’utiliser dans ganeti. Ce n’était pas simple et nous avons du utiliser plusieurs hack. On a lu une partie du code debootstrap et du code de ganeti pour y parvenir…

La bonne nouvelle c’est que pour faire une image Ubuntu c’est beaucoup plus simple debootstrap étant adapté pour ça.

Pour celles et ceux qui se demandent, debootstrap permet de créer une architecture de fichier debian (ou ubuntu) minimale. Il est utilisé par ganeti (notre gestionnaire de VPS) lors de la création du VPS. En gros, ganeti monte un drbd (comme un miroir RAID mais sur plusieurs serveurs) sur /tmp/tmp.XXXX et lance debootstrap pour créer une arborescence debian dans ce dossier.

Donc on a réussi à créer notre debootstrap yunohost et à l’interfacer avec ganeti. On en était à corriger un bug sur un hook d’ARN (les hooks sont des scripts qui permentent de personnaliser le VPS créé, par exemple pour appliquer la conf réseau de l’abonné).

Le problème

Mais, à la fin en faisant ces essais pour que les hooks ARN fonctionnent, on a eu un soucis avec le drbd du VPS créé.

En gros, vers 3h du mat, le trucs fonctionnait mais on était un peu fatigué et on a laissé un tail -f sur un fichier dans un dossier /tmp/tmp.XXXX qui était monté sur le drbd36 pendant une opération ganeti. Ce qui a empêché le démontage du dossier /tmp/tmp.XXXX par ganeti, et du coup on arrivait plus hier à enlever le drbd36 sur hwhost-1 ni le vps associé…

Un drbd-overview donne:

[...]
36:??not-found??  WFConnection Primary/Unknown   UpToDate/DUnknown

On s’est alors aperçu que les commandes drbdadm ne fonctionnaient pas, si on a bien compris ce serait lié au fait que les nom de ressources drbd ne sont pas configurées dans le fichier de conf. Ici on le voit “??not-found??”

Pour gnt-instance remove vps-temp ça donne ça:

root@hwhost-2:/root# gnt-instance remove vps-temp
This will remove the volumes of the instance vps-temp (including
mirrors), thus removing all the data of the instance. Continue?
y/[n]/?: y
Thu Jun 27 23:41:34 2019  - WARNING: Could not remove disk 0 on node hwhost-1.arn-fai.net, continuing anyway: drbd36: can't shutdown drbd device: resource36: State change failed: (-12) Device is held open by someone\nadditional info from kernel:\nfailed to demote\n; Can't lvremove: exited with exit code 5 -   Logical volume vg0/df197a08-be09-492a-9f06-396ae76dd056.disk0_data is used by another device.\n; Can't lvremove: exited with exit code 5 -   Logical volume vg0/df197a08-be09-492a-9f06-396ae76dd056.disk0_meta is used by another device.\n
Failure: command execution error:
Can't remove instance's disks

Solutions écartées

On a essayé de retirer de détacher le drbd avec les commandes drbdadm, mais sans succès. Mais c’est pas notre spécialité loin de là…

Solutions envisagées

On a repéré que plusieurs processus drbd36_setup existaient et on se demandait si les tuer ne résoudrait pas le soucis. Mais on a peur que ce soit trop bourrin, qu’en pensez-vous ?

On a essayé de déterminer précisément le processus responsable du “is used by another device” avec lsof mais on a pas trouvé. Si on pouvait réussir à trouver ça nous pourrions peut être trouver une autre solution plus propre.

Enfin on se demande si c’est normal que les ressources drbd n’aient pas de noms.

Note pour les admins

Le vps en question a l’ip 147, donc ne configurer pas de vps avec…

Oui, je vais jeter un coup d’oeil :slightly_smiling_face:
J’avais déjà eu à faire à un truc comme ça, c’est une belle merde :unamused:

Et je rebondi sur l’histoire de l’adresse ip.
Il semble qu’on a plus assez d’ip pour les vps, du coup c’est un peu le bordel, faudra aussi qu’on s’occupe de ça.

Victoire ! :star_struck:
Je me suis fait “chier”, mais on est débarrassé du drbd36 :rage:.

Je ne saurais pas vous dire toutes les étapes, mais à partir du moment ou l’un des drbd est en “standalone” et que ça coince toujours, il faut vérifier qu’il n’y ai pas d’autres drbd36 (par exemple drbd36-1 dans ce cas là) qui tourne, grâce à la commande dmsetup ls --tree -o inverted.
Après, il suffit de le retirer à coup de dmsetup remove drbd36-1 et on peut finalement retirer le vps proprement.

2 « J'aime »

Je viens de voir la réponse.

@Aleks ping

Merci <3

1 « J'aime »

Pas de souci et de rien :smiley:

1 « J'aime »