Remplacement d'un disque tout en conservant une numérotation correcte dans CEPH

Il est supposé qu'à la suite de cette méthode, nous enregistrons la séquence dans laquelle les disques sont sortis par la commande arborescence ceph osd. S'ils sont là dans l'ordre, c'est plus lisible et considéré, si nécessaire.

Digression lyrique sur le sujet. La méthode officielle de remplacement d'un disque dans ceph consiste à supprimer toutes les entités logiques associées à ce disque du cluster avec leur recréation ultérieure. En conséquence, l'osd fraîchement créé (dans certaines circonstances) peut changer son numéro (le numéro dans le nom de l'entité, qui est l'osd.Number) et son emplacement dans la carte d'écrasement et sera naturellement affiché ailleurs dans l'arborescence ced osd et d'autres commandes. Son numéro de série va changer.

L'idée de cette méthode est que nous ne changerons aucune entité logique, mais glissons simplement un nouveau disque à la «vieille» place dans le cluster. Pour ce faire, sur ce nouveau disque, vous devez (re) créer les structures de données correctes: toutes sortes d'id, liens symboliques, clés.

Marquons un nouveau disque.

parted /dev/__ mklabel gpt 

Créons une nouvelle section sur notre partition

 parted /dev/sdaa mkpart primary ext2 0% 100% /sbin/sgdisk --change-name=1:'ceph data' -- /dev/sda1 

Obtenez l'UUID de l'OSD décédé

 ceph osd dump|grep 'osd.' 

Mettez PARTUUID sur le disque de données

 /sbin/sgdisk --typecode=1:99886b14-7904-4396-acef-c031095d4b62 -- /dev/__ 

Retrouvez la rubrique avec le magazine

 ceph-disk list | grep for | sort 

Créer un système de fichiers sur un disque de données

 /sbin/mkfs -t xfs -f -i size=2048 -- /dev/sdaa1 

Mount FS

 mount -o rw,noatime,attr2,inode64,noquota /dev/____ /var/lib/ceph/osd/ceph-_OSD 

Copier les données d'un OSD voisin

En fait, c'est la partie la plus tristement célèbre de la procédure, tout doit être fait avec soin.

Lors de la copie, ignorez le répertoire / var / lib / ceph / osd / ceph-NUMBER / current, il s'agit du répertoire de données. Simlink sur le journal que nous créerons plus tard

Copie

 for i in activate.monmap active ceph_fsid fsid journal_uuid keyring magic ready store_version superblock systemd type whoami; do cp /var/lib/ceph/osd/ceph-_/${i} /var/lib/ceph/osd/ceph-; done 

Nous recherchons un magazine

 ceph-disk list | grep for | sort 

en conséquence, nous trouvons la partition, et faisons

 ls -l /dev/disk/by-partuuid | grep _ 

Créer un lien symbolique vers cet UUID

 ln -s /dev/disk/by-partuuid/UUID /var/lib/ceph/osd/ceph-/journal 

Remplissez fsid avec la valeur correcte

Ce fsid est en fait un identifiant unique, sous lequel la boîte osd apparaît dans le cluster, il est important, car si vous ne devinez pas avec id, la boîte osd elle-même ne verra pas le cluster et ce sera mutuel.

Et la valeur doit être extraite de la partition partuuid du journal de données.

 echo -n UUID >/var/lib/ceph/osd/ceph-/fsid 

Remplissez le trousseau de clés

Avec cela, la boîte osd est autorisée dans le cluster.

 ceph auth list|grep --after-context=1 'osd.' 

Il est écrit dans un fichier au format

 [osd.] key = __ 

Remplissez whoami

Nous écrivons simplement le numéro OSD de ce fichier, que nous voulons réactiver.

Mettre le magazine à zéro

 dd bs=32M oflag=direct if=/dev/zero of=/var/lib/ceph/osd/ceph-/journal 

Créer des métadonnées de journal et osd-shki

 ceph-osd --mkfs -i _OSD ceph-osd --mkjournal -i _OSD 

Changer le propriétaire des données

 chown -R ceph:ceph /var/lib/ceph/osd/ceph- 

Exécutez ceph-osd

Attention: Immédiatement après le démarrage de ceph-osd, la reconstruction commencera si ceph osd out NUMBER n'a pas été émis avant que le disque ne quitte le cluster.

 systemctl start ceph-osd. 

Source: https://habr.com/ru/post/fr436494/


All Articles