Tentei instalar o zfs no debian 9.1, mas estou com alguns erros.
Minha primeira instalação foi apenas do zfs-dkms, mas li na net que também o spl-dkms é necessário para que o zfs-dkms seja executado.
Minhas etapas foram alterar meu sources.list adicionando o contrib não-livre da seguinte maneira:
/etc/apt/sources.list
deb http://ftp.nl.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.nl.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free
# stretch-updates, previously known as 'volatile'
deb http://ftp.nl.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.nl.debian.org/debian/ stretch-updates main contrib non-free
Faça uma atualização clássica do apt-get e tente instalar o zfs com o seguinte:
apt-get install spl-dkms
e somente depois
apt-get install zfs-dkms
Como resultado, tenho estes erros:
root@debian:/etc/apt# apt-get install zfs-dkms
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libnvpair1linux libuutil1linux libzfs2linux libzpool2linux zfs-zed zfsutils-linux
...
DKMS: install completed.
Setting up libzpool2linux (0.6.5.9-5) ...
Setting up libzfs2linux (0.6.5.9-5) ...
Setting up zfsutils-linux (0.6.5.9-5) ...
Created symlink /etc/systemd/system/zfs-mount.service.wants/zfs-import-cache.service â /lib/systemd/system/zfs-import-cac
Created symlink /etc/systemd/system/zfs.target.wants/zfs-import-cache.service â /lib/systemd/system/zfs-import-cache.serv
Created symlink /etc/systemd/system/zfs-share.service.wants/zfs-mount.service â /lib/systemd/system/zfs-mount.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-mount.service â /lib/systemd/system/zfs-mount.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-share.service â /lib/systemd/system/zfs-share.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zfs.target â /lib/systemd/system/zfs.target.
zfs-import-scan.service is a disabled or a static unit, not starting it.
Job for zfs-mount.service failed because the control process exited with error code.
See "systemctl status zfs-mount.service" and "journalctl -xe" for details.
zfs-mount.service couldn't start.
Job for zfs-share.service failed because the control process exited with error code.
See "systemctl status zfs-share.service" and "journalctl -xe" for details.
zfs-share.service couldn't start.
Setting up zfs-zed (0.6.5.9-5) ...
Created symlink /etc/systemd/system/zed.service â /lib/systemd/system/zfs-zed.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-zed.service â /lib/systemd/system/zfs-zed.service.
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Lendo journalctl -xe como sugerido:
root@debian:/etc/apt# journalctl -xe
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Main process exited, code=exited, status=1/FAILURE
Aug 02 23:13:13 debian systemd[1]: Failed to start ZFS file system shares.
-- Subject: Unit zfs-share.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-share.service has failed.
--
-- The result is failed.
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Unit entered failed state.
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Failed with result 'exit-code'.
Aug 02 23:13:13 debian systemd[1]: Starting Mount ZFS filesystems...
-- Subject: Unit zfs-mount.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-mount.service has begun starting up.
Aug 02 23:13:13 debian zfs[81481]: The ZFS modules are not loaded.
Aug 02 23:13:13 debian zfs[81481]: Try running '/sbin/modprobe zfs' as root to load them.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Main process exited, code=exited, status=1/FAILURE
Aug 02 23:13:13 debian systemd[1]: Failed to start Mount ZFS filesystems.
-- Subject: Unit zfs-mount.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-mount.service has failed.
--
-- The result is failed.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Unit entered failed state.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Failed with result 'exit-code'.
Aug 02 23:13:13 debian systemd[1]: Starting ZFS file system shares...
-- Subject: Unit zfs-share.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-share.service has begun starting up.
Aug 02 23:13:13 debian systemd[81483]: zfs-share.service: Failed at step EXEC spawning /usr/bin/rm: No such file or direc
-- Subject: Process /usr/bin/rm could not be executed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- The process /usr/bin/rm could not be executed and failed.
--
-- The error number returned by this process is 2.
O que há de errado aqui? Perdi outra coisa? Como o pacote zfs-linux está relacionado à instalação do zfs?
Qual é a maneira correta de instalar o zfs no debian 9?
dkms status | grep zfs
?Respostas:
A resposta real por @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 não-livres também não estão habilitados.
Etapa 0 - Habilite os repositórios contrib não-livres
Eu costumava
sed
encontrar e substituir a palavra principal por dentro/etc/apt/sources.list
Etapa 1 - Instalação do ZFS
Como as últimas correções
spl-dkms
são vistas corretamente comozfs-dkms
dependência, elas são recuperadas automaticamente e não é necessário instalá-las manualmente anteszfs-dkms
. O link simbólico é necessário devido a um bug dentro da distribuição zfs no Debian, que não procurarm
binário na posição correta.Etapa 2 - Reinicialização do ZFS
Neste ponto, o zfs-dkms está instalado, mas gera erros
journalctl -xe
; Para iniciar o zfs corretamente, use:Etapa 3 - VOCÊ DEVE CRIAR PELO MENOS UM ZPOOL
Nesse ponto, descobri que você deve criar um zpool antes da reinicialização, caso contrário, o zfs não carregará os módulos adequados se não houver zpools. É uma espécie de mecanismo de economia de recursos (mas, mesmo assim, isso ainda gera erros dentro
journalctl -xe
)https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
Se você perder esta parte, terá que começar a partir da Etapa 2
Por exemplo, usando o exemplo fornecido pelo @cas, você pode criar esse zpool baseado em arquivo ou criar diretamente os baseados em disco.
depois de
reboot
tudo tudo funcionará sem erros nojournalctl -xe
fonte
Pequenas variações para mim no Debian 9.4 - após as adições das fontes do Apt:
A montagem NÃO estava presente suspiro - descobriu que havia um
/var/jeff
conteúdo existente - moveu isso para fora do caminho e fez umareboot
...Após a reinicialização:
Hooray - todos os presentes e protegidos contra a podridão de bits :)
fonte
/dev/disk/by-id/?
de/dev/sd?
dispositivos. Use os nomes dos by-ids ao criar o pool ou corrija posteriormente comzpool export <pool>
seguido dezpool import -d /dev/disk/by-id/ <pool>
. Esses nomes, ao contrário de / dev / sd *, persistirão durante as reinicializações. Além disso, se você tiver uma impressora de etiquetas, poderá imprimir etiquetas com versões curtas dos nomes dos dispositivos com ID (geralmente, há uma parte do número de série do nome que cria uma etiqueta boa, curta e exclusiva) e rotular as unidades para fazê-las fácil identificar se eles precisam ser substituídos.lsblk -f
antes de mexer no hardware da unidade - para nossos servidores de produção, a ferramenta piscar em hdd da Dell é útil para relacionar os atuais alias para a unidade física :) - Eu acho que o / dev / disk / by-id é mais útil para outros sistemas de montagem que não têm a consistência integrada do ZFS - por exemplo, fstab.zpool
comandos comostatus
elist
, que podem ser facilmente copiados e colados em qualquer comando zpool offline / desconect / replace / etc necessário.sda
não diz nada de útil.ata-ST4000VN008-2DR166_ZDH35XXX
identifica exatamente que tipo de unidade é e seu número de série. Você ainda pode obter os nomes (correntes) dev curtas se você quiser-los usando a-L
opção comzpool list
,zpool status
, etc (em minha experiência, principalmente útil comzpool list -L -v
).Acabei de criar uma nova VM trecho para testar isso. Instalação mínima (apenas ssh e ferramentas padrão do sistema), edite o sources.list para adicionar contrib e não-livre, depois:
Você também pode querer instalar manualmente
zfsutils-linux
. Ele deve ser instalado automaticamente quando você instala,zfs-dkms
mas as dependências podem variar para diferentes versões do Debian e para diferentes versões dos pacotes Debian ZoL:Parece que há um erro no arquivo da unidade systemd
zfs-share
. Está tentando rodar em/usr/bin/rm
vez de/bin/rm
.A solução rápida é executar
ln -s /bin/rm /usr/bin
ou, alternativamente:e, em seguida, reinicie os serviços zfs:
NOTA: Executei manualmente
modprobe zfs
antes de reiniciar qualquer um dos serviços zfs. Não tenho certeza se eles farão isso automaticamente ou não, então você pode precisar fazer isso também.BTW, você provavelmente
apt-get install zfs-initramfs
também deseja garantir que o zfs seja carregado durante o initramfs.Eu testei que isso funciona com:
O zpool está funcionando e / tank é montado automaticamente após uma reinicialização.
Conclusão: funciona agora.
BTW, essa VM estendida usa um ZFS zvol criado no meu
sid
sistema principal como disco. Fiz uma captura instantânea imediatamente após a instalação inicial, antes de instalar spl-dkms e zfs-dkms, para que eu pudesse rapidamente reverter e iniciar novamente se algo importante desse errado.Primeiro criei o zvol com apenas 1 GB e precisava aumentá-lo mais tarde para ter espaço suficiente para o build-essential, linux-headers-amd64 etc:
a configuração
compression=lz4
no tanque na VM provavelmente é pior do que inútil - o zvol já tem compressão lz4.fonte