Saját szerver ZFS tuning

Fórumok

Sziasztok!

Adott egy otthoni szerver, amin proxmox fut. Az adatokat ZFS-en tárolom. A ZFS alatt két 1,5 TB-os merevlemez van RAID0-ban.

A szerverben 14 GB RAM van jelenleg, ebből a ZFS elvisz ~8 GB-ot. A szerverre maximum 10 felhasználó csatlakozik.

Arra gondoltam, teszek a merevlemezek mellé egy 240GB-os SSD-t, az SLOG, ZIL és/vagy az l2arc számára.

Szerintetek, hogyan lenne érdemes méretezni a cache-t?

Hozzászólások

Nekem 2x1 Tb-os SSD tükör mellett van egy 240Gb-os SSD, 1 Gb-ot adtam ZLOG-nak, ebből 32mb-ot használ, a maradék cache. Pár tucat VM fut a gépről.

Nálad, maga a VM is zfs alatt van? Itt a proxmox lvm alá ajánlotta.

( •̀ᴗ•́)╭∩╮

A VMware egy Ferrari, amit a maffiától bérelsz és mindig a hó elején derül ki éppen mennyi lesz a beszedett díj. 
A Proxmox megy egy Porsche, ami az F1 motorját kapta meg. 
by: jevgenyij

Elnézést, hogy így beleszólok, de a hsz. alapján nem nagyon olvastál utána ennek az SLOG dolognak, meg az L2ARC-nak sem.

SSD-s pool mellé kb. NVMe SSD lenne jó SLOG-nal, L2ARC-nak. De külön-külön egység, nem egy darab kettéosztva. Most az SSD-s pool-od teljesítményét erősen korlátozod az egy szem (valószínű valami konzumer) SSD többfelé osztvásával, és azt hozzácsapva a pool-hoz SLOG/L2ARC célból. Így egyetlen SSD throughput-ja és IOPS-e szolgálja ki az SLOG és az L2ARC összes műveletét az SSD pool helyett (ráadásul az 1TB-os SSD-k értékei darabonként sokkal magasabbak a 240 GB-os egység értékeinél). Ennél az is gyorsabb lenne, ha nem lenne egyik sem, csak a pool. És még nem lenne agyon írva SLOG címén egy partíció.

Az SLOG mérete (külön sysctl belenyúlás nélkül) csak a hálózati csatoló(k) sebességétől függ. Abból kell tudnia 5 másodpercnyit tárolni. Ha 1x1 GbE csatolód van, akkor az 125 MB/s, tehát max. 625 MB SLOG kell hozzá összesen. Egyébként ha lekérhető az SSD wear level, akkor nézz rá, szerintem érdekeset fogsz látni.

Az L2ARC pedig, ha 4 kB blokkmérettel számolok a pool-on (ha VM-ek futnak, gndolom nem 128 kB vagy 1MB a blokkméret), akkor 239 GB/4 kB = 62 652 416 blokk, 88 byte 1 db L2ARC blokk metaadata az ARC-ban (memóriában): 62 652 416 blokk * 88 byte ~ 5.1 GB memória kell csak az L2ARC metaadat tárolásához (ha a teljes L2ARC használatba van már).

Utánaolvastam, csináltam teszteket is, de bolti SSD mirror mellé ha hozzádobok egy bolti SSD-t SLOG-nak, megduplázom vele az IOPS-t, ami nekem elég. Ami azt illeti L2ARC-ot nem használok mióta a 4 lemezes (~raid10) HDD pool-t SSD mirrorra váltottam. SSD pool mellett SSD L2ARC-ra sok helyen írták hogy így nincs sok értelme, tesztek is azt mutatták, NVME-t meg nem akartam tesztelni, a kellő teljesítmény megvan így is.

És igen, tény, az eredeti hozzászólásomat eléggé elírtam, ha jól emlékszem épp akkor ébredtem, talán kótyagos lehettem, de teljeséggel igazad van.

Először is remélem nem RAID0-ban vannak azok a lemezek, hanem RAID1-ben. A Te érdekedben remélem.

Ha sebességet szeretnél (VM/CT futtatás), akkor tégy egy SSD-s tükröt (akár ZFS-sel) a Proxmox alá, és azon legyen a VM/CT tároló. A 2x1.5TB HDD tükör pedig legyen csak adattár. Ilyen felállásokhoz nem kell sem SLOG, pláne nem L2ARC. Inkább memóriát tegyél még bele amennyit csak lehet, és adj a ZFS-nek többet (ha ő marad az adatkiszolgáló is a hálózaton).

Másik lehetőség, ha ennyire szerény a gép kiépítése, hogy dobod a ZFS-t kompletten, és csinálsz egy sim MD RAID1-et a két 1.5 TB lemezből, és arról mennek a VM-ek, CT-k és az adatok. Akkor a ZFS nem viszi el a kevéske memóriádat. Kettő lemeznél, egy szem tükörnél a ZFS jóformán semmilyen előnyét nem tudod élvezni. LVM-Thin-nel vagy QCOW2 VM diszk formátummal lesz snapshot-od ha szeretnél ilyesmit.

Nekem a következő fut: 2x120GB SSD tükör ZFS a Proxmox root, és ezen vannak a CT template-k meg az ISO-k (kb  100GB üres). 2x500GB SSD tükör ZFS a CT és VM tároló, és egy VM-ben FreeNAS, passthrough HBA-val, 8x3TB RaidZ2 adattárnak. A Proxmox-on 8 GB a ZFS ARC limit, a FreeNAS VM pedig 16 GB-ot kap, azzal gazdálkodik ahogy akar. Én nem keverem bele a Proxmox-ot semmilyen kiszolgáló funkcióba, az ő dolga csak a virtualizálás, a tárolói pedig csak ezt szolgálják, felhasználói adat (közvetlenül) nincs rajtuk (azaz de van, VM/CT virtuális diszken: adatbázis, ilyesmi, ami nem túl hatékony NAS-ról felcsatolva).

A ZFS ökölszabályai topicból:

A LOG (Separate Intent Log SLOG) használata nem biztos, hogy növeli a teljesítményt.

Az SLOG (ZIL-nek is szokták nevezni tévesen) lemez használata ez egyik módszer amivel gyorsítani lehet a ZFS írási sebességét. Vagy mégsem, mert csak a sync írást gyorsítja. Járj utána mikor, mire jó és mire nem. Ha nem tudod mi a különbség a ZIL, SLOG, sync és async írás között, ne csodálkozz, ha nem az lesz az eredmény mint amire számítottál. Csak akkor használd, ha pontosan tudod mire jó, különben pénzkidobás lesz a vége.

Ha tudsz, inkább használj az CACHE (L2ARC) lemez helyett RAM-ot.

A CACHE lemez használata nem csodaszer és lehet, hogy semmit nem fog gyorsulni a rendszered tőle, viszont van amikor igen. Abban hasonlít az SLOG-ra, hogy nem minden esetben van értelme. Csak akkor használd, ha pontosan tudod mire jó, különben pénzkidobás lesz a vége.

Sok kicsi sokra megy 12 x 1 > 3 x 10

Amivel jelentősen növelhető a teljesítmény az a sok lemez. Ha akarsz például 10TB területet 2 paritás lemezzel akkor sokkal jobb a 3x10TB helyett a 7x2TB lemez és még annál is jobb a 12x1TB

A tömegek sohasem szomjúhozták az igazságot. A nekik nem tetsző bizonyságok elől elfordulnak és inkább a tévedést istenítik, ha ez őket elkápráztatja. Aki illúzióba ringatja őket, úr lesz fölöttük, de áldozatuk az, aki megpróbálja őket kiábrándítani.