Skip to content
Tiantan
Articles

Zainstaluj zfs na Debianie 9 stretch

On 18 lutego, 2021 by admin

Próbowałem zainstalować zfs na Debianie 9.1, ale mam kilka błędów.

Mój pierwszy instalacja obejmowała tylko zfs-dkms, ale przeczytałem w sieci, że do działania zfs-dkms wymagany jest również spl-dkms.


Moje kroki polegały na zmianie mojego sources.list dodając wkład niewolny w następujący sposób:

/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 

Wykonano klasyczną aktualizację apt-get, a następnie spróbowano zainstalować zfs w następujący sposób:

apt-get install spl-dkms 

i dopiero po

apt-get install zfs-dkms 

W rezultacie mam następujące błędy:

[email protected]:/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) ... 

Czytanie journalctl -xe zgodnie z sugestią:

[email protected]:/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 tu jest nie tak? Przegapiłem coś innego? W jaki sposób pakiet zfs-linux jest powiązany z instalacją zfs?

Jaki jest prawidłowy sposób instalacji zfs w Debianie 9?

Komentarze

  • Jaki jest wynik działania dkms status | grep zfs?

Odpowiedź

Właściwa odpowiedź @cas jest dobra, ale należy wprowadzić pewne poprawki.

Weźmy więc nową instalację Debiana 9 i zakładając, że niewolne repozytoria Contribution również nie są włączone.


Krok 0 – Włącz repozytoria niewolnych kontrybucji

Użyłem sed, aby znaleźć i zamienić słowo główne wewnątrz /etc/apt/sources.list

sed -i "s/main/main contrib non-free/g" /etc/apt/sources.list apt-get update 

Krok 1 – instalacja ZFS

Od czasu ostatnich poprawek spl-dkms jest poprawnie wyświetlany jako zfs-dkms de pendency, więc jest wywoływana automatycznie i nie ma potrzeby instalowania go ręcznie przed zfs-dkms. Dowiązanie symboliczne jest potrzebne z powodu błędu w dystrybucji zfs w Debianie, który nie szuka pliku binarnego rm we właściwej pozycji.

apt -y install linux-headers-$(uname -r) ln -s /bin/rm /usr/bin/rm apt-get -y install zfs-dkms 

Krok 2 – Restart ZFS

W tym momencie zfs-dkms jest zainstalowany, ale generuje błędy w journalctl -xe; aby poprawnie uruchomić zfs użyj:

/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share 

Krok 3 – MUSISZ STWORZYĆ CO NAJMNIEJ JEDNEGO ZPOOLA

W tym momencie odkryłem że musisz utworzyć zpool przed ponownym uruchomieniem , w przeciwnym razie zfs nie załaduje odpowiednich modułów, jeśli nie ma zpoolów. To jest sortowanie mechanizmu oszczędzania zasobów (ale nawet w tym przypadku będzie to nadal powodować błędy wewnątrz journalctl -xe)

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348

„Nie robimy tego, ponieważ moduły ZFS skaziłyby jądro, jeśli nie ma dostępnego zpool, nie należy go ładować.

Jeśli przegapisz tę część, musisz zacząć od Krok 2

Na przykład korzystając z przykładu dostarczonego przez @cas, możesz utworzyć zpool na podstawie tego pliku lub bezpośrednio utworzyć zpool na dysku.

truncate -s 100M /root/z1 truncate -s 100M /root/z2 zpool create tank /root/z1 /root/z2 zpool scrub tank zpool status 

następnie po reboot wszystko będzie działać bez błędów w journalctl -xe

Odpowiedź

Drobne różnice w moim przypadku w Debianie 9.4 – po dodaniu źródeł 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 

Montaż był NIE obecne westchnienie – odkryto, że istnieje /var/jeff z zawartością – usunąłem to z drogi i wykonałem reboot …

Po ponownym uruchomieniu:

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 – wszyscy obecni i zabezpieczeni przed gniciem 🙂

Komentarze

  • +1, ale zdecydowanie zalecamy używanie /dev/disk/by-id/? zamiast urządzeń /dev/sd?. Użyj nazw by-id podczas tworzenia puli lub napraw później, używając zpool export <pool>, a następnie zpool import -d /dev/disk/by-id/ <pool>. Nazwy te, w przeciwieństwie do / dev / sd *, BĘDĄ utrzymywać się po ponownym uruchomieniu. Ponadto, jeśli masz drukarkę etykiet, możesz drukować etykiety z krótkimi wersjami nazw urządzeń według identyfikatora (tam ' jest zwykle częścią numeru seryjnego nazwy, co jest dobrym , krótka, unikalna etykieta) i oznacz dyski, aby ułatwić ich identyfikację, jeśli kiedykolwiek będą wymagały wymiany.
  • Ummm – ale ZFS nie dba o aliasy dysków używane podczas tworzenia – wszystkie informacje są zapisywane do zfs-part9 na dysku – i to jest to, co jest używane do konstruowania tablicy.Nie ' nie obchodzi mnie, czy / dev / sdb zmieni się na coś innego w przyszłości i zawsze sprawdzam lsblk -f po prostu przed dychaniem ze sprzętem napędowym – w przypadku naszych serwerów produkcyjnych narzędzie Dell hdd blink jest przydatne do powiązania aktualnego aliasu systemu operacyjnego z jednostką fizyczną 🙂 – Myślę, że / dev / disk / by-id jest bardziej przydatne dla innych systemów montowania, które nie ' nie ma wbudowanej spójności ZFS ' – np. fstab.
  • użycie by-id da ci znaczące / przydatne nazwy (identyfikujące markę, model i numer seryjny każdego dysku ') w zpool, takie jak status i list, które można łatwo skopiować i wkleić do dowolnego niezbędnego zpool w trybie offline / odłącz / replace / etc polecenia. sda nie ' nie mówi nic użytecznego. ata-ST4000VN008-2DR166_ZDH35XXX określa dokładnie, jakiego rodzaju jest to dysk i jego numer seryjny. Nadal możesz uzyskać (aktualne) krótkie nazwy programistów, jeśli kiedykolwiek zechcesz, używając opcji -L z zpool list, zpool status, itp. (z mojego doświadczenia wynika, że są przydatne głównie z zpool list -L -v).
  • IME, znaczące nazwy pomagają zmniejszyć liczbę błędów ludzkich. ' łatwo się pomylić, np. Sdd jako sdf. znacznie trudniej jest błędnie wpisać nazwę według identyfikatora.
  • Lol – wielu ludzi ma to samo zalecenie – osobiście łatwiej jest mi zapamiętać i wpisać sdc sde sdf i sdg. Kupujemy dyski partiami i wszystkie zaczynają się od tych samych 48 lub więcej znaków by-id i mają tylko 2-4-cyfrowe sufiksy, które się różnią. Ludzie nie ' nie wpisują nazw według identyfikatora – używają uzupełniania tabulatorami – co jest bardziej prawdopodobne, że doprowadzi to do błędu IMHO. Uważam, że rozróżnienie jednej litery w trzyznakowym jest znacznie łatwiejsze niż 2-4 cyfry w 52-znakowej nazwie. Wiem, że wielu ludzi również poleca UUID. Ponieważ ZFS nie ' nie obchodzi, myślę, że będę trzymać się tego, co uważam za łatwiejsze – mniej czasami znaczy więcej 🙂

Odpowiedź

Właśnie utworzyłem zupełnie nową maszynę wirtualną stretch, aby to przetestować. Minimalna instalacja (tylko ssh i standardowe narzędzia systemowe), edytuj pliki sources.list, aby dodać wkład i niewolne, a następnie:

apt-get install spl-dkms zfs-dkms 

Możesz też chcieć ręcznie zainstaluj zfsutils-linux. Powinien zostać zainstalowany automatycznie podczas instalacji zfs-dkms, ale zależności mogą się różnić dla różnych wydań Debiana i różnych wersji pakietów Debian ZoL:

apt-get install zfsutils-linux 

Wygląda na to, że w pliku jednostki systemowej zfs-share jest błąd. Próbuje uruchomić /usr/bin/rm zamiast /bin/rm.

Szybką naprawą jest uruchomienie ln -s /bin/rm /usr/bin lub alternatywnie:

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 następnie ponownie uruchom usługi zfs:

systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share 

UWAGA: ręcznie uruchomiłem modprobe zfs przed ponownym uruchomieniem którejkolwiek z usług zfs. Nie jestem pewien, czy zrobią to automatycznie, czy też nie, więc być może będziesz musiał to zrobić.

Przy okazji, prawdopodobnie chcesz też apt-get install zfs-initramfs , aby upewnić się, że zfs jest ładowany podczas initramfs.


Sprawdziłem, czy to działa z:

# 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 jest działa i / tank jest automatycznie montowany po restarcie.

Wniosek: teraz działa.


Przy okazji, ta maszyna wirtualna stretch używa ZFS zvol utworzonego na moim głównym jako dysk. Zrobiłem migawkę natychmiast po początkowej instalacji, przed zainstalowaniem spl-dkms i zfs-dkms, aby móc szybko powrócić i zacząć od nowa, jeśli coś pójdzie nie tak.

Najpierw utworzyłem zvol z tylko 1 GB i trzeba było go później zwiększyć, aby mieć wystarczająco dużo miejsca na build-essential, linux-headers-amd64 itp.:

# zfs list -r -t all export/volumes/stretch NAME USED AVAIL REFER MOUNTPOINT export/volumes/stretch 6.25G 834G 1.77G - export/volumes/[email protected]:31:04 279M - 1.09G - 

ustawienie compression=lz4 na zbiorniku w maszynie wirtualnej jest prawdopodobnie gorszy niż bezużyteczny – zvol ma już kompresję lz4.

Komentarze

  • Próbowałem zainstalować go na nowej, nowej maszynie wirtualnej, ale ' nadal mam problemy. Niektóre usługi nie ' nie uruchamiają się poprawnie. Jak daleko widzę, że lista błędów ZFS DKMS jest wypełniona ” czy ' t zainstalować ” raporty o błędach. Zastanawiam się, czy to normalne, że programiści pozwalają mijać miesiące po tak wielu żądaniach naprawienia błędów, które można odtworzyć tylko za pomocą apt-get install zfs-dkms ..
  • W części, w której pytasz o katalog cd, który miałeś na myśli: systemd / system /? ponieważ / etc / systemd / service nie istnieje .. również mam ten komunikat: ” Nie udało się zrestartować zfs-import-mount.service: Unit zfs-import-mount.service not znaleziono. ” i ” Nie udało się ponownie uruchomić zfs-import-share.service: Jednostka zfs-import-share.nie znaleziono usługi. ”
  • Wygląda na to, że mam również problemy z usługą ZFS-ZED czytając dziennik journalctl -xe: 11 sierpnia 23:03:23 debian zed [ 70734]: Demon zdarzenia ZFS 0.6.5.9-5 (PID 70734) 11 sierpnia 23:03:23 debian zed [70734]: Nie udało się zainicjować libzfs 11 sierpnia 23:03:23 debian systemd [1]: zfs-zed.service : Zakończono proces główny, kod = zakończono, status = 1 / FAILURE 11 sierpnia 23:03:23 debian systemd [1]: zfs-zed.service: Jednostka wprowadzona jako błąd. 11 sierpnia 23:03:23 debian systemd [1]: zfs-zed.service: Błąd z wynikiem ' kod wyjścia '.
  • Czy coś się zmieniło / poprawiło w Debianie 10? A jeśli tak, czy powinienem zadać osobne pytanie dotyczące Debiana 10?

Written by admin

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Najnowsze wpisy

  • Używając baluna z rezonansowym dipolem
  • Jaka jest różnica między “ nie może ” a “ nie może ”? [duplicate]
  • Czy w JFK możesz przemieszczać się między terminalami lotniczymi w przypadku lotów krajowych?
  • “ Głęboko docenione ” lub “ bardzo cenione ”
  • Co oznacza ' abstrakcyjne pomysły '? [zamknięte]

Archiwa

  • Luty 2021
  • Styczeń 2021
  • Grudzień 2020
  • Listopad 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top