Btrfs è disponibile per Linux da diversi anni, quindi potresti già conoscerlo. In caso contrario, potresti avere domande al riguardo, soprattutto se utilizzi Fedora Workstation (Btrfs è ora il suo filesystem predefinito). Questo articolo ha lo scopo di aiutarti a familiarizzare con esso e le sue funzionalità avanzate, come il copy-on-write e i checksum.
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Btrfs, abbreviazione di B-Tree Filesystem, è in realtà un filesystem e un gestore di volumi riuniti in uno. È spesso visto come una risposta a ZFS, introdotto nel sistema operativo Solaris di Sun Microsystem nel 2005, ora ampiamente sostituito da un'implementazione open source chiamata OpenZFS. Ubuntu Linux e FreeBSD spesso dispongono di OpenZFS. Altri esempi con caratteristiche simili sono Stratis di Red Hat e Linux Logical Volume Manager (LVM).
Configurazione
Per provare Btrfs, ho scaricato il file ISO di Fedora 33 Workstation e l'ho installato in una nuova macchina virtuale (VM). Il processo di installazione non è cambiato rispetto alle versioni precedenti. Non ho personalizzato alcuna impostazione, incluso il partizionamento e la formattazione dell'unità, per mantenere un'accurata configurazione "pronta all'uso" per questo tutorial. Una volta che la VM è stata avviata e funzionante, ho installato ed eseguito GNOME Partition Editor (GParted) per una bella vista di fabbrica del layout dell'unità.
Da questo punto, non è molto diverso da quello a cui sei abituato; infatti, puoi usare il sistema normalmente e potresti anche non notare che il filesystem è Btrfs. Tuttavia, avere questa nuova impostazione predefinita ti consente di sfruttare diverse funzioni interessanti.
Esamina il filesystem Btrfs
Non sono a conoscenza di strumenti grafici specifici di Btrfs, sebbene alcune delle sue funzioni siano state incorporate negli strumenti di gestione del disco esistenti.
Dalla riga di comando, puoi dare un'occhiata più da vicino al formato Btrfs:
# btrfs filesystem show
Label:'fedora_localhost-live' uuid:f2bb02f9-5c41-4c91-8eae-827a801ee58a
Dispositivi totali 1 byte FS utilizzati 6,36GiB
devid 1 dimensione 10,41GiB utilizzato 8.02GiB percorso /dev/vda3
Cambia etichette Btrfs
La prima cosa che ho notato è stata l'etichetta del filesystem impostata dal programma di installazione:fedora_localhost-live
. Questo è impreciso perché ora è un sistema installato e non più un CD live. Quindi l'ho cambiato usando btrfs filesystem label
comando.
Modificare un'etichetta del filesystem Btrfs è semplice:
# etichetta del filesystem btrfs /
fedora_localhost-live
# etichetta del filesystem btrfs / fedora33workstation
# etichetta del filesystem btrfs /
fedora33workstation
Gestisci i sottovolumi Btrfs
Un sottovolume sembra essere una directory standard che può essere gestita da Btrfs. Ci sono diversi sottovolumi sulla mia nuova workstation Fedora 33:
elenco di sottovolume n. btrfs /
ID 256 gen 2458 percorso principale livello 5 home
ID 258 gen 2461 radice percorso principale 5
ID 265 gen 1593 livello superiore 258 percorso var/lib/ macchine
Crea un nuovo sottovolume usando btrfs subvolume create
comando o eliminare un sottovolume con btrfs subvolume delete
:
# btrfs subvolume create /opt/foo
Create subvolume '/opt/foo'
# btrfs subvolume list /
ID 256 gen 2884 livello superiore 5 percorso home
ID 258 gen 2888 radice del percorso di livello superiore 5
ID 265 gen 1593 di livello superiore 258 percorso var/lib/machines
ID 276 gen 2888 di livello superiore 258 percorso opt/foo
# btrfs subvolume delete /opt /foo
Elimina sottovolume (senza commit):'/opt/foo'
I sottovolumi consentono azioni come l'impostazione di una quota, l'acquisizione di uno snapshot e la replica in altre posizioni e host. In che modo gli amministratori di sistema possono trarre vantaggio da queste funzionalità? Che ne dici delle home directory degli utenti?
Aggiungi un utente
Come è avvenuto dai tempi antichi, l'aggiunta di un nuovo account utente crea una home directory che l'account può utilizzare:
# useradd student1
# getent passwd student1
student1:x:1006:1006::/home/student1:/bin/bash
# ls -l /home
drwx------. 1 studente1 studente1 80 29 ottobre 00:21 studente1
Tradizionalmente, la directory home di un utente è una sottodirectory di /home
. La proprietà e i privilegi sono personalizzati in base al proprietario, ma non ci sono funzioni speciali per gestirli. L'ambiente del server aziendale è un altro scenario. Spesso, una directory è riservata all'uso da parte di una particolare applicazione e del suo utente. Puoi sfruttare Btrfs per gestire e applicare vincoli a queste directory.
Per ospitare i sottovolumi Btrfs come case degli utenti, c'è una nuova opzione per useradd
comando:--btrfs-subvolume-home
. Sebbene le pagine man non siano state aggiornate (al momento della stesura di questo documento), puoi vedere l'opzione eseguendo useradd --help
. Passando questa opzione quando si aggiunge un nuovo utente, verrà creato un nuovo sottovolume Btrfs. Funziona proprio come -d
l'opzione fa per creare una directory normale:
# useradd --btrfs-subvolume-home student2
Crea sottovolume '/home/student2'
Verifica l'utente con getent passwd student2
e sembrerà normale. Tuttavia, esegui il btrfs subvolume
comando per elencare i sottovolumi e vedrai qualcosa di interessante:la home directory del nuovo utente!
elenco di sottovolume n. btrfs /
ID 256 gen 2458 percorso principale livello 5 home
ID 258 gen 2461 radice percorso principale 5
ID 265 gen 1593 livello superiore 258 percorso var/lib/ macchine
ID 272 gen 2459 livello superiore 256 percorso casa/studente2
Esplora il secondo scenario di un ambiente server aziendale. Supponiamo di dover installare un server WildFly in /opt
e distribuire un'applicazione Web Java. Spesso, il primo passo è creare un wildfly
utente. Fallo usando il nuovo --btrfs-subvolume-home
opzione insieme a -b
opzione per specificare /opt
come directory di base:
# useradd -b /opt --btrfs-subvolume-home wildfly
Crea sottovolume '/opt/wildfly'
Ora, il wildfly
l'utente può accedere e completare l'installazione in /opt/wildfly
.
Elimina un utente
Quando elimini un utente, a volte desideri eliminare contemporaneamente i file di quell'utente e la home directory. Il userdel
il comando ha il -r
opzione per questo, ed elimina anche i sottovolumi Btrfs:
# userdel -r student2
Elimina sottovolume (commit):'/home/student2'
Imposta le quote di utilizzo del disco
In uno dei miei corsi di informatica, uno studente ha eseguito un programma C che è andato fuori controllo e ha scritto sul disco fino all'intero /home
è stato riempito sul sistema Unix del dipartimento! Il server è diventato non disponibile fino a quando l'amministratore non ha terminato il processo di fuga e liberato spazio. Lo stesso vale per lo scenario sopra; che l'applicazione aziendale Wildfly avrà un numero crescente di file di registro e archivi di contenuti per i suoi utenti. Come si può evitare che un server si fermi perché il disco si è riempito? L'impostazione dei vincoli di utilizzo del disco è una buona idea. Fortunatamente, Btrfs lo supporta tramite quote.
Sono necessari diversi passaggi per configurare le quote. Il primo passo è abilitare quota
nel filesystem Btrfs:
# btrfs quota enable /
Assicurati di conoscere il numero ID del gruppo di quote (qgroup) di ciascun sottovolume, visualizzato dall'btrfs subvolume list
comando. Ogni sottovolume necessita di un qgroup associato in base al suo numero ID. Questo può essere fatto su base individuale con btrfs qgroup create
, ma, convenientemente, il wiki di Btrfs fornisce il seguente comando per accelerare la creazione di qgroup per i sottovolumi su un filesystem:
>btrfs subvolume list \<path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup destroy 0/{} \<path>
In un sistema workstation Fedora 33 appena installato, stai operando sul percorso del filesystem root, /
. Sostituisci \<path>
con il percorso principale:
# btrfs subvolume list / | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /
Quindi esegui btrfs quota rescan
e dai un'occhiata ai nuovi qgroups:
# btrfs quota rescan /
quota rescan iniziato
# btrfs qgroup show /
qgroupid rfer excl
-------- ---- --- -
0/5 16.00KIB 16.00KIB
0/256 272.04mib 272.04mib
0/258 6.08GIB 6.08GIB
0/265 16.00KIB 16.00KIB
0 /271 16.00KiB 16.00KiB
0/273 16.00KiB 16.00KiB
Ora puoi assegnare una quota a uno dei qgroup, che, a sua volta, viene applicata al suo sottovolume associato. Quindi, se vuoi limitare l'utilizzo della home directory di student3 a 1 GB, usa il btrfs qgroup limit
comando:
# btrfs qgroup limit 1G /home/student3
Conferma la quota per il sottovolume specifico:
# btrfs qgroup show -reF /home/student3
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --------
0/271 16.00KiB 16.00KiB 1.00GiB nessuno
Opzioni leggermente diverse mostreranno tutti i qgroup e tutte le quote impostate:
# btrfs qgroup show -re /
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --- -----
0/5 16.00KIB 16.00KIB Nessuno Nessuno
0/256 272.04mib 272.04mib Nessuna Nessuno
0/258 6.08GIB 6.08GIB Nessuno Nessuno 265 16.00 kib 16.00 kib nessuno NessunoAltre funzionalità
Questi esempi forniscono un'idea delle caratteristiche di Btrfs. Esegui
btrfs --help
per vedere l'elenco completo dei comandi. Esistono molte altre capacità notevoli; per esempio, le istantanee e l'invio/ricezione sono due cose che vale la pena imparare.Pensieri finali
Btrfs offre molte promesse per la fornitura di un set di funzionalità avanzate per il filesystem su Linux. Non era il primo; Rendo merito a ZFS per la mia introduzione a questo tipo di filesystem circa 15 anni fa, ma Btrfs è completamente open source e non gravato da brevetti.
Ti consiglio di iniziare con una macchina virtuale o un sistema di riserva se vuoi esplorare questo filesystem.
Mi piacerebbe vedere alcune utilità di gestione grafica prodotte per gli amministratori di sistema che amano operare nel mondo delle GUI. Fortunatamente, Btrfs ha una forte attività di sviluppo, come dimostra la decisione del progetto Fedora di renderlo predefinito su Workstation 33.