No Gentoo, o ZFS pára de funcionar após a atualização 0.6.5

4

Acabei de atualizar meu sistema Gentoo, atualizando meu mundo, incluindo o ZFS. Tudo menos o kernel. Eu pensei em fazer uma reinicialização primeiro e depois criar um novo kernel. Atualmente, ele está rodando no kernel 3.17.8-gentoo-r1 .

Meu kernel é suportado pelo ZFS. Além disso, no passado, consegui fazer uma atualização do ZFS 0.6.2 para 0.6.3. Hoje, fui do 0.6.3 para 0.6.5.4 .

Como tudo, exceto o / boot, está no ZFS, não consigo mais inicializar e ficar preso em uma meia-vida. Nenhum pânico no kernel, mas sistemas de arquivos vazios. Sempre que eu tento qualquer operação zfs / zpool, recebo um erro:

# zpool status
internal error: Success
Aborted

Por mais divertido que seja essa declaração de sucesso, estou à deriva.

Chamar pelo nome gera um erro diferente:

# zpool status system
zpool: libzfs_status.c:201: Assertion 'nvlist_lookup_uint64(config, ZPOOL_CONFIG_VERSION, &version) == 0' failed.
Aborted

A princípio, lembrei-me de que o ZFS verifica a versão do kernel para se compilar com esse kernel. Além disso, o ZFS é um módulo. Então eu já fiz um make modules e make modules_install . Preciso reconstruir meu kernel e initramfs? O segundo é chato, já que o genkernel tem um bug. Mas isso pode ser feito.

Eu sou atualmente chrootado no sistema (com um ZFS montado) usando o CD de resgate do ZEL do Funtoo. Para sua informação, os mesmos erros acontecem no ambiente chrooted. O ambiente 'host' não tem problemas com os volumes.

Eu continuarei procurando por respostas. Eu queria, no entanto, fazer a pergunta neste momento, já que você pode reduzir minha procura de tempo. O procedimento / pedido exato para uma atualização do ZFS não foi exatamente documentado muito bem.

PS Ele está sendo executado no SystemD, se isso for importante. Eu não acredito que seria.

    
por Mark 31.01.2016 / 12:15

1 resposta

3

Bem, foi de fato a parte que eu não esperava. Tendo atualizado todos os módulos, havia apenas um local em que eles ainda não haviam sido atualizados. Assim que atualizei o arquivo initrd, ela inicializou bem.

Então, o processo seria:

  1. (Opcional) Sistema de arquivos raiz de instantâneo.
  2. Implantar atualizações do ZFS.
  3. Se você usar um initramfs, atualize / recrie-o para obter os novos módulos.
  4. Recarregue o módulo do kernel. Se o seu root-fs for ZFS, isso significa que você reinicia. Se não for, a reinicialização ainda é a mais simples.

Agora, se você também tiver uma atualização de kernel, sugiro fazer isso depois de atualizar o ZFS. Isso significa que você está fazendo certas coisas duas vezes, mas, para mim, é melhor do que imaginar se era uma nova opção.

Quando você atualizar o kernel, depois de gerar a imagem do kernel, mas antes de gerar o arquivo initrd, faça um emerge -va @module-rebuild , que cria os módulos para o novo kernel. Módulos que serão guardados no seu arquivo initrd.

Então é isso. Eu só queria que houvesse documentação lá fora ...

Durante o processo eu também descobri que o Genkernel-Next não gosta quando você comprime os módulos, então eu tive que desativar esse recurso. E comprimir o kernel com LZ4 funciona bem, mas assim que eu faço o mesmo com o InitRD, ela entra em pânico.

Então o Genkernel criou 12 arquivos InitRD diferentes que eu tive que abrir manualmente para mudar uma única linha ou não funcionaria. Mas isso funciona agora. Correndo em 4.1.15. E esses aumentos de desempenho do ZFS são perceptíveis. Vou deixar isso funcionar por um tempo antes de remover todo o antigo.

Agora, se alguém puder me avisar se eu puder atualizar os recursos do pool sem se tornar não inicializável, agradecemos.

    
por 31.01.2016 / 20:14