Gostaria de mover os dados de um pool ativo para um novo pool, desativando o pool antigo e tornando o novo pool ativo em seu lugar, sem nenhum tempo de inatividade. Imagino que seja algo como:
- Criar novo pool
- Espelhar temporariamente o novo pool com o pool antigo enquanto estiver ativo
- Remova a piscina antiga do espelho deixando a nova piscina para trás
Existe um fluxo de trabalho padrão para isso?
SO do sistema: Linux, CentOS
"Old Pool": 5 unidades de 1 TB (stripe, zero redundância, 5 TB disponíveis)
"New Pool": 4 unidades de 2 TB (raid 5, redundância, 6 TB disponíveis)
Para maior clareza:
"Old Pool" contém dados.
"Old Pool" está rodando ao vivo em um servidor de arquivos.
"New Pool" não está ao vivo. Ainda.
Objetivo 1: Substitua "Piscina Antiga" por "Piscina Nova".
Objetivo 1a: Tornar o novo pool ativo.
Objetivo 1b: "New Pool" contém dados originalmente em "Old Pool".
Objetivo 2: Retirar "Old Pool".
Requisito: tempo de inatividade zero.
(Atualizada.)
O que você deseja não é possível porque os vdevs não podem ser removidos dos pools que contêm RAIDZ vdevs . Seria possível se você esquecesse o RAIDZ, que é uma escolha melhor de qualquer maneira.
Na página de manual do ZFS:
Portanto, se você realmente deseja o RAIDZ, não pode alcançar sua ideia de tempo de inatividade zero. Você precisa criar um novo pool, usar
zfs send
ezfs receive
para copiar os dados e depois alternar os pools.Se você não usar o RAIDZ, basta adicionar os novos dispositivos, espelhados ou não, ao pool existente e remover os dispositivos antigos, resultando em nenhum tempo de inatividade.
Observe, no entanto, que você só pode remover um dispositivo/vdev por vez. A remoção de dispositivos pode ser muito lenta se o pool estiver em uso. O uso da piscina também pode ser terrivelmente lento durante a remoção de dispositivos.