Preciso expandir a capacidade do disco do servidor. O pool foi iniciado com disco de 1 TB, depois foi expandido com disco de 2 TB. Há mais de 1 TB de espaço livre, ou seja, todos os dados cabem facilmente na parte de 2 TB, mas atualmente estão alocados em discos de 1 TB.
Na realidade, esses discos são matrizes RAID1 de hardware (PERC) sobre par de 1Tb e par de 2Tb resp.
Eu quero substituir esses discos de 1 TB por 3 TB. A substituição "um por um" não é realmente uma opção. Em princípio, esse RAID físico pode substituir os discos um por um e, em seguida, aumentar a matriz para preencher os discos. No entanto, quero evitar esse caminho, porque ele deixa alguns períodos de tempo bastante longos em que a redundância de disco é perdida.
Eu quero literalmente mover todos os dados de 1 TB, removê-los e substituí-los por 3 TB. Tudo para ser feito em tempo real, com sistema em execução, com zero tempo de inatividade.
Com o LVM a operação tem que ser muito direta e fácil de entender:
- pvmove todos os dados alocados do disco físico de 1 TB (VD em termos de RAID)
- vgreduce para remover esse pv de vg e pvremove para remover metadados de pv
- remova um array de 1 TB usando megacli (PERC é renomeado LSI/Avago MegaRAID SAS)
- substituir discos fisicamente
- monte outra matriz novamente usando megacli
- faça um novo pv e adicione-o em vg
Este é o procedimento de rotina que eu costumava fazer. Cada passo é muito bem compreendido, em cada passo tenho total controle do que está acontecendo, sempre sei como proceder se algo der errado e assim por diante.
Como fazer o mesmo procedimento com segurança e conhecimento com o ZFS?
Se isso importa:
- o servidor é Dell PowerEdge R730
- o sistema operacional é o Proxmox VE 6.0, que é baseado no Debian 10.1. Ele foi instalado a partir da imagem ISO do PVE, ou seja, não foi convertido da instalação do Debian.
- o sistema não depende deste pool, pois roda a partir de um conjunto de SSDs montados em outro pool
- o pool hospeda alguns discos virtuais de VM que não exigem alto desempenho. No entanto, esses dados são valiosos, não posso tolerar se forem perdidos. Portanto, o procedimento deve ser claro e compreensível
- sistema é usado constantemente pelos usuários, mas eles tolerarão a perda de desempenho durante a migração de dados
Não pode ser feito exceto para pools espelhados.