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.

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.

Szerkesztve: 2019. 12. 27., p - 16:54

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

Egy, Egyből Kettő, Kettő meg Egy. Ez minden mérték alapja, minden élet csirája, számok, nevek építőköve.