La mia esperienza (positiva) con BTRFS

BTRFSDopo avere usato ZFS per molto tempo e aver capito che senza l'hardware adeguato i difetti superano i pregi, ho deciso di guardarmi intorno. Leggo di BTRFS da anni, ormai. L'unica cosa che tutti dicono è che "non è ancora pronto per essere considerato stabile, ma è strabiliante". Ho dunque provato a formattare la memoria USB di uno dei miei Raspberry PI in BTRFS, decidendo di lasciar perdere a causa della lentezza.

Il mio server Atom casalingo (4GB di Ram, 3 dischi da 1 TB, di cui uno che funge da Time Capsule, ecc.), invece, potrebbe essere un ottimo banco di prova.

Il server ha questa struttura:

  • sistema operativo: Ubuntu 12.04 server, installato su una memoria USB da 4 GB, con alcune modifiche per girare in sola lettura (onde evitare riempimento o usura della memoria USB stessa)
  • Script vari di controllo dischi (ereditati dall'epoca in cui usavo l'Alix o il Dockstar): controllando la presenza dei dischi rotanti o del disco esterno, lanciano degli script su di essi per abilitare i servizi necessari o lanciare container)
  • Se e' presente il disco USB3 da 1 TB, lancia il netatalk e si annuncia sulla rete onde fingersi una veloce e comoda Time Machine, che permette ai miei Mac di effettuare backup criptati e automatici (Powernap, grande cosa...lo vorrei anche su macchine GNU/Linux!)
  • Se sono presenti i due dischi replicati, lancia i vari servizi di condivisione e alcuni container lxc. Attraverso lxc ho separato quasi tutti i servizi, dal Munin che crea grafici sulla temperatura della casa (uno dei prossimi articoli sarà proprio su come ho creato un efficiente sistema di controllo climatico della casa attraverso un Raspberry PI), un Nagios che tiene d'occhio tutte le apparecchiature (alcune di quelle connesse via Powerline tendono a "sparire", ogni tanto. Indagini in corso...) e ad attivare e disattivare servizi ed elettrodomestici sulla base della mia presenza o meno in casa, nonché un container ZoneMinder per la videosorveglianza di casa, ingresso e dei garage, un container per il server Plex e la gestione dei miei file multimediali...e così via

Circa un anno fa, quindi, ho deciso di convertire i vari dischi a BTRFS, grazie anche alla semplice procedura ext4-to-btrfs.

Il risultato? Eccellente, sotto tanti punti di vista. Il file system è stabile, la compressione ha migliorato (e non di poco) la velocità di lettura e la deduplicazione ha permesso un recupero di parecchi GB di spazio, specialmente considerando che ogni notte effettuo backup di vari server esterni con molti file comuni (sto valutando l'applicazione, anche in locale, di StoreBackup, che mi ha dato ottimi risultati se usato esternamente).

Due dei tre dischi sono stati configurati in replicazione. Di fatto, niente raid "classico". Replicazione e compressione lzo al volo. Punto. Posso incrementare, decrementare, aggiungere, rimuovere, sostituire dischi senza alcun problema. Anche al volo.

E' stato però necessario tener conto di alcuni dettagli non secondari:

  • BTRFS lavora in COWalcuni file grandi e costantemente mutevoli (file immagine di VM in esecuzione, file dei DB di MySQL di ZoneMinder, ecc.) si comportano molto male in questo modo. Ho preferito disabilitare il COW sulle directory in oggetto. Si perdono alcune possibilità, nonché la compressione, ma il gioco vale la candela, altrimenti lentezza e frammentazione diventano insostenibili.
  • Meglio lavorare con Kernel e btrfs-progs recenti: ho installato l'ultimo (al momento) Linux 3.18 rc. Ad ogni nuova release, vedo il sistema migliorare.
  • BTRFS è ancora un file system non del tutto stabile. Pur non avendo avuto seri problemi, è bene ricordare che non c'è ancora quel livello di affidabilità a cui ci hanno abituato i file system maggiormente diffusi nell'ambiente GNU/Linux

Mi sentirei dunque di consigliare BTRFS al grande pubblico? Dipende. Nel mio caso, mi trovo molto bene nell'usarlo in alcuni specifici frangenti ma non mi sognerei neanche di metterlo in produzione su server importanti. Non prima di averne davvero valutato tutti i pregi e difetti.

Buona sperimentazione a tutti!

Commenti