Ersetzen einer Festplatte unter Beibehaltung der richtigen Nummerierung in CEPH

Es wird angenommen, dass wir als Ergebnis dieser Methode die Reihenfolge speichern, in der Festplatten vom Befehl ceph osd tree ausgegeben werden. Wenn sie in der richtigen Reihenfolge vorhanden sind, ist sie besser lesbar und wird bei Bedarf berücksichtigt.

Lyrischer Exkurs zum Thema. Die offizielle Methode zum Ersetzen einer Festplatte in ceph besteht darin, alle mit dieser Festplatte verknüpften logischen Entitäten bei ihrer weiteren Neuerstellung aus dem Cluster zu entfernen. Infolgedessen kann die frisch erstellte osd (unter bestimmten Umständen) ihre Nummer (die Nummer im Namen der Entität, die die osd.Number ist) und ihre Position in der Crush-Map ändern und wird natürlich an anderer Stelle im ceph osd-Baum und anderen Befehlen angezeigt. Die Seriennummer ändert sich.

Die Idee dieser Methode ist, dass wir keine logischen Entitäten ändern, sondern einfach eine neue Festplatte an die „alte“ Stelle im Cluster verschieben. Dazu müssen Sie auf dieser neuen Festplatte die richtigen Datenstrukturen (neu) erstellen: alle Arten von IDs, Symlinks, Schlüsseln.

Markieren wir eine neue Festplatte.

parted /dev/__ mklabel gpt 

Lassen Sie uns einen neuen Abschnitt auf unserer Partition erstellen

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

Holen Sie sich die UUID des verstorbenen osd

 ceph osd dump|grep 'osd.' 

Legen Sie PARTUUID auf die Daten-CD

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

Finden Sie den Abschnitt mit dem Magazin

 ceph-disk list | grep for | sort 

Erstellen Sie ein Dateisystem auf einer Datendiskette

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

FS montieren

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

Kopieren Sie Daten von einem benachbarten OSD

In der Tat ist dies der berüchtigtste Teil des Verfahrens, alles muss sorgfältig gemacht werden.

Überspringen Sie beim Kopieren das Verzeichnis / var / lib / ceph / osd / ceph-NUMBER / current. Dies ist das Datenverzeichnis. Simlink auf Journal werden wir später erstellen

Kopieren

 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 

Wir suchen eine Zeitschrift

 ceph-disk list | grep for | sort 

dementsprechend finden wir die Partition und tun es

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

Erstellen eines Symlinks zu dieser UUID

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

Füllen Sie fsid mit dem richtigen Wert

Diese fsid ist eigentlich eine eindeutige ID, unter der die osd-Box im Cluster erscheint, das ist wichtig, weil Wenn Sie nicht mit id raten, sieht die osd-box selbst den Cluster nicht und dies ist gegenseitig.

Der Wert muss der Partuuid-Partition im Datenprotokoll entnommen werden.

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

Füllen Sie den Schlüsselring

Damit wird die osd-box im Cluster autorisiert.

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

Es wird in eine Datei im Format geschrieben

 [osd.] key = __ 

Füllen Sie whoami

Wir schreiben einfach die OSD-Nummer für diese Datei, die wir wiederbeleben möchten.

Das Magazin auf Null stellen

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

Erstellen Sie Journal-Metadaten und osd-shki

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

Ändern Sie den Dateneigentümer

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

Führen Sie ceph-osd aus

Achtung: Unmittelbar nach dem Start von ceph-osd wird die Neuerstellung gestartet, wenn ceph osd out NUMBER nicht ausgegeben wurde, bevor die Festplatte den Cluster verlassen hat.

 systemctl start ceph-osd. 

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


All Articles