Aguarde antes de importar zpool no boot do Ubuntu

4

Instalei o Ubuntu 18.04 em um Dell PowerEdge R720xd usando o ZFS. Existem duas unidades de inicialização de 1TB em uma configuração de mirror do ZFS. Eu segui as instruções no ZFS no Linux Wiki .

(Nota: Meu sistema está usando um HBA (Host-bus Adapter) LSI LSI00244 (9201-16i) em vez da placa RAID onboard, já que o ZFS e esta placa RAID não se dão bem.)

Ao inicializar o Ubuntu, leva cerca de dez segundos para as unidades serem enumeradas pelo sistema (existem 14 unidades - duas para o sistema operacional e 12 para armazenamento de dados que serão configuradas em outros zpools posteriormente). No entanto, o processo de inicialização tenta importar o pool de inicialização antes que as unidades tenham sido enumeradas.

Uma mensagem de erro do BusyBox pisca na tela e basicamente diz:

The pool failed to import.

Manually import the pool in this BusyBox shell and then type exit to continue the boot process.

Se eu esperar alguns segundos após essa mensagem, vejo que as 14 unidades são listadas.

Eu digito zpool import rpool no prompt do BusyBox, que funciona (confirmado com zpool list ) e, em seguida, exit para continuar o processo de inicialização. (Isso leva ao meu próximo problema, uma falha no Kernel, mas essa é uma questão separada.)

Eu tentei adicionar rootdelay=15 às opções de inicialização, mas isso parece não funcionar, já que parece querer executar esse atraso após a importação do pool do ZFS.

Como posso fazer com que o processo de inicialização aguarde a exibição dos dispositivos antes que ele tente importar o pool?

    
por Moshe Katz 04.06.2018 / 22:36

1 resposta

2

Eu finalmente encontrei isso em /etc/default/zfs :

# Wait for this many seconds in the initrd mountroot?
# This delays startup and should be '0' on most systems. This might help on
# systems which have their ZFS root on a USB disk that takes just a little
# longer to be available
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_POST_MODPROBE_SLEEP='0'

Veja como configurá-lo.

  1. Inicialize a partir de um Live CD do Ubuntu (ou qualquer outra mídia de recuperação)
  2. Importe o pool para /mnt usando zpool import rpool -R /mnt
  3. Vincule os sistemas de arquivos necessários mount --rbind /dev /mnt/dev; mount --rbind /proc /mnt/proc; mount --rbind /sys /mnt/sys
  4. Chroot em /mnt : chroot /mnt /bin/bash --login
  5. Edite /etc/default/zfs para alterar o valor acima de 0 para 15
  6. Executar update-initramfs e update-grub
  7. Saia do ambiente do Chroot e reinicie
por 05.06.2018 / 04:03