ZFS Blocksize

Alvin2k8

Member
Feb 22, 2023
72
1
8
HAllo,

wir würden gerne die Blocksize unseres Stores auf 64K anpassen.
Aktuell ist es auf 16K und es wird unmengen an Speicher belegt der nicht benutzt werden kann.

Wie ändere ich das im "laufenden Betrieb" am besten ab?
 
Danke!

Welche Blocksize würdest du empfehlen?
6 Platten mit jeweils 3,84TB (nvme)

Aktuell scheints wohl auf 128 zu sein...

Der Befehl zfs get recordsize STORENAME --> da sinds 128K
 
Das ist was anderes, da werden die Blockgröße des Volume, z.B. von 8k auf die 128k Verteilt.
Um den "besten" Wert zu bestimmen gibt's ein Script "special_small_blocks.sh" das ich nutze.
Bei Daten, wie Videos, Bilder oder (ISO-)Images nutze ich recordsize=1M.
Hier ist das Script:
Code:
# special_small_blocks.sh
#!/bin/bash
# https://forum.level1techs.com/t/zfs-metadata-special-device-z/159954/1
find . -type f -print0 | xargs -0 ls -l | awk '{ n=int(log($5)/log(2)); if (n<10) { n=10; } size[n]++ } END { for (i in size) printf("%d %d\n", 2^i, size[i]) }' | sort -n | awk 'function human(x) { x[1]/=1024; if (x[1]>=1024) { x[2]++; human(x) } } { a[1]=$1; a[2]=0; human(a); printf("%3d%s: %6d\n", a[1],substr("kMGTEPYZ",a[2]+1,1),$2) }'
 
pool: datastore
state: ONLINE
scan: scrub repaired 0B in 00:00:00 with 0 errors on Sun Jun 9 00:24:01 2024
config:

NAME STATE READ WRITE CKSUM
datastore ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0T210957 ONLINE 0 0 0
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0T330182_1 ONLINE 0 0 0
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNS0WA22229 ONLINE 0 0 0
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0R516673 ONLINE 0 0 0
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0T306619_1 ONLINE 0 0 0
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0T318820 ONLINE 0 0 0

errors: No known data errors

NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
datastore 21.0T 5.79T 15.2T - - 8% 27% 1.00x ONLINE -
raidz2-0 21.0T 5.79T 15.2T - - 8% 27.6% - ONLINE
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0T210957 3.49T - - - - - - - ONLINE
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0T330182_1 3.49T - - - - - - - ONLINE
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNS0WA22229 3.49T - - - - - - - ONLINE
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0R516673 3.49T - - - - - - - ONLINE
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0T306619_1 3.49T - - - - - - - ONLINE
nvme-SAMSUNG_MZQL23T8HCLS-00A07_S64HNE0T318820 3.49T - - - - - - - ONLINE
 
Bei mir kommen die einzelnen Festplatten der VMs

datastore/base-144-disk-0 volblocksize 16K default
 
wir würden gerne die Blocksize unseres Stores auf 64K anpassen.
Aktuell ist es auf 16K und es wird unmengen an Speicher belegt der nicht benutzt werden kann.
Mit 64K wird tendenziell eher noch mehr Speicher gebraucht, nicht weniger.

Bevor du an der volblocksize rumspielst, was ist denn genau das Problem und das Setup?
 
Das Setup ist ober genau herausgearbeitet worden, kann man nachlesen.
Über den Aufruf des Scripts aus https://forum.proxmox.com/threads/zfs-blocksize.149611/#post-677552 im ZFS Volume, sieht er, wie die Verteilung seiner Daten aussieht und könnte entsprechende Anpassungen an der zfs recordsize eines Volumes vornehmen.
Evtl. sind dann auch noch weitere Sub ZFS-Volumes sinnvoll.
Mir ist noch nicht mal klar wo seine Daten genau liegen, was für ein Disk Format usw.
Sprich, mir ist aus dem bisherigen Verlauf gar nichts klar.
Die Unklarheit ist vermutlich ein Grund, warum Du von recordsize sprichst, während er von volblocksize spricht.
 
Wenn er etwas in den ZVOL schreibt, z.B VM Disks, dann ist es volblocksize.
Default ist 16k.
Er möchte mehr Speicher.
Nur hat er die Pool Geometrie mit 6 drives und RAIDZ2 schon perfekt getroffen (https://github.com/jameskimmel/ZFS/blob/main/The problem with RAIDZ.md#efficiency-tables) eine Umstellung auf 64k bringt genau gar nix, ausser bisschen bessere Kompression.

Dataset ist dann für Dinge wie isos und backups und nochmal eine völlig andere Baustelle.

Darum, nochmals die Frage, was soll das
Aktuell ist es auf 16K und es wird unmengen an Speicher belegt der nicht benutzt werden kann.
genau bedeuten?
 
Bist du dir sicher, dass OP von datasets (recordsize) und nicht von zvols (volblocksize) spricht?
 
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!