Installa zfs su debian 9 stretch
Su Febbraio 18, 2021 da adminHo provato a installare zfs su debian 9.1, tuttavia sto riscontrando alcuni errori.
Il mio primo linstallazione era solo di zfs-dkms, tuttavia ho letto in rete che anche spl-dkms è richiesto per lesecuzione di zfs-dkms.
I miei passaggi erano cambiare il mio sources.list aggiungendo contrib non-free come segue:
/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
Fatto un classico aggiornamento di apt-get e poi ho provato a installare zfs con quanto segue:
apt-get install spl-dkms
e solo dopo
apt-get install zfs-dkms
Di conseguenza, ho questi errori:
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) ...
Leggendo journalctl -xe come suggerito ottengo:
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.
Cosa cè che non va qui? Mi sono perso qualcosaltro? In che modo il pacchetto zfs-linux è correlato allinstallazione di zfs?
Qual è il modo corretto per installare zfs in Debian 9?
Commenti
Risposta
La risposta effettiva di @cas è buona ma devono essere applicate alcune correzioni.
Quindi eseguiamo una nuova installazione di Debian 9 e assumendo che contrib non-free non sono abilitati.
Passaggio 0 – Abilita i repository contrib non-free
Ho utilizzato sed
per trovare e sostituire la parola main allinterno di /etc/apt/sources.list
sed -i "s/main/main contrib non-free/g" /etc/apt/sources.list apt-get update
Passaggio 1 – Installazione ZFS
Dallultima correzione spl-dkms
viene correttamente visto come zfs-dkms
de pendency quindi “viene richiamato automaticamente e non è necessario installarlo manualmente prima di zfs-dkms
. Il collegamento simbolico è necessario a causa di un bug allinterno della distribuzione zfs in Debian, che non “cerca il rm
binario nella posizione corretta.
apt -y install linux-headers-$(uname -r) ln -s /bin/rm /usr/bin/rm apt-get -y install zfs-dkms
Passaggio 2 – Riavvio di ZFS
A questo punto zfs-dkms è installato ma genera errori in journalctl -xe
; per avviare zfs correttamente usa:
/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
Passaggio 3 – DEVI CREARE ALMENO UNO ZPOOL
A questo punto ho scoperto che DEVI creare uno zpool prima di riavviare altrimenti zfs non caricherà i moduli corretti se non ci sono zpool. È “un tipo del meccanismo di salvataggio delle risorse (ma anche in questo caso verranno comunque generati errori allinterno di journalctl -xe
)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
“Non lo stiamo facendo perché i moduli ZFS contaminerebbero il kernel, se non ci sono zpool disponibili, non dovrebbero essere caricati.
Se ti perdi questa parte devi iniziare dal Passaggio 2
Ad esempio, utilizzando lesempio fornito da @cas, puoi creare questo zpool basato su file o crearne direttamente quelli basati su disco.
truncate -s 100M /root/z1 truncate -s 100M /root/z2 zpool create tank /root/z1 /root/z2 zpool scrub tank zpool status
quindi dopo un reboot
tutto funzionerà senza errori in journalctl -xe
Risposta
Per me leggere variazioni su Debian 9.4 – dopo le aggiunte ai sorgenti di 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
La montatura era NON sospiro presente – ha scoperto che esisteva un /var/jeff
con il contenuto – spostato quello di mezzo e ha fatto un reboot
…
Dopo il riavvio:
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
Evviva – tutto presente e protetto contro la decomposizione 🙂
Commenti
- +1 ma consigliamo vivamente di utilizzare
/dev/disk/by-id/?
anziché/dev/sd?
dispositivi. Utilizza i nomi per id durante la creazione del pool o correggili in un secondo momento conzpool export <pool>
seguito dazpool import -d /dev/disk/by-id/ <pool>
. Questi nomi, a differenza di / dev / sd *, persisteranno durante i riavvii. Inoltre, se disponi di una stampante per etichette, puoi stampare etichette con versioni brevi dei nomi dei dispositivi per id (di solito ‘ è una parte del numero di serie del nome che è un buon , breve, etichetta univoca) ed etichettare le unità per renderle più facili da identificare se devono essere sostituite. - Ummm – ma ZFS non si preoccupa degli alias del disco utilizzati durante la creazione – tutte le informazioni sono scritte a zfs-part9 sul disco – e questo è ciò che viene utilizzato per costruire larray.Non ‘ mi interessa davvero se ciò che era / dev / sdb cambia in qualcosaltro in futuro e controllo sempre con
lsblk -f
solo prima di eseguire il dicking con lhardware dellunità – per i nostri server di produzione lo strumento Dell hdd blink è utile per mettere in relazione lattuale alias del sistema operativo con lunità fisica 🙂 – Penso che / dev / disk / by-id sia più utile per altri sistemi di montaggio che don ‘ t hanno ‘ coerenza incorporata di ZFS, ad es. fstab. - lutilizzo di by-id ti fornirà nomi significativi / utili (identificando la marca, il modello e il numero di serie di ciascuna unità ‘) in
zpool
comestatus
elist
, che può essere facilmente copiato e incollato in qualsiasi zpool necessario offline / scollega / sostituire / etc comandi.sda
‘ non ti dice nulla di utile.ata-ST4000VN008-2DR166_ZDH35XXX
identifica esattamente il tipo di unità e il numero di serie. Puoi comunque ottenere i nomi di sviluppo brevi (correnti) se li desideri utilizzando lopzione-L
conzpool list
,zpool status
, ecc (nella mia esperienza, per lo più utile conzpool list -L -v
). - IME, i nomi significativi aiutano a ridurre lerrore umano. È ‘ facile da digitare in modo errato, ad esempio sdd come sdf. molto più difficile digitare in modo errato un nome per id.
- Lol – molte persone fanno lo stesso consiglio – personalmente trovo più facile ricordare e digitare sdc sde sdf e sdg. Acquistiamo dischi in batch e iniziano tutti con gli stessi 48 caratteri by-id e hanno solo suffissi di 2-4 cifre che differiscono. Le persone non ‘ digitano nomi per id – usano il completamento con tabulazione – è più probabile che porti a un oops IMHO. Trovo che differenziare una lettera in tre caratteri sia molto più semplice di 2-4 cifre in un nome di 52 caratteri. So che molte persone raccomandano anche lUUID. Dato che a ZFS ‘ non interessa, penso che mi atterrò a ciò che trovo più facile: a volte meno è meglio 🙂
Risposta
Ho appena creato una nuova VM stretch per testarlo. Installazione minima (solo ssh e strumenti di sistema standard), modifica sources.list per aggiungere contrib e non-free, quindi:
apt-get install spl-dkms zfs-dkms
Potresti anche volerlo manualmente installa zfsutils-linux
. Dovrebbe essere installato automaticamente quando installi zfs-dkms
ma le dipendenze possono variare per diversi rilasci Debian e per diverse versioni dei pacchetti Debian ZoL:
apt-get install zfsutils-linux
Sembra che “ci sia un bug nel file di unità systemd per zfs-share
. Si sta tentando di eseguire /usr/bin/rm
invece di /bin/rm
.
La soluzione rapida è eseguire ln -s /bin/rm /usr/bin
o in alternativa:
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 quindi riavvia i servizi zfs:
systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
NOTA: ho eseguito manualmente modprobe zfs
prima di riavviare uno dei servizi zfs. Non sono sicuro che lo faranno automaticamente o meno, quindi potrebbe essere necessario farlo anche tu.
A proposito, probabilmente vorrai anche apt-get install zfs-initramfs
, per garantire che zfs venga caricato durante initramfs.
Ho verificato che funzioni con:
# 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
Lo zpool è funzionante e / tank viene montato automaticamente dopo un riavvio.
Conclusione: funziona ora.
BTW, questa VM stretch utilizza uno zvol ZFS creato sul mio sid
sistema come disco. Ne ho fatto unistantanea subito dopo linstallazione iniziale, prima di installare spl-dkms e zfs-dkms in modo da poter tornare rapidamente e ricominciare se qualcosa di importante fosse andato storto.
Per prima cosa ho creato zvol con solo 1 GB e dovevo aumentarlo in un secondo momento per avere spazio sufficiente per build-essential, linux-headers-amd64 ecc:
# 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 -
setting compression=lz4
sul tank nella VM è probabilmente peggio che inutile – lo zvol ha già la compressione lz4 su di esso.
Commenti
- Ho provato a installalo su una nuova macchina virtuale ma ‘ riscontro ancora problemi immagino .. alcuni servizi non ‘ si avviano correttamente .. As posso vedere che lelenco dei bug di ZFS DKMS è pieno di ” può ‘ t installare ” segnalazioni di bug. Mi chiedo se sia normale che gli sviluppatori lasciano passare mesi dopo tante richieste di correzione di bug riproducibili solo con apt-get install zfs-dkms ..
- Nella parte in cui chiedi la directory cd intendevi: / etc / systemd / system /? perché / etc / systemd / service non esiste .. ho anche questo messaggio: ” Impossibile riavviare zfs-import-mount.service: Unit zfs-import-mount.service not trovato. ” e ” Impossibile riavviare zfs-import-share.service: unità zfs-import-share.servizio non trovato. ”
- Sembra che ho anche problemi con il servizio ZFS-ZED leggendo journalctl -xe: 11 agosto 23:03:23 debian zed [ 70734]: ZFS Event Daemon 0.6.5.9-5 (PID 70734) 11 agosto 23:03:23 debian zed [70734]: Impossibile inizializzare libzfs 11 agosto 23:03:23 debian systemd [1]: zfs-zed.service : Processo principale terminato, codice = uscito, stato = 1 / FAILURE 11 agosto 23:03:23 debian systemd [1]: zfs-zed.service: unità entrata in stato di errore. 11 agosto 23:03:23 debian systemd [1]: zfs-zed.service: non riuscito con risultato ‘ exit-code ‘.
- Le cose sono cambiate / migliorate con Debian 10? E se è così, dovrei pubblicare una domanda separata per Debian 10?
dkms status | grep zfs
?