Hallo,
Ich sende einmal die Woche Backups von meinen VMs/LXCs über CIFS zum NAS (FreeNAS).
Das ganze dauert leider jetzt rund 2 1/2 Stunden und da ich das im "Stop"-Modus mache sind dann halt die VMs ziemlich lange nicht erreichbar.
Verbunden sind die Server per Gbit-LAN und bei normalem sequentiellem Schreiben von großen Dateien geht da normal auch so 117 MB/s.
Wenn ich Zstd als Kompression nutze schafft das Backup aber nur rund 30-40MB/s und ohne Kompression sind es um die 60 MB/s.
Die VMs liegen auf einem Raidz1 Pool aus 5 SATA SSD. Geschrieben wird auf einen Raidz1 Pool aus 4x HDDs.
CPUs sind auf beiden Servern nicht ausgelastet. NAS dümpelt so bei 0-10% CPU-Auslastung herum und Proxmox steigt während des Zstd-Backups von 35% auf rund 50% an. IO delay ist beim Transfer bei rund 1%.
An der Leserate von dem SSD-Pool liegt es glaube ich nicht. Wenn da nicht viel transferiert werden muss geht die nämlich auf rund 200MB/s hoch:
Wird aber ordentlich auf das NAS geschrieben, dann bricht auch die Leserate etwa auf die Schreibrate ein:
Hat jemand eine Idee was da der Flaschenhals ist?
Schreibt vzdump eigentlich sequentiell und async? Wenn das viele keine Schreiboperationen oder Sync Writes wären, dann könnten meine HDDs im NAS der Flaschenhals sein.
Oder bremst da vielleicht die Kompressionweil nicht genug CPU Kerne benutzt werden?
Hat jemand eine Idee, ob man das irgendwie optimieren kann? Ich konnte da jetzt nicht wirklich viele Optionen entdecken. Weder per CLI in den Konfig-Dateien noch per GUI.
Sonst würde mir nur einfallen die Backups lokal auf meinen HDD-Pool zu schreiben und dann per rsync nachträglich auf den NAS zu schieben. Dafür würde sich dann ja das Hook-Script anbieten. Hier steht "You can find an example in the documentation directory (vzdump-hook-script.pl)" aber ich konnte leider keine "vzdump-hook-script.pl" finden. Weiß jemand wie ein solches Hook-Script aussehen müsste, damit es einen Befehl erst nach dem Backup ausführt?
Edit:
Ok, am SMB und NAS liegt es wohl nicht. Habe mal ein Dataset auf dem lokalen HDD-Pool erzeugt und das als Vzdump-Storage angegeben und ist ebenfalls nur um die 30-40MB/s. Also kein Unterschied, außer dass da die CPU Auslastung ein Tick höher ist, was vermutlich daran liegt, dass da ZFS einfach mehr zu tun hat weil dann zwei statt nur einem Pool benutzt werden.
Ich sende einmal die Woche Backups von meinen VMs/LXCs über CIFS zum NAS (FreeNAS).
Das ganze dauert leider jetzt rund 2 1/2 Stunden und da ich das im "Stop"-Modus mache sind dann halt die VMs ziemlich lange nicht erreichbar.
Verbunden sind die Server per Gbit-LAN und bei normalem sequentiellem Schreiben von großen Dateien geht da normal auch so 117 MB/s.
Wenn ich Zstd als Kompression nutze schafft das Backup aber nur rund 30-40MB/s und ohne Kompression sind es um die 60 MB/s.
Die VMs liegen auf einem Raidz1 Pool aus 5 SATA SSD. Geschrieben wird auf einen Raidz1 Pool aus 4x HDDs.
CPUs sind auf beiden Servern nicht ausgelastet. NAS dümpelt so bei 0-10% CPU-Auslastung herum und Proxmox steigt während des Zstd-Backups von 35% auf rund 50% an. IO delay ist beim Transfer bei rund 1%.
An der Leserate von dem SSD-Pool liegt es glaube ich nicht. Wenn da nicht viel transferiert werden muss geht die nämlich auf rund 200MB/s hoch:
Code:
INFO: 47% (31.1 GiB of 66.0 GiB) in 10m 29s, read: 145.9 MiB/s, write: 17.7 MiB/s
INFO: 48% (31.8 GiB of 66.0 GiB) in 10m 34s, read: 150.0 MiB/s, write: 9.6 MiB/s
INFO: 49% (32.4 GiB of 66.0 GiB) in 10m 38s, read: 163.6 MiB/s, write: 12.3 MiB/s
INFO: 50% (33.1 GiB of 66.0 GiB) in 10m 42s, read: 158.5 MiB/s, write: 32.0 KiB/s
INFO: 51% (33.7 GiB of 66.0 GiB) in 10m 45s, read: 219.2 MiB/s, write: 0 B/s
INFO: 52% (34.4 GiB of 66.0 GiB) in 10m 49s, read: 182.3 MiB/s, write: 10.8 MiB/s
INFO: 53% (35.1 GiB of 66.0 GiB) in 10m 52s, read: 216.9 MiB/s, write: 0 B/s
INFO: 54% (35.7 GiB of 66.0 GiB) in 10m 55s, read: 208.4 MiB/s, write: 21.3 KiB/s
INFO: 55% (36.4 GiB of 66.0 GiB) in 10m 59s, read: 183.1 MiB/s, write: 10.3 MiB/s
INFO: 56% (37.0 GiB of 66.0 GiB) in 11m 2s, read: 203.8 MiB/s, write: 0 B/s
INFO: 57% (37.8 GiB of 66.0 GiB) in 11m 6s, read: 208.4 MiB/s, write: 16.0 KiB/s
INFO: 58% (38.4 GiB of 66.0 GiB) in 11m 9s, read: 198.5 MiB/s, write: 1.9 MiB/s
INFO: 59% (39.0 GiB of 66.0 GiB) in 11m 12s, read: 213.9 MiB/s, write: 38.7 KiB/s
INFO: 60% (39.6 GiB of 66.0 GiB) in 11m 15s, read: 215.9 MiB/s, write: 0 B/s
Wird aber ordentlich auf das NAS geschrieben, dann bricht auch die Leserate etwa auf die Schreibrate ein:
Code:
INFO: 74% (48.9 GiB of 66.0 GiB) in 15m 5s, read: 31.4 MiB/s, write: 29.2 MiB/s
INFO: 75% (49.5 GiB of 66.0 GiB) in 15m 23s, read: 36.5 MiB/s, write: 34.5 MiB/s
INFO: 76% (50.2 GiB of 66.0 GiB) in 15m 38s, read: 44.7 MiB/s, write: 36.4 MiB/s
INFO: 77% (50.8 GiB of 66.0 GiB) in 15m 55s, read: 40.5 MiB/s, write: 36.3 MiB/s
INFO: 78% (51.5 GiB of 66.0 GiB) in 16m 13s, read: 38.1 MiB/s, write: 36.6 MiB/s
INFO: 79% (52.2 GiB of 66.0 GiB) in 16m 25s, read: 56.1 MiB/s, write: 38.9 MiB/s
INFO: 80% (52.8 GiB of 66.0 GiB) in 16m 37s, read: 55.6 MiB/s, write: 39.6 MiB/s
INFO: 81% (53.5 GiB of 66.0 GiB) in 16m 55s, read: 37.5 MiB/s, write: 34.3 MiB/s
Hat jemand eine Idee was da der Flaschenhals ist?
Schreibt vzdump eigentlich sequentiell und async? Wenn das viele keine Schreiboperationen oder Sync Writes wären, dann könnten meine HDDs im NAS der Flaschenhals sein.
Oder bremst da vielleicht die Kompressionweil nicht genug CPU Kerne benutzt werden?
Hat jemand eine Idee, ob man das irgendwie optimieren kann? Ich konnte da jetzt nicht wirklich viele Optionen entdecken. Weder per CLI in den Konfig-Dateien noch per GUI.
Sonst würde mir nur einfallen die Backups lokal auf meinen HDD-Pool zu schreiben und dann per rsync nachträglich auf den NAS zu schieben. Dafür würde sich dann ja das Hook-Script anbieten. Hier steht "You can find an example in the documentation directory (vzdump-hook-script.pl)" aber ich konnte leider keine "vzdump-hook-script.pl" finden. Weiß jemand wie ein solches Hook-Script aussehen müsste, damit es einen Befehl erst nach dem Backup ausführt?
Edit:
Ok, am SMB und NAS liegt es wohl nicht. Habe mal ein Dataset auf dem lokalen HDD-Pool erzeugt und das als Vzdump-Storage angegeben und ist ebenfalls nur um die 30-40MB/s. Also kein Unterschied, außer dass da die CPU Auslastung ein Tick höher ist, was vermutlich daran liegt, dass da ZFS einfach mehr zu tun hat weil dann zwei statt nur einem Pool benutzt werden.
Last edited: