Installeer zfs op debian 9 stretch
Geplaatst op februari 18, 2021 door adminIk heb geprobeerd zfs te installeren op debian 9.1, maar ik ondervind enkele fouten.
Mijn eerste installatie was alleen van zfs-dkms, maar ik las op het net dat ook de spl-dkms nodig is om zfs-dkms te laten draaien.
Mijn stappen waren om mijn sources.list het toevoegen van de bijdrage niet-gratis als volgt:
/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
Ik heb een klassieke apt-get-update gedaan en vervolgens geprobeerd om zfs te installeren met het volgende:
apt-get install spl-dkms
en pas na
apt-get install zfs-dkms
Als resultaat heb ik deze fouten:
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) ...
Lezen van journalctl -xe zoals voorgesteld krijg ik:
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.
Wat is hier mis? Ik heb iets anders gemist? Hoe is het zfs-linux pakket gerelateerd aan de zfs-installatie?
Wat is de juiste manier om zfs te installeren in Debian 9?
Reacties
Answer
Het daadwerkelijke antwoord van @cas is goed, maar er moeten enkele correcties worden toegepast.
Laten we dus een nieuwe installatie van Debian 9 nemen en aannemen dat de contrib non-free repositories zijn ook niet ingeschakeld.
Stap 0 – Schakel de contrib non-free repositories in
Ik heb sed
gebruikt om het woord main binnen /etc/apt/sources.list
Stap 1 – ZFS-installatie
Sinds de laatste reparaties wordt spl-dkms
correct gezien als zfs-dkms
de pendency zodat het automatisch wordt opgeroepen en het niet nodig is om het handmatig te installeren vóór zfs-dkms
. De symbolische link is nodig vanwege een bug in de zfs-distributie in Debian, die “niet zoekt naar rm
binair bestand op de juiste positie.
apt -y install linux-headers-$(uname -r) ln -s /bin/rm /usr/bin/rm apt-get -y install zfs-dkms
Stap 2 – ZFS herstart
Op dit punt is zfs-dkms geïnstalleerd, maar het genereert fouten in journalctl -xe
; gebruik om zfs correct te starten:
/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
Stap 3 – JE MOET TEN MINSTE ÉÉN ZPOOL MAKEN
Op dit punt ontdekte ik dat U een zpool moet maken voordat u opnieuw opstart anders zal zfs niet de juiste modules laden als er geen zpools zijn. Het is een soort van het besparen van bronnen (maar zelfs in dat geval zal dit nog steeds fouten binnen journalctl -xe
veroorzaken)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
“We doen dit niet omdat ZFS-modules de kernel zouden aantasten, als er geen zpool beschikbaar is, mag deze niet worden geladen.
Als je dit deel mist, moet je beginnen vanaf Stap 2
Door bijvoorbeeld het voorbeeld van @cas te gebruiken, kunt u deze op bestanden gebaseerde zpool maken of direct uw op schijven gebaseerde bestanden maken.
truncate -s 100M /root/z1 truncate -s 100M /root/z2 zpool create tank /root/z1 /root/z2 zpool scrub tank zpool status
en na een reboot
zal alles werken zonder fouten in journalctl -xe
Answer
Kleine variaties voor mij op Debian 9.4 – na de toevoegingen aan de Apt-bronnen:
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
De mount was NIET aanwezig zucht – ontdekte dat er een bestaande /var/jeff
met inhoud – verwijderde dat uit de weg en deed een reboot
…
Na opnieuw opstarten:
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
Hoera – allemaal aanwezig en bit-rot beschermd 🙂
Opmerkingen
- +1 maar raad ten zeerste aan om
/dev/disk/by-id/?
te gebruiken in plaats van/dev/sd?
apparaten. Gebruik ofwel de by-id-namen bij het aanmaken van de pool, of repareer later metzpool export <pool>
gevolgd doorzpool import -d /dev/disk/by-id/ <pool>
. Deze namen, in tegenstelling tot / dev / sd *, ZULLEN blijven bestaan tijdens het opnieuw opstarten. Als u een labelprinter heeft, kunt u ook labels afdrukken met korte versies van de by-id-apparaatnamen (er is meestal een serienummergedeelte van de naam dat een goede naam maakt ‘ , kort, uniek label) en label de schijven om ze gemakkelijk te identificeren als ze ooit moeten worden vervangen. - Ummm – maar ZFS geeft niet om de schijfaliassen die tijdens het maken worden gebruikt – alle informatie is geschreven naar zfs-part9 op de schijf – en dat is wat wordt gebruikt om de array te construeren.Het maakt me ‘ niet echt uit of wat / dev / sdb in de toekomst verandert in iets anders, en ik controleer altijd met
lsblk -f
voordat we met schijfhardware aan het werk gaan – voor onze productieservers is de Dell hdd blink-tool handig om de huidige os-alias te relateren aan de fysieke eenheid 🙂 – Ik denk dat de / dev / disk / by-id nuttiger is voor andere montagesystemen die don ‘ t hebben ZFS ‘ s ingebouwde consistentie – bijv. fstab. - als u by-id gebruikt, krijgt u betekenisvolle / nuttige namen (waarmee u het merk, het model en het serienummer van ‘ van elk station identificeert) in
zpool
-opdracht zoalsstatus
enlist
, die gemakkelijk kunnen worden gekopieerd en geplakt in elke noodzakelijke zpool offline / ontkoppelen / replace / etc-opdrachten.sda
zegt ‘ niets nuttigs.ata-ST4000VN008-2DR166_ZDH35XXX
geeft precies aan wat voor soort station het is en wat het serienummer is. Je kunt nog steeds de (huidige) korte dev-namen krijgen als je ze ooit wilt gebruiken met de-L
optie metzpool list
,zpool status
, enz. (in mijn ervaring vooral handig metzpool list -L -v
). - IME, de betekenisvolle namen helpen om menselijke fouten te verminderen. Het ‘ is gemakkelijk verkeerd te typen, bijvoorbeeld sdd als sdf. veel moeilijker om een by-id-naam verkeerd te typen.
- Lol – veel mensen doen dezelfde aanbeveling – ik vind het persoonlijk gemakkelijker om te onthouden en typ sdc sde sdf en sdg. We kopen schijven in batches en ze beginnen allemaal met dezelfde 48 by-id-tekens en hebben slechts 2-4-cijferige achtervoegsels die verschillen. Mensen ‘ tikken geen by-id-namen – ze gebruiken tab-aanvullen – en leiden eerder tot een oeps IMHO. Ik vind het veel gemakkelijker om één letter in een naam van drie tekens te onderscheiden dan 2-4 cijfers in een naam van 52 tekens. Ik weet dat veel mensen UUID ook aanbevelen. Aangezien ZFS het niet kan schelen ‘, denk ik dat ik me zal houden aan wat ik gemakkelijker vind – minder is soms meer 🙂
Antwoord
Ik heb zojuist een gloednieuwe stretch-VM gemaakt om dit te testen. Minimale installatie (alleen ssh en standaard systeemtools), bewerk sources.list om contrib en niet-gratis toe te voegen, en dan:
apt-get install spl-dkms zfs-dkms
Misschien wilt u ook handmatig installeer zfsutils-linux
. Het zou automatisch moeten worden geïnstalleerd wanneer u zfs-dkms
installeert, maar de afhankelijkheden kunnen variëren voor verschillende Debian-releases en voor verschillende versies van de Debian ZoL-pakketten:
apt-get install zfsutils-linux
Het lijkt erop dat er “een bug in het systemd unit-bestand voor zfs-share
zit. Het probeert /usr/bin/rm
in plaats van /bin/rm
.
De snelle oplossing is om ln -s /bin/rm /usr/bin
uit te voeren, of als alternatief:
cd /etc/systemd/system cp -a /lib/systemd/system/zfs-share.service . edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
en start de zfs-services opnieuw:
systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
OPMERKING: ik heb handmatig modprobe zfs
voordat u een van de zfs-services herstart. Ik “weet niet zeker of ze” dat automatisch zullen doen of niet, dus u moet dat misschien ook doen.
Trouwens, u wilt waarschijnlijk ook apt-get install zfs-initramfs
, om ervoor te zorgen dat zfs wordt geladen tijdens het initramfs.
Ik heb getest of dit werkt met:
# 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
De zpool is working en / tank wordt automatisch gemount na een herstart.
Conclusie: het werkt nu.
Trouwens, deze stretch-VM gebruikt een ZFS-zvol die is gemaakt op mijn hoofd sid
systeem als schijf. Ik maakte er een momentopname van onmiddellijk na de eerste installatie, voordat ik spl-dkms en zfs-dkms installeerde, zodat ik snel kon terugkeren en opnieuw kon beginnen als er iets belangrijks misging.
Ik heb de zvol eerst gemaakt met slechts 1GB en moest het later vergroten om genoeg ruimte te hebben voor 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
op tank in de VM is waarschijnlijk erger dan nutteloos – de zvol heeft al lz4-compressie erop.
Reacties
- Ik heb geprobeerd om installeer het op een nieuwe vm maar ik ‘ m ondervind nog steeds problemen, denk ik .. sommige services ‘ starten niet correct .. Zoals ver kan ik zien dat de ZFS DKMS-buglijst gevuld is met ” kan ‘ t installeren ” bugrapporten. Ik vraag me af of het normaal is dat ontwikkelaars maanden voorbij laten gaan nadat zoveel bugreparatieverzoeken alleen reproduceerbaar zijn met apt-get install zfs-dkms ..
- Op het gedeelte waar je naar de cd-directory vraagt, bedoelde je: / etc / systemd / system /? omdat / etc / systemd / service niet bestaat .. ik heb ook dit bericht: ” Herstarten van zfs-import-mount.service is mislukt: Unit zfs-import-mount.service niet gevonden. ” en ” Herstarten van zfs-import-share.service is mislukt: Unit zfs-import-share.service niet gevonden. ”
- Het lijkt erop dat ik ook problemen heb met de ZFS-ZED-service door journalctl -xe te lezen: 11 augustus 23:03:23 debian zed [ 70734]: ZFS Event Daemon 0.6.5.9-5 (PID 70734) 11 augustus 23:03:23 debian zed [70734]: Initialiseren van libzfs 11 augustus 23:03:23 is mislukt debian systemd [1]: zfs-zed.service : Hoofdproces verlaten, code = verlaten, status = 1 / FAILURE 11 aug. 23:03:23 debian systemd [1]: zfs-zed.service: Eenheid is mislukt. 11 aug. 23:03:23 debian systemd [1]: zfs-zed.service: mislukt met resultaat ‘ exit-code ‘.
- Zijn er dingen veranderd / verbeterd in Debian 10? En zo ja, moet ik dan een aparte vraag stellen voor Debian 10?
dkms status | grep zfs
?