Installez zfs sur debian 9 stretch
On février 18, 2021 by adminJai essayé dinstaller zfs sur debian 9.1, mais je rencontre quelques erreurs.
Ma première linstallation nétait que de zfs-dkms mais jai lu sur le net que le spl-dkms est également requis pour que zfs-dkms sexécute.
Mes étapes consistaient à changer mon sources.list ajout du contrib non-free comme suit:
/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
Une mise à jour classique dapt-get et ensuite essayé dinstaller zfs avec ce qui suit:
apt-get install spl-dkms
et seulement après
apt-get install zfs-dkms
En conséquence, jai ces erreurs:
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) ...
En lisant journalctl -xe comme suggéré, jobtiens:
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.
Quel est le problème ici? Jai raté autre chose? Quel est le lien entre le package zfs-linux et linstallation de zfs?
Quelle est la bonne façon dinstaller zfs dans debian 9?
Commentaires
Answer
La réponse réelle de @cas est bonne mais il y a quelques corrections à appliquer.
Prenons donc une nouvelle installation de Debian 9 et en supposant que Les référentiels contrib non-free ne sont pas activés non plus.
Étape 0 – Activez les référentiels contrib non-free
Jai utilisé sed
pour trouver et remplacer le mot main à lintérieur de /etc/apt/sources.list
sed -i "s/main/main contrib non-free/g" /etc/apt/sources.list apt-get update
Étape 1 – Installation de ZFS
Depuis les dernières corrections, spl-dkms
est correctement considéré comme zfs-dkms
de pendency donc il est rappelé automatiquement et il nest pas nécessaire de linstaller manuellement avant zfs-dkms
. Le lien symbolique est nécessaire en raison dun bogue dans la distribution zfs de Debian, qui ne recherche pas le binaire rm
à la bonne position.
apt -y install linux-headers-$(uname -r) ln -s /bin/rm /usr/bin/rm apt-get -y install zfs-dkms
Étape 2 – Redémarrage ZFS
À ce stade, zfs-dkms est installé mais il génère des erreurs dans journalctl -xe
; Pour démarrer correctement zfs, utilisez:
/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
Étape 3 – VOUS DEVEZ CRÉER AU MOINS UN ZPOOL
À ce stade, jai découvert que VOUS devez créer un zpool avant de redémarrer sinon zfs ne chargera pas les modules appropriés sil ny a pas de zpools. Cest un tri du mécanisme de sauvegarde des ressources (mais même dans ce cas, cela provoquera toujours des erreurs dans journalctl -xe
)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
« Nous ne le faisons pas car les modules ZFS entacheraient le noyau, sil ny a pas de zpool disponible, il ne devrait pas être chargé.
Si vous manquez cette partie, vous devez commencer par Étape 2
Par exemple, en utilisant lexemple fourni par @cas, vous pouvez créer ce zpool basé sur un fichier ou directement sur votre disque.
truncate -s 100M /root/z1 truncate -s 100M /root/z2 zpool create tank /root/z1 /root/z2 zpool scrub tank zpool status
puis après reboot
tout fonctionnera sans erreur dans journalctl -xe
Réponse
De légères variations pour moi sur Debian 9.4 – après les ajouts aux sources 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
Le montage était PAS soupir présent – découvert quil y avait un /var/jeff
avec le contenu – la déplacé et a fait un reboot
…
Après le redémarrage:
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
Hourra – tous présents et protégés contre la pourriture des bits 🙂
Commentaires
- +1 mais recommande vivement dutiliser des appareils
/dev/disk/by-id/?
plutôt que/dev/sd?
. Utilisez les noms par identifiant lors de la création du pool ou corrigez plus tard aveczpool export <pool>
suivi dezpool import -d /dev/disk/by-id/ <pool>
. Ces noms, contrairement à / dev / sd *, persisteront lors des redémarrages. De plus, si vous avez une imprimante d’étiquettes, vous pouvez imprimer des étiquettes avec des versions abrégées des noms de périphérique by-id (il y a généralement ‘ une partie du numéro de série du nom qui fait un bon , étiquette courte et unique) et nommez les lecteurs pour les rendre faciles à identifier sils doivent être remplacés. - Hum – mais ZFS ne se soucie pas des alias de disque utilisés lors de la création – toutes les informations sont écrites à zfs-part9 sur le disque – et cest ce qui est utilisé pour construire le tableau.Je ‘ ne me soucie pas vraiment de savoir si ce qui était / dev / sdb change à autre chose dans le futur, et je vérifie toujours avec
lsblk -f
juste avant dutiliser le matériel de lecteur – pour nos serveurs de production, loutil Dell hdd blink est utile pour relier lalias os actuel à lunité physique 🙂 – Je pense que le / dev / disk / by-id est plus utile pour dautres systèmes de montage qui don ‘ t avoir une cohérence intégrée de ZFS ‘ – par exemple fstab. - lutilisation de by-id vous donnera des noms significatifs / utiles (identifiant la marque, le modèle et le numéro de série de chaque lecteur ‘) dans
zpool
commande commestatus
etlist
, qui peut être facilement copiée-collée dans tout zpool nécessaire hors connexion / détachement / remplace les commandes / etc.sda
ne ‘ ne vous dit rien dutile.ata-ST4000VN008-2DR166_ZDH35XXX
identifie exactement de quel type de lecteur il sagit et son numéro de série. Vous pouvez toujours obtenir les noms de développement courts (actuels) si vous le souhaitez en utilisant loption-L
aveczpool list
,zpool status
, etc (daprès mon expérience, surtout utile aveczpool list -L -v
). - IME, les noms significatifs aident à réduire lerreur humaine. Il est ‘ facile à mal saisir, par exemple, sdd comme sdf. beaucoup plus difficile de mal saisir un nom par id.
- Lol – beaucoup de gens font la même recommandation – personnellement, je trouve quil est plus facile de me souvenir et de taper sdc sde sdf et sdg. Nous achetons des disques par lots et ils commencent tous avec les mêmes 48 caractères par identifiant et ont juste des suffixes de 2 à 4 chiffres qui diffèrent. Les gens ne saisissent pas ‘ des noms par identifiant – ils utilisent la complétion par tabulation – plus susceptibles de conduire à un oups IMHO. Je trouve la différenciation dune lettre dans un trois caractères beaucoup plus facile que 2-4 chiffres dans un nom de 52 caractères. Je sais que beaucoup de gens recommandent également UUID. Comme ZFS ne ‘ sen soucie pas, je pense que je vais men tenir à ce que je trouve plus facile – moins cest parfois plus 🙂
Réponse
Je viens de créer une toute nouvelle VM extensible pour tester cela. Installation minimale (juste ssh et outils système standard), éditez sources.list pour ajouter contrib et non-free, puis:
apt-get install spl-dkms zfs-dkms
Vous pouvez également souhaiter manuellement installez zfsutils-linux
. Il doit être installé automatiquement lorsque vous installez zfs-dkms
mais les dépendances peuvent varier pour différentes versions de Debian et pour différentes versions des packages Debian ZoL:
apt-get install zfsutils-linux
Il semble quil y ait « un bogue dans le fichier dunité systemd pour zfs-share
. Il » essaie dexécuter /usr/bin/rm
au lieu de /bin/rm
.
La solution rapide consiste à exécuter ln -s /bin/rm /usr/bin
, ou encore:
cd /etc/systemd/system cp -a /lib/systemd/system/zfs-share.service . edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
puis redémarrez les services zfs:
systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
REMARQUE: jai exécuté manuellement modprobe zfs
avant de redémarrer lun des services zfs. Je ne sais pas sils le feront automatiquement ou non, donc vous devrez peut-être le faire aussi.
BTW, vous voudrez probablement apt-get install zfs-initramfs
aussi , pour massurer que zfs est chargé pendant les initramfs.
Jai testé que cela fonctionne avec:
# 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
Le zpool est working et / tank est automatiquement monté après un redémarrage.
Conclusion: cela fonctionne maintenant.
BTW, cette VM stretch utilise un zvol ZFS créé sur mon principal sid
comme disque. Jen ai fait un instantané immédiatement après linstallation initiale, avant dinstaller spl-dkms et zfs-dkms pour que je puisse rapidement revenir en arrière et recommencer si quelque chose de grave se passait mal.
Jai dabord créé le zvol avec seulement 1 Go et il fallait laugmenter plus tard pour avoir suffisamment despace pour 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 -
setting compression=lz4
sur tank dans la VM est probablement pire quinutile – le zvol a déjà une compression lz4 dessus.
Commentaires
- Jai essayé de installez-le sur une nouvelle machine virtuelle, mais je ‘ rencontre encore des problèmes, je suppose .. certains services ne démarrent ‘ pas correctement .. Comme loin je peux voir que la liste des bogues de ZFS DKMS est remplie de » peut ‘ t installer » rapports de bogues. Je me demande sil est normal que les développeurs laissent passer des mois après tant de demandes de correction de bogues reproductibles uniquement avec apt-get install zfs-dkms ..
- Sur la partie où vous demandez le répertoire cd, vous vouliez dire: / etc / systemd / système /? car / etc / systemd / service est inexistant .. aussi jai ce message: » Impossible de redémarrer zfs-import-mount.service: Unité zfs-import-mount.service non » et » Échec du redémarrage de zfs-import-share.service: Unité zfs-import-share.service introuvable. »
- Il semble que jai également des problèmes avec le service ZFS-ZED en lisant journalctl -xe: 11 août 23:03:23 debian zed [ 70734]: Démon dévénement ZFS 0.6.5.9-5 (PID 70734) 11 août 23:03:23 debian zed [70734]: Échec de linitialisation de libzfs 11 août 23:03:23 debian systemd [1]: zfs-zed.service : Processus principal sorti, code = sorti, statut = 1 / FAILURE 11 août 23:03:23 debian systemd [1]: zfs-zed.service: Lunité est entrée en état déchec. 11 août 23:03:23 debian systemd [1]: zfs-zed.service: Échec du résultat ‘ exit-code ‘.
- Les choses ont-elles changé / amélioré avec Debian 10? Et si oui, dois-je publier une question distincte pour Debian 10?
dkms status | grep zfs
?