Mais informações sobre o [[:ceph|CEPH]]
= Troubleshooting ####=
- VM não inicia : TASK ERROR: VM is locked (snapshot-delete)
- No shell do host: <font inherit/Courier New,Courier,monospace;;inherit;;inherit>qm unlock
- No shell do host: <font inherit/Courier New,Courier,monospace;;inherit;;inherit>qm unlock
= 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:
- O caminho do membro ruim, provavelmente
/dev/sdb3. - O GUID numérico do membro ruim.
- Qual é o disco saudável, provavelmente
/dev/sda.
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:
- Excluir somente o Virtual Drive
c0u1, normalmenteVirtual Drive 1. - Criar novamente um RAID-0 usando somente o disco novo no slot
[252:1]. - Não alterar
c0u0,c0u2ouc0u3.
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 Drivev1, slot[252:1], serialS1DBYLYE.
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