ZFS hat Volume-Manager und Dateisystem mit mehreren erweiterten Funktionen kombiniert.
Dies ist der erste Teil einer Reihe von Artikeln über ZFS.
In diesem Artikel bieten wir eine allgemeine Einführung in ZFS, erklären die Installation von ZFS unter Linux, das Erstellen eines ZFS-Pools und mehrere ZFS-zpool-Befehle.
1. Einführung in ZFS
Im Folgenden sind einige der Funktionen des ZFS-Dateisystems aufgeführt:
- Schutz vor Datenkorruption
- Unterstützung für hohe Speicherkapazitäten
- Effiziente Datenkomprimierung
- Machen Sie Snapshots des Dateisystems
- Copy-on-Write-Klone
- RAID Z-Unterstützung
- Integritätsprüfung
- Automatische Reparatur und Unterstützung für native NFSV4-ACL
Diese wurde ursprünglich von Sun Microsystems für die Solaris-Plattform entwickelt. Im Jahr 2010 erwarb Oracle Sun Microsystems und hat viele Verbesserungen am ZFS-Dateisystem vorgenommen.
ZFS wird in letzter Zeit unter Linux immer beliebter, da es stabiler geworden ist.
Die Portierung von ZFS auf Linux wird vom Lawrence Livermore National Laboratory (LLNL) erstellt.
ZFS unter Linux ist ein Kernelmodul, das Sie herunterladen, kompilieren und installieren können. Sie müssen Ihren Kernel nicht patchen oder neu kompilieren.
Sie können die Quellpakete für Ihre jeweilige OS-Distribution hier herunterladen.
2. ZFS unter Linux installieren
In diesem Artikel installieren wir ZFS auf dem CentOS-Server. Aber die unten erwähnten zfs-Befehle sind für fast alle Distributionen auf Linux-Distributionen gleich, mit Ausnahme des Installationsteils.
Führen Sie die folgenden yum-Befehle aus, um ZFS auf Redhat / CentOS zu installieren.
# yum localinstall --nogpgcheck https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm # yum install kernel-devel zfs
Bitte stellen Sie sicher, dass alle Abhängigkeiten erfüllt sind. Eine der Abhängigkeiten, bei denen die Installation normalerweise fehlschlägt, wäre die Anforderung, den GCC-Compiler zu installieren. Installieren Sie in diesem Fall bitte den GCC-Compiler, bevor Sie ZFS installieren.
Stellen Sie sicher, dass die ZFS-Module wie unten gezeigt mit dem Befehl lsmod geladen werden:
# lsmod | grep zfs zfs 1188621 0 zcommon 45591 1 zfs znvpair 81046 2 zfs,zcommon zavl 6900 1 zfs zunicode 323051 1 zfs spl 264548 5 zfs,zcommon,znvpair,zavl,zunicode
In einem ähnlichen Zusammenhang möchten Sie vielleicht etwas über die Grundlagen lesen, wie ladbare Linux-Kernel-Module erstellt werden.
Wir haben einige Festplatten auf diesem Server hinzugefügt (/dev/sdb bis /dev/sdf), um die ZFS-Funktionalität zu testen.
# ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 Jul 15 15:52 /dev/sda brw-rw----. 1 root disk 8, 1 Jul 15 15:52 /dev/sda1 brw-rw----. 1 root disk 8, 2 Jul 15 15:52 /dev/sda2 brw-rw----. 1 root disk 8, 3 Jul 15 15:52 /dev/sda3 brw-rw----. 1 root disk 8, 16 Jul 16 10:57 /dev/sdb brw-rw----. 1 root disk 8, 32 Jul 16 10:57 /dev/sdc brw-rw----. 1 root disk 8, 48 Jul 16 10:58 /dev/sdd brw-rw----. 1 root disk 8, 64 Jul 16 11:27 /dev/sde brw-rw----. 1 root disk 8, 80 Jul 16 11:27 /dev/sdf
3. Erstellen Sie einen zpool
Zpool-Befehl zum Konfigurieren der Speicherpools in ZFS. Speicherpool ist eine Sammlung von Geräten, die physischen Speicher und Datenreplikation für zfs-Datensätze bereitstellen.
Folgendes erstellt einen zpool.
# zpool create -f mypool raidz sdb sdc sdd sde sdf
Im obigen Beispiel:
- create steht für das Erstellen eines neuen Pools.
- Die Option -f dient dazu, Plattenpartitionsbezeichnungen zu ignorieren, da es sich um neue Platten handelt
- raidz ist Raid-Level. RAIDZ ist nichts anderes als die Variante von RAID-5, die eine bessere Verteilung der Parität ermöglicht und das „RAID-5“-Schreibloch (Daten- und Paritätsinkonsistenz nach einem Stromausfall) beseitigt.
- Eine raidz-Gruppe kann einfache, doppelte oder Tribe-Parität haben, was bedeutet, dass sie einen, zwei oder drei Fehler aushalten kann, ohne Daten zu verlieren. Daten und Parität werden über alle Laufwerke innerhalb einer raidz-Gruppe verteilt.
Überprüfen Sie als Nächstes den Status des soeben erstellten Zpools.
# zpool status pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 sdf ONLINE 0 0 0 errors: No known data errors
Sobald der Pool erstellt ist, sehen Sie, wenn Sie df –h ausführen, dass der neu erstellte Pool automatisch auf dem Einhängepunkt gemountet wird.
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vglocal-rootlv 14G 2.4G 11G 18% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 504M 46M 433M 10% /boot mypool 3.9G 0 3.9G 0% /mypool
4. Erstellen Sie einen gespiegelten Pool
Verwenden Sie zum Erstellen eines gespiegelten Pools den Befehl zpool create mit den folgenden Optionen.
Wenn eine der Festplatten in der jeweiligen Spiegelgruppe ausfällt, enthält die andere Festplatte immer noch die Daten. Sobald die ausgefallene Festplatte ersetzt wird, werden die Inhalte auf die neu ersetzte Festplatte zurückgespiegelt (auch Resilvering genannt).
# zpool create -f mypool mirror sdb sdc mirror sdd sde
Überprüfen Sie als Nächstes den Status des gespiegelten Zpools, den wir gerade erstellt haben:
# zpool status -v pool: mypool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 errors: No known data errors
5. Zpool-Import und -Export
Es gibt einige Fälle, in denen Sie zfs-Pools zwischen Systemen migrieren müssen.
ZFS macht dies möglich, indem ein Pool von einem System exportiert und in ein anderes System importiert wird.
Um einen beliebigen Pool zu exportieren, verwenden Sie den Befehl zpool export und der Befehl zpool import wird zum Importieren des Pools verwendet, wie im folgenden Beispiel gezeigt:
# zpool export mypool # zpool import mypool
6. E/A-Statistiken des ZFS-Pools anzeigen
Um die E/A-Statistiken von zpool anzuzeigen, verwenden Sie den Befehl zpool iostat wie unten gezeigt:
# zpool iostat -v mypool capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- mypool 147K 4.95G 0 0 33 252 mirror 54K 3.97G 0 0 10 84 sdb - - 0 0 536 612 sdc - - 0 0 282 612 mirror 93K 1008M 0 0 23 168 sdd - - 0 0 288 696 sde - - 0 0 294 696 ---------- ----- ----- ----- ----- ----- -----
7. Einen ZFS-Pool löschen
Verwenden Sie zum Zerstören eines Pools den Befehl zpool Destroy wie unten gezeigt:
# zpool destroy mypool
8. Beschädigte Festplatte im ZFS-Pool ersetzen
Um eine Festplatte nach einem Fehler oder einer Beschädigung zu ersetzen, verwenden Sie den folgenden Befehl:
# zpool replace mypool sde sdf
9. ZFS-Pool mit neuer Festplatte erweitern
Um den zpool durch Hinzufügen einer neuen Festplatte zu erweitern, verwenden Sie den unten angegebenen zpool-Befehl:
# zpool add -f mypool sde
10. Hinzufügen einer Ersatzfestplatte zum ZFS-Pool
Sie können dem zfs-Pool auch mit dem folgenden Befehl eine Ersatzfestplatte hinzufügen, indem Sie einem zfs-Pool ein Ersatzgerät hinzufügen.
Die ausgefallenen Festplatten werden automatisch durch das Ersatzgerät ersetzt und der Administrator kann die ausgefallenen Festplatten zu einem späteren Zeitpunkt ersetzen.
Bitte beachten Sie, dass Sie das Ersatzgerät auch für mehrere ZFS-Pools freigeben können.
# zpool add -f mypool spare sde
Im nächsten Teil des Artikels erklären wir, wie Sie die ZFS-Pools verwenden, um ein ZFS-Dateisystem zu erstellen, das ZFS-Dateisystem zu mounten und es über die Befehlszeile zu manipulieren.