BTRFS/LVM quale vantaggio?

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

Di BTRFS mi piacciono gli snapshot(che però ci sono anche sotto lvm)
e sopratutto la possibilità di ridurre a caldo il fs.
Un solo dubbio.
Su lvm supponiamo
root 33G
Home 49G
Ho molto spazio nella root,e di conseguenza voglio donare
a Home,supponiamo..5G.
lvresize -r -L -10G root && lvresize -L +10G home && e2fsck,bla,bla ,bla..
Su btrfs come fareste?È possibile fare il resize di un sottovolume?
Grazie.

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: BTRFS/LVM quale vantaggio?

Messaggio da hashbang »

Meskalamdug ha scritto:Di BTRFS mi piacciono gli snapshot(che però ci sono anche sotto lvm)
Aspetta, però.
C'è una differenza abissale tra gli snapshot di LVM e quelli di Btrfs/ZFS.
Il primo altro non è che un clonare l'intero LV in un altro LV. Ciò richiede la creazione di un LV di dimensioni pari se non maggiori di quello originale.

Su Btrfs/ZFS lo snapshot è basato su diff, il che lo rende molto più efficiente se bisogna trasferire lo snapshot da una pool all'altra (zfs send/recv e controparte Btrfs). Ciò vuol dire infatti che su Btrfs/ZFS gli snapshot partono da una dimensione nulla per poi aumentare, man mano che la differenza tra lo snapshot e l'originale aumenta.

Comunque tornando alla richiesta principale.
Tecnicamente, no. Non puoi fare un resize di un subvolume, come non puoi fare un resize di un dataset ZFS.

I dataset/subvolumi sono fondamentalmente directory che vengono gestite come file system.
In sostanza, non hanno una quantità di spazio preallocata. Su ZFS i volumi pre-allocati prendono il nome di ZVOL e sono dei block-device formattabili. Quelli si possono allargare o restringere come normali file system.

I subvolumi, come i dataset, partono da una dimensione minima ed hanno una quantità di spazio di allocazione disponibile pari alla dimensione della pool stessa.

Se vuoi limitare lo spazio disponibile, devi usare il sistema di quote del disco. Con lo ZFS fai: zfs set quota=DIMENSIONE tank/dataset.

Btrfs può gestire le quote solo col kernel 3.6+, quindi se vuoi usarlo su Slackware 14.0, dovresti compilare un nuovo trunk e aggiornare la utility btrfs-progs.

L'equivalente dello zfs set quota è:
man btrfs ha scritto:# btrfs qgroup limit DIMENSIONE <path>/<subvolume>
Ora, resta da capire un attimo una cosa, perché sulla base di questo la soluzione al tuo problema cambia.
Il Btrfs funziona più o meno come lo ZFS. Ciò significa che:
1) Puoi avere una home come subvolume di root.
2) Puoi avere root e home come subvolumi indipendenti di una pool, con il secondo montato nel primo.

Nel primo caso, root è il dataset della pool e home è un suo subvolume.
Ergo, se il funzionamento delle quote e dell'ereditarietà delle opzioni è simile allo ZFS, non si può togliere spazio a root e lasciarlo ad home, in quanto il secondo dipende dal primo.
In sostanza, home avrà dimensioni PARI o INFERIORI al dataset genitore.
Quello che sto cercando di dire è che non ci dovrebbe essere la soluzione che cerchi su questo scenario.
Se Btrfs lo permette ugualmente, sarebbe un errore logico madornale.

Nel secondo caso, abbiamo due dataset differenti: il primo "root" montato su / ed il secondo montato su "/home".
Qui sostanzialmente dovresti poterlo fare senza problemi, in quanto root ed home sono due subvolumi indipendenti l'uno dall'altro.

La sintassi dovrebbe essere questa:

Codice: Seleziona tutto

# btrfs qgroup limit 23G /

Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

Re: BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

hashbang ha scritto:
Meskalamdug ha scritto:Di BTRFS mi piacciono gli snapshot(che però ci sono anche sotto lvm)
Aspetta, però.
C'è una differenza abissale tra gli snapshot di LVM e quelli di Btrfs/ZFS.
Il primo altro non è che un clonare l'intero LV in un altro LV. Ciò richiede la creazione di un LV di dimensioni pari se non maggiori di quello originale.

Su Btrfs/ZFS lo snapshot è basato su diff, il che lo rende molto più efficiente se bisogna trasferire lo snapshot da una pool all'altra (zfs send/recv e controparte Btrfs). Ciò vuol dire infatti che su Btrfs/ZFS gli snapshot partono da una dimensione nulla per poi aumentare, man mano che la differenza tra lo snapshot e l'originale aumenta.

Comunque tornando alla richiesta principale.
Tecnicamente, no. Non puoi fare un resize di un subvolume, come non puoi fare un resize di un dataset ZFS.

I dataset/subvolumi sono fondamentalmente directory che vengono gestite come file system.
In sostanza, non hanno una quantità di spazio preallocata. Su ZFS i volumi pre-allocati prendono il nome di ZVOL e sono dei block-device formattabili. Quelli si possono allargare o restringere come normali file system.

I subvolumi, come i dataset, partono da una dimensione minima ed hanno una quantità di spazio di allocazione disponibile pari alla dimensione della pool stessa.

Se vuoi limitare lo spazio disponibile, devi usare il sistema di quote del disco. Con lo ZFS fai: zfs set quota=DIMENSIONE tank/dataset.

Btrfs può gestire le quote solo col kernel 3.6+, quindi se vuoi usarlo su Slackware 14.0, dovresti compilare un nuovo trunk e aggiornare la utility btrfs-progs.

L'equivalente dello zfs set quota è:
man btrfs ha scritto:# btrfs qgroup limit DIMENSIONE <path>/<subvolume>
Ora, resta da capire un attimo una cosa, perché sulla base di questo la soluzione al tuo problema cambia.
Il Btrfs funziona più o meno come lo ZFS. Ciò significa che:
1) Puoi avere una home come subvolume di root.
2) Puoi avere root e home come subvolumi indipendenti di una pool, con il secondo montato nel primo.

Nel primo caso, root è il dataset della pool e home è un suo subvolume.
Ergo, se il funzionamento delle quote e dell'ereditarietà delle opzioni è simile allo ZFS, non si può togliere spazio a root e lasciarlo ad home, in quanto il secondo dipende dal primo.
In sostanza, home avrà dimensioni PARI o INFERIORI al dataset genitore.
Quello che sto cercando di dire è che non ci dovrebbe essere la soluzione che cerchi su questo scenario.
Se Btrfs lo permette ugualmente, sarebbe un errore logico madornale.

Nel secondo caso, abbiamo due dataset differenti: il primo "root" montato su / ed il secondo montato su "/home".
Qui sostanzialmente dovresti poterlo fare senza problemi, in quanto root ed home sono due subvolumi indipendenti l'uno dall'altro.

La sintassi dovrebbe essere questa:

Codice: Seleziona tutto

# btrfs qgroup limit 23G /
Chiarissimo,grazie.
Ultima domanda: sai mica se slackware-14.0 può far partire come root un subvolume con il pool costituito da diversi dischi?
Supponiamo
mkfs.btrfs /dev/sd{a..c}3
creo i subvolumi root e home
configuro lilo per bene con append rootvolume,etc..
creo mkinitrd..
e non parte,devo montare a mano la mnt(sic) a ogni avvio.
Troppo arretrati i programmi e il kernel slackware14 o ho sbagliato io?

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: BTRFS/LVM quale vantaggio?

Messaggio da hashbang »

Meskalamdug ha scritto:Chiarissimo,grazie.
Ultima domanda: sai mica se slackware-14.0 può far partire come root un subvolume con il pool costituito da diversi dischi?
Supponiamo
mkfs.btrfs /dev/sd{a..c}3
creo i subvolumi root e home
configuro lilo per bene con append rootvolume,etc..
creo mkinitrd..
e non parte,devo montare a mano la mnt(sic) a ogni avvio.
Troppo arretrati i programmi e il kernel slackware14 o ho sbagliato io?
Allora, in questo caso ti consiglio due cose:
1) A differenza dello ZFS che usa il label di default per impostare le pool, Btrfs usa (sic) ancora la vecchia e STUPIDA maniera di parlare di storage pool basandosi sui device.
Ciò risulta assurdo quando si parla di pool basate su sistemi multidevice.
La soluzione è:

Codice: Seleziona tutto

# mkfs.btrfs -L tank /dev/tutti_i_device_che_vuoi_mettere
E passi il label al bootloader
LABEL=tank, invece che la root device.

2) Se hai la necessità di montare un determinato dataset come subvolume di root, hai due possibilità.
2.1)

Codice: Seleziona tutto

# btrfs subvolume set-default ID_DEL_SUBVOLUME <mnt_point>
Questo ti permetterà di montare direttamente il subvolume che hai impostato come default, al posto che montare la pool e farti vedere tutti i subvolumi.
Per farla breve:
Facciamo che hai una pool con DUE dataset: svol1 e svol2
svol1 ha la root di Linux e svol2 ha la home.
Se monto normalmente la pool in /mnt, in quel path mi ritroverò le due directory/subvolumi. Il che rende impossibile il montaggio in fase di boot.
Ora, per ovviare voglio far si che quando monto la pool, a meno che non imponga esplicitamente un altro subvolume, voglio che sia svol1 ad essere montato.
Perciò, prima di tutto monto la pool e mi prendo l'ID del subvolume svol1

Codice: Seleziona tutto

# mount -t btrfs LABEL=tank /mnt
# btrfs subvolume list /mnt
L'output del secondo comando mi darà l'ID di tutti i subvolumi presenti nel punto di mount /mnt, ma ovviamente noi prenderemo in considerazione solo l'ID di svol1 (contiamo che sia 55..giusto per esempio).
Per renderlo il subvolume di default, diamo quindi

Codice: Seleziona tutto

# btrfs subvolume set-default 55 /mnt
Una volta fatto, potrai evitare il parametro da passare al mount (o ad /etc/fstab) subvol=<nome_subvolume> per quanto concerne la root.
Ovviamente dovrai passarlo per forza per la home

Codice: Seleziona tutto

# mount -t btrfs -o subvol=home LABEL=tank /mnt/home
Questo dovrebbe bastare ad evitare problemi di montaggio al boot.
C'è chi lamenta problemi con questa soluzione, ma onestamente ne ho fatte molte di installazioni con questo metodo, ma non ho mai avuto problemi.


2.2) Il secondo metodo, consiste nel modificare /etc/fstab nell'initrd, per fargli capire che quando monta il dataset di root lo deve fare passando l'opzione

Codice: Seleziona tutto

subvol=svol1
In questo caso non userai un subvolume di default, ma dovrai ricordarti di passare SEMPRE il parametro subvol al mount, altrimenti Btrfs monterà la pool con dentro i file system annidati (es. /mnt/svol1, /mnt/svol2), il che riporta ai problemi al boot sopracitati.

Per quanto riguarda la configurazione multidevice, meglio leggere questo wiki
https://btrfs.wiki.kernel.org/index.php ... le_Devices

Penso che il boot da un RAID sia supportato. Su questo non ti so dire di preciso.

Era questo ciò che ti serviva sapere? O forse ho capito male io?

Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

Re: BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

Era questo.
Ti ringrazio

Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

Re: BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

Ora il casino...

" How do I label a filesystem?

The label on a filesystem can be set at creation time, using the -L option to mkfs.btrfs.

You can also use btrfs command. There are currently few limitations:

the filesystem has to be unmounted
the filesystem should not have more than one device

btrfs filesystem label <dev> [newlabel]
"

https://btrfs.wiki.kernel.org/index.php ... esystem.3F

Conta che sono device già esistenti e formattati

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: BTRFS/LVM quale vantaggio?

Messaggio da hashbang »

A quanto ricordo, quando la pool è multidevice, a Btrfs basta indicare uno dei device facenti parte della pool per montare tutto.

Anche se è una fesseria immonda il non usare il label di default per le storage pool (o quanto meno dei block device appositi come fa LVM con i suoi VG), monta la pool con uno dei device.

Ad esempio:
Btrfs è fatto da /dev/sda1 /dev/sdb1 e /dev/sdc1

Dovrebbe bastare

Codice: Seleziona tutto

# mount -t btrfs /dev/sda1 /mnt
per montare anche gli altri due.

Dovrebbe funzionare...anche se è fuori da ogni logica.

Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

Re: BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

hashbang ha scritto:A quanto ricordo, quando la pool è multidevice, a Btrfs basta indicare uno dei device facenti parte della pool per montare tutto.

Anche se è una fesseria immonda il non usare il label di default per le storage pool (o quanto meno dei block device appositi come fa LVM con i suoi VG), monta la pool con uno dei device.

Ad esempio:
Btrfs è fatto da /dev/sda1 /dev/sdb1 e /dev/sdc1

Dovrebbe bastare

Codice: Seleziona tutto

# mount -t btrfs /dev/sda1 /mnt
per montare anche gli altri due.

Dovrebbe funzionare...anche se è fuori da ogni logica.
Non funziona.
:(

Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

Re: BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

Comunque sono riuscito a fare il label.
Ho passato a lilo LABEL anzichè root
messo LABEL in mkinitrd.. ma niente.
Ho notato che la fstab di mkintird contiene solo proc
,è normale?

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: BTRFS/LVM quale vantaggio?

Messaggio da hashbang »

Meskalamdug ha scritto:Comunque sono riuscito a fare il label.
Ho passato a lilo LABEL anzichè root
messo LABEL in mkinitrd.. ma niente
Che errore da al boot?
Ho notato che la fstab di mkintird contiene solo proc
,è normale?
si

Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

Re: BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

hashbang ha scritto:
Meskalamdug ha scritto:Comunque sono riuscito a fare il label.
Ho passato a lilo LABEL anzichè root
messo LABEL in mkinitrd.. ma niente
Che errore da al boot?
Ho notato che la fstab di mkintird contiene solo proc
,è normale?
si
Errore ""btrfs: failed to read the system array on sda3"
ovviamente se monto con sdb3 monta.
Se creo il mkinitrd con sdb3...fa viceversa,ovvero
"btrfs: failed to read the system array on sdb3"
e devo montare con sda3!

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: BTRFS/LVM quale vantaggio?

Messaggio da hashbang »

Meskalamdug ha scritto:Errore ""btrfs: failed to read the system array on sda3"
ovviamente se monto con sdb3 monta.
Se creo il mkinitrd con sdb3...fa viceversa,ovvero
"btrfs: failed to read the system array on sdb3"
e devo montare con sda3!
Hai provato questa soluzione?
https://btrfs.wiki.kernel.org/index.php ... tc.2Ffstab

Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

Re: BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

hashbang ha scritto:
Meskalamdug ha scritto:Errore ""btrfs: failed to read the system array on sda3"
ovviamente se monto con sdb3 monta.
Se creo il mkinitrd con sdb3...fa viceversa,ovvero
"btrfs: failed to read the system array on sdb3"
e devo montare con sda3!
Hai provato questa soluzione?
https://btrfs.wiki.kernel.org/index.php ... tc.2Ffstab
Si.

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: BTRFS/LVM quale vantaggio?

Messaggio da hashbang »

Ma se monti a mano la pool, funziona tutto?

Voglio dire, il problema sta solo al montaggio in boot?

Stavo giusto leggendo un bug report di Red Hat in cui si dice che un problema del genere lo si ha quando si monta una pool Btrfs in RAID, senza aver usato btrfsctl -a
https://bugzilla.redhat.com/show_bug.cgi?id=581204

A questo punto, controlla se l'initrd ha btrfsctl e, nel caso non ci fosse, prova ad installare le btrfs-progs nell'initrd.

Meskalamdug
Iper Master
Iper Master
Messaggi: 3961
Iscritto il: ven 14 mag 2004, 0:00

Re: BTRFS/LVM quale vantaggio?

Messaggio da Meskalamdug »

btrfsctl è deprecata,ho messo btrfs(opzione -B )
ma da errore ovvero non monta proprio la root

Rispondi