Nainstalovat zfs na debian 9 stretch
On 18 února, 2021 by adminPokusil jsem se nainstalovat zfs na debian 9.1, ale mám nějaké chyby.
Moje první instalace byla pouze zfs-dkms, ale na internetu jsem četl, že pro spuštění zfs-dkms je vyžadován také spl-dkms.
Mými kroky bylo změnit mé sources.list přidání příspěvku nesvobodného takto:
/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
Proveďte klasickou aktualizaci apt-get a poté zkuste nainstalovat zfs s následujícím:
apt-get install spl-dkms
a až po
apt-get install zfs-dkms
Ve výsledku mám tyto chyby:
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) ...
Čtení journalctl -xe podle doporučení:
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.
Co se tu děje? Chybělo mi něco jiného? Jak souvisí balíček zfs-linux s instalací zfs?
Jaký je správný způsob instalace zfs v debian 9?
Komentáře
odpověď
Skutečná odpověď od @cas je dobrá, ale je třeba provést určité opravy.
Pojďme tedy provést novou instalaci Debianu 9 a za předpokladu, že contrib non-free repozitáře také nejsou povoleny.
Krok 0 – Povolte contrib non-free repozitáře
Použil jsem sed
k nalezení a nahrazení slova main uvnitř /etc/apt/sources.list
sed -i "s/main/main contrib non-free/g" /etc/apt/sources.list apt-get update
Krok 1 – instalace ZFS
Protože poslední opravy spl-dkms
jsou správně považovány za zfs-dkms
de závislost, takže je vyvolána automaticky a není nutné ji instalovat ručně před zfs-dkms
. Symbolický odkaz je nutný kvůli chybě uvnitř distribuce zfs v Debianu, která nehledá rm
binární soubor na správné pozici.
apt -y install linux-headers-$(uname -r) ln -s /bin/rm /usr/bin/rm apt-get -y install zfs-dkms
Krok 2 – ZFS Restart
V tomto okamžiku je nainstalován zfs-dkms, ale vrhá chyby na journalctl -xe
; ke správnému spuštění zfs použijte:
/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
Krok 3 – MUSÍTE VYTVOŘIT NEJMÉNĚ ZPOOL
V tomto okamžiku jsem objevil že před restartováním musíte vytvořit zpool jinak zfs nenačte správné moduly, pokud neexistují žádné zpools. Je to druh mechanismu ukládání zdrojů (ale i v takovém případě to bude stále házet chyby dovnitř journalctl -xe
)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
„Neděláme to, protože moduly ZFS by poškodily jádro, pokud není k dispozici žádný zpool, neměl by být načten. „
Pokud vám tato část chybí, musíte začít od Krok 2
Například pomocí příkladu poskytnutého @cas můžete vytvořit tento soubor na základě zpoolu nebo přímo na disku.
truncate -s 100M /root/z1 truncate -s 100M /root/z2 zpool create tank /root/z1 /root/z2 zpool scrub tank zpool status
poté po reboot
bude vše fungovat bez chyb v journalctl -xe
Odpověď
Mírné variace pro mě v Debianu 9.4 – po přidání zdrojů 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
Mount byl NE přítomný povzdech – zjistil, že existuje /var/jeff
s obsahem – přesunul to z cesty a udělal reboot
…
Po restartu:
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
Hurá – všechny přítomné a chráněné proti hnilobě 🙂
Komentáře
- +1, ale důrazně doporučujeme používat
/dev/disk/by-id/?
místo/dev/sd?
zařízení. Při vytváření fondu použijte buď názvy vedlejších identifikátorů, nebo je opravte později pomocízpool export <pool>
následovanéhozpool import -d /dev/disk/by-id/ <pool>
. Tyto názvy, na rozdíl od / dev / sd *, přetrvávají při restartování. Pokud máte tiskárnu štítků, můžete také tisknout štítky s krátkými verzemi názvů vedlejších zařízení (‚ obvykle obsahuje část názvu se sériovým číslem, což je dobré , krátký, jedinečný štítek) a označte disky, abyste je mohli snadno identifikovat, pokud je někdy bude nutné vyměnit. - Ummm – ale ZFS se nestará o aliasy disků použité při vytváření – všechny informace jsou zapsány na zfs-part9 na disku – a to je to, co se používá ke konstrukci pole.Nezajímá mě ‚, jestli se to, co bylo / dev / sdb v budoucnu změní, na něco jiného, a vždy zkontroluji
lsblk -f
jen před dickeringem s hardwarem disku – pro naše produkční servery je nástroj Dell hdd blink užitečný při přiřazování aktuálního alias os k fyzické jednotce 🙂 – myslím, že / dev / disk / by-id je užitečnější pro jiné montážní systémy, které nemají ‚ zabudované konzistence ZFS ‚ – např. fstab. - použití by-id vám dá smysluplné / užitečné názvy (identifikace každé značky, modelu a sériového čísla ‚ značky) v
zpool
příkaz jakostatus
alist
, který lze snadno zkopírovat do libovolného nezbytného zpoolu offline / odpojit / nahradit / atd.sda
vám ‚ neřekne nic užitečného.ata-ST4000VN008-2DR166_ZDH35XXX
přesně určuje, o jaký disk se jedná, a jeho sériové číslo. Stále můžete získat (aktuální) krátká jména vývojářů, pokud je někdy chcete, pomocí možnosti-L
szpool list
,zpool status
atd. (podle mých zkušeností většinou užitečné szpool list -L -v
). - IME, smysluplné názvy pomáhají omezovat lidské chyby. ‚ snadno se píše, například sdd jako sdf. mnohem těžší překlep názvu vedlejšího ID.
- Lol – spousta lidí vydává stejné doporučení – osobně si to snadněji pamatuji a zadávám sdc sde sdf a sdg. Kupujeme disky v dávkách a všechny začínají stejnými přibližně 48 znaky vedlejšího ID a mají pouze 2-4místné přípony, které se liší. Lidé ‚ nezadávají názvy vedlejších id – používají doplňování karet – s větší pravděpodobností povedou k oops IMHO. Rozlišování jednoho písmene ve třech znacích mi připadá mnohem snazší než 2-4 číslic ve jménu 52 znaků. Vím, že spousta lidí také doporučuje UUID. Protože se ZFS ‚ to nestará, myslím, že se budu držet toho, co mi přijde jednodušší – méně je někdy více 🙂
Odpověď
Právě jsem vytvořil zbrusu nový stretch VM, abych to otestoval. Minimální instalace (pouze ssh a standardní systémové nástroje), upravte sources.list a přidejte contrib a non-free, pak:
apt-get install spl-dkms zfs-dkms
Můžete také chtít ručně nainstalujte zfsutils-linux
. Měl by být nainstalován automaticky při instalaci zfs-dkms
, ale závislosti se mohou lišit pro různá vydání Debianu a pro různé verze balíků Debian ZoL:
apt-get install zfsutils-linux
Vypadá to, že v souboru systémové jednotky je chyba zfs-share
. Pokouší se to spustit /usr/bin/rm
místo /bin/rm
.
Rychlá oprava je spustit ln -s /bin/rm /usr/bin
nebo alternativně:
cd /etc/systemd/system cp -a /lib/systemd/system/zfs-share.service . edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
a poté restartujte služby zfs:
systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
POZNÁMKA: Ručně jsem spustil modprobe zfs
před restartováním některé ze služeb zfs. Nejsem si jistý, jestli to udělají automaticky nebo ne, takže to možná budete muset udělat také.
BTW, pravděpodobně budete chtít apt-get install zfs-initramfs
, aby bylo zajištěno, že je zfs načten během initramfs.
Testoval jsem, že to funguje s:
# 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 je pracovní a / tank se po restartu automaticky připojí.
Závěr: nyní to funguje.
BTW, tento úsekový VM používá ZFS zvol vytvořený na mém hlavním sid
systém jako jeho disk. Okamžitě po počáteční instalaci, před instalací spl-dkms a zfs-dkms, jsem vytvořil jeho snímek, abych se mohl rychle vrátit a začít znovu, pokud se něco velkého pokazilo.
Poprvé jsem vytvořil zvol pouze s 1 GB a bylo potřeba jej později zvětšit, aby měl dostatek prostoru pro build-essential, linux-headers-amd64 atd.:
# 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 -
nastavení compression=lz4
na tanku ve VM je pravděpodobně horší než zbytečné – zvol má již na sobě kompresi lz4.
Komentáře
- Snažil jsem se nainstalujte jej na nový nový vm, ale ‚ m mám stále problémy, myslím .. některé služby se ‚ nespouštějí správně .. Jak daleko vidím, že seznam chyb ZFS DKMS je plný “ nelze ‚ nainstalovat “ hlášení chyb. Zajímalo by mě, jestli je normální, že vývojáři nechali uplynout měsíce po tolika požadavcích na opravu chyb reprodukovatelných pouze pomocí apt-get install zfs-dkms ..
- V části, kde požadujete adresář cd, jste mysleli: / etc / systemd / system /? protože / etc / systemd / service neexistuje .. také mám tuto zprávu: “ Restartování zfs-import-mount.service se nezdařilo: Jednotka zfs-import-mount.service není nalezeno. “ a “ se nepodařilo restartovat zfs-import-share.service: Jednotka zfs-import-share.služba nebyla nalezena. “
- Zdá se, že mám také problémy se službou ZFS-ZED čtením journalctl -xe: 11. srpna 23:03:23 debian zed [ 70734]: ZFS Event Daemon 0.6.5.9-5 (PID 70734) 11. srpna 23:03:23 debian zed [70734]: Nepodařilo se inicializovat libzfs 11. srpna 23:03:23 debian systemd [1]: zfs-zed.service : Hlavní proces ukončen, kód = ukončen, stav = 1 / PORUCHA 11. srpna 23:03:23 debian systemd [1]: zfs-zed.service: Jednotka vstoupila do stavu selhání. 11. srpna 23:03:23 debian systemd [1]: zfs-zed.service: Selhalo s výsledkem ‚ exit-code ‚.
- Změnily se / vylepšily se v Debianu 10? A pokud ano, mám poslat samostatnou otázku pro Debian 10?
dkms status | grep zfs
?