Debian GNU/kFreeBSD come fileserver

Debian GNU/kFreeBSD è un port ufficiale Debian, rilasciato come stabile nell'ultima release Squeeze di Febbraio scorso, che consiste di uno spazio utente GNU che usa la libreria C GNU e un kernel FreeBSD sottostante, abbinati con il normale insieme di pacchetti Debian.

FreeBSD è un progetto opensource, derivato dalla distribuzione Unix dell'Università di Berkeley, noto perlopiù in ambito server per la sua solidità in ambito di networking e sicurezza.

Di recente, ha guadagnato il supporto a ZFS, un filesystem sviluppato da Sun per Solaris, che vanta numerose funzionalità che non si trovano (non ancora) in nessun altro filesystem, fra cui: snapshot istantanei, repliche multiple di singoli files o intere directory (ridondanza che si addiziona a quella fornita dal layout raid* sottostante), checksum per poter riconoscere e intervenire automaticamente in caso di dati corrotti.E' stato implementato anche un nuovo modello di replica dei dati, denominato RAID-Z, simile al RAID5/6 dal punto di vista dell'affidabilità, ma che risolve il problema delle write-holes, in cui si può incorrere in caso di crash di sistema, ritrovandosi con dati inconsistenti e attualmente tamponato dai raid hardware mediante l'utilizzo di batterie.

Grazie alla guadagnata semplicità nella gestione dello spazio disponibile e l'affidabilità nel gestire errori e fallimenti hardware, ZFS si configura come un ottimo strumento per ospitare un fileserver o un backup server, o entrambe le cose.

Un esempio di configurazione pratica: avendo a disposizione un HP Microserver con un piccolo disco da 250 GB e 2 dischi da 2 TB, è possibile installare Debian kFreeBSD sul disco piccolo scegliendo partizionamento automatico (filesystem di root su filesystem UFS e un po' di swap). Dopo il primo avvio possiamo configurare il volume ZFS sui dischi più grandi, in mirror (simil RAID1):

# zpool create tank mirror da0 da1

Creo un primo volume in tank:

# zfs create tank/samba

Creo un secondo volume in tank:

# zfs create tank/backup

Nel primo volume attivo la compressione trasparente:

# zfs set compression=gzip tank/samba

Aumento il numero di repliche di ogni singolo file all'interno di una cartella specifica, diminuendo ulteriormente il rischio di perdita dati causati da malfunzionamenti hardware:

# zfs set copies=3 tank/samba/Importanti

Si crea uno snapshot (che può esser ispezionato in sola lettura, ripristinato successivamente, cancellato)

# zfs snapshot tank/samba@label_20110628

Si possono creare nuovi device a blocchi, come con LVM, successivamente formattabili con altri filesystem:

# zfs create -V 4g tank/swap1

In ogni momento è possibile monitorare lo stato dei volumi:

# zpool status

Ed è possibile forzare un recheck della consistenza di tutti i dati presenti sul disco (altrimenti viene fatto solo in fase di lettura o scrittura di un singolo blocco di dati):

# zpool scrub tank

Infine possiamo installare e configurare tutti i servizi standard che ci servono via apt-get/aptitude, come fossimo su una qualsiasi altra Debian.


References:

http://wiki.freebsd.org/ZFSQuickStartGuide

http://www.freebsd.org/doc/handbook/filesystems-zfs.html

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide