A resposta real de @cas é boa, mas tem algumas correções a serem aplicadas.
Então, vamos fazer uma nova instalação do Debian 9 e assumir que os repositórios contrib non-free também não estão habilitados.
Passo 0 - Ativar os repositórios não-livres contrib
Eu usei sed
para encontrar e substituir a palavra main dentro de /etc/apt/sources.list
sed -i 's/main/main contrib non-free/g' /etc/apt/sources.list
apt-get update
Etapa 1 - Instalação do ZFS
Desde as últimas correções, spl-dkms
é visto corretamente como zfs-dkms
de dependência, por isso é recuperado automaticamente e não é necessário instalá-lo manualmente antes de zfs-dkms
. O link simbólico é necessário devido a um bug dentro da distribuição do zfs no Debian, que não procura por rm
binário na posição correta.
apt -y install linux-headers-$(uname -r)
ln -s /bin/rm /usr/bin/rm
apt-get -y install zfs-dkms
Etapa 2 - Reinicialização do ZFS
Neste ponto, o zfs-dkms está instalado, mas gera erros em journalctl -xe
; para iniciar o zfs use corretamente:
/sbin/modprobe zfs
systemctl restart zfs-import-cache
systemctl restart zfs-import-scan
systemctl restart zfs-mount
systemctl restart zfs-share
Passo 3 - VOCÊ DEVE CRIAR PELO MENOS UM ZPOOL
Neste ponto, descobri que você deve criar um zpool antes da reinicialização , caso contrário, o zfs não carregará os módulos apropriados se não houver zpools. É uma espécie de mecanismo de salvamento de recursos (mas, mesmo nesse caso, isso ainda lançará erros dentro de journalctl -xe
)
" We are not doing this because ZFS modules would taint the kernel, if there's no zpool available then it shouldn't be loaded. "
Se você perder esta parte, você deve começar do Passo 2
Por exemplo, usando o exemplo fornecido por @cas, você pode criar este zpool baseado em arquivo ou criar diretamente os baseados em disco.
truncate -s 100M /root/z1
truncate -s 100M /root/z2
zpool create tank /root/z1 /root/z2
zpool scrub tank
zpool status
depois de um reboot
, tudo funcionará sem erros em journalctl -xe