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
