Próbowałem zainstalować ZFS na Debianie 9.1, jednak występują pewne błędy.
Moja pierwsza instalacja dotyczyła tylko zfs-dkms, ale przeczytałem w sieci, że do uruchomienia zfs-dkms wymagany jest również spl-dkms.
Moje kroki polegały na zmianie źródła.list dodając contrib non-free 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 próbowałem zainstalować ZFS z następującymi elementami:
apt-get install spl-dkms
i dopiero po
apt-get install zfs-dkms
W rezultacie mam te błędy:
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) ...
Czytanie Journalctl -xe zgodnie z sugestią dostaję:
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 tu jest nie tak? Brakowało mi czegoś 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?
dkms status | grep zfs
?Odpowiedzi:
Rzeczywista odpowiedź @cas jest dobra, ale należy wprowadzić pewne poprawki.
Więc weźmy świeżą instalację Debiana 9 i zakładając, że niewolne repozytoria contrib również nie są włączone.
Krok 0 - Włącz niewolne repozytoria contrib
Kiedyś
sed
znajdowałem i zamieniałem słowo główne w środku/etc/apt/sources.list
Krok 1 - Instalacja ZFS
Ponieważ ostatnie poprawki
spl-dkms
są poprawnie postrzegane jakozfs-dkms
zależność, dlatego są przywoływane automatycznie i nie trzeba wcześniej instalować go ręczniezfs-dkms
. Dowiązanie symboliczne jest potrzebne z powodu błędu w dystrybucji zfs w Debianie, który nie szuka plikurm
binarnego we właściwej pozycji.Krok 2 - Uruchom ponownie ZFS
W tym momencie zfs-dkms jest zainstalowany, ale powoduje błędy
journalctl -xe
; aby poprawnie uruchomić ZFS użyj:Krok 3 - MUSISZ TWORZYĆ CO NAJMNIEJ JEDEN ZPOOL
W tym momencie odkryłem, że TY musisz utworzyć Zpool przed ponownym uruchomieniem, w przeciwnym razie ZFS nie załaduje odpowiednich modułów, jeśli nie ma Zpool. Jest to rodzaj mechanizmu oszczędzania zasobów (ale nawet w takim przypadku nadal będzie to powodować błędy
journalctl -xe
)https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
Jeśli tęsknisz za tą częścią, musisz zacząć od kroku 2
Na przykład, korzystając z przykładu podanego przez @cas, możesz utworzyć ten plik zpool lub bezpośrednio utworzyć dysk oparty na dysku.
wtedy po
reboot
wszystkim wszystko będzie działać bez błędów wjournalctl -xe
źródło
Nieznaczne wersje dla mnie w Debianie 9.4 - po dodaniu źródeł Apt:
Wierzchowiec NIE był obecny westchnienie - odkrył, że istnieje coś
/var/jeff
z zawartością - usunął to z drogi i zrobiłreboot
...Po ponownym uruchomieniu:
Brawo - wszystkie obecne i chronione przed gniciem :)
źródło
/dev/disk/by-id/?
zamiast/dev/sd?
urządzeń. Podczas tworzenia puli użyj nazw by-id lub napraw później, azpool export <pool>
następniezpool import -d /dev/disk/by-id/ <pool>
. Te nazwy, w przeciwieństwie do / dev / sd *, BĘDĄ utrzymywać się podczas ponownego uruchamiania. Ponadto, jeśli masz drukarkę etykiet, możesz drukować etykiety z krótkimi wersjami nazw urządzeń pomocniczych (zwykle nazwa zawiera część numeru seryjnego, która tworzy dobrą, krótką, unikalną etykietę) i oznaczać dyski, aby je wykonać łatwe do zidentyfikowania, czy kiedykolwiek trzeba je wymienić.lsblk -f
tuż przed zakłóceniem sprzętem napędu - w przypadku naszych serwerów produkcyjnych narzędzie mrugania HDD firmy Dell jest przydatne w odniesieniu do aktualnego systemu operacyjnego. alias do jednostki fizycznej :) - Myślę, że / dev / disk / by-id jest bardziej przydatny dla innych systemów montażowych, które nie mają wbudowanej spójności ZFS - np. fstab.zpool
poleceniu podobnym dostatus
ilist
, które można łatwo wkleić i wkleić w dowolne niezbędne polecenia zpool offline / detach / replace / etc.sda
nic ci nie mówi.ata-ST4000VN008-2DR166_ZDH35XXX
dokładnie określa, jaki to rodzaj napędu i jego numer seryjny. Nadal można dostać (bieżącego) krótkich nazw dev jeśli kiedykolwiek chcesz je za pomocą-L
opcji zzpool list
,zpool status
itp (z mojego doświadczenia, głównie z użytecznegozpool list -L -v
).Właśnie stworzyłem zupełnie nową maszynę VM do testowania tego. Minimalna instalacja (tylko ssh i standardowe narzędzia systemowe), edytuj sources.list, aby dodać contrib i non-free, a następnie:
Możesz także chcieć zainstalować ręcznie
zfsutils-linux
. Powinien zostać zainstalowany automatycznie podczas instalacji,zfs-dkms
ale zależności mogą się różnić dla różnych wydań Debiana i dla różnych wersji pakietów Debian ZoL:Wygląda na to, że w pliku jednostki systemowej występuje błąd
zfs-share
. Próbuje uruchomić/usr/bin/rm
zamiast/bin/rm
.Szybką poprawką jest uruchomienie
ln -s /bin/rm /usr/bin
lub alternatywnie:a następnie uruchom ponownie usługi ZFS:
UWAGA: Uruchomiłem ręcznie
modprobe zfs
przed ponownym uruchomieniem dowolnej usługi ZFS. Nie jestem pewien, czy zrobią to automatycznie, czy nie, więc być może będziesz musiał to zrobić.BTW, zapewne też chcesz
apt-get install zfs-initramfs
, aby upewnić się, że zfs jest ładowany podczas initramfs.Testowałem, że działa to z:
Zpool działa i / tank jest automatycznie montowany po restarcie.
Wniosek: teraz działa.
BTW, ta rozciągliwa VM używa dysku ZFS utworzonego w moim głównym
sid
systemie jako dysku. Zrobiłem migawkę, jeśli natychmiast po pierwszej instalacji, przed zainstalowaniem spl-dkms i zfs-dkms, dzięki czemu mogłem szybko przywrócić i zacząć od nowa, jeśli coś poważnego pójdzie nie tak.Najpierw zrobiłem zvol z zaledwie 1 GB i musiałem go później zwiększyć, aby mieć wystarczająco dużo miejsca na niezbędne do zbudowania, Linux-headers-amd64 itp .:
ustawienie
compression=lz4
na czołgu w VM jest prawdopodobnie gorsze niż bezużyteczne - zvol ma już na sobie kompresję LZ4.źródło