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

So verwenden Sie Snapshots, Klone und Replikation in ZFS unter Linux

Im vorherigen Tutorial haben wir gelernt, wie man einen zpool und ein ZFS-Dateisystem oder Dataset erstellt. In dieser Anleitung zeige ich Ihnen Schritt für Schritt, wie Sie mit ZFS-Snapshots, -Klonen und -Replikation arbeiten. Schnappschuss, Klon. und Replikation sind die leistungsstärksten Funktionen des ZFS-Dateisystems.

ZFS-Snapshots - eine Übersicht

Snapshot ist eine der leistungsstärksten Funktionen von ZFS. Ein Snapshot bietet eine schreibgeschützte Point-in-Time-Kopie eines Dateisystems oder Volumes, die keinen zusätzlichen Speicherplatz im ZFS-Pool verbraucht. Der Snapshot verwendet nur dann Speicherplatz, wenn die Blockreferenzen geändert werden. Snapshots sparen Speicherplatz, indem sie nur die Unterschiede zwischen dem aktuellen Datensatz und einer früheren Version aufzeichnen.

Ein typisches Beispiel für die Verwendung eines Snapshots ist eine schnelle Möglichkeit, den aktuellen Zustand des Dateisystems zu sichern, wenn eine riskante Aktion wie eine Softwareinstallation oder ein Systemupgrade durchgeführt wird.

Erstellen und Löschen eines ZFS-Schnappschusses

Auf Snapshots von Volumes kann nicht direkt zugegriffen werden, aber sie können geklont, gesichert und zurückgesetzt werden. Das Erstellen und Zerstören eines ZFS-Snapshots ist sehr einfach, wir können dafür die Befehle zfs snapshot und zfs destroy verwenden.

Erstellen Sie einen Pool namens datapool.

# zpool create datapool mirror /dev/sdb /dev/sdc 
# zpool list
NAME       SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
datapool  1.98G    65K  1.98G         -     0%     0%  1.00x  ONLINE  -

Jetzt haben wir einen Pool namens Datapool, als nächstes müssen wir ein ZFS-Dateisystem erstellen, um die Snapshot-Funktion zu simulieren.

# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NAME            USED  AVAIL  REFER  MOUNTPOINT
datapool       93.5K  1.92G    19K  /datapool
datapool/docs    19K  1.92G    19K  /docs

Um einen Snapshot des Dateisystems zu erstellen, können wir den zfs-Snapshot-Befehl verwenden, indem wir den Pool und den Snapshot-Namen angeben. Wir können die Option -r verwenden, wenn wir einen Snapshot rekursiv erstellen möchten. Der Snapshot-Name muss die folgenden Benennungsanforderungen erfüllen:

[email protected]
[email protected]
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME                     USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]      0      -  19.5K  -

Ein Snapshot für datapool/docs wird erstellt.

Um den Snapshot zu zerstören, können wir wie gewohnt den Befehl zfs destroy verwenden.

# zfs destroy datapool/[email protected]
# zfs list -t snapshot
no datasets available

Einen Snapshot zurücksetzen

Für die Simulation müssen wir eine Testdatei im /docs-Verzeichnis erstellen.

# echo "version 1" > /docs/data.txt
# cat /docs/data.txt
version 1
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME                     USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]     9K      -  19.5K  -

Jetzt ändern wir den Inhalt von /docs/data.txt

# echo "version 2" > /docs/data.txt
# cat /docs/data.txt
version 2

Wir können ein vollständiges Rollback auf einen älteren Snapshot durchführen, der uns den Zeitpunkt der Kopie zu dem Zeitpunkt gibt, zu dem der Snapshot erstellt wurde.

# zfs list -t snapshot
NAME                     USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]  9.50K      -  19.5K  -
# zfs rollback datapool/[email protected]
# cat /docs/data.txt
version 1

Wie wir sehen können, ist der Inhalt von data.txt wieder der vorherige Inhalt.

Wenn wir den Snapshot umbenennen möchten, können wir den Befehl zfs rename verwenden.

# zfs rename datapool/[email protected] datapool/[email protected]
# zfs list -t snapshot
NAME                     USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]  9.50K      -  19.5K  -

Hinweis:Ein Datensatz kann nicht zerstört werden, wenn Snapshots dieses Datensatzes vorhanden sind, aber wir können die Option -r verwenden, um dies zu überschreiben.

# zfs destroy datapool/docs
cannot destroy 'datapool/docs': filesystem has children
use '-r' to destroy the following datasets:
datapool/[email protected]
# zfs destroy -r datapool/docs
# zfs list -t snapshot
no datasets available

Übersicht über ZFS-Klone

Ein Klon ist ein beschreibbares Volume oder Dateisystem, dessen ursprünglicher Inhalt derselbe ist wie der Datensatz, aus dem es erstellt wurde.

Erstellen und Zerstören eines ZFS-Klons

Klone können nur aus einem Snapshot erstellt werden und ein Snapshot kann nicht gelöscht werden, bis Sie den Klon löschen, der auf diesem Snapshot basiert. Verwenden Sie zum Erstellen eines Klons den Befehl zfs clone.

# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NAME            USED  AVAIL  REFER  MOUNTPOINT
datapool       93.5K  1.92G    19K  /datapool
datapool/docs    19K  1.92G    19K  /docs
# mkdir /docs/folder{1..5}
# ls /docs/
folder1  folder2  folder3  folder4  folder5
# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME                  USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]      0      -    19K  -

Jetzt erstellen wir einen Klon aus dem Snapshot-Datenpool/[email protected]

# zfs clone datapool/[email protected] datapool/pict
# zfs list
NAME            USED  AVAIL  REFER  MOUNTPOINT
datapool        166K  1.92G    19K  /datapool
datapool/docs    19K  1.92G    19K  /docs
datapool/pict     1K  1.92G    19K  /datapool/pict

Der Klonvorgang ist abgeschlossen, der Snapshot-Datenpool/[email protected] wurde nach /datapool/pict geklont. Wenn wir den Inhalt des Verzeichnisses /datapool/pict prüfen, sollte der Inhalt mit dem von /datapool/docs übereinstimmen.

# ls /datapool/pict
folder1  folder2  folder3  folder4  folder5

Nachdem wir einen Snapshot geklont haben, kann der Snapshot nicht gelöscht werden, bis Sie das Dataset löschen.

# zfs destroy datapool/[email protected]
cannot destroy 'datapool/[email protected]': snapshot has dependent clones
use '-R' to destroy the following datasets:
datapool/pict
# zfs destroy datapool/pict

Endlich können wir den Snapshot zerstören.

# zfs destroy datapool/[email protected]
# zfs list -t snapshot
no datasets available

Übersicht über die ZFS-Replikation

Die Basis für diese ZFS-Replikation ist ein Snapshot, wir können jederzeit einen Snapshot erstellen, und wir können so viele Snapshots erstellen, wie wir möchten. Durch kontinuierliches Erstellen, Übertragen und Wiederherstellen von Snapshots können Sie eine Synchronisierung zwischen einer oder mehreren Maschinen bereitstellen. ZFS bietet eine integrierte Serialisierungsfunktion, die eine Stream-Darstellung der Daten an die Standardausgabe senden kann.

ZFS-Replikation konfigurieren

In diesem Abschnitt möchte ich Ihnen zeigen, wie Sie einen Datensatz aus dem Datenpool in den Sicherungspool replizieren, aber es ist möglich, die Daten nicht nur in einem anderen Pool zu speichern, der mit dem lokalen System verbunden ist, sondern sie auch über ein Netzwerk an ein anderes System zu senden. Die zum Replizieren von Daten verwendeten Befehle sind zfs send und zfs Receive.

Erstellen Sie einen weiteren Pool namens Backuppool.

# zpool create backuppool mirror sde sdf
# zpool list
NAME         SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
backuppool  1.98G    50K  1.98G         -     0%     0%  1.00x  ONLINE  -
datapool    1.98G   568K  1.98G         -     0%     0%  1.00x  ONLINE  -

Prüfen Sie den Pool-Status:

# zpool status
  pool: datapool
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        datapool    ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0

errors: No known data errors

pool:backuppool
 status:ONLINE
  scan:keine angefordert
config:

        NAME        STATUS     LESEN SCHREIBEN CKSUM
        backuppool    ONLINE       0     0     0
mirror-0  ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdf     ONLINE       0     0     0

bekannte Fehler

Erstellen Sie ein Dataset, das wir replizieren.

# zfs snapshot datapool/[email protected]
# zfs list -t snapshot
NAME                  USED  AVAIL  REFER  MOUNTPOINT
datapool/[email protected]      0      -    19K  -
# ls /docs/
folder1  folder2  folder3  folder4  folder5

Es ist Zeit für die Replikation.

# zfs send datapool/[email protected] | zfs receive backuppool/backup
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
backuppool           83K  1.92G    19K  /backuppool
backuppool/backup    19K  1.92G    19K  /backuppool/backup
datapool            527K  1.92G    19K  /datapool
datapool/docs        19K  1.92G    19K  /docs
# ls /backuppool/backup
folder1  folder2  folder3  folder4  folder5

Der Datensatz datapool/[email protected] wurde erfolgreich in den Backuppool/backup repliziert.

Um einen Datensatz auf einen anderen Computer zu replizieren, können wir den folgenden Befehl verwenden:

# zfs send datapool/[email protected] | ssh otherserver zfs recv backuppool/backup

Fertig.

Schlussfolgerung

Snapshot, Klon und Replikation sind die leistungsstärksten Funktionen von ZFS. Snapshots werden verwendet, um Point-in-Time-Kopien von Dateisystemen oder Volumes zu erstellen, Klonen wird verwendet, um ein dupliziertes Dataset zu erstellen, und die Replikation wird verwendet, um ein Dataset von einem Datenpool in einen anderen Datenpool auf demselben Computer zu replizieren oder Datenpools zwischen verschiedenen zu replizieren Maschinen.


Linux
  1. So installieren und verwenden Sie Telnet unter Kali Linux

  2. So verwenden Sie TimeShift zum Sichern und Wiederherstellen von Ubuntu Linux

  3. Was ist ein Chown-Befehl unter Linux und wie wird er verwendet?

  4. So installieren und verwenden Sie Flatpak unter Linux

  5. So installieren und verwenden Sie Traceroute unter Linux

So erstellen und wiederherstellen Sie VM-Snapshots in VirtualBox

So verwenden Sie Timeshift zum Sichern und Wiederherstellen von Linux

So installieren und verwenden Sie den Tor-Browser unter Linux

So installieren und verwenden Sie phpMyAdmin unter Linux

So installieren und verwenden Sie den fd-Befehl unter Linux

So installieren und verwenden Sie Nu Shell unter Linux