Un Network Attached Storage (NAS) este o solutia pentru stocarea datelor pe un sistem care are si ceva redundanta, iti tine datele protejate printr-un RAID, mai ai si alte 2-3 feature-uri cum ar fi backup, etc. În loc să investesc într-un NAS comercial (Synology, QNAP, etc), am decis să construiesc unul home-made cu componente custom, dar la un preț mult mai accesibil. Un NAS comercial poate fi mai simplu dar cine nu are chef de un challenge? :))
Asta e faza de documentare.

Componentele Hardware

Pentru acest setup, am ales următoarele componente – lista se poate schimba:

  • Carcasa: Jonsbo N2 Mini-ITX Black (cam 20cm/20cm/23cm – e cubica)
  • Placa de bază: Gigabyte H610I DDR4, Intel H610, Socket 1700, mITX
  • Sursa: Sharkoon SilentStorm SFX Bronze 450W – 80Plus Bronze
  • Procesor: Intel Core i3-12100 3.3GHz LGA1700 12M Cache Boxed CPU
  • Memorie RAM: G.Skill Aegis DDR4 32GB (2x16GB) 3200MHz CL16 1.35V XMP 2.0
  • SSD SATA pentru OS: Kingston SSD
  • Hard Disk-uri pentru stocare: 4 x HGST HUH721010ALE604 (10TB fiecare)
  • NVMe pentru caching: Reutilizare NVMe 512GB de pe pve01 și pve02
  • Mai am un adaptor HP Smart Array P420 controller cu 1GB, cu 2 porturi SAS cu split in 8 porturi SATA pentru ca cele 4 porturi onboard ar asigura conectivitate pentru doar 4 disk-uri…. si eu am mai multe.

Sistemul de Operare: TrueNAS Core

Ca sistem de operare am ales TrueNAS Core, pe care l-am mai testat in trecut si mi-a placut ca este customizabil si pare ca acopere cam toate usecase-urile de care am nevoie, un sistem de operare open-source bazat pe FreeBSD, recunoscut pentru fiabilitate și suportul nativ pentru ZFS.
TrueNAS imi va permite sa am si cateva VM-uri always on, sau containere…

Configurarea Disk-urilor cu ZFS

Discurile vor fi setate intr-un raid, un pool ZFS configurat astfel:

  • 3 HDD-uri pentru date
  • 1 HDD pentru paritate

De asemenea, voi utiliza un NVMe pentru caching, ceea ce va îmbunătăți semnificativ performanța accesului la date. ZFS oferă:

  • Caching – folosește RAM și SSD pentru accelerarea accesului la date.
  • Redundanță și fiabilitate – configurarea RAID-Z1 permite ca un disc să pice fără pierderi de date.
  • Snapshots și rollback – in special util daca ai VM-uri…
  • Compresie automată – economisește spațiu fără impact major asupra performanței.

Cu un impact mare pe RAM pot porni si deduplicare – cam 1GB la 1TB de date. Cu 32GB ram nu prea as putea sa fac asta fara sa consum tot ram-ul, cred ca ram la compresie, mai salveaza acolo un pic de storage.

Utilizările NAS-ului

NAS-ul nu va fi doar un simplu spațiu de stocare, ci va funcționa și ca un home-server:

  1. Server de Plex – pentru streaming media (filme, muzică)
  2. Apache-PHP-MySQL – pentru hostarea site-ului asta sa zicem
  3. Stocare de date pentru media – pentru nr.1
  4. Target iSCSI pentru VM-uri – VM-urile de pe pve00, pve01 și pve02 vor putea folosi NAS-ul ca storage shared, permițând High Availability (HA)
  5. Technitium DNS – pentru gestionarea DHCP și DNS în rețea
  6. Servarr Suite – implementare Radarr și Sonarr
  7. Backup Repository – cel mai probabil, un share NFS pentru HomeLab
  8. Nod witness pentru clusterul PVE – va ajuta la menținerea quorum-ului în cazul clusterului Proxmox

Extindere viitoare: Cluster Kubernetes și upgrade de rețea

Dacă rezultatele sunt pozitive, voi lua în considerare refolosirea clusterului Proxmox (pve00, pve01, pve02) pentru a crea un cluster Kubernetes bare-metal… si ma gandeam ca as putea adauga o placa de retea de 2.5gbps, ca sa nu am un bottleneck in retea. (+switch ca acum am doar 1gbps)

Dezavantaje:

Deși un NAS home-made oferă flexibilitate și performanță la un preț mai mic, există câteva dezavantaje față de un sistem NAS comercial:

  • Consum mai mare de energie – sistemul asta poate sa consume mai mult curent decat un NAS comercial
  • Factorul de formă și zgomotul – poate nu la fel de compact si de silentios

Estimari consum (W)

Voi face o estimare aproximativă a consumului de energie în regim idle pentru ca 80% din timp sa fie idle, parerea mea:

  • Procesor Intel Core i3-12100 – ~10W în idle
  • Placă de bază + RAM 32GB DDR4 – ~8-10W
  • SSD SATA Kingston (pentru OS) – ~2W
  • NVMe SSD pentru caching – ~3W
  • HDD-uri 4x HGST HUH721010ALE604 – ~5W per HDD în idle → ~20W total
  • Sursa Sharkoon SilentStorm SFX Bronze 450W – Eficiență ~85%, deci pierderi de ~5W în idle
  • HP Smart Array P420 controller cu 1GB,– ~30W

Estimare totală în idle: ~80-85W

Cel mai mare consumator este HP Smart Array. În funcție de activitatea discului și a procesorului, consumul poate crește, mai ales în load (unde poate ajunge la peste 100W, lejer as spune 150W in load mai serios). Dacă HDD-urile intră în sleep mode, consumul poate scădea cu 20W in total (si asta e doar teoretic pentru ca o sa avem ZFS si o sa doarma din parti).

Un NAS QNAP TS-464 are un consum în idle de aproximativ 18-25W fără HDD-uri și în jur de 45-55W cu 4 HDD-uri HGST HUH721010ALE604. În load, consumul poate ajunge la 65-80W (are o sursa de 90W) în funcție de utilizare. Prin comparație, NAS-ul home-made de mai sus consumă ~80-85W în idle și poate ajunge la 110-115W+ în load.

Cost și concluzie

Costul total al componentelor a fost de aproximativ 2500 RON, o sumă sub prețul unui NAS comercial cu discuri și performanțe similare. Prin această abordare DIY, am obținut un sistem scalabil (mai pot adauga / schimba ram-ul, pana la 64GB cat imi permite placa de baza), performant (cu i3-ul ala generatia 12 poti face multe) și adaptat exact nevoilor mele. Consumul lunar ar putea fi de aproximativ 65-70KWh, transformat in minim 50 de lei in plus pe factura de curent, pentru sistemul home made, si un pic mai mic pentru un sistem comercial (pentru qnap, 25 de lei in plus pe luna la factura de curent).
Cel mai mare consumator sunt disk-urile si adaptorul SAS. 4 disk-uri sata, 1 disk ssd sata, 1 nvme. loc de expansiune pentru 1 disk dar as avea incredere aproape totala in sistem.

Mai am statia mea de lucru, cu 64GB ram, i7-12700K, 4 nvme-uri (1x1TB+3x2TB) si are deja 6 porturi sata. Daca ii adaug 4 disk-uri sata ajunge la un consum idle asemanator cu ce vreau eu sa construiesc 🙂 oare se merita sa fac un sistem nou? (approx 45W idle + 20W de la 4 sata…)

Pentru a reduce consumul:

  • Adaptorul HP Smart Array P420 poate fi inlocuit cu altceva – ceva gen “pciexpress to 4*sata adapter” sau as putea folosi m2-ul de wifi sa conectez 2 sata. ar scadea cu 30w consumul in idle…
  • As putea lua o placa itx cu procesor mai slab integrat (sunt unele cu Celeron J sau N100) – dar tradeoff e performanta mai mica si ne limitam doar la NAS, nu si VMs si nebunii)
  • As putea schimba procesorul cu Intel Pentium Gold G7400…
  • As putea sa-l tin oprit.

Concluzie

E prea mult

adaptor m2-sata (merge pe m2-ul de wifi)
adaptor m2 la 6 sata (merge pe m2-ul de nvme)
adaptor pciexpress la 4 sata, pe singurul pciexpress (sunt si versiuni cu mai multe sata)

HP Smart Array P420, 30W!

Testele au vorbit! Dacă folosiți Proxmox pentru a vă construi propriul datacenter (homelab) în sufragerie sau mai bine in debara, probabil v-ați gândit: „Oare TrueNAS ar merge ca VM?” Ei bine, răspunsul este: da, merge. Dar și o Dacie 1300 poate merge pe un drum forestier, doar că s-ar putea să vă trebuiască un ciocan și ceva noroc. TrueNAS, favoritul meu, nu joaca fair cu proxmox. TrueNAS stie sa dea si file level si block prin iscsi… e f nice.

Virtualizarea TrueNAS vine cu beneficii, dar și cu provocări. Dacă acest „bagaj” devine prea greu, există alternative care, deși nu sunt perfecte, s-ar putea să vă facă viața mai ușoară. Hai să vedem despre ce este vorba!


Probleme intalnite

  1. Performanța discului (sau indisponibilitatea lui)
    TrueNAS adoră ZFS. Iar ZFS, ca orice sistem de fișiere sofisticat, vrea acces direct la hardware. Virtualizarea adaugă un strat suplimentar de „telefon fără fir”, iar performanța poate suferi. Tot la fel, in cazul in care faceti passtrhough unui device USB (un seagate pe usb) catre VM-ul TrueNAS se poate sa nu functioneze cum trebuie, asta am patit eu, nu am reusit sa formatez disk-ul sa il folosesc. NU A VRUT. Am testat direct pe fier si a fost ok. Cica problemele ar fi fost cauzate de quirk-urile necesare in TrueNAS dar pentru mine a fost deal-breaker, aveam nevoie de aia 3TB de pe USB.
    Soluție:
    • Configurați PCI passthrough pentru ca TrueNAS să vorbească direct cu discul, nu prin translatorul Proxmox.
    • Nu folosiți fișiere de disc virtuale (.qcow2). TrueNAS vrea „fier”, nu jucării.
  1. Foamea de memorie
    ZFS mănâncă RAM de parcă ar fi la bufet suedez sau la all inclusive la turci. Alocați prea puțin și veți simți cum performanța se îngroapă în swap. Eu am folosit 16GB si cu disk-urile pe care le-am putut folosi totul a fost perfect, saturam reteaua de storage iar latentele din VM-uri erau satisfacatoare. Proxmox poate supraproviziona ram.
    Soluție:
    • Nu fiți zgârciți: dați-i 8-16 GB RAM sau chiar mai mult in functie de cati TB aveti. Dacă serverul dvs. geme, poate e timpul să investiți într-un upgrade.
  1. Rețea lentă
    O rețea prost configurată este ca un drum aglomerat: nimeni nu ajunge la timp. Iar dacă TrueNAS este folosit pentru stocare centralizată, latențele mici sunt cruciale. Pentru un homelab folositi minim 1GB/s si daca este posibil faceti teaming sau creati o retea separata pentru “storage”.
    Soluție:
    • Folosiți adaptoare de rețea virtio. Sunt rapide și compatibile.
    • Puneți TrueNAS pe un VLAN dedicat, să nu se „calce pe cablu” cu restul VM-urilor.
  1. Siguranța datelor
    TrueNAS este construit pentru a proteja datele, dar dacă hardware-ul gazdă clachează, nici cel mai avansat algoritm ZFS nu vă poate salva.
    Soluție:
    • Investiți într-un UPS. Dacă serverul cade la prima pană de curent, sunteți pe cont propriu.
    • Faceți snapshot-uri frecvente în Proxmox sau configurati un backup. E mai bine să aveți un backup decât să plângeți după date.

Alternative: TrueNAS “am dat cu seen

Dacă TrueNAS devine mai pretențios decât un critic culinar, există soluții care, deși nu sunt perfecte, pot rezolva multe dintre problemele dvs. de stocare.

1. Unraid

Unraid este genul de prieten care nu cere mult, dar știe să facă treaba. Îți lasă libertatea de a folosi discuri de dimensiuni diferite, iar RAID-ul este mai degrabă opțional. Ca functionalitati este “asemanator” cu TrueNAS, poti porni VM-uri sub el, poti porni containere, poti face snapshot-uri…

De ce să-l alegi?
E simplu de configurat, chiar și pentru începători.
Poate rula și ca NAS, și ca platformă de virtualizare.

Când să-l eviți?
Dacă urăști ideea de a plăti pentru licență.
Dacă îți dorești protecția pe care doar ZFS o oferă


2. OpenMediaVault (OMV)

OMV este un NAS open-source simplu și eficient. E ca un vecin care te ajută cu reparațiile: nu cere mult, dar își face treaba. Functioneaza cu Debian bookworm, este simplu, merge cu 2 vCPU si 4GB ram. 🎯
Il hostez pe Proxmox si este momentan singura solutie care nu inclina balanta in vreo directie gresita.

proxmox

De ce să-l alegi?
Gratuit și ușor de configurat.
Comunitate activă și plugin-uri pentru orice ai nevoie.
N-are foame de resurse.

Când să-l eviți?
Cand ai nevoie si de iscsi
Cand vrei ZFS out of the box
Cand ai impresia ca performantele OMV nu-s … performante.


3. Rockstor

Bazat pe Btrfs, Rockstor este o soluție NAS care știe să facă snapshot-uri și deduplicare fără să se plângă. Nu am testat in detaliu, doar l-am instalat… si m-am plimbat prin interfata. As vrea ca disk-ul extern pe USB sa-l formatez EXT4 si in caz de nevoie sa il deconectez si sa-l montez pe alt hardware.

De ce să-l alegi?
Perfect pentru utilizatorii Linux care vor o alternativă la ZFS.
Simplu de folosit și destul de robust

Când să-l eviți?
Dacă ai nevoie de o comunitate numeroasă și activă.
Cand n-ai incredere (inca) in BTRFS


4. Synology / Asusstor / orice alt NAS disponibil

Dacă nu vrei bătăi de cap, asta este răspunsul. E ca un all-inclusive pentru NAS-uri: plătești și primești totul pregătit. Cu cat ai mai multi bani, cu atat o sa fie tolba mai plina cu feature-uri care de care mai nice 🙂


Nu te stresa, există opțiuni!

TrueNAS este grozav, dar doar dacă îi oferi tot ce cere. Dacă nu vrei să te simți ca un părinte care trebuie să îndeplinească toate mofturile unui copil răsfățat, alternativele precum Unraid, OMV, RockStor sau Synology sunt aici să-ți facă viața mai ușoară, in functie de buget (unrail e pe bani, synology la fel..).
Pentru use case-ul meu cel mai ok pare sa fie OpenMediaVault sub Proxmox. Este simplu, nu ai compresie sau deduplicare, nu poate oferi iSCSI… dar nu poti avea in viata toti ce iti doresti. Ii poti atasa hdd-uri usb prin proxmox, poti sa faci si un pic de mirror… Am inchis povestea – am un shared storage si pot sa il folosesc, pentru VM-uri, pentru backups, pentru containere si ce-o mai fi nevoie.

E gata! High Availability, politica de backup globala… shared storage, “vmotion”… totul in 30Wh intr-o stare de aproape idle. Proxmox Cluster în Sfârșit: 3 Noduri, NFS și Consumul de Curent “Eco-Friendly”

După lungi aventuri și cafele încărcate cu speranță, am reușit: am un cluster Proxmox funcțional!

Hardware-ul

“Clusterul” e compus din trei noduri, cu nume de scenă pve00, pve01 și pve02. Iată rolurile fiecăruia:

  • pve00: E ca acel coleg care nu face prea multe, dar e indispensabil. Acesta va fi nodul martor (“witness”) și va oferi storage shared pe NFS pentru câteva VM-uri.
  • pve01 și pve02: Adevărații clusterului, gazduind VM-uri și containere LXC.

Toate acestea rulează pe trei mini PC-uri Lenovo Tiny (m710q și m715q), care sunt ca niște chihuahua hiperactive: mici, dar cu o energie neașteptată. 4CPU si 32GB ram fiecare. Pare putin dar este suficient pentru laboratorare.

cluster

Consumul de energie

Cu tot clusterul „aproape idle”, consumul total de curent este de doar 28-32W. Aproape că te aștepți să vezi un LED aprins și să îți spui: „Esti sigur că merge totul? Nu e doar screensaver-ul?”.

Funcționalitate

Am testat aproape toate funcțiile basic pe care le-am folosit anterior în VMware. Rezultatul? Totul functioneaza ca uns, ca in oil overload. Nu ma asteptam sa fie asa de bine pus la punct… Singurul regret? Ceph. Ar fi fost interesant, dar sunt limitat de un număr insuficient de discuri. (Așa-i când visezi la mamaliga, dar nu ai malai.)

Migrarile de pe un host pe altul: cand VM-ul nu este pe shared storage va fi copiat disk-ul pe storage-ul vecin si memory state. 1-2 pinguri se pierd. Cand este pe shared storage se copiaza doar ram-ul… cand este protejat de HA doar mentioneaza ca migreaza prin HA si nu mai arata altceva.

HA – la fel ca Vmware, se restarteaza vm-ul pe unu din serverele care mai exista si se pune in fencing pe cel care e mort in papushoi.

Hotplug: CPU, RAM, DISK, USB… Network. Cam tot de ce ai nevoie.

Shared storage

Merge cam orice ai: NFS, CIFS, ISCSI, SCSI, FC, GlusterFS, Ceph, ZFS, etc. Am testat cu NFS si CIFS.

Storage pe NFS

Pentru storage-ul shared, am configurat un VM cu NFS pe pve00. Deși nu e cea mai rapidă soluție, și-a făcut treaba impecabil pentru nevoile noastre. VM-urile și containerele sunt mulțumite si am putut porni High Availability.

Am testat OpenMediaVault (OMV) ca soluție de storage, dar mi s-a părut lent comparativ cu așteptările. Ma asteptam sa umplu gigabitul ala dar testele erau undeva intre 78-89 MB/s, TrueNAS cu aceleasi disk-uri este constant, undeva peste 110MB/s. Se poate sa fie nevoie de tuning suplimentar pe OMV.

Tot pe NFS am configurat si Backup-urile VM-urilor mai importante, aici fiind avantajos ca avem o politica globala.

Ce urmează?

Anunț oficial „Next Episode”: TrueNAS – Virtualizare pe Proxmox? Stay tuned!

Până atunci, rămâneți curioși, caffeinați și gata de experimente. Mai avem multe de descoperit în lumea homelab-ului!