Btrfs
Btrfs (B-tree FS, "Butter FS" o "Better FS") è un file system per Linux di tipo copy-on-write dotato di checksumming, annunciato da Oracle Corporation nel 2007 e pubblicato sotto la GNU General Public License (GPL). Nato inizialmente come risposta al filesystem ZFS, è il filesystem scelto da MeeGo, il sistema operativo open source sviluppato da Intel e Nokia per smartphone, netbook e navigatori satellitari. Esso è disponibile in diverse distribuzioni Linux, come Arch Linux dal gennaio 2012[1], Debian dalla versione 6[2], Fedora dalla versione 16[3], Gentoo Linux dal mese di luglio 2010[4], OpenSUSE a partire dalla versione 12.1[5], e Ubuntu dalla versione 10.04[6]. SUSE Linux Enterprise Server 11 SP2 è stata la prima distribuzione Linux enterprise a offrire supporto commerciale per il file system Btrfs, ed è stata rilasciata nel febbraio 2012.[7] Chris Mason, direttore del comparto Linux Kernel Engineering di Oracle e autore di btrfs, ha affermato: «Lo scopo principale è di permettere a Linux di scalare sulle ingenti risorse di storage che saranno disponibili in futuro. Scalare bene non si limita alle sole funzionalità di completo indirizzamento ma significa anche avere un'interfaccia pulita per l'amministrazione e una gestione che sia affidabile e che permetta agli utenti di comprendere chiaramente ogni passaggio.» La prima comparsa di Btrfs nel kernel Linux risale alla prerelease 2.6.29-rc1 del kernel Linux, mentre la prima versione definita stabile è stata pubblicata nella versione 3.10. Lo sviluppo del filesystem procede tuttora. StrutturaIl filesystem Btrfs è di tipo COW (copy-on-write), il che permette di creare snapshot e cloni. Tutti i dati e i metadati sono validati tramite CRC. Btrfs è composto da un insieme di B-Tree con una radice comune; vengono utilizzati extent di dimensione variabile. Ciò permette di ridurre notevolmente la frammentazione in scrittura. I metadati sono contenuti all'interno di B-Tree che possegono tre tipi di strutture:
I blocchi intermedi dell'albero sono formati da coppie di key e block-pointer, mentre le foglie, invece, dalla coppia item/data. All'inizio del blocco relativo ad una foglia, dopo il Block header, si trova l'array item; al fondo del blocco l'array dei data, ordinato in modo inverso rispetto al primo, quindi entrambi gli array crescono verso il centro. Ogni singolo B-tree è un oggetto a sé stante, quindi ogni volta che sarà necessario creare o copiare un file, si istanzierà un nuovo object-id appartenente a una key associata al nodo radice di un B-tree. Vi è un superblocco posto in una posizione non variabile del filesystem che punta a una "tree of tree roots" (letteralmente albero di radici di alberi). Questo B-tree, dunque, tiene traccia degli starting point, quindi dei blocchi radice di ogni altro B-Tree presente. I B-tree sono così divisi tra loro:
Note
Altri progetti
Collegamenti esterni
|