ZFS Replication Speicherplatz

Stone

Well-Known Member
Nov 18, 2016
40
4
48
40
Hallo.

Ich habe in einem kleinen drei Node PVE Cluster bei dem ich einmal die Replication via ZFS ausprobieren möchte.
Eine Sache ist mir aufgefallen die mir nicht ganz klar ist.

Ich habe eine VM die 2Tb groß ist. Diese möchte ich jetzt von einer Node auf die andere replizieren.

Bevor ich das machen hier die Auslastung von ZFS:

Code:
root@node03:~# zfs list -o space -r rpool-sata
NAME                      AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
rpool-sata                3.21T  2.10T        0B     96K             0B      2.10T
rpool-sata/vm-101-disk-0  3.25T  41.3G        0B   2.01G          39.2G         0B
rpool-sata/vm-101-disk-1  3.62T  2.06T        0B   1.65T           419G         0B

Code:
root@node03:~# zpool list -v
NAME                                               SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
rpool                                             1.73T  2.32G  1.73T        -         -     0%     0%  1.00x    ONLINE  -
  raidz1-0                                        1.73T  2.32G  1.73T        -         -     0%  0.13%      -    ONLINE
    scsi-3600605b00a9f8ff02a34b246ee62dd7e-part3   446G      -      -        -         -      -      -      -    ONLINE
    scsi-3600605b00a9f8ff02a34b250ef03c0f2-part3   446G      -      -        -         -      -      -      -    ONLINE
    scsi-3600605b00a9f8ff02a34b259ef892dbf-part3   446G      -      -        -         -      -      -      -    ONLINE
    scsi-3600605b00a9f8ff02a34b261f005b073-part3   446G      -      -        -         -      -      -      -    ONLINE
rpool-sata                                        5.44T  1.66T  3.78T        -         -     1%    30%  1.00x    ONLINE  -
  mirror-0                                        2.72T   841G  1.90T        -         -     1%  30.2%      -    ONLINE
    scsi-3600605b00a9f8ff02a34b269f080dbd9        2.73T      -      -        -         -      -      -      -    ONLINE
    scsi-3600605b00a9f8ff02a34b271f0f6899d        2.73T      -      -        -         -      -      -      -    ONLINE
  mirror-1                                        2.72T   854G  1.88T        -         -     1%  30.7%      -    ONLINE
    scsi-3600605b00a9f8ff02a34b27af17de94a        2.73T      -      -        -         -      -      -      -    ONLINE
    scsi-3600605b00a9f8ff02a34b281f1eb8872        2.73T      -      -        -         -      -      -      -    ONLINE


Soweit alles fein.
Die VM 101 braucht aktuell 1,65T und es sind noch 419G reserviert und gesamt mach dsa eine Auslastung von 2,06T.


Wenn der Replication-Job durchgelaufen ist sieht das ganze dann so aus.
Die VM läuft auf node03 und wurde auf node02 repliziert:
Code:
root@node03~# zfs list -o space -r rpool-sata
NAME                                                     AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
rpool-sata                                               1.55T  3.76T        0B     96K             0B      3.76T
rpool-sata/vm-101-disk-0                                 1.59T  43.3G      664K   2.01G          41.3G         0B
rpool-sata/vm-101-disk-0@__replicate_101-0_1669288740__      -   664K         -       -              -          -
rpool-sata/vm-101-disk-1                                 3.62T  3.72T      236K   1.65T          2.06T         0B
rpool-sata/vm-101-disk-1@__replicate_101-0_1669288740__      -   236K         -       -              -          -


Wir sehen die Resevierung ist auf 2,06T rauf gegangen und damit ist mein Pool zu 3,72T ausgelastet.
Warum ist das so? Die Daten wurden ja von node03 auf node02 gespielt und nicht local auch noch replizert?
Weil so wie es aktuell aussieht brauche ich jetzt für eine VM die 2Tb hat gesamt 8Tb an Speicher anstatt von 4Tb (jeweils 2Tb pro Node).

Hat dazu jemand eine Idee?

Danke.
 
Also erstmal solltest du gucken, dass dein Discard/TRIM auch richtig läuft. "USEDREFRESERV 419G" und "USEDREFRESERV 2.06T" klingt für mich so, als wenn entweder nicht discardet wird oder keine TRIM-Befehle beim ZFS Pool ankommen. Oder du hast Thin Provisioning nicht für den ZFSpool Storage aktiviert.
 
Last edited:
Trim ist auf den Disken aktiviert. Der die Beispiel VM ist ein PBS Server.

Ich habe mir die Pools angesehen und diese sollten auch als Thin angelegt sein:


Code:
root@node03:~# zfs get  reservation,volsize rpool-sata/vm-101-disk-0
NAME                      PROPERTY     VALUE    SOURCE
rpool-sata/vm-101-disk-0  reservation  none     default
rpool-sata/vm-101-disk-0  volsize      40G      local


root@node03:~# zfs get  reservation,volsize rpool-sata/vm-101-disk-1
NAME                      PROPERTY     VALUE    SOURCE
rpool-sata/vm-101-disk-1  reservation  none     default
rpool-sata/vm-101-disk-1  volsize      2T       local


Auf der Node auf dem der Server läuft werden hier noch Disken für die Replikation angelegt.
Dies sieht für mich etwas komisch aus.

Code:
root@node03:~# zfs get  reservation,volsize rpool-sata/vm-101-disk-0@__replicate_101-0_1669365000__
NAME                                                     PROPERTY     VALUE    SOURCE
rpool-sata/vm-101-disk-0@__replicate_101-0_1669365000__  reservation  -        -
rpool-sata/vm-101-disk-0@__replicate_101-0_1669365000__  volsize      40G      local


root@node03:~# zfs get  reservation,volsize rpool-sata/vm-101-disk-1@__replicate_101-0_1669365000__
NAME                                                     PROPERTY     VALUE    SOURCE
rpool-sata/vm-101-disk-1@__replicate_101-0_1669365000__  reservation  -        -
rpool-sata/vm-101-disk-1@__replicate_101-0_1669365000__  volsize      2T       local


Warum werden hier nochmal 2x Disken angelegt? Sollte die Replikation nicht via Snapshots laufen?

Danke
 
Warum werden hier nochmal 2x Disken angelegt? Sollte die Replikation nicht via Snapshots laufen?
Was auf "@irgendwas" endet ist ein Snapshot und keine Disk. "pool/zvol@irgendwas" ist also der snapshot "irgendwas" vom zvol "pool/zvol".
 
Vielen Dank für die Info.
ZFS ist mir leider etwas neu. Ich verwende normal immer eine NetApp.

Aber ganz klar ist mir immer noch nicht warum so viel Speicher verbraucht wird wenn ich eine Replication einrichte über das PVE GUI.
Das macht das ganze eher unbrauchbar.
 
Du hast auch immer noch nichts dazu gesagt ob du Thin Provisioning für den ZFSPool Storage aktiviert hast und ob du geprüft hast, dass da Discard/TRIM funktioniert (sowohl discard in jedem GastOS, Protokoll wie Virtio SCSI was mit TRIM unterstützt, DiscardCheckbox für jede virtuelle Disk gesetzt, ...).
Weil wenn die Refreservation zu hoch ist, dann liegt es üblicherweise an einem von beiden.
 
Sorry fürs späte melden. Die letzten Tage war viel los.
Du hattest recht das die ZFS Pools Thick und nicht Thin waren.
Dies habe ich jetzt geändert und jetzt sieht das ganze besser aus.

Danke für die Tipp.
Dicard habe ich immer auf jeder VM aktiv.
 
Last edited:
  • Like
Reactions: Dunuin

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!