Installieren Sie zfs auf Debian 9 Stretch
On Februar 18, 2021 by adminIch habe versucht, zfs auf Debian 9.1 zu installieren, es treten jedoch einige Fehler auf.
Meine erste Die Installation war nur von zfs-dkms, aber ich habe im Internet gelesen, dass auch die spl-dkms erforderlich sind, damit zfs-dkms ausgeführt werden kann.
Meine Schritte bestanden darin, meine sources.list Hinzufügen des Beitrag nicht frei wie folgt:
/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
Hat ein klassisches apt-get-Update durchgeführt und dann versucht, zfs mit den folgenden Funktionen zu installieren:
apt-get install spl-dkms
und erst nach
apt-get install zfs-dkms
Als Ergebnis habe ich folgende Fehler:
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) ...
Lesen von journalctl -xe wie vorgeschlagen:
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.
Was ist hier falsch? Ich habe etwas anderes verpasst? Wie hängt das zfs-linux -Paket mit der zfs-Installation zusammen?
Wie installiere ich zfs korrekt in Debian 9?
Kommentare
- Was ist die Ausgabe von
dkms status | grep zfs
?
Antwort
Die tatsächliche Antwort von @cas ist gut, es müssen jedoch einige Korrekturen vorgenommen werden.
Nehmen wir also eine Neuinstallation von Debian 9 und gehen wir davon aus, dass Beiträge nicht frei Repositorys sind ebenfalls nicht aktiviert.
Schritt 0 – Aktivieren Sie die nicht freien Beiträge-Repositorys
Ich habe sed
verwendet, um das Wort main in /etc/apt/sources.list
Schritt 1 – ZFS-Installation
Seit den letzten Korrekturen wird spl-dkms
korrekt als de Abhängig davon, dass es automatisch abgerufen wird und es nicht erforderlich ist, es manuell vor zfs-dkms
zu installieren. Die symbolische Verknüpfung wird aufgrund eines Fehlers in der zfs-Distribution in Debian benötigt, der nicht nach rm
Binärdatei an der richtigen Position sucht.
apt -y install linux-headers-$(uname -r) ln -s /bin/rm /usr/bin/rm apt-get -y install zfs-dkms
Schritt 2 – ZFS-Neustart
Zu diesem Zeitpunkt ist zfs-dkms installiert, es werden jedoch Fehler in journalctl -xe
ausgegeben. Um zfs richtig zu starten, verwenden Sie:
/sbin/modprobe zfs systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
Schritt 3 – SIE MÜSSEN MINDESTENS EIN ZPOOL ERSTELLEN
An diesem Punkt entdeckte ich dass SIE vor dem Neustart einen zpool erstellen müssen andernfalls lädt zfs nicht die richtigen Module, wenn keine zpools vorhanden sind. Dies ist eine Sortierung des Ressourceneinsparungsmechanismus (aber selbst in diesem Fall werden immer noch Fehler in journalctl -xe
)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
„Wir tun dies nicht, weil ZFS-Module den Kernel beschädigen würden. Wenn kein Zpool verfügbar ist, sollte er nicht geladen werden.
Wenn Sie diesen Teil verpassen, müssen Sie mit Schritt 2
Mithilfe des von @cas bereitgestellten Beispiels können Sie beispielsweise diesen dateibasierten Zpool erstellen oder direkt Ihre festplattenbasierten Zpools erstellen.
truncate -s 100M /root/z1 truncate -s 100M /root/z2 zpool create tank /root/z1 /root/z2 zpool scrub tank zpool status
dann nach einem reboot
funktioniert alles fehlerfrei in journalctl -xe
Antwort
Leichte Abweichungen für Debian 9.4 – nach den Ergänzungen der Apt-Quellen:
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
Der Mount war NICHT Seufzer vorhanden – es wurde festgestellt, dass ein /var/jeff
mit Inhalt – hat das aus dem Weg geräumt und eine reboot
…
Nach dem Neustart durchgeführt:
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 vorhanden und bitfäulnisgeschützt 🙂
Kommentare
- +1, empfiehlt jedoch dringend,
/dev/disk/by-id/?
anstelle von/dev/sd?
Geräten zu verwenden. Verwenden Sie entweder die Namen der By-IDs beim Erstellen des Pools oder korrigieren Sie sie später mitzpool export <pool>
gefolgt vonzpool import -d /dev/disk/by-id/ <pool>
. Diese Namen bleiben im Gegensatz zu / dev / sd * bei Neustarts erhalten. Wenn Sie über einen Etikettendrucker verfügen, können Sie auch Etiketten mit Kurzversionen der Gerätenamen nach ID drucken (es gibt normalerweise einen Teil der Seriennummer des Namens, der eine gute Nummer darstellt. ‚) , kurzes, eindeutiges Etikett) und beschriften Sie die Laufwerke, damit sie leicht identifiziert werden können, wenn sie jemals ersetzt werden müssen. - Ummm – aber ZFS kümmert sich nicht um die beim Erstellen verwendeten Festplatten-Aliase – alle Informationen werden geschrieben zu zfs-part9 auf der Festplatte – und das wird zum Erstellen des Arrays verwendet.Es ist mir ‚ egal, ob sich in / dev / sdb in Zukunft etwas anderes ändert, und ich überprüfe immer nur mit
lsblk -f
Bevor wir uns mit der Laufwerkshardware beschäftigen – für unsere Produktionsserver ist das Dell HDD-Blink-Tool hilfreich, um den aktuellen Betriebssystem-Alias mit der physischen Einheit in Beziehung zu setzen 🙂 – Ich denke, die Datei / dev / disk / by-id ist für andere Montagesysteme nützlicher ‚ hat keine ZFS ‚ in Konsistenz eingebaut – z fstab. - Wenn Sie by-id verwenden, erhalten Sie in iv id = aussagekräftige / nützliche Namen (die die Marke, das Modell und die Seriennummer jedes Laufwerks ‚ identifizieren) Befehl „5551c7b00a“>
wiestatus
undlist
, der einfach offline in jeden erforderlichen zpool kopiert / getrennt werden kann / replace / etc Befehle.sda
‚ sagt Ihnen nichts Nützliches.ata-ST4000VN008-2DR166_ZDH35XXX
gibt genau an, um welche Art von Laufwerk es sich handelt und welche Seriennummer es hat. Sie können die (aktuellen) kurzen Entwicklernamen weiterhin abrufen, wenn Sie sie jemals möchten, indem Sie die Option-L
mitzpool list
, usw. (meiner Erfahrung nach meistens nützlich beizpool list -L -v
).
Antwort
Ich habe gerade eine brandneue Stretch-VM erstellt, um dies zu testen. Minimale Installation (nur ssh und Standard-Systemtools), bearbeiten Sie die Datei „sources.list“, um Contrib und Non-Free hinzuzufügen.
apt-get install spl-dkms zfs-dkms
Möglicherweise möchten Sie auch manuell Installieren Sie zfsutils-linux
. Es sollte automatisch installiert werden, wenn Sie zfs-dkms
installieren. Die Abhängigkeiten können jedoch für verschiedene Debian-Versionen und für verschiedene Versionen der Debian ZoL-Pakete variieren:
apt-get install zfsutils-linux
Es sieht so aus, als ob „ein Fehler in der systemd-Einheitendatei für zfs-share
vorliegt. Es wird versucht, /usr/bin/rm
anstelle von /bin/rm
.
Die schnelle Lösung besteht darin, ln -s /bin/rm /usr/bin
auszuführen, oder alternativ:
cd /etc/systemd/system cp -a /lib/systemd/system/zfs-share.service . edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
und starten Sie dann die zfs-Dienste neu:
systemctl restart zfs-import-cache systemctl restart zfs-import-scan systemctl restart zfs-mount systemctl restart zfs-share
HINWEIS: Ich habe modprobe zfs
vor dem Neustart eines der zfs-Dienste. Ich bin mir nicht sicher, ob sie das automatisch tun oder nicht, daher müssen Sie dies möglicherweise auch tun.
Übrigens möchten Sie wahrscheinlich auch apt-get install zfs-initramfs
, um sicherzustellen, dass zfs während des initramfs geladen wird.
Ich habe getestet, dass dies funktioniert mit:
# 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
Der zpool ist Arbeiten und / Tank wird nach einem Neustart automatisch bereitgestellt.
Fazit: Es funktioniert jetzt.
Übrigens verwendet diese Stretch-VM ein ZFS-Zvol, das auf meinem Hauptteil sid
System als Festplatte. Ich habe unmittelbar nach der Erstinstallation einen Schnappschuss davon gemacht, bevor ich spl-dkms und zfs-dkms installiert habe, damit ich schnell zurückkehren und neu starten kann, wenn etwas Wichtiges schief geht.
Ich habe das zvol zuerst mit nur 1 GB erstellt und musste später vergrößert werden, um genügend Speicherplatz für Build-Essential, Linux-Header-amd64 usw. zu haben:
# 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 -
Einstellung compression=lz4
auf Tank in der VM ist wahrscheinlich schlimmer als nutzlos – das zvol hat bereits eine lz4-Komprimierung.
Kommentare
- Ich habe es versucht Installieren Sie es auf einer neuen VM, aber ich ‚ habe immer noch Probleme, denke ich. Einige Dienste starten ‚ nicht richtig Bisher kann ich sehen, dass die ZFS-DKMS-Fehlerliste mit “ gefüllt ist. ‚ “ Fehlerberichte. Ich frage mich, ob es normal ist, dass Entwickler Monate vergehen lassen, nachdem so viele Bugfix-Anfragen nur mit apt-get install zfs-dkms reproduzierbar sind.
- Auf der Seite, auf der Sie nach dem CD-Verzeichnis fragen, das Sie gemeint haben: / etc / systemd / system /? weil / etc / systemd / service nicht vorhanden ist .. auch ich habe diese Meldung: “ Neustart von zfs-import-mount.service fehlgeschlagen: Einheit zfs-import-mount.service nicht gefunden. “ und “ Neustart von zfs-import-share.service fehlgeschlagen: Unit zfs-import-share.Dienst nicht gefunden. “
- Es scheint, dass ich auch Probleme mit dem ZFS-ZED-Dienst habe, indem ich journalctl -xe lese: 11. August 23:03:23 debian zed [ 70734]: ZFS Event Daemon 0.6.5.9-5 (PID 70734) 11. August 23:03:23 debian zed [70734]: libzfs konnte nicht initialisiert werden 11. August 23:03:23 debian systemd [1]: zfs-zed.service : Hauptprozess beendet, Code = beendet, Status = 1 / FAILURE 11. August 23:03:23 debian systemd [1]: zfs-zed.service: Einheit in ausgefallenen Zustand versetzt. 11. August 23:03:23 debian systemd [1]: zfs-zed.service: Fehler mit Ergebnis ‚ Exit-Code ‚.
- Haben sich die Dinge mit Debian 10 geändert / verbessert? Und wenn ja, sollte ich eine separate Frage für Debian 10 stellen?
Schreibe einen Kommentar