Instale o zfs no debian 9 stretch
On Fevereiro 18, 2021 by adminTentei instalar o zfs no debian 9.1, mas estou tendo alguns erros.
Meu primeiro a instalação era apenas do zfs-dkms, entretanto eu li na rede que também o spl-dkms é necessário para o zfs-dkms rodar.
Minhas etapas foram mudar meu sources.list adicionando o contrib non-free da seguinte forma:
/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
Feito uma atualização clássica do apt-get e, em seguida, tente instalar o zfs com o seguinte:
apt-get install spl-dkms
e somente depois de
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, recebo:
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? Eu perdi algo mais? Como o pacote zfs-linux está relacionado à instalação do zfs?
Qual é a maneira correta de instalar o zfs no debian 9?
Comentários
Resposta
A resposta real por @cas é boa, mas há algumas correções a serem aplicadas.
Então, vamos fazer uma nova instalação do Debian 9 e assumindo que repositórios contrib non-free também não estão habilitados.
Etapa 0 – Habilite os repositórios contrib non-free
Usei sed
para encontrar e substituir a palavra principal 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 pendência para que seja recuperado automaticamente e não seja necessário instalá-lo manualmente antes de zfs-dkms
. O link simbólico é necessário devido a um bug dentro da distribuição 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 apresenta erros em journalctl -xe
; para iniciar o zfs corretamente, use:
/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
Etapa 3 – VOCÊ DEVE CRIAR PELO MENOS UM ZPOOL
Neste ponto, descobri que VOCÊ deve criar um zpool antes de reiniciar caso contrário, o zfs não carregará os módulos apropriados se não houver zpools. É uma classificação do mecanismo de economia de recursos (mas mesmo nesse caso, isso ainda gerará erros dentro de journalctl -xe
)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
“Não estamos fazendo isso porque os módulos ZFS contaminariam o kernel, se não houver zpool disponível, ele não deve ser carregado. / em>
Se você perder esta parte, deve começar a partir da Etapa 2
Por exemplo, usando o exemplo fornecido por @cas, você pode criar este zpool baseado em arquivo ou criar diretamente seus 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
e depois de reboot
tudo funcionará sem erros em journalctl -xe
Resposta
Pequenas variações para mim no Debian 9.4 – após as adições de fontes Apt:
apt-get install linux-headers-amd64 # not tied to specific kernel version apt-get install zfs-dkms zfsutils-linux # my apt recommends is off lsblk # double-check which disks to pool zpool create -f jeff -o ashift=12 -o autoexpand=on -o autoreplace=on mirror sdb sdd zfs set mountpoint=/var/jeff jeff zfs set compression=lz4 jeff zfs create jeff/blog zfs create jeff/docs zfs create jeff/pics zfs set compression=off jeff/pics df -h
A montagem foi NÃO suspiro presente – descobriu que havia um /var/jeff
com conteúdo – tirou isso do caminho e fez um reboot
…
Após a reinicialização:
df -htzfs Filesystem Size Used Avail Use% Mounted on jeff 849G 128K 849G 1% /var/jeff jeff/blog 850G 128K 849G 1% /var/jeff/blog jeff/docs 856G 128K 849G 1% /var/jeff/docs jeff/pics 850G 128K 849G 1% /var/jeff/pics
Hooray – todos presentes e protegidos contra bit-rot 🙂
Comentários
- +1, mas recomendamos o uso de dispositivos
/dev/disk/by-id/?
em vez de/dev/sd?
. Use os nomes por id ao criar o pool ou corrija mais tarde comzpool export <pool>
seguido porzpool import -d /dev/disk/by-id/ <pool>
. Esses nomes, ao contrário de / dev / sd *, IRÃO persistir nas reinicializações. Além disso, se você tiver uma impressora de etiquetas, pode imprimir etiquetas com versões curtas dos nomes de dispositivos por id (há ‘ s geralmente uma parte do número de série do nome que faz uma boa , rótulo curto e exclusivo) e rotular as unidades para torná-las fáceis de identificar se precisarem ser substituídas. - Ummm – mas o ZFS não se preocupa com os aliases de disco usados durante a criação – todas as informações são gravadas para zfs-part9 no disco – e é isso que é usado para construir o array.Eu não ‘ realmente não me importo se o que foi / dev / sdb muda para outra coisa no futuro, e sempre verifico com
lsblk -f
apenas antes de discutir com o hardware da unidade – para nossos servidores de produção, a ferramenta Dell hdd blink é útil para relacionar o os-alias atual com a unidade física 🙂 – Acho que / dev / disk / by-id é mais útil para outros sistemas de montagem que não ‘ t ZFS ‘ s construído com consistência – por exemplo fstab. - o uso de by-id fornecerá nomes significativos / úteis (identificando cada unidade ‘ s marca, modelo e número de série) em
zpool
comando comostatus
elist
, que pode ser facilmente copiado e colado em qualquer zpool offline / desanexar necessário Comandos / replace / etc.sda
não ‘ não diz nada útil.ata-ST4000VN008-2DR166_ZDH35XXX
identifica exatamente que tipo de unidade é e seu número de série. Você ainda pode obter os nomes de dev (atuais) curtos se quiser usando a opção-L
comzpool list
,zpool status
, etc (na minha experiência, útil principalmente comzpool list -L -v
). - IME, os nomes significativos ajudam a reduzir o erro humano. É ‘ fácil digitar incorretamente, por exemplo, sdd como sdf. muito mais difícil digitar incorretamente um nome de by-id.
- Lol – muitas pessoas fazem a mesma recomendação – eu pessoalmente acho mais fácil de lembrar e digitar sdc sde sdf e sdg. Compramos discos em lotes e todos eles começam com os mesmos 48 caracteres por id e têm apenas sufixos de 2 a 4 dígitos que diferem. As pessoas não ‘ t datilografam nomes por id – elas usam o preenchimento com tab – mais provavelmente levem a um ops IMHO. Acho que diferenciar uma letra em um nome de três caracteres é muito mais fácil do que de 2 a 4 dígitos em um nome de 52 caracteres. Eu sei que muitas pessoas também recomendam UUID. Como o ZFS não ‘ se importa, acho que farei o que acho mais fácil – às vezes menos é mais 🙂
Resposta
Acabei de criar uma nova VM de extensão para testar isso. Instalação mínima (apenas ssh e ferramentas padrão do sistema), edite sources.list para adicionar contrib e non-free, então:
apt-get install spl-dkms zfs-dkms
Você também pode querer manualmente instale zfsutils-linux
. Ele deve ser instalado automaticamente quando você instala zfs-dkms
mas as dependências podem variar para diferentes lançamentos Debian e para diferentes versões dos pacotes Debian ZoL:
apt-get install zfsutils-linux
Parece que há um bug no arquivo de unidade do systemd para zfs-share
. Ele está tentando executar /usr/bin/rm
em vez de /bin/rm
.
A solução rápida é executar ln -s /bin/rm /usr/bin
ou, alternativamente:
cd /etc/systemd/system cp -a /lib/systemd/system/zfs-share.service . edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
e reinicie os serviços zfs:
systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
NOTA: Eu 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.
A propósito, você provavelmente deseja apt-get install zfs-initramfs
também , para garantir que o zfs seja carregado durante o initramfs.
Testei se isso funciona com:
# truncate -s 100M /root/z1 # truncate -s 100M /root/z2 # zpool create tank mirror /root/z1 /root/z2 # zfs set compression=lz4 tank # rsync -ax /etc /tank/ # du -sch /etc /tank/etc/ 3.5M /etc 825K /tank/etc/ 4.3M total # zpool scrub tank # zpool status pool: tank state: ONLINE scan: scrub repaired 0 in 0h0m with 0 errors on Thu Aug 3 19:28:21 2017 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 /root/z1 ONLINE 0 0 0 /root/z2 ONLINE 0 0 0 errors: No known data errors
O zpool é trabalhando e / tank é montado automaticamente após uma reinicialização.
Conclusão: ele funciona agora.
A propósito, esta VM de extensão usa um ZFS zvol criado em meu sid
sistema como seu disco. Eu fiz um instantâneo dele imediatamente após a instalação inicial, antes de instalar spl-dkms e zfs-dkms para que eu pudesse reverter rapidamente e começar novamente se algo importante desse errado.
Eu fiz o zvol com apenas 1 GB e precisava aumentá-lo mais tarde para ter espaço suficiente para build-essential, linux-headers-amd64 etc:
# zfs list -r -t all export/volumes/stretch NAME USED AVAIL REFER MOUNTPOINT export/volumes/stretch 6.25G 834G 1.77G - export/volumes/stretch@2017-08-03-18:31:04 279M - 1.09G -
configuração compression=lz4
no tanque na VM é provavelmente pior do que inútil – o zvol já tem compactação lz4 nele.
Comentários
- Eu tentei instalá-lo em uma nova VM, mas eu ‘ ainda estou tendo problemas, eu acho .. alguns serviços não ‘ estão iniciando corretamente .. Como agora posso ver que a lista de bugs do ZFS DKMS está cheia de ” pode ‘ t instalar ” relatórios de bugs. Eu me pergunto se é normal que os desenvolvedores deixem passar meses após tantos pedidos de correção de bugs reproduzíveis apenas com apt-get install zfs-dkms ..
- Na parte onde você pede o diretório do cd, você quis dizer: / etc / systemd / system /? porque / etc / systemd / service não existe .. também tenho esta mensagem: ” Falha ao reiniciar zfs-import-mount.service: Unit zfs-import-mount.service not encontrado. ” e ” Falha ao reiniciar zfs-import-share.service: Unidade zfs-import-share.serviço não encontrado. ”
- Parece que também tenho problemas com o serviço ZFS-ZED lendo journalctl -xe: 11 de agosto 23:03:23 debian zed [ 70734]: ZFS Event Daemon 0.6.5.9-5 (PID 70734) 11 de agosto 23:03:23 debian zed [70734]: Falha ao inicializar libzfs 11 de agosto 23:03:23 debian systemd [1]: zfs-zed.service : Processo principal encerrado, código = encerrado, status = 1 / FALHA 11 de agosto 23:03:23 debian systemd [1]: zfs-zed.service: Unidade entrou em estado de falha. 11 de agosto 23:03:23 debian systemd [1]: zfs-zed.service: Falha com o resultado ‘ código de saída ‘.
- As coisas mudaram / melhoraram com o Debian 10? E se sim, devo postar uma pergunta separada para o Debian 10?
dkms status | grep zfs
?