Mais informações sobre o [[:ceph|CEPH]]

= Troubleshooting ####=

= Importando qcow2 para VM proxmox ####=

Criar uma instancia e apagar disco dela.

Converter qcow2 para raw


qemu-img convert -f qcow2 -O raw image.qcow2 image.raw

Importar criando um novo disco

rbd import image.raw storagename/vm-<id-vm>-disk-0

Adicionando disco na instancia.

qm set 102 -virtio0 warlock_vm:vm-102-disk-0

Opção 2 para importar disco qcow2

qm importdisk 125 jammy-server-cloudimg-amd64.qcow2 Production_vm

Movendo disco para outra VMs

CEPH:

Supondo que o nome do pool seja rbd e a linha do disco seja: myceph:vm-400-disk-1 e haja um monitor no endereço 1.2.3.4, usamos o seguinte comando:

# rbd -m 1.2.3.4 -n client.admin --keyring /etc/pve/priv/ceph/myceph.keyring --auth_supported cephx mv rbd/vm-400-disk-1 rbd/vm-2300-disk-1

No mesmo storage

# rbd mv rbd/vm-400-disk-1 rbd/vm-2300-disk-1

Não esqueça de alterar a configuração na VM antiga e na nova para usar o disco : /etc/pve/qemu-server/400.conf:

= show cloned linked ####=

show emphemeral disk (backing file) no ceph:

# rbd ls warlock | while read disk; do
rbd -p warlock info $disk | egrep "(rbd image|parent:)"
done

Trocando disco de sistema com ZFS

Sim. Pela tela, /dev/sda e /dev/sdb têm a mesma estrutura de boot + EFI + ZFS, indicando que provavelmente formam um espelho ZFS do rpool.

O disco físico com problema é:

Serial: S1DBYLYE
MegaRAID Device ID: 2
Slot físico: [252:1]
Virtual Drive: c0u1 / OS Path 1

Ele provavelmente corresponde ao /dev/sdb, mas confirme antes. O “SMART OK” exibido no Proxmox refere-se ao volume virtual SMC2108; o SMART físico foi consultado diretamente pelo smartd através do MegaRAID.

Não clique em “Wipe Disk” nem “Initialize Disk with GPT”.

1. Confirme que o rpool é realmente espelhado

Execute:

zpool status -gP rpool

O resultado precisa ter uma estrutura parecida com:

rpool
  mirror-0
    /dev/sda3  ONLINE
    /dev/sdb3  ONLINE

Também confira o bootloader:

proxmox-boot-tool status

E descubra qual dispositivo Linux é o target 1:

for d in sda sdb; do
    printf '/dev/%s -> ' "$d"
    readlink -f "/sys/class/block/$d/device"
done

Também pode usar:

lsscsi -g

Procure o dispositivo cujo endereço SCSI tem Target ID 1. Esse deve ser o volume c0u1, portanto o disco físico problemático. Não continue se o rpool não estiver como mirror ou se o outro membro também apresentar erros.

2. Faça backup e prepare a manutenção

Esse servidor também possui OSDs Ceph. Antes de desligá-lo:

ceph -s

Migre ou desligue as VMs e containers em execução e confirme que há backup externo atualizado. Registre a situação atual:

zpool status -gP rpool > /root/rpool-antes-troca.txt
proxmox-boot-tool status > /root/boot-antes-troca.txt

No resultado de zpool status -gP, anote:

3. Coloque somente o membro ruim como offline

Exemplo, caso seja realmente /dev/sdb3:

zpool offline rpool /dev/sdb3

Confira:

zpool status -gP rpool

O esperado é o pool continuar funcionando com /dev/sda3 e /dev/sdb3 aparecer como OFFLINE.

4. Identifique fisicamente o disco

Acenda o LED do slot [252:1]:

cd /opt/megaraid
./MegaCli64 -PdLocate -start -PhysDrv '[252:1]' -a0

Confirme visualmente o compartimento e depois pare o LED:

./MegaCli64 -PdLocate -stop -PhysDrv '[252:1]' -a0

O disco removido precisa ser exatamente:

ST1000DM003-1CH162
Serial S1DBYLYE
Slot [252:1]

Use um disco novo de capacidade igual ou maior.

5. Recrie o volume de um disco no MegaRAID

Aqui existem duas camadas:

Disco físico [252:1]
    ↓
MegaRAID RAID-0 de um único disco, c0u1
    ↓
/dev/sdb
    ↓
Partição /dev/sdb3
    ↓
Espelho ZFS rpool

Como c0u1 é RAID-0 de somente um disco, o controlador não consegue fazer rebuild desse volume. Após trocar o disco físico, será necessário:

  1. Excluir somente o Virtual Drive c0u1, normalmente Virtual Drive 1.
  2. Criar novamente um RAID-0 usando somente o disco novo no slot [252:1].
  3. Não alterar c0u0, c0u2 ou c0u3.

Recomendo fazer essa parte na tela de configuração do MegaRAID durante o boot, com o servidor desligado, porque excluir o Virtual Drive errado destrói outro volume.

Depois de criar o novo RAID-0, inicie o Proxmox e confira:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS

O novo volume provavelmente voltará como /dev/sdb, mas confirme pelo target:

for d in sda sdb; do
    printf '/dev/%s -> ' "$d"
    readlink -f "/sys/class/block/$d/device"
done

6. Copie a tabela de partições

Supondo:

/dev/sda = membro saudável
/dev/sdb = volume novo

Defina:

GOOD=/dev/sda
NEW=/dev/sdb

Confira cuidadosamente:

lsblk "$GOOD"
lsblk "$NEW"

Então copie a GPT do disco saudável para o novo e gere GUIDs diferentes:

sgdisk --zap-all "$NEW"
sgdisk --replicate="$NEW" "$GOOD"
sgdisk --randomize-guids "$NEW"
partprobe "$NEW"
udevadm settle

Confira o resultado:

lsblk -o NAME,SIZE,PARTTYPE,FSTYPE "$NEW"

Devem existir:

/dev/sdb1  BIOS boot
/dev/sdb2  EFI
/dev/sdb3  ZFS

Copiar a tabela de partições, gerar novos GUIDs e executar zpool replace é o procedimento documentado pelo Proxmox para substituir um dispositivo de boot ZFS. (Proxmox VE)

7. Substitua o membro no ZFS

Use como dispositivo antigo o GUID que você anotou antes da remoção:

zpool replace -f rpool <GUID_ANTIGO> /dev/sdb3

Exemplo ilustrativo:

zpool replace -f rpool 1234567890123456789 /dev/sdb3

Acompanhe o resilver:

watch -n 10 zpool status -P rpool

Não reinicie durante o resilver. Aguarde aparecer algo semelhante a:

scan: resilvered ...
state: ONLINE

E ambos os membros:

mirror-0
  /dev/sda3  ONLINE
  /dev/sdb3  ONLINE

O Proxmox também recomenda acompanhar o progresso pelo zpool status. (Proxmox VE)

8. Torne o disco novo inicializável

Consulte novamente:

proxmox-boot-tool status

Formate a partição EFI nova:

proxmox-boot-tool format /dev/sdb2

Se o status indicar systemd-boot:

proxmox-boot-tool init /dev/sdb2

Se indicar GRUB:

proxmox-boot-tool init /dev/sdb2 grub

Finalize:

proxmox-boot-tool refresh
proxmox-boot-tool status

O Proxmox exige o argumento grub quando os discos atuais usam esse modo; caso contrário, a ESP é inicializada normalmente para systemd-boot. (Proxmox VE)

9. Verificação final

zpool status -v rpool
proxmox-boot-tool status
./MegaCli64 -LDInfo -Lall -a0
./MegaCli64 -PDInfo -PhysDrv '[252:1]' -a0

O esperado é:

rpool: ONLINE
c0u1: Optimal
novo disco [252:1]: Online, Spun Up

Depois faça um reboot de teste durante a janela de manutenção e confirme também a ordem de boot no MegaRAID/BIOS. Ter o ZFS espelhado não garante que o firmware tente automaticamente o segundo Virtual Drive caso o primeiro desapareça.

Exemplo Passo a Passo

Sim, dá para trocar com o Proxmox ligado, porque o rpool deve estar espelhado entre /dev/sda3 e /dev/sdb3. Durante a troca ele ficará degradado, funcionando somente no disco saudável.

O procedimento tem duas partes: recriar o RAID-0 individual no MegaRAID e depois recolocar esse volume no espelho ZFS. O procedimento oficial do Proxmox é copiar a GPT, gerar novos GUIDs, executar zpool replace e configurar novamente a partição EFI. (Proxmox VE)

Não reinicie o servidor entre o início da troca e o término do resilver. Os comandos abaixo assumem que o disco ruim é /dev/sdb, Virtual Drive v1, slot [252:1], serial S1DBYLYE.

1. Confirme antes de mexer

cd /opt/megaraid

zpool status -P rpool
lsscsi -g

./storcli /c0/v1 show all
./storcli /c0/e252/s1 show all | egrep -i 'SN|Serial|Model|State|DID'

O zpool status precisa mostrar algo equivalente a:

mirror-0
  /dev/sda3  ONLINE
  /dev/sdb3  ONLINE

E o StorCLI precisa confirmar:

slot 252:1
serial S1DBYLYE
Virtual Drive 1

Pare se essas três identificações não coincidirem.

2. Coloque o membro ruim offline no ZFS

Salve primeiro o estado do boot:

proxmox-boot-tool status | tee /root/boot-antes-da-troca.txt

Sincronize e coloque /dev/sdb3 offline:

zpool sync rpool
zpool offline rpool /dev/sdb3

Guarde o GUID do membro offline:

OLDGUID=$(zpool status -g rpool | awk '$2=="OFFLINE"{print $1; exit}')
echo "$OLDGUID" | tee /root/rpool-guid-disco-antigo.txt

Confira:

zpool status -P rpool

O esperado agora é:

state: DEGRADED

/dev/sda3  ONLINE
/dev/sdb3  OFFLINE

3. Identifique e prepare o disco para retirada

Acenda o LED:

./storcli /c0/e252/s1 start locate

Confirme fisicamente que é o compartimento correto e desligue o LED:

./storcli /c0/e252/s1 stop locate

Limpe o cache do controlador e apague somente o Virtual Drive 1:

./storcli /c0 flushcache
./storcli /c0/v1 del force

Prepare o disco para retirada:

./storcli /c0/e252/s1 spindown

O StorCLI possui comandos específicos para localizar o disco, desligar sua rotação antes da retirada, excluir um Virtual Drive e criar outro. (Broadcom Docs)

Agora retire fisicamente apenas:

Slot: 252:1
Serial: S1DBYLYE
Modelo: ST1000DM003-1CH162

4. Insira o disco novo

Use um disco com capacidade real igual ou maior. Aguarde alguns segundos e verifique:

./storcli /c0/e252/s1 show all | egrep -i 'SN|Serial|Model|State|DID|Size'

O estado esperado é semelhante a:

UGood
Unconfigured Good

Caso apareça Foreign, UBad ou outro estado, não continue ainda.

5. Crie o novo RAID-0 individual

Crie um único Virtual Drive usando exclusivamente o slot 252:1:

./storcli /c0 add vd type=raid0 drives=252:1 strip=128 direct wt ra pdcache=off

Usei wt, write-through, porque seu controlador mostrou BBU Absent. A sintaxe aceita a seleção exata do enclosure/slot, tamanho de stripe e política de cache. (Broadcom Docs)

Confira:

./storcli /c0/vall show

Espere o Linux detectar o novo volume:

udevadm settle
lsblk -d -o NAME,SIZE,MODEL,SERIAL
lsscsi -g

O volume novo pode voltar como /dev/sdb, mas também pode receber outro nome, como /dev/sde.

Nos passos seguintes, substitua /dev/sdX pelo nome realmente detectado.

6. Copie as partições do disco saudável

Confirme:

GOOD=/dev/sda
NEW=/dev/sdX

lsblk "$GOOD"
lsblk "$NEW"

$GOOD deve ter as partições 1, 2 e 3. $NEW deve ser o novo volume vazio.

Copie a tabela GPT:

sgdisk "$GOOD" -R "$NEW"
sgdisk -G "$NEW"
partprobe "$NEW"
udevadm settle

Confira:

lsblk -o NAME,SIZE,FSTYPE,PARTTYPE "$NEW"

Você deverá ter:

/dev/sdX1  BIOS boot
/dev/sdX2  EFI
/dev/sdX3  ZFS

7. Recoloque o disco no espelho ZFS

OLDGUID=$(cat /root/rpool-guid-disco-antigo.txt)

zpool replace -f rpool "$OLDGUID" "${NEW}3"

Acompanhe o resilver:

watch -n 10 zpool status -P rpool

Espere até aparecer:

state: ONLINE
scan: resilvered ...

E os dois membros:

mirror-0
  /dev/sda3  ONLINE
  /dev/sdX3  ONLINE

8. Configure o boot no disco novo

Veja qual modo está sendo usado:

proxmox-boot-tool status

Remova o registro da EFI antiga e formate a nova:

proxmox-boot-tool clean
proxmox-boot-tool format "${NEW}2"

Caso o status indique systemd-boot:

proxmox-boot-tool init "${NEW}2"

Caso indique GRUB:

proxmox-boot-tool init "${NEW}2" grub

Finalize:

proxmox-boot-tool refresh
proxmox-boot-tool status

O argumento grub deve ser utilizado somente quando o status atual indicar que o sistema usa GRUB. (Proxmox VE)

9. Verificação final

zpool status -v rpool
proxmox-boot-tool status
./storcli /c0/vall show
./storcli /c0/e252/s1 show all | egrep -i 'SN|Serial|Model|State|DID|Size'

Somente reinicie quando:

rpool = ONLINE
resilver concluído
novo disco = Online
nova EFI aparecendo no proxmox-boot-tool