Qualche mese fa ho venduto il mio fidato iMac 21,5" del 2011, il quale fungeva da jolly tutto fare. Tra le altre cose era adibito a server Plex, anche se con 3 dischi singoli mi creava più problemi che altro. Troppe alimentazioni da mettere sotto UPS, nessuna politica di backup e scarse prestazioni dovute alla sola USB 2.0. L'alternativa naturale era quella di un NAS, così mi sono messo a fare delle approfondite ricerche sui modelli che mi potevano essere utili. Ho guardato in casa QNAP e Synology, ovviamente, ma non ho disdegnato neanche i modelli di Western Digital. Ne ho provati un paio, entrambi buoni a modo loro, ma nessuno di questi mi ha convinto pienamente. Nei prossimi giorni ve ne parlerò con delle brevi recensioni, ma alla fine ho preferito assemblarne uno da me. Ecco dunque il #ProgettoNAS, il quale è dedicato espressamente ad ambienti casalinghi o, al massimo, piccoli uffici.

progettonas-case

La mia idea iniziale era leggermente diversa ad essere sinceri. Volevo installare FreeNAS (considerato da molti il più efficiente e sicuro), ma quando esce questo nome online viene caldamente consigliato l'uso di schede madri Super Micro, processori Xeon e RAM ECC. Tutte cose che avevano fatto lievitare il prezzo della configurazione oltre la soglia da me sperata. Per le schede madri ci sono alternative valide di ASRock Rack (non sempre più economiche), ma serviva davvero uno Xeon per le mie finalità? E la RAM ECC? Su quest'ultimo punto la religione FreeNAS dice categoricamente di sì: se si usa il file system ZFS serve RAM ECC. Ma più scavavo e mi confrontavo con Luca (Zorzi, di EasyApple), più venivano fuori informazioni discordanti. Infine ho trovato illuminante questo articolo dove, tra le altre cose, è riportata una frase virgolettata di Matthew Ahrens, uno dei creatori di ZFS:

There’s nothing special about ZFS that requires/encourages the use of ECC RAM more so than any other filesystem

Ok, letteralmente non significa che non sia potenzialmente utile, infatti la consiglio anche io su sistemi aziendali e con finalità mission-critical, ma leggendo l'articolo si capisce perché la maggior parte dei NAS commerciali non usa RAM ECC. Vi anticipo subito che, alla fine della fiera, ho scartato FreeNAS come sistema operativo, ma in prima istanza ha guidato gran parte delle mie scelte.

progettonas-componenti-scartati

Prima configurazione errata, modificata per problemi di compatibilità

Avevo infatti composto un NAS con hardware recentissimo, in particolare per la scheda madre Asrock H270M-ITX e la CPU G4600 Kaby Lake, ma questi non sono supportati da FreeNAS 9.10 mentre la versione 10 è ancora in Beta. Da qui sono nati i miei primi dissapori con questo sistema operativo, a cui non attribuisco nessuna colpa in merito (ovviamente), ma che ho rapidamente inquadrato come robusto ma poco flessibile. Avere pochi fronzoli è un bene per la stabilità ed efficienza del progetto, che è indirizzato chiaramente verso un mercato business, ma per le mie finalità si è rivelato una spina nel fianco. Nella versione 9.x hanno arbitrariamente eliminato il supporto a VirtualBox, che a me serviva per avviare una macchina virtuale Linux su cui ho alcuni servizi già configurati. Si potrebbe risolvere modificando un po' di cose su FreeBSD (che è l'OS alla base di FreeNAS), ma sarebbe un lavoro potenzialmente sprecato visto che ogni update potrebbe ripristinare la condizione iniziale. Inoltre tutti i plugin sull'attuale versione di FreeNAS sono gestiti con le Jail (VirtualBox incluso), che nella futura versione 10 non saranno supportate ma avrà il supporto nativo per le VM. Ci si trova dunque in un periodo di transizione in cui è difficile motivare un investimento di tempo per far funzionare tutto sulla precedente versione ma al tempo stesso non si può ancora optare per la nuova. Ho provato FreeNAS 10 giusto per capirne lo stadio di evoluzione e l'ho trovato davvero molto acerbo. Si vociferava di un rilascio imminente ma, se dovessi dare un giudizio a caldo, io ci vedo ancora mesi di lavoro solo per renderlo un minimo stabile. L'interfaccia è moderna ma funzionalmente discutibile e stracolma di errori e malfunzionamenti, mentre per la CLI le informazioni sono ancora pochissime, quindi se ti trovi di fronte un problema non sai come risolvere. Tutto lecito essendo una Beta espressamente sconsigliata per andare in produzione, ma il punto è che mi sono ritrovato orfano di funzionalità sulla versione stabile e senza una concreta prospettiva per la nuova.

progettonas-componenti-ok

Configurazione definitiva del primo #ProgettoNAS

Nel frattempo avevo comunque rimodulato la mia configurazione, facendo un passo indietro da Kaby Lake a Skylake. Qui, per assurdo, ho dovuto spendere qualcosa in più a causa di un piccolo dettaglio: il case da me prescelto, ovvero il Fractal Design Node 304, ha 6 slot per dischi da 3,5" e volevo poterli sfruttare tutti. Solo che l'unica scheda madre in formato ITX e basata su Intel serie 100 (Skylake) con 2 Ethernet (utilissime per un NAS) e 6 porte SATA, ne ha 4 disposte lateralmente.

progettonas-mobo

In genere non è un problema, ma per un case così stretto sì. Scegliendo la Gigabyte GA-Z170N-WIFI (o la simile GA-H170N-WIFI) ho dovuto dunque optare per un più costoso alimentatore SFX, in quanto quello ATX arriva proprio adiacente alla scheda e i cavi SATA sulle 4 porte laterali non si riescono ad inserire. Di seguito tutti i componenti con i prezzi pagati:

La spesa totale è stata inferiore a 550€, cifra con cui si acquistano NAS con prestazioni nettamente più scarse e meno dischi a disposizione. Il contraltare è che in questo caso non c'è la pappa pronta e bisogna lavorare molto di più per far funzionare le cose. In realtà neanche poi tanto, tutto dipende dal tipo di attività che si devono mettere su. Per l'archiviazione e la condivisione via CIFS/SMB/AFP, bastano pochi minuti ed i soli tool in dotazione, mentre le cose si complicano un po' se si vogliono macchine virtuali e plugin. Su FreeNAS ci sono tanti plugin utili su base Jail, ma questa funzionalità sarà dismessa a breve come ho anticipato. Sul 10 si usano Docker e Container al loro posto, e già se ne trovano molti, ma purtroppo non è ancora pronto e stabile. Di alternative ve ne sono tantissime, ma io ho ristretto la cerchia essendo sicuro di una cosa: volevo poter usare il File System ZFS.

Per inciso, ho anche provato vSphere ESXi, che mi piaceva molto per poter avviare separatamente il servizio di storage su FreeBSD ed una macchina virtuale con Linux per alcuni altri servizi. La cosa è possibile ma ci sono diversi aspetti negativi e potenzialmente rischiosi quando vi è un layer intermedio tra l'hardware e i pool ZFS, ragione per cui ho presto desistito.

ZFS è qualcosa di più di un semplice File System, in quanto include nativamente i pool RAID e supporta strumenti come dataset e snapshot, che ci permettono di amministrare con più efficienza e sicurezza i nostri dati rispetto le tradizionali cartelle. Con ZFS come punto fermo ed avendo escluso FreeNAS, la mia scelta è ricaduta sul sistema operativo NAS4Free. Ora, io non sono uno di quelli che segue con moltissima attenzione la scena open-source, ma penso di poter dire che le differenze tra i due siano minime. NAS4Free è in realtà un nome nuovo che fa riferimento all'originale progetto FreeNAS, il quale si è poi distaccato dall'originale community FreeBSD ed è da qualche tempo in mano ad IXSystems. Rimane sempre software libero, ma dal sito si noterà che vi è un approccio molto più commerciale legato ad assistenza ed hardware. NAS4Free è meno gettonato di FreeNAS, ma si è rivelato fin da subito più adatto alle mie esigenze. Con questo non ho dovuto faticare neanche un secondo per installare VirtualBox, in quanto è già incluso e si attiva con un semplice clic, ho potuto montare con più flessibilità i dischi esterni da cui importare i dati, con tanto di supporto nativo ad ExFat che manca su FreeNAS, ed ho trovato comodissimo il leggero File Manager integrato che ci offre la possibilità di fare un rapido controllo quando non possiamo aprire un sessione SSH.

progettonas-nas4free-ui

L'interfaccia web di NAS4Free: pagina con le informazioni di sistema

Sulla gestione delle condivisioni FreeNAS mi è sembrato più efficiente in termini di amministrazione, mentre con NAS4Free ho dovuto fare qualche passaggio in più, però quest'ultimo ha un approccio molto più semplice secondo me. Un esempio concreto è quello della creazione della Link Aggregation, che su FreeNAS richiede la disattivazione delle schede di rete singole e quindi il passaggio diretto al NAS via CLI per completare la procedura (visto che la rete si disattiva), mentre con NAS4Free puoi selezionare le schede di rete anche se già attive e spostarle in una LAG virtuale che funzionerà immediatamente.

progettonas-nas4free-ui-lagg

Creare una LAGG con LACP è un gioco da ragazzi con NAS4Free

Io avevo già creato il pool ZFS con RAIDZ1 (equivalente al RAID5) e 4 dischi WD Purple da 3TB sulla precedente installazione di FreeNAS 9, ma ho potuto importarlo su NAS4Free senza perdere nessun dato. Data la maggiore capienza sia del case che della scheda madre, avrò la possibilità di aggiungere altri 2 HDD in futuro, incrementando lo storage dagli attuali 9TB a 15TB. Il sistema operativo l'ho invece installato in una pendrive da 16GB e conto di attivare al più presto uno script su crontab per clonare tutto sulla seconda con cadenza giornaliera o settimanale.

progettonas-nas4free-pool-zfs

Il sistema supporta nativamente i servizi che a me interessano, ovvero SSH, CIFS/SMB, AFP (con opzione per Time Machine), Transmission, iSCSI Target e tanti altri. Per quest'ultimo segnalo però una piccola difficoltà, in quanto con il software gratuito iSCSIInitiator per macOS dà sempre un errore "Target not found" (dopo averlo aggiunto regolarmente), mentre con quello commerciale globalSAN funziona benissimo abilitando l'invio della "SessionType" in fase di connessione. Ho aperto una segnalazione e spero che risolvano anche su quello open-source, perché dovrebbe essere relativamente semplice aggiungere questa informazione durante la connessione al Target. Grazie a questa soluzione, si può creare un volume nel NAS e lavorarci in remoto come fosse locale, permettendoci anche di formattarlo con HFS+ per i dati che lo richiedono (evitando di seguire questo procedimento più complicato).

globalsan

L'integrazione di VirtualBox è stata un vero toccasana dopo le giornate di sbattimento su FreeNAS. Qui è bastato attivarlo cliccando su "Enable" ed è stato immediatamente disponibile nella sua versione web-based phpvirtualbox. Non che questa sia immune da difetti, tutt'altro, ma in un attimo ho potuto importare la mia macchina virtuale Linux pre-configurata con il controller Unifying per l'access point, Sonarr ed un paio di altri servizi.

progettonas-virtualbox

Tra le altre funzionalità per me primarie c'era quella di server Plex, che potevo ottenere in diversi modi. Allo stato attuale ho preferito abilitare le Estensioni ed installarlo tramite OneButtonInstaller, ma non sono ancora sicuro che lo manterrò così invece di metterlo in una Jail o VM, anche se in questo modo si sfrutta meglio tutta la potenzialità dell'hardware. A proposito di questo, direi di fare una piccola carrellata dei vari componenti scelti, i quali sono ovviamente votati al risparmio ma senza dimenticare le prestazioni e l'espandibilità.

progettonas-case

Il Node 304 di Fractal Design è il più piccolo case che sono riuscito a trovare con 6 bay da 3,5", per giunta con un prezzo inferiore ai 100€. Le dimensioni del frontale sono effettivamente minime, solo 25 x 21 cm, peccato che sia piuttosto profondo con i suoi 37 cm. Non c'è molto spazio sprecato in realtà, perché con alimentatore ATX si arriva proprio attaccati alla scheda madre ITX, ma potrebbero farne una variante specifica per PSU STX secondo me. Comunque si è rivelata una base ottima per l'assemblaggio e con una buona qualità costruttiva visto il largo uso di metallo. Ci sono poi 3 ventole di serie, una da 140mm sul retro e due da 92mm dietro il pannello frontale removibile, tutte abbastanza silenziose e controllabili con uno switch a tre posizioni. Unico lato negativo riscontrato è che il pannello a C che copre i due lati ed il top, saltuariamente genera qualche vibrazione durante l'attività dei dischi. Basta comunque poggiare un dito per farlo smettere, per cui conto di risolvere applicando una guarnizione in gomma.

progettonas-mobo-case

La scheda madre Gigabyte GA-Z170N-WIFI è probabilmente sovradimensionata come chipset, ma è molto completa ed ha anche cose che non si useranno, come il Wi-Fi. Questo è però su una scheda separata che, volendo, si può riciclare altrove o vendere. Ci sono 2 Gigabit Ethernet che ho usato per creare un Link Aggregation con LACP (deve supportarla anche lo Switch) e 6 porte SATA da 6Gbit. Nella versione H270 che avevo scelto inizialmente queste sono tutte rivolte verso l'alto, qui invece 4 sono di lato. Visto il ridotto spazio nel case, queste non sono utilizzabili con un alimentatore ATX e da qui è nata la necessità di prenderne uno SFX.

progettonas-alimentatore

Ho scelto il Silverstone ST45SF-G, il quale è davvero molto compatto e supporta un massimo di 450W, ben oltre le necessità di questo NAS. In dotazione c'è una staffa di conversione ATX/SFX che funziona egregiamente, anche se purtroppo è di colore grigio e non nero, ma non sarà un grande problema. Essendo completamente modulare, ho potuto evitare di installare il cavo dedicato alla GPU esterna, così da limitare l'ingombro nel case, ed ho sostituito uno dei cavi di con questo che mi ha fornito altre 4 alimentazioni SATA.

progettonas-cpu

Per la CPU ho messo sul piatto della bilancia prezzo e prestazioni, ricadendo infine sull'Intel i3-6100. Ha solo 2 core fisici ma gestisce fino a 4 thread, consuma relativamente poco con un TDP di 51W e va davvero veloce grazie a 3,7GHz di clock. Non l'ho mai vista salire oltre il 30% di utilizzo nei momenti più importanti e con la transcodifica Plex a 1080p sta ampiamente sotto il 10%. La scheda madre supporta RAM fino a 3200MHz e profilo XMP, ma la CPU no e si ferma ad un massimo di DDR4 2133MHz, che è esattamente la tipologia da me installata.

progettonas-ram

Ho trovato davvero un super prezzo per questi 16GB di Kingston in kit 2x8GB, che ad 80€ li reputo senza dubbio la migliore scelta. In media per RAM com medesime caratteristiche, quindi 2133MHz CL15, si spendono almeno 40€ in più. Dal punto di vista delle prestazioni ci sarà di meglio, ma erano adatte allo scopo e con un prezzo davvero allettante. Ogni tanto si esauriscono e vanno in back-order ma consiglio comunque di tentare l'acquisto se interessati, perché in genere dopo 3/4gg le spediscono. Il minimo richiesto per un NAS del genere con pool ZFS sono 8GB, per cui 16GB sono essenziali se si intende avviare anche una sola macchina virtuale. Vedo che la memoria viene usata quasi completamente dal sistema, per cui non è insensato ipotizzare una partenza con un modulo singolo da 16GB, perdendo temporaneamente il dual-channel ma avendo la possibilità di fare un upgrade a 32GB più semplicemente.

Conclusione

In definitiva sono molto soddisfatto dal punto di vista hardware e abbastanza da NAS4Free, che pur essendo molto simile a FreeNAS ha un pizzico di semplicità in più che lo rende più user-friendly. Non siamo certo a livello dei sistemi preconfezionati da QNAP o Synology, ma con questa cifra è un miracolo se si riesce a prenderne uno con 4 bay, 1/4 della RAM e 1/3 della potenza di calcolo. Certo sono mediamente più compatti, ma se non si disdegna un po' di lavoro il vantaggio ottenibile sarà enorme. Ah, per inciso, la ventola stock di Intel mi era parsa sufficiente allo scopo e non troppo rumorosa, ma l'ho poi sostituita con una Noctua NH-L9i che è decisamente più performante e silenziosa, oltre ad essere sicuramente più affidabile. Tutti i prodotti utilizzati per l'assemblaggio sono stati inseriti come al solito in una lista Amazon che potete consultare sulla pagina http://saggia.me/progettonas