GNU/Linux >> Linux Esercitazione >  >> Linux

Introduzione a btrfs per Linux

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 Nessuno

Altre 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.


Linux
  1. Introduzione ai firewall Linux

  2. 5 suggerimenti per iniziare con la sicurezza del server Linux

  3. Iniziare con Samba per l'interoperabilità

  4. Introduzione a SSH in Linux

  5. File system della scheda SD a prova di corruzione per Linux embedded?

Tutorial Vagrant – Introduzione a Vagrant in Linux

Introduzione a Docker Compose in Linux

Introduzione a VirtualBox in Linux – Parte 1

Introduzione a Flutter su desktop Linux

Guida introduttiva a Buildah per la gestione dei container Linux

Guida introduttiva e installazione di Slack per Linux