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

So erstellen Sie Snapshots von LVM-Thin-Volumes mit dem Snapper-Befehl

Snapper ist ein Befehlszeilendienstprogramm in Linux, das zum Erstellen und Verwalten von Snapshots von LVM-Thin-Volumes verwendet wird. Es kann Snapshots erstellen, löschen und vergleichen und Änderungen rückgängig machen, die zwischen Snapshots vorgenommen wurden. Snapper ermöglicht auch die einfache Erstellung und Verwaltung von Snapshots für Btrfs.

Installieren von Snapper

Verwenden Sie den Befehl yum, um das Snapper-Softwarepaket zu installieren.

# yum install snapper
...
Transaction Summary ============================================================= 
Install 1 Package (+3 Dependent packages)
Total download size: 499 k Installed size: 1.5 M
Is this ok [y/d/N]: y
...
Complete!

Verwenden Sie den Befehl rpm –ql, um die vom Snapper-Paket bereitgestellten Dateien anzuzeigen.

# rpm –ql snapper
/etc/cron.daily/snapper 
/etc/cron.hourly/snapper 
/etc/dbus-1/system.d/org.opensus.Snapper.conf 
/etc/logrotate.d/snapper
/usr/bin/snapper
/usr/sbin/snapperd /usr/share/dbus-1/system-services/org.opensus.Snapper.service 
...
Beachten Sie die beiden Cron-Snapper-Dateien.
– Standardmäßig richtet Snapper eine cron.hourly ein Job zum Erstellen von Snapshots in der .snapshots Unterverzeichnis des Volumes und eine cron.daily Job zum Bereinigen alter Snapshots.
– Sie können die Konfigurationsdatei bearbeiten, um dieses Verhalten zu deaktivieren oder zu ändern.

1. Erstellen eines Thin Provisioned Logical Volume

Verwenden Sie den Befehl lvcreate, um ein Thin Provisioning-Volume mit dem Namen – thinvol1 zu erstellen. Beachten Sie, dass dieses Volume gemountet werden muss, bevor wir den Schnappschuss mit dem Snapper-Befehl erstellen.

# vgs
VG      #PV #LV  #SN  Attr     VSize      VFree
myvolg  1    0    0   wz--n-   1020.00m   1020.00m

Erstellen Sie einen dünnen Pool:

# lvcreate –v –L 100m –T myvolg/mythinpool 
...
  Logical volume “mythinpool” created

Dünn bereitgestelltes Volume erstellen :

# lvcreate –v –V 200m –T myvolg/mythinpool –n thinvol1 
...
  Logical volume “thinvol1” created

Erstellen Sie ein Dateisystem auf dem Thin Volume.

# mkfs.ext4 /dev/myvolg/thinvol1
...
Writing superblocks and filesystem accounting information: done

Mounten Sie das Dateisystem:

# mkdir /myvol1
# mount /dev/myvolg/thinvol1 /myvol1

2. Snapper-Konfigurationsdatei erstellen

Um einen Snapshot mit Snapper zu erstellen, ist eine Konfigurationsdatei für das LVM-Thin-Volume oder das Btrfs-Subvolume erforderlich. Die LVM- und Btrfs-Volumes müssen auch ein gemountetes Dateisystem haben. Verwenden Sie den Befehl create-config, um die Konfigurationsdatei zu erstellen. Das folgende Beispiel erstellt eine Konfigurationsdatei namens myvol_snap für ein LVM ext4-Dateisystem, das auf /myvol1:

gemountet ist
# snapper –c myvol1_snap create-config –f "lvm(ext4)" /myvol1

– Dieser Befehl fügt einen Eintrag zu /etc/sysconfig/snapper hinzu.
– Dieser Befehl erstellt die Konfigurationsdatei /etc/snapper/configs/myvol1_snap.
– Dieser Befehl erstellt ein .snapshots-Verzeichnis in /myvol1 Verzeichnis.

# cat /etc/sysconfig/snapper 
... 
SNAPPER_CONFIGS=”myvol1_snap”
# cat /etc/snapper/configs/myvol1_snap ...
# subvolume to snapshot SUBVOLUME=”/myvol1”
# filesystem type
FSTYPE=”lvm(ext4)”
...
# start comparing pre- and post-snapshot in background after... BACKGROUND_COMPARISON=”yes”
# run daily number cleanup
NUMBER_CLEANUP=”yes”
...
# create hourly snapshots
TIMELINE_CREATE=”yes”
# cleanup hourly snapshots after some time
TIMELINE_CLEANUP=”yes”
...
# cleanup empty pre-post-pairs
EMPTY_PRE_POST_CLEANUP=”yes”
...

Snapshots des Dateisystems /myvol1 werden im Unterverzeichnis .snapshots gespeichert.

# ls –la /myvol1
...
drwxr-x--- ... .snapshots
...

Arten von Schnappschüssen

Es gibt drei Arten von Snapshots, die Sie mit Snapper erstellen können:
pre: Wird verwendet, um den Status eines Volumes vor einer Änderung aufzuzeichnen. Pre-Snapshots sollten immer einen entsprechenden Post-Snapshot haben.
post: Wird verwendet, um den Status eines Volumes nach einer Änderung aufzuzeichnen.
einzeln: Diese Schnappschüsse haben keine besondere Beziehung zu anderen Schnappschüssen.

3. Snapshot erstellen

Erstellen Sie eine Testdatei im Verzeichnis /myvol1.

# echo "This is a test file" > /myvol1/test_file

Verwenden Sie snapper create -t ​​pre, um einen Pre-Snapshot des durch myvol1_snap definierten Volumes zu erstellen Konfigurationsdatei. Schließen Sie die Option –p ein, um die Nummer des erstellten Snapshots anzuzeigen. (In diesem Beispiel ist die Pre-Snapshot-Nummer 1)

# snapper –c myvol1_snap create –t pre –p
1

Die Snapshots werden nach Snapshot-Nummer im Unterverzeichnis .snapshots des Volumes gespeichert. Zeigen Sie den Inhalt des Verzeichnisses /myvol1/.snapshots an.

# ls –l /myvol1/.snapshots 
...
drwxr-xr-x ... 1

Zeigen Sie den Inhalt des Verzeichnisses /myvol1/.snapshots/1 an.

# ls –l /myvol1/.snapshots/1 
...
-rw-------    ...     info.xml 
drwxr-x---    ...     snapshot

Ändern Sie nun den Inhalt des Verzeichnisses /myvol1, indem Sie die Datei test_file.

entfernen
# rm /myvol1/test_file

Verwenden Sie snapper create -t ​​post, um einen Post-Snapshot des Volumes zu erstellen, das durch die Konfigurationsdatei myvol1_snap definiert ist. Fügen Sie die Option –pre-num 1 hinzu, um diesen Post-Snapshot mit dem Pre-Snapshot 1 zu verknüpfen. Fügen Sie die Option –p ein, um die Nummer des erstellten Snapshots anzuzeigen.

# snapper –c myvol1_snap create –t post --pre-num 1 –p 
2

Sie würden ein neues Verzeichnis namens 2 sehen, das im Verzeichnis .snapshots erstellt wurde.

# ls –l /myvol1/.snapshots/2 
...
-rw------- ... filelist-1.txt 
-rw------- ... info.xml 
drwxr-x--- ... snapshot

Die filelist-1.txt enthält die Datei, die nach dem Pre-Snapshot und vor dem Post-Snapshot gelöscht wurde.

# cat /myvol1/.snapshots/2/filelist-1.txt 
-..... /test_file

Vergleich von Pre- und Post-Snapshots

Verwenden Sie den Snapper-Statusbefehl, um die Dateien und Verzeichnisse anzuzeigen, die zwischen Pre-Snapshot 1 und Post-Snapshot 2 hinzugefügt, entfernt oder geändert wurden.

# snapper –c myvol1_snap status 1..2
-..... /test_file

Verwenden Sie den Befehl snapper diff, um die Unterschiede zwischen den Inhalten der Dateien in Pre-Snapshot 1 und Post-Snapshot 2 anzuzeigen.

# snapper –c myvol1_snap diff 1..2
Binary files /myvol1/.snapshots/1/snapshot/test_file and /myvol1/.snapshots/2/snapshot/test_file differ

Verwenden Sie den Befehl snapper list, um die Snapshots aufzulisten, die für das Volume vorhanden sind, das durch die Konfigurationsdatei myvol1_snap definiert ist.

# snapper –c myvol1_snap list
Type  | # | Pre # | Date | User | Cleanup |Description| Userdata
------+---+-------+------+------+---------+------------+--------
single| 0 |       | ...  | root |         |  Current  |
pre   | 1 |       | ...  | root |         |	      |
post  | 2 |   1   | ...  | root |         |           |

Kehren Sie die Änderungen vom Post-Snapshot zum Pre-Shanshot um

Um die Änderungen vom Post-Snapshot zum Pre-Snapshot rückgängig zu machen, d. h. um die test_file wiederherzustellen, verwenden Sie den Snapper Undochange Befehl.

# snapper –c myvol1_snap undochange 1..2 
create:1 modify:0 delete:0

Bestätigen

# ls /myvol1
lost+found
test_file


Linux
  1. So erstellen Sie eine Datenbank in MySQL über die Befehlszeile

  2. So erstellen Sie ein bootfähiges USB-Laufwerk mit dem dd-Befehl

  3. So erstellen Sie ein Skript eines Linux-Befehls

  4. So erstellen und wenden Sie Patches in GIT mit dem Befehl „diff“ und „apply“ an

  5. So erstellen Sie Dateisystem-Snapshots mit Snapper Command unter Linux

So erstellen Sie einen symbolischen Link in Linux mit dem Ln-Befehl

So erstellen Sie eine Datei unter Linux mit dem Cat-Befehl

So erstellen Sie einen Alias ​​unter Linux

So erstellen Sie eine Datei in Linux mit Terminal

So erstellen und wiederherstellen Sie VM-Snapshots in VirtualBox

So erstellen Sie eine Partition mit dem Befehl „parted“