Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)

Zdravím vespolek,
dopracoval jsem se k upgrade domácího "amatérlabu". Doposud mám data uložená na dvou Synology - SHR2 15TB/9TB - živá data, Single 10TB - main backup) a jednom Asustoru (Mirror 2TB/1TB - druhý backup důležitých dat ) NASech. Virtuály mi zatím obsluhuje HP miniPC s jedním SSD a 20GB RAM.

Zkompletoval jsem plnotučný server, ve kterém mám k dispozici hdd šachty:
16x 2,5" SAS
3x 3,5" SATA

Fyzicky mám (vše refurbished):
2x 146GB SAS (2,5")
5x 450GB SAS (2,5")
2x 300GB SAS (2,5")
2x 600GB SAS (2,5")
2x 900GB SAS (2,5")

1x 6TB SATA (3,5")
2x 3TB SATA (3,5")

250GB SSD M.2 a 250GB NVMe (na kartě v jednom PCI-E x8 slotu)

Na webu jsem pročítal hodně názorů na to, nad jakými VDEV postavit POOL(y). Chci maximálně využít disky, které mám, s tím, aby bylo relativně jednoduché budoucí rozšiřování. Chtěl bych aspoň čtyři  pooly - jeden na samotný Proxmox systém (1x Mirror VDEV - 2x 146GB SAS), dva na data, aby šlo v případě potřeby přelít data mezi pooly a s jedním poolem čachrovat... Čtvrtý (a příp. další) pool by byl asi Single VDEV (6TB SATA, ...) na zálohy. Vzhledem k ke kompromisu rychlost/redundance mi vyšla dvě řešení datových poolů:
A: pooly tvořené Mirror VDEVy (2 disky v jednom VDEV)
B: pooly tvořené RAIDZ2 VDEVy (4 disky v jednom VDEV)
Na ty dva datové pooly bych vyhradil pouze 2,5" pozice, tedy 14x.

Pro tyto pooly bych použil M.2 a NVMe jako L2ARC (pro každý pool jeden).

Pool z Mirror VDEV je však podstatně pomalejší než z RAIDZ2 VDEV. zdroj zde:
https://icesquare.com/wordpress/zfs-performance-mirror-vs-raidz-vs-raidz2-vs-raidz3-vs-striped/
Pro Mirror VDEV zase hovoří jednoduchost rozšiřování - můžu to navyšovat po dvou discích... Disky hodlám měnit za větší, když se mi naskytne nějaká dobrá koupě refurbished kousků (Ebay, ...)

Ty SATA 3,5" disky bych asi použil na Single VDEVový pool(y) pro zálohy.

Doplňující info:
- Pojede to na Proliant ML350 G6, 8C/16T, 112GB RAM
Struktura dat:
- cca 800GB prac. a osobní věci, data klientů, maily
- cca 800GB instalačky sw, iso obrazy
- cca 400GB disky virtuálů
- cca 5TB multimediálních dat (obrázky, video, hudba)
Virtuály jsou mix Win a Linux. Jeden SQL Server, zbytek na kanc práci, domácí automatizaci a různé pokusy. Jako jeden virtuál bych chtěl nasadit Openmediavault, který by nahradil ty původní NASy.

Pokud jste dočetli až sem, tak bych potřeboval poradit, jak nejvhodněji sestavit ty ZFS pooly.
Díky za Vaše postřehy.


Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #1 kdy: 12. 03. 2021, 22:04:33 »
Ještě přidávám odkaz na zdroj, kde se píše, proč raději používat Mirror místo RAIDZ:
https://jrs-s.net/2015/02/06/zfs-you-should-use-mirror-vdevs-not-raidz/

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #2 kdy: 13. 03. 2021, 00:17:07 »
To bude mit tak 300w v idle ne? Elektrinu mas zdarma, nebo tim topis/vysousis sklep?

Pro data, ktere se dnes vejdou na 1 disk a pristup neni narocny, nema smysl resit takovej server a postaci dve-tri male nasky, primarni treba s mirrorem, a dve zalohy, geograficky jinde.

Podle popisu me ani neprijde, ze to mas na studijni ucely, kdyz tam chces davat ziva/dulezita data.

Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #3 kdy: 13. 03. 2021, 08:28:29 »
Dvě tři NASky mám teď, chci zkusit něco většího... Na studijní účely to mám ve smyslu, že se rád učím nové věci. Samozřejmě tam budou i moje soukromo/pracovní živá data.
Server má v idle cca 140W s 12ti disky, okolo 200W s puštěnými virtuály. Vždycky se mi ty velké obludy líbily, jednu dobu jsem si hrál s šesti IBM x3650 m1, to byl teprve hukot... Navíc, nějaká ta kW dnes mě nebere, na dovču teď člověk nemůže, utrácet v kavárnách jakbysmet...

Mám rád Proxmox, přešel jsem na něj z Xenserveru, když free verzi funkčně ořezali. O ZFS jsem něco načetl, ale v reálu si s ním hraju teprve nyní.
Nechci to rozjet do polemiky, proč to dělám, chtěl bych si vyslechnout názory od někoho, kdo podobná řešení už třeba provozuje. Třeba mě zajímá, jestli opravdu VDEVy RAIDZ1ze tří disků není cesta, atd...
Jistěže si to sám zkouším, ale názory jiných uvítám.

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #4 kdy: 13. 03. 2021, 10:31:05 »
Tak v tomto ti neporadim, ale proslo me rukama zajimave zarizeni z eBaye, ktere bys mozna dokazal experimentalne zakombinovat - Radian RMS-200/8G. Je to nvme ramdisk se zalohovanim, tak jsem si rikal k cemu to asi muze byt dobry... a pak me napadlo ze ZFS by rado melo nevolatilni cache (zil slog), namisto niceni flashek :)


Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #5 kdy: 13. 03. 2021, 11:25:11 »
To je moc dobrý tip, budu na to myslet a pokud mi zbydou nějaké volné prostředky, vyzkouším to. Slot v mašině volný mám, sice jen Gen2, ale to asi nevadí.
SLOG jsem zatím neřešil, podle toho, co jsem doposud o ZFS nastudoval, mi pro můj usecase stačí RAM a L2ARC.
Nejsi sám, kdo ho doporučuje:
https://forums.servethehome.com/index.php?threads/radian-rms-200-8g-100.29703/

David

  • ***
  • 143
    • Zobrazit profil
Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #6 kdy: 13. 03. 2021, 13:15:55 »
Na SLOG se hodil Intel Optane 900p, ještě se dá koupit, ale už se nevyrábí.

Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #7 kdy: 14. 03. 2021, 22:18:40 »
Dobrý den,

pokud to vezmu postupně:
1, raidz vs mirror
Obecně by se dalo říct že raidz má mírně lepší bandwidth a mirror má lepší IOPS.
U klasického raid5 platí že pokud chceme přečíst malý blok který je jen na jednom disku tak poté nám stačí číst jen z tohoto jednoho disku. ZFS ovšem u všech dat ověřuje konzistenci a checksum je uložen pro celý stripe. Takže pokud chceme přečíst jeden blok z jednoho disku v raidz tak stejně musíme přečíst data i z ostatních abychom mohli ověřit součet.
Proto u mirroru máme teoretickou rychlost čtení <počet_disků>*<rychlost_disku> a u raidz máme 1*<rychlost_nejpomalejšího_disku>

Pěkné porovnání rychlostí různých raidů na zfs je zde:
https://calomel.org/zfs_raid_speed_capacity.html

Pokud to nechcete procházet celé tak jen porovnání 2*mirror vs raidz2
 4x 4TB, 2 striped mirrors,     7.5 TB,  w=226MB/s , rw=53MB/s  , r=644MB/s
 4x 4TB, raidz2 (raid6),        7.5 TB,  w=204MB/s , rw=54MB/s  , r=183MB/s

2, Rozdělení poolů
Zde je to podle preferencí. Já osobně bych udělal, jak píšete, pool pro proxmox, pool a pro zálohy ale jen jeden pool na data. Výkon toho datového poolu bude mnohem lepší když v něm budou všechny VDEV a ne jen polovina a druhá polovina v testovacím poolu.
A ten pool pro data bych dělal takhle:
disky bych dával v mirroru. Nejen že se to dá krásně rozšířit ale pokud by jste chtěl dev pool tak jen zavoláte "zpool split"
https://openzfs.github.io/openzfs-docs/man/8/zpool-split.8.html
a z poolu máte najednou 2 pooly kde druhý pool má naprosto stejná data i nastavení, můžete na něm cokoliv testovat a pak až nebude potřeba tak ho jen zrušíte a pomocí "zpool attach" postupně předěláte první zpool aby byl opět redundatní.

backup pool bych udělal jako raidz1 ze 3 disků. Je to odolné proti výpadku jednoho disku a to mi přijde že je na zálohy dostatečné (samozřejmě záleží jaké Vy máte nároky na zálohy).
Backup pool osobně využívám jen pro případ že by hlavní pool odešel takže pro mě pokud odejde backup pool a produkce zůstane funkční tak to není problém protože data mám na produkčním poolu ve snapshotech.
A šance že se rozbije produkce a zároveň odejdou 2 ze 3 disků na backupu je mizivá.

3, rozdělení na datasety, opět je to jen můj názor:
Rád si data uspořádávám logicky do datasetů. Nic mě to nestojí a můžu pro každá data nastavit přesně to co jim vyhovuje.
Například:
iso dataset - recorsize například 1M (stejně většina čtení bude sekvenční), primarycache=metadata (předpokládám že isa se nečtou tak často aby mělo smysl je cachovat v RAM)
dataset pro obrázky,hudbu: asi bych asi nastavil secondarycache=none. To že se malý obrázek zacachuje v RAM mi nevadí ale asi nechci aby mi opotřebovával SSD a cachoval se na ssd když u toho obrázku o výkon načtení tolik nejde.
Pokud jsou videa v jednotné cestě tak bych pro ně udělal zvlášť dataset, pokud jsou namíchané mezi obrázky tak bych pro ně dataset nedělal.
ostatní datasety pro osobní data bych udělal analogicky.

4, jak využít SSD
Na obou ssd bych udělal malý oddíl pro SLOG, stačí 4GB a ten dal v mirroru pro proxmox pool.
Jen pro vysvětlení: oproti na různých forech opakovanému omylu tak stačí SLOG jen hodně malý. SLOG drží synchronně zapisovaná data co jsou v RAM aby mohlo zfs potvrdit že data jsou na bezpečném uložišti. Takže velikost slogu nemá smysl větší než velikost zápisové části RAM v ZFS a to je 4GB. Data se ale při normálním provozu z SLOGU nečtou. Z něj by se čeli jen při pádu systemu když má data ještě v RAM. Takže i když je častý omyl že SLOG zrychlí zápis na pool tak SLOG sníží jen latenci zápisu protože půjde zápis potvrdit dřív ale bandwith je pořád omezený tím pomalým úložištěm.

SLOG pro data pool bych asi nedával. Nevím sice co tam půjde za provoz ale moc synchronních zápisů tam předpokládám nebude (v porovnání s SQL serverem na proxmoxu) a pro asynchronní zápisy se nepoužije.

Cache bych pro datový pool nedával při vatvoření poolu, podle toho co píšete tak NAS má dost RAM, takže možná bude hitrate dobrý i bez cache.

Pokud by se ukázalo že L2ARC není potřeba a hitrate je dobrý i bez ní tak bych zvážil z toho udělat special device v mirroru a dal jí pro datový pool.
https://forum.level1techs.com/t/zfs-metadata-special-device-z/159954

Pak by právě malé soubory jako metadata byly na rychlém SSD takže se uleví plotnám a podle povahy dat by šlo pro dataset kde jsou osobní data a maily nastavit parametr "special_small_blocks".
To dělá to že soubory menší než nastavená hodnota se budou preferovaně ukládat na special device.
Tedy malé náhodné zápisy a čtení které dělá plotnám největší problém přesunete na ssd které s tím nemá problém.
Jen pozor že na to  zatímco slog a L2ARC se dá odebrat kdykoliv tak special device ne (teda jo, ale až v zfs2.0)

5, pár rychlých poznámek na konec
při vytváření poolu nastavit ashift=12, jinak bude problém když se přidá disk co má fyzicky 4k sektory
vypnout ashift, zfs je CoW filesystem a aktualizace času přístupu k souboru znamená změnit data v hlavičce -> tedy kvůli CoW udělat kopii hlavičky jinde. To vede k velké fragmentaci
vždy zapnout kompresi - zfs detekuje nekomprimovatelná data a ty nekomprimuje a dekomprese samotná je stejně hodně optimalizovaná a na vytížení CPU není poznat.
snapshot nezabírá při vytvoření skoro žádné místo a i pak jsou v něm jen změněné bloky a dobře chrání proti smazání dat omylem. Je mnohem lepší namountovat pár minut starý snapshot a jen obnovit smazanou složku nebo dokonce udělat roolback celého snapshotu při větším smazání, než si tahat data den stará data z backup serveru.
zfs send je mnohem lepší na zálohování než rsync. Oproti rsyncu nepřenáší změněné soubory ale jen změněné bloky.


Vytvoření zpoolu a nastavení zfs stejně nejvíc záleží na uložených datech a osobních preferencích ale snad Vám tyto rady pomůžou.

Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #8 kdy: 15. 03. 2021, 00:07:59 »
rokk42 - díky za rady, to téměř přesně vystihlo, co jsem hledal...
Já mezitím četl a četl a sledoval a sledoval kdejaké tutoriály, které mě utvrdily (s Tvoji radou) v tom, že Mirrory jsou asi nejvhodnější.
Prohrabal jsem šuplíky a v rámci prvního testu vytvořil pool z osmi obyčejných použitých 500GB SATA ntb disků (WD, Toshiba, HGST, Seagate) - 4x Mirror VDEV. Jako SLOG jsem mu nastavil NVMe 256GB a L2ARC M.2 SATA 250GB. Vím, že je to asi plýtvání, menší jsem neměl a o dělení na oddíly jsem se dočetl, že ZFS má raději celá zařízení.
Asi bude lepší rozdělit je na oddíly a ty dát taky do Mirroru - vyzkouším v kroku 2.

Nejsem si jistý, jestli je vhodné udělat jeden pool místo dvou, když ponechám ty SATA disky v prvním "hdd enclosure" a do druhého dám ty SASové disky. Pokud navíc budou ty Mirror VDEVy různých velikostí, tak zda to nebude dělat paseku ohledně nestejnoměrného zaplňování těch VDEVů.


Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #9 kdy: 05. 04. 2021, 20:17:07 »
Tak jsem trošku pokročil - funkční pool z mirror VDEV včetně SLOG a CACHE na mirroru NVMe.
Celkem tedy 7x VDEV, RAW 9,4TB, užitečné 4,7TB: 4x VDEV z 500GB obyč. SATA disků (8ks) a 3x VDEV z 900GB SAS 10k (6ks).

Jedna z VM bude OpenMediaVault (OMV). Systém bude na 8GB disku, na data vytvořím disky ve stávajícím ZFS poolu (nemám fyzicky kapacitu na passthrough). Je několik možností, jak to udělat, nevím, která cesta je nejvhodnější. Tady bych ocenil Vaše doporučení.
A) Do virtuálu OMV přidám jeden velký disk, např. 4TB
B) Do virtuálu OMV přidám několik menších disků, např. po 1TB a v OMV je spojím buď do RAID0 nebo JBOD.
Chtěl bych zachovat do budoucna možnost úložiště v OMV rozšířit.

Druhá věc, kde si nejsem jistý je, jaký FS v OMV zvolit. Selský rozum mi říká, že když vše mám vyřešeno nad ZFS poolem, tak v OMV klidně stačí EXT4.

Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #10 kdy: 28. 06. 2021, 23:19:35 »
Prosím o radu. Potřebuju dočasně odpojit jeden pool (7x Mirror VDEV, celkem 14 disků) tak, abych ho později mohl opět připojit. Pool je nyní prázdný, data jsem přesunul do jiného poolu. Příkaz "zpool offline poolname" neprojde, protože mu chybí specifikace "device". Myslím, že to nepůjde 14x zavolat postupně s každým "device". Nebo musím celý pool zrušit a potom znovu vytvořit?
Pátrání v tutoriálech mi moc nepomohlo...
Proč to dělám:
Testuju spotřebu sestavy. Nejprve se 14ti diskovým poolem a potom s dvoudiskovým o stejné celkové kapacitě. Data přesunu, původní pool odpojím, disky z původního poolu fyzicky odpojím a zjistím rozdíl ve spotřebě.
Díky.

Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #11 kdy: 28. 06. 2021, 23:54:51 »
Nebo musím celý pool zrušit a potom znovu vytvořit?

Neviem ktorú verziu ZFS používa Proxmox, ale na FreeBSD by som to riešil práve takto.

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #12 kdy: 29. 06. 2021, 02:47:22 »
Testuju spotřebu sestavy. Nejprve se 14ti diskovým poolem a potom s dvoudiskovým o stejné celkové kapacitě. Data přesunu, původní pool odpojím, disky z původního poolu fyzicky odpojím a zjistím rozdíl ve spotřebě.

A ZFS jako nenajede bez disku na kterych data nejsou? To uz je idiocie jako se systemd a nenamountovatelnym filesystemem / crashujici sluzbou, ktere zabrani jakemukoliv pouziti pocitace :)

Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #13 kdy: 29. 06. 2021, 06:31:40 »
No to asi ano. Systém mám na samostatném mirroru, takže problém nebude to spustit... Šlo mi o to, když disky sprostě vysunu z šachet, tak ten velkej pool se zhroutí a budu muset jej stejně potom vytvořit znovu...
Ještě jsem našel volbu "export pool", tak ji vyzkouším.

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Proxmox - výběr vhodné architektury ZFS (upgrade domácího IT)
« Odpověď #14 kdy: 29. 06. 2021, 09:44:00 »
Jo, ten export je zvlastne pojmenovana funkce. Kdo by cekal ze se pod tim bude nachazet odpojeni - ja se s tim potkal u RAID radice od 3ware.
Mozna by nam nekdo starsi mohl vysvetlit proc to ma tak divny nazev.