Hallo zusammen, heute werden wir Ubuntu in einer nativen ZFS-Root-Datei einrichten, die ein fortschrittliches Dateisystem und ein logischer Volume-Manager ist, der entwickelt wurde, um viele der Hauptprobleme zu überwinden, die in früheren Designs von Sun Microsystems gefunden wurden. Zu den Hauptmerkmalen von ZFS gehört seine Leistung mit Datenintegrität, die eine Prüfsumme der Daten enthält, um Schutz vor Korruption zu bieten. ZFS versucht automatisch, Fehler zu korrigieren, wenn Datenredundanz verfügbar ist. ZFS bietet Unterstützung für hohe Speicherkapazitäten und effiziente Datenkomprimierung mit physischen Pool-Speichergeräten, die einem Pool hinzugefügt werden, und Speicherplatz wird aus diesem gemeinsam genutzten Pool zugewiesen.
Basissystemvoraussetzungen
In diesem Setup verwenden wir ZFS auf einer installierten Ubuntu 14.04 64-Bit-Umgebung als Basis mit den folgenden Spezifikationen und Versionen.
- Betriebssystem:Ubuntu 14.04.1 LTS x86_64
- grub-install (GRUB) 2.02~beta2-9ubuntu1.3
- spl-dkms 0.6.4-2~utopisch
- zfs-dkms 0.6.4-3~utopisch
- zfs-initramfs 0.6.4-3~utopisch
- Freie Festplatten-/Partitionsgröße 10 GB
- Empfohlener verwendeter Speicher 4 GB
- Anzahl der verwendeten Kerne 2 GHz
ZFS-Installations-Setup
Wir werden das ZFS-Installations-Setup auf einem bereits installierten Ubuntu 14.04-Betriebssystem mit 10 GB freiem Speicherplatz darauf starten. Wir müssen mit dem Root-Benutzer angemeldet sein, um all diese Schritte auszuführen.
ZFS-Repository hinzufügen
Bevor wir ZFS verwenden können, müssen wir es installieren. Fügen Sie das Repository einfach mit dem folgenden Befehl zu apt-get hinzu:
root@ubuntu-14:~# apt-add-repository --yes ppa:zfs-native/stable
Systemaktualisierung mit ZFS-Installation
Hier müssen wir das Betriebssystem mit einem neuen Repository aktualisieren und dann beginnen wir mit der Installation mit apt-get.
root@ubuntu-14:~#apt-get update
root@ubuntu-14:~#apt-get install debootstrap ubuntu-zfs
Die Installation der Pakete wird einige Zeit in Anspruch nehmen, während die Kernel-Module kompiliert werden.
zfs-initramfs ist erforderlich, um die ZFS-Dienstprogramme zum Verwalten von ZFS-Dateisystemen in die initramfs-Boot-Images einzufügen.
root@ubuntu-14:~#apt-get install zfs-initramfs
Prüfung der ZFS-Module
Indem wir zuerst die folgenden Befehle verwenden, werden wir zfs-Module laden und dann prüfen, ob sie existieren oder nicht.
Festplattenpartitionierung für ZFS
Unsere Partitionstabelle sieht für ein einzelnes vdev-Pool-Layout wie folgt aus, wobei sda2 für das zfs-Root verwendet wird.
Root-Pool erstellen
Jetzt erstellen wir den Root-Pool mit /dev/sda*. Alternativ können Sie ihn auch mit /dev/disk/by-id-Links erstellen, um den Pool zu erstellen.
root@ubuntu-14:~# mke2fs -m 0 -L /boot/grub -j /dev/sda2
root@ubuntu-14:~# zpool create -o ashift=9 rpool /dev/sda2
Wir haben den rpool erstellt, den wir mit dem Befehl zpool list überprüfen können.
Stammdatensatz erstellen und Basissystem installieren
Hier erstellen wir den Root-Datensatz, exportieren ihn dann und importieren ihn erneut mit -d /dev/sda2
root@ubuntu-14:~# zfs create rpool/ROOT
root@ubuntu-14:~# zfs create rpool/ROOT/ubuntu-1
root@ubuntu-14:~# zfs umount -a
root@ubuntu-14:~# zfs set mountpoint=/ rpool/ROOT/ubuntu-1
root@ubuntu-14:~# zpool export rpool
root@ubuntu-14:~# zpool import -d /dev/sda2 -R /mnt rpool
Hängen Sie nun das Boot-Dateisystem für GRUB ein, das wir im vorherigen Schritt erstellt haben.
root@ubuntu-14:~# mkdir -p /mnt/boot/grub
root@ubuntu-14:~# mount /dev/sda2 /mnt/boot/grub
root@ubuntu-14:~# debootstrap trusty /mnt
Der debootstrap-Befehl hinterlässt das neue System in einem unkonfigurierten Zustand, den wir als nächstes mit seinen minimalen Konfigurationen durchführen werden.
Nach erfolgreichem Abschluss von debootstrap erhalten wir die Meldung über die erfolgreiche Installation des Basissystems. Nachdem wir nun die folgenden Befehle ausgeführt haben, aktualisieren wir das System, nachdem wir die folgenden Locales generiert haben.
root@ubuntu-14:~# cp /etc/hostname /mnt/etc/
root@ubuntu-14:~# cp /etc/hosts /mnt/etc/
root@ubuntu-14:~# mount --bind /dev /mnt/dev
root@ubuntu-14:~# mount --bind /proc /mnt/proc
root@ubuntu-14:~# mount --bind /sys /mnt/sys
root@ubuntu-14:~# chroot /mnt /bin/bash --login
root@ubuntu-14:/# locale-gen en_US.UTF-8
Also haben wir virtuelle Dateisysteme in der Umgebung erstellt, die für das neue System sichtbar sind, und PPA-Unterstützung in der Chroot-Umgebung mit dem Chroot-Befehl installiert.
Installieren von Ubuntu- und nativen Paketen
Das Paket ubuntu-minimal ist erforderlich, um ZFS unter Linux zu verwenden, wie es im PPA enthalten ist. Lassen Sie uns ZFS in der Chroot-Umgebung für das neue System installieren, indem Sie die folgenden Befehle ausführen.
root@ubuntu-14:/# apt-get install ubuntu-minimal software-properties-common
root@ubuntu-14:/# apt-add-repository --yes ppa:zfs-native/stable
root@ubuntu-14:/# apt-add-repository --yes ppa:zfs-native/grub < - See below note on this command
root@ubuntu-14:/# apt-get update
root@ubuntu-14:/# apt-get install --no-install-recommends linux-image-generic linux-headers-generic
root@ubuntu-14:/# apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Erzeuge eine neue Grub-Konfiguration
root@ubuntu-14:/# grub-probe /
zfs
root@ubuntu-14:~# ls /boot/grub/i386-pc/zfs*
/boot/grub/i386-pc/zfs.mod /boot/grub/i386-pc/zfscrypt.mod /boot/grub/i386-pc/zfsinfo.mod
root@ubuntu-14:~#
root@ubuntu-14:~# update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-3.13.0-24-generic
Korrekten Root-Eintrag überprüfen
root@ubuntu-14:~# grep "boot=zfs" /boot/grub/grub.cfg
linux /ROOT/ubuntu-1@/boot/vmlinuz-3.13.0-24-generic root=ZFS=rpool/ROOT/ubuntu-1 ro boot=zfs
linux /ROOT/ubuntu-1@/boot/vmlinuz-3.13.0-24-generic root=ZFS=rpool/ROOT/ubuntu-1 ro boot=zfs
root@ubuntu-14:~# grep zfs /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="boot=zfs"
Grub aktualisieren
Aktualisieren Sie grub, um das automatisch generierte zfs-Startmenü mit dem Befehl update-grub zuzulassen.
root@ubuntu-14:~# update-grub
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
done
Installieren Sie den Bootloader mit dem folgenden Befehl im MBR und stellen Sie sicher, dass Sie die Meldung zum Abschluss der Installation erhalten. Der Leselink ist erforderlich, da neuere GRUB-Veröffentlichungen keine symbolischen Links dereferenzieren.
root@ubuntu-14:~# grub-install $(readlink -f /dev/sda)
Installing for i386-pc platform.
Installation finished. No error reported.
Verlassen Sie jetzt die Chroot-Umgebung zurück in die Basisumgebung und heben Sie die Bereitstellung von allen Dateisystemen auf, falls eine Verbindung besteht.
ZFS-Bestätigung
Wir waren mit der gesamten Einrichtung fertig und prüfen jetzt mit dem df-Befehl die Bestätigung von rpool.
Einige bekannte Probleme
Während dieser Einrichtung treten möglicherweise einige Probleme beim ZFS-Start auf, die Sie mit den folgenden Verfahren vermeiden können.
Snapshot erstellen
Sie müssen einen ZFS-Snapshot erstellen, der nach dem ersten Start als Rettungsumgebung verwendet werden kann. Sie können den folgenden Befehl verwenden, um einen ZFS-Snapshot zu erstellen als.
root@ubuntu-14:~# apt-get clean
root@ubuntu-14:~# zfs snapshot rpool/ROOT/ubuntu1
Grub-Problem
Manchmal zeigt Grub kein Boot-Menü an oder es zeigt den Fehler "unbekanntes Dateisystem". Dies kann daran liegen, dass grub den zfs-Pool nicht lesen kann, oder die mögliche Ursache ist, dass Sie zuvor einige vdev offline geschaltet haben. Um sich davon zu erholen, müssen wir folgende zwei Dinge tun.
- Entfernen/trennen Sie die Offline-Laufwerke
- Mit der Live-CD-Methode können Sie von Ihrer ext4-Installation booten
- Oder tun Sie dies, indem Sie die Festplatten online schalten oder die Offline-Festplatte entfernen und sie erneut hinzufügen
Schlussfolgerung
ZFS verändert die Art und Weise, wie Daten verwaltet werden, indem es Datensicherheit und -integrität, praktisch unbegrenzte Skalierbarkeit sowie einfache und automatisierte Verwaltbarkeit bietet. Wir können also schlussfolgern, dass ZFS eine Betriebssystemfunktion ist, die bei einigen Administratoren, die ihre funktionsreiche Funktionalität kennen, eine sehr beliebte Wahl zu sein scheint.