Instalați zfs pe debian 9 stretch
On februarie 18, 2021 by adminAm încercat să instalez zfs pe debian 9.1, totuși am „unele erori.
Primul meu instalarea a fost doar de zfs-dkms, totuși am citit pe net că și spl-dkms este necesar pentru a rula zfs-dkms.
Pașii mei au fost să-mi schimb sources.list adăugând contrib non-free după cum urmează:
/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
Ați făcut o actualizare clasică apt-get și apoi ați încercat instalarea zfs cu următoarele:
apt-get install spl-dkms
și numai după
apt-get install zfs-dkms
Ca urmare, am aceste erori:
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) ...
Citind journalctl -xe așa cum mi-a sugerat primesc:
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.
Ce se întâmplă aici? Mi-a fost dor de altceva? Cum este pachetul zfs-linux legat de instalarea zfs?
Care este modul corect de instalare a zfs în debian 9?
Comentarii
Răspuns
Răspunsul real de către @cas este bun, dar trebuie aplicate câteva corecții.
Deci, să luăm o nouă instalare a Debian 9 și să presupunem că contribu non-free depozitele nu sunt de asemenea activate.
Pasul 0 – Activați depozitele contrib non-free
Am folosit sed
pentru a găsi și a înlocui cuvântul principal din /etc/apt/sources.list
sed -i "s/main/main contrib non-free/g" /etc/apt/sources.list apt-get update
Pasul 1 – Instalare ZFS
Deoarece ultimele corecții spl-dkms
sunt văzute corect ca zfs-dkms
de pendență, deci este reamintit automat și nu este necesar să-l instalați manual înainte de zfs-dkms
. Legătura simbolică este necesară datorită unui bug din distribuția zfs din Debian, care nu „caută rm
binar în poziția corectă.
apt -y install linux-headers-$(uname -r) ln -s /bin/rm /usr/bin/rm apt-get -y install zfs-dkms
Pasul 2 – Repornirea ZFS
În acest moment este instalat zfs-dkms, dar aruncă erori în journalctl -xe
; pentru a porni zfs în mod corespunzător utilizați:
/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
Pasul 3 – TREBUIE SĂ CREAȚI MĂNIM UN ZPOOL
În acest moment am descoperit că trebuie să creați un zpool înainte de repornire în caz contrar, zfs nu va încărca modulele corespunzătoare dacă nu există zpool-uri. Este un sort mecanismului de economisire a resurselor (dar chiar și în acest caz, acest lucru va arunca în continuare erori în journalctl -xe
)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
„Nu facem acest lucru deoarece modulele ZFS ar murdări nucleul, dacă nu există zpool disponibil atunci nu ar trebui să fie „încărcat.”
Dacă pierdeți această parte, trebuie să începeți de la Pasul 2
De exemplu, utilizând exemplul furnizat de @cas, puteți crea acest fișier bazat pe zpool sau puteți crea direct pe cele bazate pe disc.
truncate -s 100M /root/z1 truncate -s 100M /root/z2 zpool create tank /root/z1 /root/z2 zpool scrub tank zpool status
apoi după un reboot
totul va funcționa fără erori în journalctl -xe
Răspuns
Variații ușoare pentru mine pe Debian 9.4 – după adăugările surselor 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
Muntele a fost NU suspin prezent – a descoperit că a existat un /var/jeff
cu conținut – a mutat-o din drum și a făcut un reboot
…
După repornire:
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 – toate prezente și protejate împotriva putregaiului de biți 🙂
Comentarii
- +1, dar recomandăm cu tărie utilizarea dispozitivelor
/dev/disk/by-id/?
în loc de/dev/sd?
. Fie folosiți numele de identificare secundară atunci când creați pool-ul, fie remediați ulterior cuzpool export <pool>
urmat dezpool import -d /dev/disk/by-id/ <pool>
. Aceste nume, spre deosebire de / dev / sd *, vor persista în timpul repornirilor. De asemenea, dacă aveți o imprimantă de etichete, puteți imprima etichete cu versiuni scurte ale numelor de dispozitive cu identificare secundară (acolo ‘ este de obicei o parte din numărul de serie al numelui, ceea ce face un bun , etichetă scurtă, unică) și etichetați unitățile pentru a le face ușor de identificat dacă trebuie vreodată înlocuite. - Ummm – dar ZFS nu are grijă de aliasurile de disc utilizate în timpul creării – toate informațiile sunt scrise la zfs-part9 pe disc – și asta este ceea ce este folosit pentru a construi matricea.Nu îmi pasă ‘ cu adevărat dacă ceea ce a fost / dev / sdb se schimbă în altceva în viitor și verific mereu cu
lsblk -f
doar înainte de a scăpa cu hardware-ul unității – pentru serverele noastre de producție instrumentul de clipire HDD Dell este util în relaționarea actualului os-alias cu unitatea fizică 🙂 – Cred că / dev / disk / by-id este mai util pentru alte sisteme de montare care nu ‘ nu aveți ZFS ‘ construite în consistență – de ex. fstab. - utilizarea by-id vă va oferi nume utile / utile (identificarea fiecărei unități ‘ s marca, modelul și numărul de serie) în
zpool
comandă cum ar fistatus
șilist
, care poate fi copiată cu ușurință în orice zpool necesar offline / detașat comenzi / replace / etc.sda
nu ‘ nu vă spune nimic util.ata-ST4000VN008-2DR166_ZDH35XXX
identifică exact ce fel de unitate este și numărul său de serie. Puteți obține totuși numele curente (actuale) ale dezvoltatorilor dacă vreți să le folosiți vreodată folosind opțiunea-L
cuzpool list
,zpool status
, etc (din experiența mea, util în cea mai mare parte cuzpool list -L -v
). - IME, numele semnificative ajută la reducerea erorilor umane. Este ‘ ușor de scris greșit, de exemplu, sdd ca sdf. mult mai greu să scrii greșit un nume secundar.
- Lol – mulți oameni fac aceeași recomandare – personal îmi este mai ușor să-mi amintesc și să scriu sdc sde sdf și sdg. Cumpărăm discuri în loturi și toate încep cu aceleași 48 de caractere secundare și au doar sufixe de 2-4 cifre care diferă. Oamenii nu ‘ nu introduc nume de identificare secundară – utilizează completarea tab-ului – este mai probabil să conducă la o IMHO. Găsesc diferențierea unei litere într-o literă cu trei caractere mult mai ușoară decât 2-4 cifre într-un nume de 52 de caractere. Știu că mulți oameni recomandă și UUID. Deoarece ZFS nu are grijă de ‘, cred că voi rămâne la ceea ce mi se pare mai ușor – mai puțin este uneori mai mult 🙂
Răspunde
Tocmai am creat o VM stretch nouă pentru a testa acest lucru. Instalare minimă (doar ssh și instrumente de sistem standard), editați sources.list pentru a adăuga contrib și non-free, apoi:
apt-get install spl-dkms zfs-dkms
Ați putea dori, de asemenea, manual instalați zfsutils-linux
. Ar trebui instalat automat când instalați zfs-dkms
, dar dependențele pot varia pentru diferite versiuni Debian și pentru diferite versiuni ale pachetelor Debian ZoL:
apt-get install zfsutils-linux
Se pare că există „o eroare în fișierul unitate systemd pentru zfs-share
. Încearcă să ruleze /usr/bin/rm
în loc de /bin/rm
.
Soluția rapidă este de a rula ln -s /bin/rm /usr/bin
, sau alternativ:
cd /etc/systemd/system cp -a /lib/systemd/system/zfs-share.service . edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
și apoi reporniți serviciile zfs:
systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
NOTĂ: Am rulat manual modprobe zfs
înainte de a reporni oricare dintre serviciile zfs. Nu sunt sigur dacă o vor face automat sau nu, așa că este posibil să fie necesar să faceți și asta.
BTW, probabil că doriți și apt-get install zfs-initramfs
, pentru a mă asigura că zfs este încărcat în timpul initramfs.
Am testat că funcționează cu:
# 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
Zpool este Funcționarea și / rezervorul se montează automat după o repornire.
Concluzie: funcționează acum.
BTW, această VM stretch utilizează un ZFS zvol creat pe sid
ca disc. Am făcut un instantaneu imediat după instalarea inițială, înainte de a instala spl-dkms și zfs-dkms, astfel încât să pot reveni rapid și să pornesc din nou dacă ceva major nu merge bine.
Am făcut prima dată zvol cu doar 1 GB și trebuia să-l măriți mai târziu pentru a avea suficient spațiu pentru 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 -
setare compression=lz4
pe rezervorul din VM este probabil mai rău decât inutil – zvol are deja compresie lz4 pe ea.
Comentarii
- Am încercat să instalați-l pe o nouă mașină virtuală nouă, dar ‘ încă mai am probleme, presupun .. unele servicii nu sunt ‘ pornind corect .. Ca până acum văd că lista de erori ZFS DKMS este plină de ” nu se poate ‘ să instaleze ” rapoarte de erori. Mă întreb dacă este normal ca dezvoltatorii să lase să treacă luni după atâtea cereri de remediere a erorilor reproductibile doar cu apt-get install zfs-dkms ..
- În partea în care solicitați directorul cd ați vrut să spuneți: / etc / systemd / system /? deoarece / etc / systemd / service este inexistent .. de asemenea, am acest mesaj: ” Nu s-a putut reporni zfs-import-mount.service: Unitatea zfs-import-mount.service nu găsit. ” și ” Nu s-a putut reporni zfs-import-share.service: Unitatea zfs-import-share.serviciul nu a fost găsit. ”
- Se pare că am probleme și cu serviciul ZFS-ZED citind journalctl -xe: 11 aug 23:03:23 debian zed [ 70734]: Daemon eveniment ZFS 0.6.5.9-5 (PID 70734) 11 aug 23:03:23 debian zed [70734]: Nu s-a inițializat libzfs 11 aug 23:03:23 debian systemd [1]: zfs-zed.service : Procesul principal a ieșit, codul = a ieșit, starea = 1 / FAILURE 11 aug 23:03:23 debian systemd [1]: zfs-zed.service: Unitatea a intrat în stare eșuată. 11 aug 23:03:23 debian systemd [1]: zfs-zed.service: Eșuat cu rezultatul ‘ exit-code ‘.
- S-au schimbat / îmbunătățit lucrurile cu Debian 10? Și dacă da, ar trebui să postez o întrebare separată pentru Debian 10?
dkms status | grep zfs
?