GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren und konfigurieren Sie ZFS unter Linux mit Debian Jessie 8.1

Auf dieser Seite

  1. Voraussetzungen:
  • Schritt 1 – Repository aktualisieren und das Debian-Linux-System aktualisieren
  • Schritt 2 – zfsonlinux installieren
  • Schritt 3 – Pool erstellen und konfigurieren
  • Schritt 5 – ZFS-Dateisystem erstellen und konfigurieren
  • Schlussfolgerung
  • ZFS ist ein kombinierter Dateisystem- und Logical-Volume-Manager. Zu den Merkmalen von ZFS gehören Schutz vor Datenkorruption, Unterstützung hoher Speicherkapazitäten, effiziente Datenkomprimierung, Integration des Dateisystem- und Volume-Management-Konzepts, Snapshots und Copy-on-Write-Klone, kontinuierliche Integritätsprüfung und automatische Reparatur, RAID-Z und nativ NFSv4-ACLs.

    ZFS wurde ursprünglich als Open-Source-Software implementiert und unter der Common Development and Distribution License (CDDL) lizenziert.

    Wenn wir über das ZFS-Dateisystem sprechen, können wir die folgenden Schlüsselkonzepte hervorheben:

    • Datenintegrität.
    • Einfache Speicherverwaltung mit nur zwei Befehlen:zfs und zpool.
    • Alles kann erledigt werden, während das Dateisystem online ist.

    Eine vollständige Übersicht und Beschreibung aller verfügbaren Funktionen finden Sie in diesem ausführlichen Wikipedia-Artikel.

    In diesem Tutorial führe ich Sie Schritt für Schritt durch die Installation des ZFS-Dateisystems auf Debian 8.1 (Jessie). Ich werde Ihnen zeigen, wie Sie Pools mit raid0 (Stripe), raid1 (Mirror) und RAID-Z (Raid mit Parität) erstellen und konfigurieren und erklären, wie Sie ein Dateisystem mit ZFS konfigurieren.

    Basierend auf den Informationen von der Website www.zfsonlinux.org wird ZFS nur auf der AMD64- und Intel-64-Bit-Architektur (amd64) unterstützt. Beginnen wir mit der Einrichtung.

    Voraussetzungen:

    • Debian 8 mit 64-Bit-Kernel.
    • Root-Rechte.

    Schritt 1 – Aktualisieren Sie das Repository und aktualisieren Sie das Debian-Linux-System

    Um das zfsonlinux-Repository zu unserem System hinzuzufügen, laden Sie das zfsonlinux-Paket herunter und installieren Sie es wie unten gezeigt. Dadurch werden die Dateien /etc/apt/sources.list.d/zfsonlinux.list und /etc/apt/trusted.gpg.d/zfsonlinux.gpg auf Ihrem Computer hinzugefügt. Danach können Sie zfs wie jedes andere Debian-Paket mit dem Befehl apt-get installieren. Ein weiterer Vorteil der Verwendung des zfsonlinux-Repositorys besteht darin, dass Sie Updates automatisch erhalten, indem Sie "apt-get update &&apt-get upgrade" ausführen.

    Melden Sie sich mit SSH-Zugriff beim Debian-Server an, werden Sie Root-Benutzer und führen Sie dann die folgenden Befehle aus.

    # uname -a
    Linux debian-zfs 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
    # wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
    # dpkg -i zfsonlinux_6_all.deb
    # apt-get update

    Schritt 2 - Installieren Sie zfsonlinux

    Zfsonlinux hat viele Softwareabhängigkeiten, die von apt automatisch installiert werden. Dieser Vorgang wird eine Weile dauern. Wenn die Installation abgeschlossen ist, starten Sie den Server neu.

    # apt-get install lsb-release
    # apt-get install debian-zfs
    # shutdown -r now

    Schritt 3 – Pool erstellen und konfigurieren

    Überprüfen Sie nach dem Neustart des Servers, ob zfsonlinux installiert ist und gut läuft.

    # dpkg -l | GREP ZFS 
    II Debian-Zfs 7 ~ Jessie AMD64 Native ZFS-Dateisystem-Metapackage für Debian. -2 Alle nativen ZFS-Dateisystem-Kernel-Module für Linux
    II Zfsonlinux 6 All Archive.zfsonlinux.org Trust Paket
    ii Zfsutils 0.6.5.2-2 AMD64-Befehlszeilen-Tools zum Verwalten von ZFS-Dateisystemen

    Das obige Ergebnis zeigt, dass zfs unter Linux bereits installiert ist, sodass wir mit der Erstellung des ersten Pools fortfahren können.

    Ich habe diesem Server fünf Festplatten hinzugefügt, jede mit einer Größe von 2 GB. Wir können die verfügbaren Festplatten mit diesem Befehl überprüfen:

    # ls /dev/sd*
    /dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sdb  /dev/sdc  /dev/sdd  /dev/sde  /dev/sdf /dev/sdg

    Wir können sehen, dass wir /dev/sda haben, bis /dev/sdg, /dev/sda für das Betriebssystem Debian Linux Jessie 8.1 verwendet wird. Wir werden /dev/sdb bis /dev/sdg für das ZFS-Dateisystem verwenden.

    Jetzt können wir mit dem Erstellen des Pools beginnen, für den ersten zeige ich Ihnen, wie Sie einen raid0 (Stripe) erstellen.

    # zpool list
    keine Pools verfügbar
    # zpool create -f pool0 /dev/sdb
    # zpool list
    NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
    pool0  1.98G    64K  1.98G         -     0 %     0 %  1,00 x  ONLINE  ​​-

    Der Befehl „zpool list“ zeigt, dass wir erfolgreich einen raid0 zfs-Pool erstellt haben, der Name des Pools ist pool0 und die Größe ist 2 GB.

    Als nächstes erstellen wir ein raid1 (Spiegel) mit den anderen Festplatten.

    # zpool create -f pool1 mirror /dev/sdc /dev/sdd
    # zpool list
    NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
    pool0  1.98G    64K  1.98G         - 0 %     0 %  1,00x  ONLINE  ​​-
    pool1  1,98 G    64 K   1,98 G         -     0 %     0 %      0 %  1,00 x   ONLINE  ​​-

    Wir können sehen, dass wir jetzt zwei Pools haben, pool0 für raid0 und pool1 für raid1.

    Um den Status der Pools zu überprüfen, können wir den folgenden Befehl verwenden:

    # zpool status
      pool:pool0
     state:ONLINE
      scan:none angefordert
    config:

            NAME        STATE     READ WRITE CKSUM
            pool0       ONLINE       0     0     0
              sdb       ONLINE       0     0     0

    Fehler:Keine Datenfehler bekannt

      pool:pool1
     status:ONLINE
    Scan:Keine angefordert
    Konfiguration:

    Name Status Lesen Sie Schreiben Sie CKSUM
    Pool1 Online 0 0 0
    Mirror-0 online 0 0 0
    SDC Online 0     0     0
                sdd     ONLINE       0     0     0

    Fehler:Keine bekannten Datenfehler

    Wir können den Pool-Status mit dem Befehl „zpool status“ überprüfen. Wir können den Unterschied zwischen pool0 und pool1 sehen, pool0 hat nur eine Festplatte und pool1 hat zwei Festplatten und der Status der Festplatten ist gespiegelt (mirror-0).

    Als Nächstes erstellen wir einen Pool mit RAID-Z, RAID-Z ist ein Daten-/Paritätsverteilungsschema wie RAID-5, aber es verwendet eine dynamische Streifenbreite:Jeder Block hat seinen eigenen RAID-Streifen, unabhängig von der Blockgröße. was dazu führt, dass jeder RAID-Z-Schreibvorgang ein Full-Stripe-Schreibvorgang ist.

    RAID-Z erfordert mindestens drei Festplatten und ist eine Art Kompromiss zwischen RAID 0 und RAID 1. In einem RAID-Z-Pool:Wenn eine einzelne Festplatte in Ihrem Pool ausfällt, ersetzen Sie einfach diese Festplatte und ZFS baut die Daten automatisch wieder auf basierend auf den Paritätsinformationen von den anderen Festplatten. Um alle Informationen in Ihrem Speicherpool zu verlieren, müssten zwei Festplatten sterben. Um die Laufwerkskonfiguration noch redundanter zu machen, können Sie RAID 6 (RAID-Z2 im Falle von ZFS) verwenden, um doppelte Parität zu erhalten.

    Lassen Sie uns zuerst einen RAID-Z-Pool mit einer Parität erstellen.

    # zpool create -f poolz1 raidz sde sdf sdg
    # zpool list poolz1
    NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
    poolz1  5.94G   117K  5.94G         -     0 %    1,00x  ONLINE  ​​-
    # zpool status poolz1
      pool:poolz1
     state:ONLINE
      scan:none angefordert
    config:

            NAME        STATE     READ WRITE CKSUM
    Poolz1 Online 0 0 0
    Raidz1-0 Online 0 0 0
    SDE Online 0 0 0
    SDF Online 0 0 0
    SDG Online 0 0 0

    errors:Keine bekannten Datenfehler
    # df -h /poolz1
    Dateisystem      Größe  Verwendet Verfügbar Verwenden % Eingehängt auf
    poolz1          3,9 G     0  3,9 G   0 % /poolz1

    Wie wir sehen können, zeigt df -h, dass unser 6-GB-Pool jetzt auf 4 GB reduziert wurde, 2 GB werden zum Speichern von Paritätsinformationen verwendet. Mit dem Befehl zpool status sehen wir, dass unser Pool jetzt RAID-Z verwendet.

    Als nächstes erstellen wir RAID-Z2 (Raid 6), dazu müssen wir den vorhandenen Pool entfernen, da keine Festplatten mehr verfügbar sind. Das Entfernen eines Pools ist sehr einfach, wir können dafür den Befehl zpool Destroy verwenden.

    # zpoolliste 
    Namensgröße Alloc Free EXDSZ Frag Cap Dedup Health Alroot
    Pool0 1,98G 64K 1,98G -0%0%1,00X Online -
    Pool1 1,98G 64K 1,98G - 0 %     0 %  1,00x  ONLINE  ​​-
    poolz1  5,94 G   117 K   5,94 G         -     0 %     0 %      0 %  1,00x   ONLINE  ​​-
    # zpool zerstört pool0
    # zpool zerstört pool1
    # zpool zerstört poolz1
    # zpool list
    keine Pools verfügbar

    Jetzt sind alle unsere Zpools weg, sodass wir einen RAID-Z2-Pool erstellen können.

    # zpool create poolz2 raidz2 sdb sdc sdd sde
    # zpool list
    NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
    poolz2  7.94G   135K  7.94G         -     0 %    ONLINE  ​​-
    # df -h /poolz2
    Dateisystem      Größe  Verwendet Verfügbar Verwenden % Eingehängt auf
    poolz2          3,9 G     0  3,9 G   0 % /poolz2
    # zpool status poolz2
      pool:poolz2
     state:ONLINE
      scan:none angefordert
    config:

            NAME        STATE     READ WRITE CKSUM
    Poolz2 Online 0 0 0
    Raidz2-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

    Fehler:Keine bekannten Datenfehler

    Wie wir sehen können, zeigt df -h, dass unser 8-GB-Pool jetzt auf 4 GB reduziert wurde, da 4 GB verwendet werden, um die Paritätsinformationen zweimal zu speichern. Mit dem Befehl „zpool status“ sehen wir, dass unser Pool jetzt RAID-Z2 verwendet.

    Schritt 4 – Simulieren Sie einen Festplattenfehler

    In diesem Schritt simulieren wir einen katastrophalen Festplattenausfall (d. h. eine der Festplatten im zpool funktioniert nicht mehr).

    Erstellen Sie eine Datei in poolz2 und stellen Sie sicher, dass wir darauf zugreifen können.

    # echo "Nur Test"> /poolz2/test.txt
    # cat /poolz2/test.txt
    Nur Test

    Bevor wir den Fehler simulieren:Überprüfen Sie den Status von poolz2 und stellen Sie sicher, dass der Status Online ist und dass der Status aller Laufwerke Online ist.

    Der Fehler wird simuliert, indem zufällige Daten mit dem dd-Befehl in /dev/sdb geschrieben werden .

    # dd if=/dev/urandom of=/dev/sdb bs=1024 count=20480
    # zpool scrub poolz2
    # zpool status
      pool:poolz2
     state :ONLINE
    status:Bei einem oder mehreren Geräten ist ein nicht behebbarer Fehler aufgetreten. Es wurde
            versucht, den Fehler zu beheben. Anwendungen sind nicht betroffen.
    Maßnahme:Stellen Sie fest, ob das Gerät ersetzt werden muss, und löschen Sie die Fehler
            mit "zpool clear" oder ersetzen Sie das Gerät mit "zpool replace".
       siehe:http://zfsonlinux.org/msg/ZFS-8000-9P
      Scan:Scrub reparierte 17K in 0h0m mit 0 Fehlern am Dienstag, 8. Dez. 22:37:49 2015
    config:

    Name Status Lesen Sie Schreiben Sie CKSUM
    Poolz2 Online 0 0 0
    Raidz2-0 Online 0 0 0
    SDB Online 0 0 25
    SDC Online 0 0 0
    SDD Online 0     0     0
                sde     ONLINE       0     0     0

    Fehler:Keine Datenfehler bekannt

    Jetzt können wir sehen, dass bei einer oder mehreren Festplatten ein nicht behebbarer Fehler aufgetreten ist, also müssen wir die Festplatte ersetzen. In diesem Fall ersetzen wir die /dev/sdb-Festplatte durch /dev/sdf.

    # zpool replace poolz2 sdb sdf
    # zpool status
      pool:poolz2
     state:ONLINE
      scan:Resilvered 49.5K in 0h0m mit 0 Fehlern am Di 8. Dezember 22:43:35 2015
    Konfiguration:

    Name Status Lesen Sie Schreiben Sie CKSUM
    Poolz2 Online 0 0 0
    Raidz2-0 online 0 0
    SDF online 0 0 0
    SDC Online 0 0 0
    SDD Online 0 0 0
    sde online 0 0

    Fehler:Keine bekannten Datenfehler

    Nachdem wir /dev/sdb durch /dev/sdf ersetzt haben, ist der Fehler verschwunden und wir können immer noch auf die zuvor erstellte Testdatei zugreifen.

    # cat /poolz2/test.txt
    Nur testen

    Bis zu diesem Schritt wissen wir, wie man einen zpool erstellt und konfiguriert.

    Schritt 5 – ZFS-Dateisystem erstellen und konfigurieren

    Im nächsten Schritt lernen wir, wie man das ZFS-Dateisystem erstellt und konfiguriert.

    # zfs list
    NAME     USED  AVAIL  REFER  MOUNTPOINT
    poolz2   105K  3.83G  26.1K  /poolz2

    Wir haben bereits ein ZFS-Dateisystem, das automatisch hinzugefügt wird, wenn wir den zpool erstellen. Jetzt erstellen wir ein weiteres ZFS-Dateisystem.

    # zfs create poolz2/tank
    # zfs list
    NAME          VERWENDET  VERFÜGBAR  REFER  MOUNTPOINT
    poolz2        132K  3,83G  26,1K  /poolz2
    poolz2/tank  25,4K  3,83G  25,4K /poolz2/tank
    # df -h | grep poolz2
    poolz2          3,9 G  128 K  3,9 G   1 % /poolz2
    poolz2/tank     3,9 G  128 K  3,9 G   1 % /poolz2/tank

    Sehr einfach oder? Wir erstellen ein neues ZFS-Dateisystem mit dem Namen Tank und mounten es automatisch als /poolz2/tank.

    Wie erstelle ich einen benutzerdefinierten Mountpoint für ein ZFS-Dateisystem? Verwenden Sie den folgenden Befehl:

    # zfs create poolz2/data -o mountpoint=/data
    # df -h | grep poolz2
    poolz2          3,9 G     0  3,9 G   0 % /poolz2
    poolz2/tank     3,9 G     0  3,9 G   0 % /poolz2/tank
    poolz2/data     3,9 G     0  3,9 G   0 % /data

    Wie ändere ich den vorhandenen Mountpoint? Wir können das mit dem folgenden Befehl tun:

    # zfs set mountpoint=/tank poolz2/tank
    # df -h | grep poolz2
    poolz2          3,9 G     0  3,9 G   0 % /poolz2
    poolz2/data     3,9 G     0  3,9 G   0 % /data
    poolz2/tank     3,9 G     0  3,9 G   0 % /tank

    Verwenden Sie den folgenden Befehl, um ein Dateisystem zu mounten und zu unmounten:

    # zfs unmount /data
    # df -h | grep poolz2
    poolz2          3,9 G     0  3,9 G   0 % /poolz2
    poolz2/tank     3,9 G     0  3,9 G   0 % /tank
    # zfs mount poolz2/data
    # df -h | grep poolz2
    poolz2          3,9 G     0  3,9 G   0 % /poolz2
    poolz2/tank     3,9 G     0  3,9 G   0 % /tank
    poolz2/data     3,9 G     0  3,9 G   0 % /data

    Das Entfernen eines zfs-Dateisystems ist sehr einfach, wir können dafür den Befehl zfs destroy verwenden.

    # zfs zerstören poolz2/data
    # zfs list
    NAME          VERWENDET  VERFÜGBAR  REFER  MOUNTPOINT
    poolz2        152K  3,83G  26,1K  /poolz2
    poolz2/tank  25,4K  3,83G  25,4K /tank

    Das Dateisystem /data ist weg.

    Schlussfolgerung

    Das ZFS-Dateisystem ist ein revolutionäres neues Dateisystem, das die Art und Weise, wie Dateisysteme auf Unix-ähnlichen Betriebssystemen verwaltet werden, grundlegend verändert. ZFS bietet Funktionen und Vorteile, die in keinem anderen heute verfügbaren Dateisystem gefunden wurden. ZFS ist robust, skalierbar und einfach zu verwalten.


    Debian
    1. So installieren und konfigurieren Sie Docker unter Debian 11

    2. So installieren und konfigurieren Sie Mariadb 10 in Debian 11

    3. So installieren und konfigurieren Sie MongoDB 5 unter Debian 11

    4. So installieren und konfigurieren Sie Redis 6 unter Debian 11

    5. So installieren und konfigurieren Sie Node.js und npm in Ubuntu, Debian oder Linux Mint

    So installieren und konfigurieren Sie Monit unter Debian 9

    So installieren und konfigurieren Sie vsftpd mit TLS unter Debian 8 (Jessie)

    So installieren und konfigurieren Sie Nagios unter Linux

    So installieren und konfigurieren Sie Git in Debian 11

    So installieren und konfigurieren Sie KVM unter Debian 11 Bullseye Linux

    Wie installiere und konfiguriere ich Apache unter Debian 11?