Installer zfs på debian 9 stretch (Norsk)
On februar 18, 2021 by adminJeg prøvde å installere zfs på debian 9.1, men jeg opplever noen feil.
Min første installasjonen var bare av zfs-dkms, men jeg leste på nettet at også spl-dkms er nødvendig for at zfs-dkms skal kjøre.
Mine trinn var å endre sources.list legge til bidrag ikke-gratis som følger:
/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
Gjort en klassisk apt-get-oppdatering og prøvde deretter å installere zfs med følgende:
apt-get install spl-dkms
og først etter
apt-get install zfs-dkms
Som et resultat har jeg disse feilene:
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) ...
Leser journalctl -xe som foreslått får jeg:
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.
Hva er galt her? Jeg savnet noe annet? Hvordan er zfs-linux -pakken knyttet til zfs-installasjon?
Hva er riktig måte å installere zfs i debian 9?
Kommentarer
Svar
Det faktiske svaret fra @cas er bra, men har noen rettelser som skal brukes.
Så la oss ta en ny installasjon av Debian 9 og forutsatt at ikke-gratis -lagre er heller ikke aktivert.
Trinn 0 – Aktiver ikke-gratis-lagringssteder for bidrag
Jeg brukte sed
for å finne og erstatte ordet main inne i /etc/apt/sources.list
sed -i "s/main/main contrib non-free/g" /etc/apt/sources.list apt-get update
Trinn 1 – ZFS-installasjon
Siden de siste løsningene spl-dkms
blir sett riktig på som zfs-dkms
de avhengighet slik at den blir tilbakekalt automatisk, og det er ikke nødvendig å installere den manuelt før zfs-dkms
. Den symbolske lenken er nødvendig på grunn av en feil i zfs-distribusjonen i Debian, som ikke ser etter rm
binær i riktig posisjon.
apt -y install linux-headers-$(uname -r) ln -s /bin/rm /usr/bin/rm apt-get -y install zfs-dkms
Trinn 2 – ZFS-omstart
På dette tidspunktet er zfs-dkms installert, men det kaster feil i journalctl -xe
; for å starte zfs riktig bruk:
/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
Trinn 3 – DU MÅ LAGE MINST EN ZPOOL
På dette tidspunktet oppdaget jeg at DU må opprette en zpool før du starter på nytt ellers vil ikke zfs laste de riktige modulene hvis det ikke er noen zpools. Det er en slags for å lagre ressursmekanismen (men selv i så fall vil dette fremdeles kaste feil i journalctl -xe
)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
«Vi gjør ikke dette fordi ZFS-moduler ville ødelegge kjernen, Hvis det ikke er noen zpool tilgjengelig, bør den ikke lastes. «
Hvis du savner denne delen, må du starte fra Trinn 2
For eksempel, ved å bruke eksemplet fra @cas, kan du opprette denne filbaserte zpoolen eller direkte lage dine diskbaserte.
truncate -s 100M /root/z1 truncate -s 100M /root/z2 zpool create tank /root/z1 /root/z2 zpool scrub tank zpool status
så etter en reboot
vil alt fungere uten feil i journalctl -xe
Svar
Små variasjoner for meg på Debian 9.4 – etter Apt-kildetilleggene:
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
Festet var IKKE nåværende sukk – oppdaget at det var en eksisterende /var/jeff
med innhold – flyttet det ut av veien og gjorde en reboot
…
Etter omstart:
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
Hurra – alle til stede og bit-rot beskyttet 🙂
Kommentarer
- +1 men anbefaler sterkt å bruke
/dev/disk/by-id/?
i stedet for/dev/sd?
enheter. Bruk enten by-id-navnene når du oppretter bassenget, eller fikse senere medzpool export <pool>
etterfulgt avzpool import -d /dev/disk/by-id/ <pool>
. Disse navnene, i motsetning til / dev / sd *, VIL fortsette på tvers av omstart. Hvis du har en etikettskriver, kan du også skrive ut etiketter med korte versjoner av by-id-enhetsnavnene (det ‘ er vanligvis en serienummerdel av navnet som gir en god , kort, unik etikett) og merk stasjonene for å gjøre dem enkle å identifisere om de noen gang trenger å byttes ut. - Ummm – men ZFS bryr seg ikke om diskaliasene som ble brukt under oppretting – all informasjon er skrevet til zfs-part9 på disken – og det er det som brukes til å konstruere matrisen.Jeg bryr meg ikke ‘ om det som var / dev / sdb endres til noe annet i fremtiden, og jeg sjekker alltid med
lsblk -f
bare før du dickrer med harddiskmaskinvare – for våre produksjonsservere er Dell hdd-blinkverktøyet nyttig når det gjelder å knytte gjeldende OS-alias til den fysiske enheten 🙂 – Jeg tror / dev / disk / by-id er mer nyttig for andre monteringssystemer som ikke ‘ t har ZFS ‘ s innebygd konsistens – f.eks. fstab. - ved hjelp av by-id vil du få meningsfulle / nyttige navn (identifisere hver stasjon ‘ s merke, modell og serienummer) i
zpool
kommando somstatus
oglist
, som enkelt kan kopieres og limes inn i alle nødvendige zpool offline / løsriv / erstatte / etc kommandoer.sda
forteller deg ikke ‘ noe nyttig.ata-ST4000VN008-2DR166_ZDH35XXX
identifiserer nøyaktig hvilken type stasjon det er og serienummeret. Du kan fremdeles få (nåværende) korte dev-navn hvis du noen gang vil ha dem ved å bruke alternativet-L
medzpool list
,zpool status
osv. (etter min erfaring, mest nyttig medzpool list -L -v
). - IME, de meningsfulle navnene bidrar til å redusere menneskelige feil. Det ‘ er lett å feilaktig skrive, f.eks. Sdd som sdf. mye vanskeligere å skrive inn et by-id-navn.
- Lol – mange mennesker gir samme anbefaling – jeg personlig synes det er lettere å huske og skrive sdc sde sdf og sdg. Vi kjøper disker i batcher, og de starter alle med de samme 48 eller så by-id-tegnene og har bare 2-4-sifrede suffikser som er forskjellige. Folk skriver ikke ‘ for å skrive inn by-id-navn – de bruker fullføring av tabulatorer – mer sannsynlig å føre til en oops IMHO. Jeg synes det er lettere å skille en bokstav i en tre-bokstav enn 2-4 sifre i et navn på 52 tegn. Jeg vet at mange mennesker også anbefaler UUID. Siden ZFS ikke ‘ bryr seg, tror jeg jeg vil holde meg til det jeg synes er lettere – mindre er noen ganger mer 🙂
Svar
Jeg opprettet nettopp en helt ny strekk-VM for å teste dette. Minimal installasjon (bare ssh og standard systemverktøy), rediger sources.list for å legge til bidrag og ikke-gratis, deretter:
apt-get install spl-dkms zfs-dkms
Det kan også være lurt å gjøre det manuelt installer zfsutils-linux
. Den skal installeres automatisk når du installerer zfs-dkms
, men avhengighetene kan variere for forskjellige Debian-utgivelser og for forskjellige versjoner av Debian ZoL-pakkene:
apt-get install zfsutils-linux
Det ser ut som om det er en feil i systemd-enhetsfilen for zfs-share
. Den prøver å kjøre /usr/bin/rm
i stedet for /bin/rm
.
Hurtigreparasjonen er å kjøre ln -s /bin/rm /usr/bin
, eller alternativt:
cd /etc/systemd/system cp -a /lib/systemd/system/zfs-share.service . edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
og start deretter zfs-tjenestene på nytt:
systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
MERK: Jeg løp modprobe zfs
før du starter noen av zfs-tjenestene på nytt. Jeg er ikke sikker på om de vil gjøre det automatisk eller ikke, så du må kanskje gjøre det også.
BTW, du vil sannsynligvis apt-get install zfs-initramfs
også , for å sikre at zfs lastes inn under initramfs.
Jeg testet at dette fungerer med:
# 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 er working og / tank blir automatisk montert etter en omstart.
Konklusjon: det fungerer nå.
BTW, denne streknings-VM bruker en ZFS zvol opprettet på min hoved sid
systemet som disk. Jeg tok et øyeblikksbilde av det umiddelbart etter den første installasjonen, før jeg installerte spl-dkms og zfs-dkms, slik at jeg raskt kunne gå tilbake og starte på nytt hvis noe større gikk galt.
Jeg lagde først zvol med bare 1 GB og trengte å øke den senere for å ha nok plass til 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
på tank i VM er sannsynligvis verre enn ubrukelig – zvol har allerede lz4-komprimering på seg.
Kommentarer
- Jeg prøvde å installer den på en ny ny vm, men jeg ‘ Jeg har fortsatt problemer antar jeg .. noen tjenester er ikke ‘ starter ikke riktig .. Som langt jeg kan se ZFS DKMS bug-listen er fylt med » kan ‘ t installere » feilrapporter. Jeg lurer på om det er normalt at utviklere lar måneder gå etter at så mange bugfix-forespørsler er reproduserbare bare med apt-get install zfs-dkms ..
- På den delen der du ber om cd-katalogen du mente: / etc / systemd / system /? fordi / etc / systemd / service ikke eksisterer .. Jeg har også denne meldingen: » Kunne ikke starte zfs-import-mount.service: Enhet zfs-import-mount.service ikke funnet. » og » Kunne ikke starte zfs-import-share.service: Enhet zfs-import-share.tjenesten ble ikke funnet. »
- Det ser ut til at jeg også har problemer med ZFS-ZED-tjenesten ved å lese journalctl -xe: 11. august 23:03:23 debian zed [ 70734]: ZFS Event Daemon 0.6.5.9-5 (PID 70734) 11. aug 23:03:23 debian zed [70734]: Kunne ikke initialisere libzfs 11. aug 23:03:23 debian systemd [1]: zfs-zed.service : Hovedprosess avsluttet, kode = avsluttet, status = 1 / FAILURE 11. aug 23:03:23 debian systemd [1]: zfs-zed.service: Enhet angitt mislykket tilstand. 11. august 23:03:23 debian systemd [1]: zfs-zed.service: Mislyktes med resultatet ‘ exit-code ‘.
- Har ting endret seg / forbedret med Debian 10? Og i så fall, bør jeg legge ut et eget spørsmål til Debian 10?
dkms status | grep zfs
?