Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
server_und_serverdienste:linux_zfs_autosnapshots_auf_zvol_und_datasets_mounten [2023/01/06 23:03] – angelegt lomaserver_und_serverdienste:linux_zfs_autosnapshots_auf_zvol_und_datasets_mounten [2023/01/31 10:54] (aktuell) – [ZFS Autosnapshot auf zvol und Datasets mounten] loma
Zeile 1: Zeile 1:
 ====== ZFS Autosnapshot auf zvol und Datasets mounten ====== ====== ZFS Autosnapshot auf zvol und Datasets mounten ======
-Mit ZFS-Autosnapshot kann man die verschiedenen Abständen von Datasets und Zvol's Snapshots anfertigen lassenDas verhindert das z.BVerschlüsselungstrojaner auf Windows größeren Schaden anrichten könnenEben maxdas Snapshotalter, z.B15 Minuten+Du möchtest dich gerne für unsere Hilfe erkenntlich zeigen 8-oGerneWir bedanken uns bei dir für deine Spende! LOL \\ 
 +[[https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KE592Y5993ZKW|{{:wiki:btn_donatecc_lg.gif|}}]] \\ 
 +\\ 
 +Hauseigenes Apt-Repo: [[https://apt.iteas.at]]    
 +\\ 
 +GITLAB Enterprise: [[https://git.osit.cc|{{:gitlab_logo.png?nolink&60|}}]]  
 +\\ 
 +\\
  
 +  * Automatische Snapshots von VM's und CT's in definierten Zeiten anfertigen lassen, z.B. alle 10 Minuten
 +  * Rollback einzelner virtuellen Festplatten, z.B. nur Laufwerk C:\ bei Windows
 +  * Direktes recovern von Dateien in VM-Images via ''cp'' oder Filezilla
 +  * Klonen von bestimmten Snapshotständen um z.B. Tests durchzuführen
 +  * Verschlüsselungstrojaner haben keine Chance
 +  * Proxmoxsnapshots und Replicationen sind weiterhin nutzbar
 ===== Installation und Konfiguration ===== ===== Installation und Konfiguration =====
 Annahme hier ist ein Proxmox 7.3 System mit Kernel 5.19. Für Installation benutzen wir wie immer "apt" Annahme hier ist ein Proxmox 7.3 System mit Kernel 5.19. Für Installation benutzen wir wie immer "apt"
  apt install zfs-auto-snapshot  apt install zfs-auto-snapshot
  
-Nach der Installation ist Autosnapshot bereits für alle Zvol's und Datasets aktiviert. Zeiten für die Snapshots kannst du hier konfigurieren: +Nach der Installation ist Autosnapshot bereits für alle Zvol's und Datasets aktiviert. Viel wichtiger ist die Frage ob ich die Autosnapshots überall haben möchte. Ich mach das genau umgekehrt. Ich deaktiviere global und aktiviere dann einzelne Disks wo ich das für sinnvoll halte. 
 + 
 +Um das ganze manuell unter Kontrolle zu haben musst gleich nach der Installation die Autosnapshotfunktion für alle Pool's deaktivieren. Damit kannst du danach einzelen Disks aktivieren.  
 + 
 + zfs set com.sun:auto-snapshot=false rpool 
 + zfs set com.sun:auto-snapshot=false Poolname-was-auch-immer 
 + 
 + rpool                   com.sun:auto-snapshot  false    local 
 + rpool/ROOT              com.sun:auto-snapshot  false    inherited from rpool 
 + rpool/ROOT/pve-1        com.sun:auto-snapshot  false    inherited from rpool 
 + rpool/data              com.sun:auto-snapshot  false    inherited from rpool 
 + 
 +Enzellene Disks aktivierst du so: 
 + 
 + zfs set com.sun:auto-snapshot=true pool/data/vm-110-disk-0 
 + 
 +Umgekehrt gehts auch mit ''zfs inherit'' 
 + 
 +Welche virtuellen HDD's nun für Autosnapshot aktiviert sind, siehts du mit 
 + zfs get com.sun:auto-snapshot | grep true 
 + 
 +Zeiten für die Snapshots kannst du hier konfigurieren:  
 +<code> 
 +/etc/cron.d/zfs-auto-snapshot # hier stelle ich gerne 10 Minuten ein 
 +/etc/cron.daily/zfs-auto-snapshot # nach blieben anpassen 
 +/etc/cron.hourly/zfs-auto-snapshot # nach blieben anpassen 
 +/etc/cron.monthly/zfs-auto-snapshot # nach blieben anpassen 
 +/etc/cron.weekly/zfs-auto-snapshot # nach blieben anpassen 
 +</code> 
 +Die Files sind selbsterklärend.  
 + 
 +**Achtung: Snapshot Zeit ist immer UTC damit man bei Zeitumstellungen nicht durcheinander kommt.** 
 + 
 +**Achtung2: Du kannst weiterhin Snapshots in Proxmox nutzen. Vor der Nutzung Autosnapshot global deaktivieren, weil du bei einem Rollback des Proxmoxsnapshots alle in der Zwischenzeit getätige Snaps von Autosnapshot manuell auf der CMD löschen musst. ** 
 + 
 +Autosnapshot deaktivieren:  
 + chmod -x /usr/sbin/zfs-auto-snapshot 
 + 
 +Autosnapshot wieder aktivieren:  
 + chmod +x /usr/sbin/zfs-auto-snapshot 
 + 
 +===== Snapshots mounten (vdev) ===== 
 +Natürlich möchtest du auch wieder Daten aus den Snapshots herausholen. Hierfür muss Snapshots als DEV sichtbar machen. Du kannst das auf ganze Pools oder auf einzellne Disks anwenden.  
 + zfs set snapdev=visible pool/data/vm-110-disk-0 
 + 
 +Danach kannst du das DEV read only mounten. z.B. 
 + mount -o noload,ro /dev/zvol/rpool/data/vm-110-disk-0@zfs-auto-snap-2022-12-31-0638-part1 /mnt/snapshots   #Linux 
 + mount -o ro /dev/zvol/rpool/data/vm-110-disk-0@zfs-auto-snap-2022-12-31-0638-part1 /mnt/snapshots   #Windows 
 + 
 +==== Direktes Reovery von VDEV's oder einzelnen Dateien ==== 
 + 
 +In beiden Fällen muss die virtuelle Maschine herunter gefahren werden um eine Beschädigung des Filesystems zu vermeiden. Um eine virtuelle HDD direkt zurück zu spielen, machst du einfach ein Rollback.   
 + 
 + zfs rollback rpool/data/vm-115-disk-2@zfs-auto-snap-2023-01-23-1130 -r 
 + 
 +Dabei müssen auch alle neueren Snapshots gelöscht werden. Sollte das nicht gewollt sein, erstelle einen Klon. z.B. 
 + 
 + zfs clone rpool/data/vm-115-disk-2@zfs-auto-snap-2023-01-23-1130 rpool/data/vm-999-disk-2 
 + 
 +Nach dem Rollback kannst deine Maschine wieder starten. Möchtest du nur ein paar Daten aus einem Snapshot herausholen, musst du die VDEVS mounten. Erster Mountbefehl (siehe oben). Nun möchtest du ja die Daten auch direkt ohne Umwege zurückspielen. Deshalb mounten wir auch das aktuelle LiveVDEV der VM dazu. Hierzu muss die VM herunter gefahren werden.  
 + 
 + mount /dev/zvol/rpool/data/vm-110-disk-0 /mnt/snaplive 
 + 
 +Daten kannst du dann ganze einfach mit z.B. ''cp'' von A nach B übertragen. Danach zuerst das Snaplive und dann Snapshot unmounten. VM starten, fertig.  
 + umount /mnt/snaplive 
 + umount /mnt/snapshot 
 + 
 +=== Daten eine laufende VM recovern === 
 +Auch das ist möglich. Dann eben über das Netzwerk. In Linux kannst du hierfür SSH verwenden, in Windows verwendest du Filezilla. Sollten die Proxmoxserver so eingestellt sein das eine Auth nur mittels SSH-Key möglich ist, muss die Passwortauth vor dem Kopiervorgang temporär freigeschalten werden.  
 + 
 +<code bash sshd_config> 
 +... 
 +# To disable tunneled clear text passwords, change to no here! 
 +- PasswordAuthentication no 
 ++ PasswordAuthentication yes 
 +#PermitEmptyPasswords no 
 +... 
 +</code> 
 +Danach den SSH-Server neustarten. Nach dem Kopieren sind die Einstellungen wieder zurück zu setzten. Möglicherweise macht das auch Puppet für dich ;-) 
 +===== Snapshots mounten (datasets) ===== 
 +Bei Datasets ist es einfacher, kann mit z.B.  
 + mount -t zfs rpool/data/home@rep_home_2022-07-05_00:36:48 /mnt/snapshots 
 +eingebunden werden. 
 + 
 +Um das ganze automatisch und elegant mit ZFS zu gestalten machten den Ordner ''.zfs'' in Datasets sichtbar. Z.B.
 <code> <code>
-/etc/cron.d/zfs-auto-snapshot +zfs set snapdir=visible  rpool/data/home
-/etc/cron.daily/zfs-auto-snapshot +
-/etc/cron.hourly/zfs-auto-snapshot +
-/etc/cron.monthly/zfs-auto-snapshot +
-/etc/cron.weekly/zfs-auto-snapshot+
 </code> </code>
-Die Files sind selbsterklärend. Viel wichtiger ist die Frage ob ich die Autosnapshots überall haben möchte. Ich mach das genau umgekehrtIch deaktiviere global und aktiviere dann einzellne Disks wo ich das für sinnvoll halte.+Danach wird das gewünschte Snapshot automatisch beim Zugriff auf ''.zfs/snapshot/rep_home_2022-07-16_00:01:25'' gemountet
  
 +===== Links =====
 +[[server_und_serverdienste:linux_zfs|Linux ZFS (weiterführende Dokumentation]]