Btrfs

Da Wikipedia, l'enciclopedia libera.
Btrfs
Dati generali
Sviluppatore Oracle Corporation
Nome completo B-tree FS o "Butter FS"
Introduzione Versione finale: 0.20
Prima apparizione: 2008 Linux
Struttura
Struttura contenuti directory B*Tree
Allocazione dei file extent
Limiti
Dimensione massima di un file 16 EB
Numero massimo di file 264
Dimensione massima del nome di un file 255 byte
Dimensione massima del volume 16 EB
Caratteri permessi nel nome di un file Tutti i byte eccetto NULL e '/'
Caratteristiche
Attributi POSIX
Permessi file system POSIX e ACL
Compressione trasparente Sì (zlib, LZO, Snappy)
Crittografia trasparente No

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 ArchLinux 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]. La prima distribuzione enterprise di linux che ha adottato btrfs è SUSE 11 SP2 resa disponibile al grande pubblico il 2 marzo 2012.[senza fonte]

Chris Mason, direttore del comparto Linux Kernel Engineering di Oracle e autore di btrfs, ha affermato: «Lo scopo principale è di permettere a Linux di poter 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 una interfaccia pulita per l'amministrazione e la gestione che sia affidabile e 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.

Struttura[modifica | modifica wikitesto]

Il filesystem Btrfs è di tipo COW (copy-on-write) ciò 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:

  • Il Block header: è un header presente al principio di ogni blocco.
  • La Key: è una struttura che permette di puntare ad un oggetto, possiede un Object ID da 64 bit, un Type da 8 bit che serve a determinare il tipo di struttura associato ad un determinato blocco e un Offset da 64 bit.
  • L'item: è un struttura che contiene una key più un campo offset da 32 bit e un campo size da 32 bit.

I blocchi intermedi dell'albero sono formati da coppie di key e block-pointer, 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:

  • Extent-allocation tree: si tratta di un albero che traccia ogni extent allocato nel volume, ha quindi la funziona di gestire lo spazio libero.
  • Cheecksum-tree: è un B-tree nel quale si trova un valore di checksum per ogni extent allocato all'interno del volume.
  • Chunk and device tree: è un livello di astrazione tra il filesystem e i dischi, quindi cambia a seconda del sistema RAID scelto, presentando una mappa dei blocchi reali e della loro struttura logica.
  • Sub-volume: Un subvolume è un filesystem su cui si possono operare azioni di cloning e snapshot. L'insieme di questi B-tree compone tutti i file e le directory visibili.
  • Reloc Tree: è un B-tree funzionale alla reallocazione degli extent, è usato quindi nella routine di frammentazione del filesystem.

Note[modifica | modifica wikitesto]

  1. ^ (EN) Changelog of package "btrfs-progs", ArchLinux. URL consultato il 12 novembre 2014.
  2. ^ (EN) Btrfs, Debian wiki. URL consultato il 12 novembre 2014.
  3. ^ (EN) Btrfs, FedoraProject. URL consultato il 12 novembre 2014.
  4. ^ (EN) Changelog of "btrfs-progs" package, Gentoo. URL consultato il 12 novembre 2014.
  5. ^ Portale openSUSE 12.1, openSUSE.org. URL consultato il 12 novembre 2014.
  6. ^ (EN) “btrfs-tools” package in Ubuntu Launchpad, Canonical LTD. URL consultato il 12 novembre 2014.

Collegamenti esterni[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica