Hi all,
Ich hab hier ein Phänomen / Problem, welches ich mir nicht erklären kann.
Ausgangspunkt: PVE 9.2.11; Storage: ZFS raidz2; Am Beispiel eine VM (Windows Server 2025) mit drei Disks:
sata1: proxmox2-sas-zfs:vm-111-disk-0,aio=threads,cache=writeback,format=raw,size=120G
sata2: proxmox2-sas-zfs:vm-111-disk-1,aio=threads,cache=writeback,format=raw,size=3355444M
scsi2: proxmox2-sas-zfs:vm-111-disk-2,aio=threads,cache=writeback,format=raw,iothread=1,size=350G
Mir ist aufgefallen, dass der Storage sehr voll ist, und diese Disks (gefühlt?) zu viel Platz belegen:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
pxmx2-saspool 6.13T 205G 213K /pxmx2-saspool
pxmx2-saspool/vm-111-disk-0 162G 259G 108G -
pxmx2-saspool/vm-111-disk-1 4.32T 1001G 3.54T -
pxmx2-saspool/vm-111-disk-2 472G 524G 153G -
Mit anderen Worten: Die VM hat disk-1 mit ca 3.2 TByte angelegt, das ZFS Volume ist mit 4.3 TByte erstellt worden; in der VM sehe ich diese Festplatte auch mit der Größe 3276,68 GB (diskmgmt.msc aka "Windows Datenträgerverwaltung"), auch die Werte für die anderen Platten passen mit 120GB und 350GB zu der Definition in der VM, die ZFS Volumes sind aber alle deutlich größer...
Bei einem anderen Proxmox mit ZFS sehe ich hier kaum Differenzen zwischen Größe der ZVols und definierte Größe der virtuellen Disks der VM, allerdings ist das ZFS dort auch "mirror".
Ich will erstmal behaupten dass ich ZFS nicht komplett verstanden habe, aber ich will es verstehen.
Hat jemand eine Idee, woher das "Wachstum" kommen kann, oder kann mich auf die richtigen Stellen schubsen?
Im Storage selbst ist "Thin Provision" nicht aktiviert, Block Size ist 16k (Promox GUI); Snapshost etc. gibts nicht;
Ich habe schon gefunden:
# zfs get reservation
NAME PROPERTY VALUE SOURCE
pxmx2-saspool reservation none default
pxmx2-saspool/vm-111-disk-0 reservation none default
pxmx2-saspool/vm-111-disk-1 reservation none default
pxmx2-saspool/vm-111-disk-2 reservation none default
root@proxmox2:~# zfs list -o space
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
pxmx2-saspool 205G 6.13T 0B 213K 0B 6.13T
pxmx2-saspool/vm-111-disk-0 259G 162G 0B 108G 54.2G 0B
pxmx2-saspool/vm-111-disk-1 1001G 4.32T 0B 3.54T 797G 0B
pxmx2-saspool/vm-111-disk-2 524G 472G 0B 153G 319G 0B
Hier sieht man, dass USEDREFRESERV sehr groß ist (in etwa die Größenordnung, in der mir der Platz abgeht).
Warum meint ZFS hier soviel Platz zusätzlich reservieren zu müssen? Wenn ich ein zvol mit 3.x TByte habe, welches eine virtuelle Disk einer VM darstellt, dann muss das ZFS doch "nur" 3.x TByte reservieren, unabhängig wieviel Daten wirklich drin liegen; selbst wenn die VM "ihre" disk absolut vollschreibt wird ja das zvol nicht größer. Wofür sind dann die weiteren ~800GB USEDREFRESERV? Und ja, ich will die Disks "thick provisioned", damit ich nicht in die Situation komme, dass eine VM mir den ZFS Pool vollschreibt, aber das wäre -- wenn ich das alles richtig verstanden habe -- auch dann gegeben, wenn USEDREFRESERV 0Byte wäre.
Kann mich jemand erhellen?
Viele Grüße aus München,
Mathias
PS: Diese VM lief mal auf einem ESX, wurde importiert und wieder zurück auf den "jetzt nicht mehr ESX sondern proxmox host" migriert; ich weiß dass "SATA" nicht die beste Wahl ist, das ändere ich noch.
PPS: Ich hab wirklich einiges gesucht, auch hier im Forum, ich bin schlauer geworden, aber klar ist es mir immer noch nicht...
Ich hab hier ein Phänomen / Problem, welches ich mir nicht erklären kann.
Ausgangspunkt: PVE 9.2.11; Storage: ZFS raidz2; Am Beispiel eine VM (Windows Server 2025) mit drei Disks:
sata1: proxmox2-sas-zfs:vm-111-disk-0,aio=threads,cache=writeback,format=raw,size=120G
sata2: proxmox2-sas-zfs:vm-111-disk-1,aio=threads,cache=writeback,format=raw,size=3355444M
scsi2: proxmox2-sas-zfs:vm-111-disk-2,aio=threads,cache=writeback,format=raw,iothread=1,size=350G
Mir ist aufgefallen, dass der Storage sehr voll ist, und diese Disks (gefühlt?) zu viel Platz belegen:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
pxmx2-saspool 6.13T 205G 213K /pxmx2-saspool
pxmx2-saspool/vm-111-disk-0 162G 259G 108G -
pxmx2-saspool/vm-111-disk-1 4.32T 1001G 3.54T -
pxmx2-saspool/vm-111-disk-2 472G 524G 153G -
Mit anderen Worten: Die VM hat disk-1 mit ca 3.2 TByte angelegt, das ZFS Volume ist mit 4.3 TByte erstellt worden; in der VM sehe ich diese Festplatte auch mit der Größe 3276,68 GB (diskmgmt.msc aka "Windows Datenträgerverwaltung"), auch die Werte für die anderen Platten passen mit 120GB und 350GB zu der Definition in der VM, die ZFS Volumes sind aber alle deutlich größer...
Bei einem anderen Proxmox mit ZFS sehe ich hier kaum Differenzen zwischen Größe der ZVols und definierte Größe der virtuellen Disks der VM, allerdings ist das ZFS dort auch "mirror".
Ich will erstmal behaupten dass ich ZFS nicht komplett verstanden habe, aber ich will es verstehen.
Hat jemand eine Idee, woher das "Wachstum" kommen kann, oder kann mich auf die richtigen Stellen schubsen?
Im Storage selbst ist "Thin Provision" nicht aktiviert, Block Size ist 16k (Promox GUI); Snapshost etc. gibts nicht;
Ich habe schon gefunden:
# zfs get reservation
NAME PROPERTY VALUE SOURCE
pxmx2-saspool reservation none default
pxmx2-saspool/vm-111-disk-0 reservation none default
pxmx2-saspool/vm-111-disk-1 reservation none default
pxmx2-saspool/vm-111-disk-2 reservation none default
root@proxmox2:~# zfs list -o space
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
pxmx2-saspool 205G 6.13T 0B 213K 0B 6.13T
pxmx2-saspool/vm-111-disk-0 259G 162G 0B 108G 54.2G 0B
pxmx2-saspool/vm-111-disk-1 1001G 4.32T 0B 3.54T 797G 0B
pxmx2-saspool/vm-111-disk-2 524G 472G 0B 153G 319G 0B
Hier sieht man, dass USEDREFRESERV sehr groß ist (in etwa die Größenordnung, in der mir der Platz abgeht).
Warum meint ZFS hier soviel Platz zusätzlich reservieren zu müssen? Wenn ich ein zvol mit 3.x TByte habe, welches eine virtuelle Disk einer VM darstellt, dann muss das ZFS doch "nur" 3.x TByte reservieren, unabhängig wieviel Daten wirklich drin liegen; selbst wenn die VM "ihre" disk absolut vollschreibt wird ja das zvol nicht größer. Wofür sind dann die weiteren ~800GB USEDREFRESERV? Und ja, ich will die Disks "thick provisioned", damit ich nicht in die Situation komme, dass eine VM mir den ZFS Pool vollschreibt, aber das wäre -- wenn ich das alles richtig verstanden habe -- auch dann gegeben, wenn USEDREFRESERV 0Byte wäre.
Kann mich jemand erhellen?
Viele Grüße aus München,
Mathias
PS: Diese VM lief mal auf einem ESX, wurde importiert und wieder zurück auf den "jetzt nicht mehr ESX sondern proxmox host" migriert; ich weiß dass "SATA" nicht die beste Wahl ist, das ändere ich noch.
PPS: Ich hab wirklich einiges gesucht, auch hier im Forum, ich bin schlauer geworden, aber klar ist es mir immer noch nicht...