Btrfs è un file system open source per uso generico per Linux. Il nome deriva dall'uso di B-tree per memorizzare le strutture interne del file system. Per il file system vengono utilizzati nomi diversi, inclusi "Butter F S" e "B-tree F S". Lo sviluppo di Btrfs è iniziato in Oracle nel 2007 e ora numerose aziende (tra cui Red Hat, Fujitsu, Intel, SUSE e molte altre) stanno contribuendo allo sforzo di sviluppo. Btrfs è incluso nel kernel Linux principale.
dati e metadati copia in scrittura
– Btrfs fornisce l'archiviazione di file basata sull'estensione con una dimensione massima del file di 50 TB e una dimensione massima del file system di 50 TB.
– Tutti i dati e i metadati sono copy-on-write. Ciò significa che i blocchi di dati non vengono modificati su disco. Btrfs copia semplicemente i blocchi e poi scrive le copie in una posizione diversa.
– Il mancato aggiornamento della posizione originale elimina il rischio di un aggiornamento parziale o di danneggiamento dei dati durante un'interruzione di corrente.
– La copia su -la natura di scrittura di Btrfs facilita anche le funzionalità del file system come la replica, la migrazione, il backup e il ripristino dei dati.
Istantanee Btrfs
– Btrfs ti consente di creare istantanee sia leggibili che scrivibili.
– Un'istantanea è una copia di un intero sottovolume Btrfs scattata in un determinato momento.
– Le istantanee vengono visualizzate come normali directory e puoi accedervi lo snapshot come faresti con qualsiasi altra directory.
– Gli snapshot scrivibili consentono di ripristinare un file system a uno stato precedente. È possibile acquisire uno snapshot, eseguire un aggiornamento del sistema e riavviare nello snapshot se l'aggiornamento causa problemi. Tutti gli snapshot sono scrivibili per impostazione predefinita, ma hai anche la possibilità di creare snapshot di sola lettura.
– Gli snapshot di sola lettura sono utili per un backup e possono essere eliminati al termine del backup.
Supporto RAID integrato
– Btrfs ha anche il supporto RAID integrato per i livelli RAID-0, RAID-1 e RAID-10.
– Il RAID di Btrfs non è un RAID multi-disco come i dispositivi RAID software creati utilizzando il comando mdadm. Non è nemmeno un RAID a blocchi perché non esegue il mirroring dei dispositivi a blocchi.
– Il RAID di Btrfs garantisce semplicemente che per ogni blocco ci sia una quantità "x" di copie. Per RAID-1, ad esempio, Btrfs archivia solo due copie di tutto su due dispositivi diversi.
– Btrfs mantiene i CRC per tutti i metadati e i dati in modo che tutto venga sommato per preservare l'integrità dei dati contro il danneggiamento. Con una configurazione RAID-1 o RAID-10, se il checksum non riesce alla prima lettura, i dati vengono estratti da un'altra copia.
ridimensionamento e deframmentazione online
– Btrfs ha il ridimensionamento e la deframmentazione online.
– È possibile aggiungere o rimuovere dispositivi mentre i file system rimangono online.
– Quando un dispositivo viene rimosso, le estensioni memorizzate su di esso vengono ridistribuite agli altri dispositivi nel file system.
– Puoi anche sostituire i dispositivi mentre Btrfs è online. Btrfs ribilancia le estensioni sul nuovo disco e quindi puoi eliminare il vecchio disco da un array Btrfs.
Compressione trasparente
– Btrfs ha una compressione trasparente e attualmente supporta due metodi di compressione:zlib e LZO (l'impostazione predefinita).
– LZO offre un rapporto di compressione migliore, mentre zlib offre una compressione più rapida.
– Btrfs può determinare se i blocchi possono essere compressi e, pertanto, comprime solo quando possibile.
– Si abilita la compressione e si specifica il metodo di compressione utilizzando un'opzione di montaggio. Ad esempio, per abilitare la compressione LZO o zlib:
# mount –o compress=lzo|zlib [device] [mount_point]
– Puoi anche forzare Btrfs a comprimere sempre i dati:
# mount -o compress-force [device] [mount_point]
Le prestazioni di Btrfs migliorano con l'uso di ssd
– Btrfs rileva automaticamente le unità a stato solido (SSD) e disattiva tutte le ottimizzazioni per i supporti rotazionali.
– Ad esempio, sui dischi rotanti, è importante archiviare i dati correlati vicini per ridurre la ricerca. Ciò richiede cicli della CPU per ottenere una buona posizione dei dati sui dischi rotanti, il che non è così importante con SSD.
– Anche il supporto TRIM è un'ottimizzazione per SSD. Indica all'SSD quali blocchi non sono più necessari e sono disponibili per essere sovrascritti.
Archiviazione efficiente per file di piccole dimensioni
– Btrfs fornisce un'archiviazione efficiente per file di piccole dimensioni.
– Tutti i file system Linux indirizzano l'archiviazione in blocchi di dimensioni, ad esempio 4 KB. Con altri file system, un file di dimensioni inferiori a 4 KB spreca lo spazio rimanente.
– Btrfs archivia questi file più piccoli direttamente nei metadati, fornendo così un notevole vantaggio in termini di prestazioni rispetto ad altri file system durante la creazione e la lettura di file di piccole dimensioni.
Come ottimizzare il file system Btrfs per prestazioni migliori