lunedì 1 gennaio 2018

pfSense ed i vantaggi di ZFS

Una delle novità più importanti introdotte dalla versione 2.4 di pfSense, è il supporto per il filesystem ZFS.
In molti hanno ritenuto quest'innovazione di poco conto sottovaluando le potenzialità e le peculiarità di questo potente e moderno filesystem. Probabilmente questo è dovuto alla scarsa conoscenza di ZFS.



Per prima cosa crechiamo di scoprire qualcosa di più su ZFS.

ZFS viene sviluppato tra il 2004 ed il 2005 da un team di Sun Microsystem guidato da Jeff Bonwick. Attualmente ZFS è un marchio registrato di Oracle Corporation. Inizialmente, ZFS nasce come software proprietario, solo nel 2005 viene rilasciato con licenza OpenSource, ad oggi esistono porting per i maggiori sistemi operativi.

La prima considerazione da fare è che non si tratta solo di un FileSystem, ma anche di un Logical Volume Manager, questo gli permette di sostituirsi completamente ad un controller RAID andando a gestire direttamente i dispositivi fisici permettendo così di controllare in maniera ottimale tutto il processo di lettura e scrittura dei dati mettendo a disposizione innumerevoli funzionalità evolute.

ZFS è un filesystem a 128 bit (può quindi supportare storage dell'ordine degli zettabyte); protezione contro la corruzione del dato; compressione e deduplica dei dati; FileSystem e Logical Volume Manager; scritture transazionali grazie al meccanismo del copy-on-write, capacità di creare snapshot in modo istantaneo; possibilità di clone e replica degli snapshot; blocchi a dimensione variabile; rispetta lo standard POSIX; meccanismo evoluto di caching.

Sicuramente vi starete chiedendo in che modo ZFS possa tornare utile su un firewall come pfSense, del resto gran parte delle caratteristiche innovative potrebbero far pensare che sia un filesystem più orientato al Software Defined Storage (SDS).
Effettivamente le potenzialità di ZFS si esprimono a pieno in ambienti di SDS, non a caso è largamente utilizzato in hardware iperconvergenti come Nutanix e Syneto, ma ci sono caratteristiche che permettono di migliorare la stabilità, la sicurezza e le performance anche di un firewall, di seguito vedremo le caratteristiche che possono risultare interessanti anche su pfSense.

Copy-on-write
ZFS utilizza il metodo transazionale ad oggetti copy-on-write (COW), questa è una delle caratteristiche più importanti ed è uno dei tasselli fondamentali di ZFS, senza del quale altre funzioni non potrebbero esistere. Ad ogni modifica di un dato, il blocco che lo contine non viene sovrascritto ma ne viene creato uno nuovo, al termine della scrittura viene modificato il puntatore dal vecchio al nuovo blocco.
Questo meccanismo permette di superare la fragilità del vecchio filesystem adottato da pfSense. In caso di spegnimenti improvvisi di pfSense era molto probabile incorrere nella corruzione del filesystem e nell'impossibilità di riavviare il firewall. Grazie al COW in caso di arresto improvviso durante una scrittura, se i nuovi blocchi non sono stati completamente scritti, vengono ignorati.
Logical Volume Manager
ZFS agisce come un Logical Volume Manager conentendo il controllo diretto di HDD. Questo consente la gestione di  array di dischi in modo diretto e senza ricorrere a costosi controller RAID, senza contare che l'espansione dei volumi è quasi immediata grazie a meccanismi di resilvering intelligenti. Altro aspetto importante in caso di guasto hw della mainboard del firewall è la possibilità di spostare il pool di dischi da un HW ad un altro senza nemmeno doversi preoccupare dell'ordine con cui i dischi debbano essere rimontati sul nuovo HW. Un operazione simile con i classici controller RAID è quasi impossibile soprattutto se a guastarsi è stato il controller stesso.


Caching
Un'altra delle funzioni avanzate di ZFS è la capacità di gestire un meccanismo di caching a più livelli. Questo meccanismo consente di accelerare le prestazioni in lettura e scrittura. Nello specifico ZFS è strutturato per sfruttare RAM e dischi SSD come cache e creare così una gerarchia di memorie con prestazioni diverse (RAM <-> SSD <-> HHD) che nel complesso permettono di ridurre i costi impiegando HDD meno performanti, ma al tempo stesso permette di raggiungere prestazioni 5 volte superiori rispetto ai migliori dischi meccanici.

L'utilizzo di questa gerarchia permette di superare e rendere allo stesso tempo ridicolo il meccanismo di caching utilizzto dai moderni controller RAID.
Questo meccanismo di caching, su pfSense consente di agevolare impieghi in cui l'accesso in lettura e scrittura ha un acerta importanza come per esempio logging e cache proxy.

Compressione e Deduplica
Altre due funzionalità molto interessanti sono la compressione in-line nativa e la capacità di deduplica. Tecnologie simili tornano molto utili nel caso di utilizzi come quelli visti per il caching. La cosa interessante è che la compressione in-line non ha alcun impatto sui moderni processori poichè sfrutta istruzioni dedicate che non appesantiscono il processore. Meno appetibile è invece l'utilizzo della deduplica poichè richiede grandi quantità di memoria RAM.

Encryption
ZFS permette anche la cifratura del filesystem, nel caso di un firewall può essere utile per proteggere password (purtroppo presenti in chiaro nel file di config) e certificati SSL. Gli esempi più semplici sono installazioni dove viene impiegato HAProxy a protezione di siti web https piuttosto che concentratori VPN.


Alcuni consigli/raccomandazioni per l'impiego di ZFS:
  • Per poter sfruttare lo ZFS è necessario disporre di HW a 64 bit e poter installare la versione 2.4.x di pfSense.
  • Se avete un'installazione già attiva e funzionante è necessario reinstallare il sistema da zero scegliendo poi come filesystem ZFS.
  • Per non incappare in problemi di prestazioni occorre non occupare mai i dischi per più del 70% altrimenti il meccanismo del copy-on-write potrebbe rallentare le prestazioni.
  • Se vi state chiedendo se effettuare un upgrade alla versione 2.4, la risposta è fatelo e seguite questi passaggi:
    • Backup della config
    • Upgrade all'ultima versione disponibile
    • Backup della config
    • Reinstallazione del firewall scegliendo come filesystem ZFS
    • Restore della configurazione
  • Se state chiedendo se dismettere il controller RAID per passare a gestire i pool con ZFS, la risposta è fatelo, seguendo i passaggi del punto precedente.
  
Concludo con falsi miti da sfatare:
  • ZFS è un filesystem lento: FALSO, a meno di aver configurato male tutta la catena, per esempio lasciando gestire i dischi al controller RAID.
  • ZFS richiede molta RAM: FALSO, i requisiti base sono di 1 GB di memoria RAM per l'intero sistema. ZFS impiega la memoria se disponibile e se necessario.
  • ZFS è utile solo se si vuole creare un RAID software: FALSO, come visto, il meccanismo del copy-on-write garantisce maggior sicurezza al filesystem indipendentemente dal numero dei dischi.
Per maggiori informazioni vi consiglio di consultare wikipedia e la definizione di ZFS in inglese.


Posta un commento