Btrfs aggiunge i RAID1C3 e RAID1C4

Torniamo a parlare di Btrfs, il filesystem carico di promesse alla nascita e concorrente di ZFS, il Santo Graal del momento anche su Linux. Ma per prima cosa dobbiamo spiegare, per chi non lo sapesse, cosa vuol dire RAID.

Con RAID (Redundant Array of Independent Disks – insieme ridondante di dischi indipendenti), i dati sono divisi in pezzetti (chiamati chunk) che vengono distribuiti sui vari dischi. Le diverse implementazioni, chiamate livelli, permettono di avere più o meno resilienza dei dati, ovvero poter lavorare in sicurezza con la perdita di uno o più dischi. Il tutto grazie alla ridondanza, ovvero scrivere i dati più volte, al costo di prestazioni e spazio utilizzabile.

  • RAID-0
    I dischi sono usati in parallelo e i dati distribuiti. Permette le migliori prestazioni (si sommano quelle dei singoli dischi), ma – a dispetto dell’acronimo – nessuna ridondanza: alla perdita di un disco, tutto il pool risulta inaccessibile.
  • RAID-1
    I dischi sono usati in parallelo e i dati copiati su tutti i dischi. La velocità di scrittura e la capienza sono pari a quella di un singolo disco, mentre la velocità di lettura è la somma – come nel RAID-0.
    Dato che tutti i dischi contengono gli stessi dati, la resilienza è la più alta: permette la perdita di tutti i dischi meno uno.
  • RAID-5
    Per questa configurazione servono almeno 3 dischi. I dati sono distribuiti tra tutti i dischi tranne uno, che invece conterrà un chunk speciale, quello di parità.
    Sopporta la perdita di un disco, ma le prestazioni sono una via di mezzo tra RAID-0 e RAID-1.
  • RAID-6
    Per questa configurazione servono almeno 4 dischi. Come RAID-5, ma i chunk di parità sono due, quindi sopporta la perdita di due dischi.

Per usare RAID ci si deve affidare ad un software apposito (MD – Multi Disk, in Linux), oppure ad un controller hardware apposito, che garantisce prestazioni superiori.

Una delle funzionalità più apprezzate di ZFS è la possibilità di designare più dispositivi (dischi) a formare un unico dispositivo, chiamato zpool, la cui implementazione ricalca quanto avviene con RAID, ma senza la necessità di hardware o software dedicati, cosa che ne semplifica la gestione.
ZFS implementa per i propri zpool tre livelli di resilienza:

  • RAIDZ-1
    Costituito da almeno 3 dischi, permette di perderne uno. Paragonabile a RAID-5.
  • RAIDZ-2
    Costituito da almeno 4 dischi, permette di perderne due. Paragonabile a RAID-6.
  • RAIDZ-3
    Costituito da almeno 5 dischi, permette di perderne tre.

Anche Btrfs, da buon antagonista, prevede fin dall’origine la stessa possibilità, implementando direttamente al suo interno i vari livelli RAID sopra esposti, ma una delle critiche più forti fatte finora è la non affidabilità dell’implementazione attuale dei livelli RAID-5 e RAID-6.
C’è comunque da fare una precisazione per l’implementazione di RAID-1: la distribuzione dei dati non avviene su tutti i dischi, ma viene scritto lo stesso chunk su due dischi diversi.
Questo permette di lavorare con dischi di dimensione diversa, ma al costo di poter perdere solo un disco. In questo senso quindi si può parlare di RAID1C2: RAID-1 con Copia su 2 dischi.

Solo un paio di anni fa è stato risolto un bug per il RAID di Btrfs che aveva il potenziale di far perdere tutti i dati: esattamente quanto non deve accadere con un filesystem. Ma proprio basandosi sull’affidabilità raggiunta, lo sviluppatore David Sterba si è dedicato all’implementazione di due nuove modalità: RAID1C3 e RAID1C4. In queste modalità i dati sono duplicati rispettivamente 2 e 3 volte, permettendo la perdita rispettivamente di 2 o 3 dischi. Proprio come i RAIDZ di ZFS.
A detta dello sviluppatore, per avere ulteriore ridondanza (un RAID1C5, per esempio) il codice andrebbe complicato troppo: meglio trovare un altro sistema. Inoltre, non vede nessuno interessato.

Questa nuova caratteristica interessa sicuramente gli utilizzatori più grandi, tipo Facebook, che possano decidere di investire in più dischi per avere migliori prestazioni (lettura parallela dei dati) e resilienza, al costo dello spazio disco usabile. Ricordiamo infatti che creando un RAID1C4 con 4 dischi da 1 TB l’uno, avremo impegnato 4 TB ma disponibile solo 1 TB: il 25%.

L’uscita dell’ultimo Kernel, il 5.5, ha visto l’accettazione anche di queste modifiche a Btrfs, permettendone l’uso. E Sterba ha pubblicato un mini-manuale d’uso che mostra i comandi per poter creare un filesystem con le nuove funzionalità. E si annunciano già dei miglioramenti per il Kernel 5.7.
Se ci aggiungiamo poi che GRUB, oltre a quanto implementato l’anno scorso, è già compatibile, possiamo dire che chiunque sia interessato ad usare questa possibilità non ha scuse per non farlo.

Non crediamo che questa caratteristica sia l’arma finale per vincere la battaglia del miglior filesystem, per quanto sia una conferma per chi crede ancora in Btrfs. E voi cosa preferite? ZFS, altro?

Ho coltivato la mia passione per l'informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

Tags: , ,