Substituindo um disco enquanto mantém a numeração adequada no CEPH

Supõe-se que, como resultado desse método, salvemos a sequência na qual os discos são produzidos pelo comando ceph osd tree. Se eles estiverem lá em ordem, será mais legível e considerado, se necessário.

Digressão lírica sobre o tema. O método oficial de substituir um disco no ceph envolve remover todas as entidades lógicas associadas a esse disco do cluster com sua recriação adicional. Como resultado, o osd recém-criado (em algumas circunstâncias) pode alterar seu número (o número no nome da entidade, que é o osd.Number) e a localização no mapa de esmagamento e será exibido naturalmente em outro lugar na árvore de ceph osd e em outros comandos. O número de série será alterado.

A idéia desse método é que não mudaremos nenhuma entidade lógica, mas simplesmente deslizaremos um novo disco para o local "antigo" no cluster. Para fazer isso, neste novo disco, você deve (re) criar as estruturas de dados corretas: todos os tipos de identificação, links simbólicos, chaves.

Vamos marcar um novo disco.

parted /dev/__ mklabel gpt 

Vamos criar uma nova seção em nossa partição

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

Obter o UUID do osd falecido

 ceph osd dump|grep 'osd.' 

Coloque PARTUUID no disco de dados

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

Encontre a seção com a revista

 ceph-disk list | grep for | sort 

Criar um sistema de arquivos em um disco de dados

 /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 

Copiar dados de um OSD vizinho

De fato, esta é a parte mais infame do procedimento, tudo deve ser feito com cuidado.

Ao copiar, pule o diretório / var / lib / ceph / osd / ceph-NUMBER / current, este é o diretório de dados. Simlink no diário criaremos mais 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 

Estamos à procura de uma revista

 ceph-disk list | grep for | sort 

consequentemente, encontramos a partição e fazemos

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

Fazendo um link simbólico para este UUID

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

Preencha fsid com o valor correto

Esse fsid é realmente um ID exclusivo, sob o qual a caixa osd aparece no cluster, é importante, porque se você não adivinhar com id, a caixa osd não verá o cluster e isso será mútuo.

E o valor deve ser obtido da partição partuuid no log de dados.

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

Encha o chaveiro

Com isso, a caixa osd é autorizada no cluster.

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

É gravado em um arquivo no formato

 [osd.] key = __ 

Preencha whoami

Simplesmente escrevemos o número OSD para esse arquivo, que queremos reviver.

Zerando a revista

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

Criar metadados do diário e osd-shki

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

Alterar proprietário dos dados

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

Execute ceph-osd

Atenção: Imediatamente após iniciar o ceph-osd, a reconstrução será iniciada se ceph osd out NUMBER não tiver sido emitido antes de o disco sair do cluster.

 systemctl start ceph-osd. 

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


All Articles