Bei mir habe ich ein ähnliches Konstrukt @home und @wörk laufen.
Mal anhand meines privaten PBS demonstriert:
Es gibt das ZFS dataset
rpool/datastore.
Dort habe ich eine Quota gesetzt um sicherzustellen, dass nicht eines Tages der Pool überschwappt, 20% Buffer für ZFS & OS.
Außerdem diverse Konfiguration, recordsize = 4M, compression = zstd, mountpoint = /datastore.
Die 4M recordsize hielt ich für eine gute Idee, da PBS ohnehin mit 4MB Blöcken agiert und größere Recordsizes zu weniger Metadaten führen, d.h. weniger RAM Einbußen, wenn man L2ARC verwendet und weniger Platzverbrauch auf den Special Devices. Bislang habe ich das auch nicht bereut.
Die Compression scheint sich trotz aller Bemühungen von PBS dennoch auszuzahlen.
1.22x mag nicht jeden beeindrucken, aber ich denke mir da "hey, it's free real estate!"
Die darunterliegenden Datasets, bspw fsn-pve-01 erben sämtliche Einstellungen von rpool/datastore, dort setze ich lediglich eine Quota, falls ich das möchte.
Privat ist das ganze ein wenig laxer geregelt mit den Quotas, auch um erstmal den Bedarf festzustellen.
Hier würde man natürlich für jeden Kunden immer eine Quota setzen, je nach bestellter Speichermenge.
Durch die Quota, passen sich auch die Werte in der Weboberfläche (und dementsprechend in den API Responses) entsprechend an - sieht man hier sehr schön am fsn-pmg-01 datastore, den ich auf 1G limitiert habe.
Als Kontrast dazu hat der fsn-pve-01 datastore keine Quota gesetzt, deshalb greifen die 3T Quota von rpool/datastore als oberes Limit.
Wenn du das auf Spindeln machst ist irgendwo bei 1000 Snapshots pro Datastore allerdings Schluss.... bzw. die Backup-Ansicht in Proxmox geht dann auf Timeout....
Bislang bleibt mir das noch erspart, aber man merkt wie es mit wachsender Zahl an Backups degradiert...
@wörk nutze ich Special Devices mit Erfolg, allerdings denke ich mir oft, es wäre noch hilfreicher wenn die kleinen Index Files auch auf SSD liegen würden und wirklich nur der Inhalt des .chunks Ordners auf den Spindeln.
Dafür habe ich leider noch keinen gangbaren Weg entdeckt.
special_small_blocks wäre vielleicht eine Idee, um die kleinen Index Files mit auf die Special Devices zu verlagern. (?)
Besonders bei den GC Jobs dauert es idR am längsten die Index Files zu markieren. Das tatsächliche durchrattern durch die Metadaten geht zack-zack dank NVMe Special Devices.
Hat ja schon mal jemand experimentiert in die Richtung? Bringt es in der Praxis nennenswerte Vorteile die Index Files auszulagern?