Reemplazar un disco manteniendo la numeración adecuada en CEPH

Se supone que, como resultado de este método, guardamos la secuencia en la que el comando ceph osd tree genera los discos. Si están allí en orden, entonces es más legible y considerado, si es necesario.

Digresión lírica sobre el tema. El método oficial de reemplazar un disco en ceph implica eliminar todas las entidades lógicas asociadas con este disco del clúster con su posterior recreación. Como resultado, el osd recién creado (en algunas circunstancias) puede cambiar su número (el número en el nombre de la entidad, que es el número osd) y la ubicación en el mapa de aplastamiento y, naturalmente, se mostrará en otra parte del árbol ceph osd y otros comandos. Su número de serie cambiará.

La idea de este método es que no cambiaremos ninguna entidad lógica, sino que simplemente deslizaremos un nuevo disco al lugar "antiguo" del clúster. Para hacer esto, en este nuevo disco, debe (re) crear las estructuras de datos correctas: todo tipo de identificación, enlaces simbólicos, claves.

Marquemos un nuevo disco.

parted /dev/__ mklabel gpt 

Creemos una nueva sección en nuestra partición

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

Obtenga el UUID del osd fallecido

 ceph osd dump|grep 'osd.' 

Poner PARTUUID en el disco de datos

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

Encuentra la sección con la revista

 ceph-disk list | grep for | sort 

Crear un sistema de archivos en un disco de datos

 /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 

Copie datos de un OSD vecino

De hecho, esta es la parte más infame del procedimiento, todo debe hacerse con cuidado.

Al copiar, omita el directorio / var / lib / ceph / osd / ceph-NUMBER / current, este es el directorio de datos. Simlink en el diario que crearemos más tarde

Copiando

 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 

Buscamos una revista

 ceph-disk list | grep for | sort 

en consecuencia, encontramos la partición y hacemos

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

Hacer un enlace simbólico a este UUID

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

Rellene fsid con el valor correcto

Este fsid es en realidad una identificación única, bajo la cual aparece el cuadro osd en el clúster, es importante, porque si no adivina con id, el osd-box en sí no verá el clúster y esto será mutuo.

Y el valor debe tomarse de la partición partuuid en el registro de datos.

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

Llenar el llavero

Con esto, el osd-box está autorizado en el clúster.

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

Está escrito en un archivo en el formato

 [osd.] key = __ 

Llenar whoami

Simplemente escribimos el número OSD para este archivo, que queremos revivir.

Poniendo a cero la revista

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

Crear metadatos de diario y osd-shki

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

Cambiar propietario de datos

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

Ejecute ceph-osd

Atención: Inmediatamente después de iniciar ceph-osd, la reconstrucción comenzará si no se emitió NUMBER de ceph osd antes de que el disco saliera del clúster.

 systemctl start ceph-osd. 

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


All Articles