Newsgroup: it.comp.os.linux.sys
Titolo: Chiarimento sui subvolumes di btrfs

Chi mi può aiutare a chiarire il concetto di subvolumes di btrfs ?
Perchè non mi sono molto chiari e la documentazione che ho trovato (Es. il wiki 
ufficiale) non stà contribuendo a chiarirmeli purtroppo.
Tipo: vengono usati solo per lo snapshot della root dell'fs o ci sono anche 
altri utilizzi ?
Il fatto di poter duplicare la root dell'fs montato è solo al servizio dello 
snapshot e della copy-on-write ?
Scusate la domanda da iniziare ma non riesco a chiarirmi le idee e temo di 
complicare una cosa semplice.
Grazie
Rizio



si usa non solo per gli snapshot (da notare, a proposito di snapshot, 
l'interessante pacchetto apt-btrfs-snapshot, per il quale esiste anche la 
versione yum per fedora/redhat).
Prova ad immaginare i volumi come se fossero delle "partizioni 
virtuali" (passatemi il termine, anche se è poco preciso). Tuttavia, 
rispetto ai pool di ZFS, i subvolumi btrfs non hanno ancora la 
possibilità di assegnare spazio in modo distinto rispetto alla root.
Per la precisione, il comando di "resize" sortisce il suo effetto, ma 
modifica lo spazio in tutto il filesystem.
Pertanto, non ci ho provato, ma per il momento credo che ci si potrebbe 
accomodare con le quote.
Mi spiego meglio: tu con i pool di ZFS e con i subvolumi btrfs, piuttosto 
che creare scomode partizioni, tenderai ad usare i subvolumi.
Questo è ad esempio il mio serverotto:
# btrfs subvolume list /
ID 256 top level 5 path volumi/www
ID 257 top level 5 path volumi/mysql
ID 258 top level 5 path volumi/home
ID 259 top level 5 path volumi/news
Ti passo un link con le comparazioni dei comandi tra ZFS e BTRFS.
http://www.seedsofgenius.net/uncategorized/zfs-vs-btrfs-a-reference
Tieni presente che c'è un'errore nella pagina: lui sostiene che è 
possibile ridimensionare i sottovolumi, io immaginò che potrà valere per 
versioni future.
OCCHIO: per montarli in fstab, non sempre puoi passare l'opzione 
subvol=XXX  In certi casi è necessario usare l'opzione subvolid=XXX
Per beccare i subvolumi usare il comando:
btrfs subvolume list /
Per controllare il RAID, lo spazio usa invece:
btrfs filesystem df /
il comando df di *nix potrebbe mostrare risultati *non* congrui.
-- 
Wikipedia Admin: "wikipedia non è un blog"
Iosif Stalin: "i compagni hanno scambiato il partito per un circolo di 
discussione"

 ID 259 top level 5 path volumi/news
e per capirci questo è il modo in cui bisogna scrivere le direttive in 
fstab.
Questi sono dei volumi in RAID1 (in questo caso sarebbe corretto usare 
l'uuid però ti sforerei le righe del messaggio sul post):
/dev/sdb3 /var/www btrfs	noatime,subvolid=256 	0 1
/dev/sdb3 /var/spool/news btrfs	noatime,subvolid=259 	0 1
/dev/sdb3 /var/lib/mysql btrfs	noatime,subvolid=257 	0 1
/dev/sdb3 /home btrfs		noatime,subvolid=258	0 1
Questi invece sono dei container LXC che ho installato in dei sottovolumi 
e che invece ho montato in questo modo:
/dev/sdc5 /var/lib/lxc/websphere btrfs noatime,subvol=websphere 0 1
/dev/sdc5 /var/lib/lxc/postgres  btrfs noatime,subvol=postgres  0 1
/dev/sdc5 /var/lib/lxc/dirsrv    btrfs noatime,subvol=dirsrv    0 1
/dev/sdc5 /var/lib/lxc/cont_1    btrfs noatime,subvol=cont_1    0 1
/dev/sdc5 /var/lib/lxc/cont_2    btrfs noatime,subvol=cont_2    0 1
/dev/sdc5 /var/lib/lxc/ubu_1     btrfs noatime,subvol=ubu_1     0 1
/dev/sdc5 /var/lib/lxc/ubu_2     btrfs noatime,subvol=ubu_2     0 1
/dev/sdc5 /var/lib/lxc/ubu_3     btrfs noatime,subvol=ubu_3     0 1
/dev/sdc5 /var/lib/lxc/fedora    btrfs noatime,subvol=fedora    0 1
/dev/sdc5 /var/lib/lxc/mds       btrfs noatime,subvol=mds       0 1
al posto dei device puoi usare quindi gli UUID.... fai come ti pare.


 /var/lib/lxc/websphere btrfs noatime,subvol=websphere 0 1 /dev/sdc5
il motivo per cui in un caso ho usato subvol, e nell'altro caso ho usato 
subvolid è il seguente:
- nel secondo caso i sottovolumi stanno proprio sotto la rootfs, cioè 
esattamente sotto il mountpoint, quindi l'opzione "subvol" funziona e può 
essere utilizzata.
- nell'altro caso, i sottovolumi stanno più in basso e allora "subvol" 
non funziona. L'ho fatto per una questione di ordine.... e perché non 
avrei potuto creare home come sottovolume sotto la root, perché andava a 
coincidere con la directory home :)


 accomodare con le quote.
Se non ricordo male, Btrfs non supporta le quote
Enrico

 possibilità di assegnare spazio in modo distinto rispetto alla root.
Uhmmm...  non sò se proprio ho capito bene, o meglio, la cosa l'ho capita però 
non sò perchè dovrei usare quelli al posto di altre partizioni.... mah, magari 
devo solo cercare altri esempi di utilizzo di google.
Grazie in ogni caso della spiegazione.
Rizio


Il sottovolume è svincolato dai layer sottostanti.
In alternativa, puoi restare tranquillamente con tutti i layer
sovrapposti che hai usato fino ad ora: partizione su disco, metadevice
raid, metadevice LVM (con i suoi sotto-layer: pv, vg e lv) e infine il
filesystem.
E per ogni resize, dovrai usare un comando, o tool, per agire su
ciascun layer.
Ovviamente, come ti ho già detto, oggi c'è ancora il limite dovuto al
fatto che al sottovolume non può essere assegnato un suo spazio.
Massimiliano

 sotto-layer: pv, vg e lv) e infine il filesystem.
cioè, ti è chiaro che con BTRFS + sottovolumi tu fai tutte queste cose 
messe insieme, e CON UN SOLO COMANDO al posto di una decina di comandi?
E' inutile che cerchi su google. Che altro ci vorresti fare con i pool? 
La zuppa?
Però, se il tuo scenario è quello del desktop casalingo, allora ecco 
perché non hai capito i vantaggi derivanti dall'utilizzo dei volumi.


 non sò perchè dovrei usare quelli al posto di altre partizioni
Attualmente non ha senso in quanto Btrfs non implementa una quota per 
subvolume, ma in futuro potrebbe averne in quanto ti permetterebbe di 
assegnare uno spazio definito ad ogni subvolume senza dover passare per 
volume manager (e.g. LVM) di sorta. Personalmente detesto la situazione 
attuale perche` tale funzionalita` mi farebbe molto comodo in ambito 
lavorativo, ma l'unico file system che la implementa e` ZFS
Enrico