Como migrar um conjunto zfs com tempo de inatividade mínimo?

1

Eu tenho um pool ZFS RAID1 com 2 x 5TB espelhado e 2x unidades espelhadas de 1TB e quero substituir os dois dispositivos de 1TB por 4TB. Como zpool add é anulável [1], é necessário destruir o pool depois de recriá-lo no layout desejado.

Portanto

  • Eu zpool detach ed os dispositivos espelhados e criei um novo pool com eles.
  • Depois que os seguintes comandos falharam devido à sobreposição de pontos de montagem, eu os ex e reimportei com uma raiz alternativa usando zpool import -R /mnt/data1
  • Eu criei um instantâneo migrate1 para poder executar sudo zfs send -R data@migrate1 | sudo zfs receive -F data1 , que está atualmente em andamento.

Agora, gostaria de saber qual é o melhor procedimento após o zfs send pipe ser concluído, pois, no meu entender, preciso que o antigo pool data seja montado em uma raiz alternativa e o novo pool data1 sem um raiz alternativa após a reinicialização para poder excluir o pool antigo e disponibilizar seu dispositivo para anexá-lo ao novo. Talvez haja outro jeito.

Estou usando o ZFS 0.7.0-182_gc0daec32f8 e o SPL 0.7.0-20_g35a44fcb construídos a partir do código-fonte no Ubuntu 17.10 com o Linux 4.13.0-16-genérico.

eu verifiquei

Eu sei que isso é complicado e que não seria difícil manter os dispositivos de 1 TB dentro do pool, mas isso não faz parte da pergunta.

[1] Eu solicitei isso como um problema do ZFSOnLinux no link que fornece links para o plano / roadmap complexo por trás

    
por Karl Richter 26.11.2017 / 15:11

1 resposta

1

I have a RAID1 ZFS pool with 2x 5TB mirrored and 2x 1TB mirrored drives and want to replace the two 1TB devices with 4TB ones. Since zpool add is undoable[1], it's necessary to destory the pool after having it recreated in the desired layout.

Isso soa mais como espelhos listrados (2x2) do que o RAIDZ1 (pelo menos 3x1). De qualquer forma, você pode aumentar as duas configurações, removendo e substituindo um disco por vez. Espere até que cada resilver termine e, em seguida, substitua o próximo disco. Finalmente, após todos os discos terem sido substituídos, zpool offline do pool e, em seguida, zpool online -e para expandir para o novo tamanho (ou definir autoexpand=true antes da expansão):

    zpool online [-e] pool device...
         Brings the specified physical device online. This command is not
         applicable to spares.

         -e      Expand the device to use all available space. If the
                 device is part of a mirror or raidz then all devices must
                 be expanded before the new space will become available to
                 the pool.

Você deve primeiro reconectar os dispositivos desanexados no seu caso, porque a substituição só é possível quando há redundância suficiente.

Além disso, você pode definir e alterar os pontos de montagem na hora e pode destruir os conjuntos com pontos de montagem ativos (desde que não haja nenhuma E / S ativa neles). Se isso não funcionar, zpool export / zpool import faz a maior parte do tempo, assim como a reinicialização (se você puder permitir um, e este não é o pool raiz).

    
por 27.11.2017 / 09:31