[SOLVED] pve-zsync und zusätzlich auf anderen Pool syncen, geht das?

fireon

Distinguished Member
Oct 25, 2010
4,475
466
153
Austria/Graz
deepdoc.at
Hallo Leute,

pve-manager/4.4-5/c43015a5 (running kernel: 4.4.35-2-pve)
habe hier mehrer Syncjobs eingerichtet. Es handelt sich um ein paar TB. Nun mache ich alle halben Jahre mal ne extra Sicherung auf einen anderen zfspool. Dieser liegt auf einer 8TB Platte. Jetzt kann ich natürlich mit ZFS dort die gewünschten Datasets draufspielen. Jetzt war es aber immer so das dann diese Sicherungskette unterbrochen ist, und ich die ganzen Daten wieder von neu synchen musste.

Also einer der Syncjobs sichert eben wöchentlich die Daten auf nen anderen Server. Nun verwende ich den gleichen Job nur mit nem anderen Ziel, also diese Festplatte und synce alles einmalig da drauf. Natürlich müssen da auch immer die ganzen Daten kopiert werden. Kann man anders gestalten? Oder geht das so auf dieser Art mit ZFS nicht.

Code:
pve-zsync create --source v-machines/home --dest [ZielIP]:v-machines --maxsnap 52 --name home  
--verbose
dann nach nem halben Jahr:
Code:
zfs snapshot v-machines/home@externesicherung
zfs send -v v-machines/home@externesicherung | zfs receive  backup/home
Würde ich richtig in der Annahme gehen wenn ich erstellen des Snapshots weglasse, und ein bestehendes das ich dann die Backupkette nicht zerstöre? Wenn ja löste das wohl nicht das Problem ich immer die gesamten Daten auf den Pool "backup/home" kopieren muss.
Ich weis, es gibt natürlich rsync, aber falls man mal das gesamte Backup zurückspielen muss, ist ZFS wesentlich komfortabler.

Vielen Dank
 
Hi,

du kannst das so machen.
Wenn du einen extra Snapshot erstellst macht das pve-zsync nichts.
Du kannst den dort auch lassen bis zum nächsten externen Backup (halbes Jahr später).
Dann wieder Snapshot machen und inkrementell syncen.
Jetzt löscht du den ersten Snapshot.
So hast du für das Backup immer nur einen Snapshot.
 
  • Like
Reactions: fireon
Aha, ok Danke, da hatte ich dann wohl einen Denkfehler. So werd ich das gleich am WE anstarten.

Vielen Dank! :)
 
So, ich muss das hier nochmal aufmachen. Irgendwas mache ich wohl falsch. Also ich machte jetzt gerade wieder eine vorzeitige Sicherung. Hier mal was, was funktionierte:
Hier mal die Daten der Backupplatte:
Code:
zfs list -t snapshot 
NAME                                                       USED  AVAIL  REFER  MOUNTPOINT
backup/home@halbjahresbackup                               520K      -  2.77T  -
backup/pve-1-virtu01@halbjahresbackup                         0      -  2.06G  -
backup/steamlinux@halbjahresbackup                            0      -   181G  -
Ich machte nun ein neues Snapshot an der Quelle:
Code:
zfs snapshot ssd-pool/steamlinux@halbjahresbackup1

v-machines/home@rep_home_2016-12-26_17:34:48              55.5M      -  2.84T  - 
v-machines/home@rep_home_2016-12-27_01:21:45              3.18G      -  2.86T  - 
v-machines/home@rep_home_2016-12-28_00:00:01              1.05G      -  2.85T  - 
v-machines/home@rep_home_2017-01-01_00:00:01              6.31G      -  2.85T  - 
v-machines/home@rep_home_2017-01-08_00:00:02              6.05G      -  2.82T  - 
v-machines/home@halbjahresbackup                          38.0M      -  2.83T  - 
v-machines/home@rep_home_2017-01-15_00:00:01               120M      -  2.83T  - 
v-machines/home@rep_home_2017-01-22_00:00:08              7.24G      -  2.84T  - 
v-machines/home@rep_home_2017-01-29_00:00:01              10.7G      -  2.87T  - 
v-machines/home@rep_home_2017-02-05_00:00:01              26.6G      -  2.84T  - 
v-machines/home@halbjahresbackup1                          248K      -  2.79T  -
Dann das ganze gesynct:
Code:
zfs send -v -i ssd-pool/steamlinux@halbjahresbackup ssd-pool/steamlinux@halbjahresbackup1 | zfs receive backup/steamlinux 
send from @halbjahresbackup to ssd-pool/steamlinux@halbjahresbackup1 estimated size is 29.8G
total estimated size is 29.8G
TIME        SENT   SNAPSHOT
23:22:07   1.13M   ssd-pool/steamlinux@halbjahresbackup1
23:25:10   29.8G   ssd-pool/steamlinux@halbjahresbackup1
zfs send -v -i ssd-pool/steamlinux@halbjahresbackup   0.02s user 5.22s system 2% cpu 3:04.28 total
zfs receive backup/steamlinux  0.00s user 18.89s system 9% cpu 3:14.61 total
Funktionierte einwandfrei.

Dann machte ich das gleiche mit Home. Das ganze sieht nun so aus:
Code:
zfs list -t snapshot 
NAME                                                       USED  AVAIL  REFER  MOUNTPOINT
backup/home@halbjahresbackup                               520K      -  2.77T  -
backup/pve-1-virtu01@halbjahresbackup                         0      -  2.06G  -
backup/steamlinux@halbjahresbackup                        19.3G      -   181G  -
backup/steamlinux@halbjahresbackup1                           0      -   181G  -
Also auch wieder ein neues Snapshot an der Quelle und syncen:
Code:
zfs snapshot v-machines/home@halbjahresbackup1

zfs send -v -i v-machines/home@halbjahresbackup v-machines/home@halbjahresbackup1 | zfs receive backup/home 
send from @halbjahresbackup to v-machines/home@halbjahresbackup1 estimated size is 116G
total estimated size is 116G
TIME        SENT   SNAPSHOT
cannot receive incremental stream: destination backup/home has been modified
since most recent snapshot
warning: cannot send 'v-machines/home@halbjahresbackup1': Broken pipe
Warum? Was passt da nicht. Das gleiche Problem hatte ich auch das letzte mal bei diesem Dataset. Muste die ganzen 3TB neu syncen. Möchte auch natürlich nicht jedes mal. Also was geht da schief?
 
die fehlermeldung besagt, dass backup/home neueren inhalt hat, der durch das receive überschrieben werden würde. wenn du sicher bist dass diese änderungen "unabsichtlich" waren, kannst du sie mit "-F" beim receive verwerfen:

man zfs said:
-F

Force a rollback of the file system to the most recent snapshot before performing the receive operation. If receiving an incremental replication stream (for example, one generated by zfs send -R -[iI]), destroy snapshots and file systems that do not exist on the sending side.

mittels "zfs diff" sollten sich die änderungen eruieren lassen (einfach den letzten gemeinsamen snapshot mit dem aktuellen inhalt des ziels vergleichen), um sicherzugehen (snapshots lassen sich ja auch mounten, also kannst du tatsächlich dann auch veränderte dateien vergleichen!)
 
Danke für die Antwort. Also irgendwie funktioniert das nicht:
Code:
zfs diff v-machines/home@halbjahresbackup backup/home
Not an earlier snapshot from the same fs: invalid name

zfs diff ssd-pool/steamlinux@halbjahresbackup1 backup/steamlinux
Not an earlier snapshot from the same fs: invalid name
Aber es sollte gehen, das FS stimmt, wird ja sogar von der Autocompletion vorgeschlagen:
Code:
zfs diff v-machines/home@halbjahresbackup backup/home
completing filesystem/snapshot
home                   home@halbjahresbackup
Beim gleichen Pool funktioniert es funktioniert es aber:
Code:
zfs diff ssd-pool/steamlinux@halbjahresbackup1 ssd-pool/steamlinux

M       /ssd-pool/steamlinux/
M       /ssd-pool/steamlinux/user-steamlinux
M       /ssd-pool/steamlinux/user-steamlinux/steamapps/appmanifest_212070.acf
M       /ssd-pool/steamlinux/user-steamlinux/steamapps/appmanifest_257510.acf
-       /ssd-pool/steamlinux/user-steamlinux/steamapps/common/star\0040conflict/data/models_objects.pak
-       /ssd-pool/steamlinux/user-steamlinux/steamapps/common/star\0040conflict/data/sound_ambient.pak
-       /ssd-pool/steamlinux/user-steamlinux/steamapps/common/star\0040conflict/data/sound_hangar.pak
-       /ssd-pool/steamlinux/user-steamlinux/steamapps/common/star\0040conflict/data/textures_effects_models.pak
 
mein vorschlage wäre (analog genauso für die anderen datasets):

Code:
zfs diff backup/home@halbjahresbackup backup/home

"backup/home@halbjahresbackup" und "v-machines/home@halbjahresbackup" sollten ja ident sein (von diesem punkt willst du ja inkrementell senden) - aber da dazwischen ein send/receive war "weiß" ZFS nicht dass das so ist.
 
Danke Fabian für deine Hilfe. Unterschiede gibt es keine:
Code:
zfs diff backup/home@halbjahresbackup backup/home 
zfs diff backup/home@halbjahresbackup backup/home  0.37s user 102.69s system 88% cpu 1:56.51 total
Trotzdem lässt es sich nicht auf die Platte syncen:
Code:
zfs send -v -i v-machines/home@halbjahresbackup v-machines/home@halbjahresbackup1 | zfs receive backup/home 
send from @halbjahresbackup to v-machines/home@halbjahresbackup1 estimated size is 116G 
total estimated size is 116G 
TIME        SENT   SNAPSHOT 
cannot receive incremental stream: destination backup/home has been modified 
since most recent snapshot 
warning: cannot send 'v-machines/home@halbjahresbackup1': Broken pipe
Hast hier noch eine Idee? Oder soll ich es einfach forcen?
 
möglicherweise https://github.com/zfsonlinux/zfs/issues/3742 ? werden/wurden die backup datasets bei dir gemounted?

falls ja (und nachdem das diff leer ist), könntest du noch versuchen das mounten abzudrehen, gefolgt von einem rollback, gefolgt von einem inkrementellen send/receive

"-F" auf der receive seite automatisiert den rollback, sorgt aber auch dafür dass snapshots die auf der quelle nicht mehr vorhanden sind am ziel gelöscht werden, was u.u. nicht gewollt ist ;)
 
Ok, hab nun ein Rollback gemacht. Da waren tatsächlich 68MB. Danach konnte ich den Snapshot sofort senden. Ich versteh es nicht. Also das einzige was ich gemacht habe, bevor ich das neue Snapshot rüberspielen wollte war die posixacls am Zieldataset, also auf der Backupplatte, aktivieren. Hatte ich damals vergessen. Event. war das schon das Problem. Jedenfalls schreib ich mir das hier gleich mal in meine Doku und, werd in ein paar Monaten wieder ein Backup machen, bin schon sehr gespannt wie es dann geht.

Vielen Dank für deine Hilfe :)
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!