Backups beschleunigen?

Dunuin

Distinguished Member
Jun 30, 2020
13,827
4,043
243
Germany
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:
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:
Ich habe in der Zwischenzeit etwas herumgetestet und nun läuft es deutlich besser. Bin nicht ganz sicher was da jetzt genau die Bremse war. Gemachte hatte ich...:
- im BIOS bei Advanced Power Management den "Energy efficient Turbo" deaktiviert
- bei allen VMs das CPU-Modell von "Broadwell-IBRS" auf "host" umgestellt (ist ein E5-2620 v4 also Broadwell).

Jetzt schaffe ich da bei einem thin zvol mit 66GiB größe:
LZ4 nach lokalem HDD Mirror:
CPU: +8%
IO: +1.5%
Verarbeitungsgeschwindigkeit: 255.0 MiB/s
Höchste Schreibrate: 133.9 MiB/s
Höchste Leserate: 385.5 MiB/s
Size: 10.37GB

Zstd nach lokalem HDD Mirror:
CPU: +8%
IO: +1.2%
Verarbeitungsgeschwindigkeit: 210.5 MiB/s
Höchste Schreibrate: 90.2 MiB/s
Höchste Leserate: 407.1 MiB/s
Size: 9.78GB

Unkomprimiert nach lokalem HDD Mirror:
CPU: +10%
IO: +1.5%
Verarbeitungsgeschwindigkeit: 305.8 MiB/s
Höchste Schreibrate: 184.7 MiB/s
Höchste Leserate: 385.9 MiB/s
Size: 12.33GB

Zstd nach SMB:
CPU: +8%
IO: +0.2%
Verarbeitungsgeschwindigkeit: 216.6 MiB/s
Höchste Schreibrate: 88.3 MiB/s
Höchste Leserate: 379.4 MiB/s
Size: 9.78GB


Bleibe ich also erst einmal bei Zstd weil da eh nicht viel mehr über die Gbit NIC geht. Wenn ich später eine 10Gbit NIC kaufe würde ich aber wohl zu unkomprimiert oder LZ4 wechseln, damit die VMs nicht so lange gestoppt sind.
 
Last edited:

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!