#page created by leleq2 #format wiki #LANGUAGE it <<BR>> <<Include(NuoviStrumentiWiki/PaginaDiProva)>> <<Indice>> <<Informazioni(forum="https://forum.ubuntu-it.org/viewtopic.php?f=46&t=639190"; rilasci="20.04 18.04")>> = Introduzione = '''[[https://en.wikipedia.org/wiki/Btrfs|Btrfs]]''' è un moderno '''filesystem''' [[https://it.wikipedia.org/wiki/Copy-on-write|copy on write (CoW)]] per Linux che mira a implementare funzionalità avanzate con particolare attenzione sulla tolleranza agli errori, sulla riparazione e sulla facile amministrazione. Sviluppato congiuntamente da più società, '''Btrfs''' è concesso in licenza ai sensi della [[https://it.wikipedia.org/wiki/GNU_General_Public_License|licenza GPL]] e aperto al contributo di chiunque. * Snapshot: Offre la possibilità di creare istantanee per ogni subvolume, inizialmente non occupando spazio, con strumenti già esistenti come Timeshift e un facile ripristino del sistema in caso di problemi. * Compressione: Possibilità di abilitare la compressione trasparente '''zlib|lzo|zstd''' utile al risparmio di spazio a incrementare la durata dell'hardware, in alcuni casi a migliorare le prestazioni. * Checksumming su dati e metadati: garantisce l'integrità dei dati e verificato ad ogni lettura, possibilità di avviare un scrub per un ulteriore verifica. * Gestione multi disco: Possibilità di aumentare lo spazio a disposizione aggiungendo un disco al filesystem, convertire a sistema montato da single a raid1 etc... Per approfondire l'argomento leggere la [[https://btrfs.wiki.kernel.org/index.php/Main_Page|relativa guida (in inglese)]]. = Installare Ubuntu con filesystem Btrfs = [[Installazione/InstallareUbuntu#Tipo_di_installazione|Installare]] '''Ubuntu''' scegliendo come tipo di partizionamento '''btrfs''' al posto di '''ext4'''. == Consigli post installazione == ##È consigliabile installare un programma per gestire i [[https://it.wikipedia.org/wiki/Backup|backup]]. ## 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://timeshift|timeshift]]. ## 0. Configurare [[AmministrazioneSistema/BackupDelSistema/Timeshift|timeshift]], creare uno '''snapshot''' o configurare gli '''snapshot programmati''', utile al ripristino del sistema in caso di problemi con gli aggiornamenti. Per ottimizzare la gestione degli '''snapshot''' e le prestazioni, leggere questo [[#ottimo|capitolo]]. Se la partizione '''swap''' è assente, per abilitare lo swapfile in '''Btrfs''' leggere la [[Hardware/DispositiviPartizioni/Swap/SwapfileSuBtrfs|relativa pagina]]. ---------- = Presentazione subvolume = I subvolumi possono essere utilizzati per organizzare e ottimizzare la gestione dei dati. Il vantaggio lo si ha soprattutto quando si creano snasphot, gli snapshot sono applicati per subvolume e non sono ricorsivi, inviare un subvolume su un disco di backup con [[https://wiki.ubuntu-it.org/AmministrazioneSistema/Filesystem/Btrfs#Btrfs_send_receive|btrfs send]], configurare un intero subvolume come nocow, con diverso algoritmo di compressione. Ubuntu di default crea due subvolumi: '''@''' montato su '''/''', '''@home''' montato su '''/home'''. Per approfondire l'argomento leggere la [[https://btrfs.wiki.kernel.org/index.php/SysadminGuide#Subvolumes|relativa guida (in inglese)]] ---------- = Gestione subvolume = == Subvolume flat == Il subvolume '''flat''' è un subvolume secondario del subvolume di livello superiore, top level (ID 5). Per creare e/o eliminare un subvolume '''flat''', la radice del filesystem deve essere montata in modo che i subvolumi siano visibili. Per montare un subvolume '''flat''' deve essere specificato nelle opzioni di [[AmministrazioneSistema/Fstab|fstab]]. {{{#!wiki note Per individuare la lettera e il numero di partizione del '''filesystem''' radice, digitare nel [[AmministrazioneSistema/Terminale|terminale]]:<<BR>> `mount -t btrfs`<<BR>> L'output sarà del tipo:<<BR>> `/dev/sda2 on / type btrfs (rw,noatime,compress=zstd:1,ssd,autodefrag,subvolid=983,subvol=/@)`<<BR>> `/dev/sda2 on /home type btrfs (rw,noatime,compress=zstd:1,ssd,autodefrag,subvolid=257,subvol=/@home)`<<BR>> }}} 0. Montare la radice su '''/mnt''':{{{ sudo mount -t btrfs -o noatime,compress=zstd,autodefrag /dev/sda2 /mnt }}} 0. Creare un subvolume:{{{ sudo btrfs subvolume create /mnt/@<nomesubvolume> }}} 0. Listare i subvolumi:{{{ sudo btrfs subvolume list /mnt }}} 0. Eliminare un subvolume:{{{ sudo btrfs subvolume delete /mnt/@<nomesubvolume> }}} 0. Montaggio di un subvolume:{{{ sudo mount -t btrfs -o subvol=@<nomesubvolume> /dev/sda2 /mnt }}} == Subvolume nested == Il subvolume '''nested''' è un subvolume nidificato dentro un altro subvolume di qualsiasi livello. {{{#!wiki important Se si effettua un ripristino da uno '''snapshot''' con tool come [[AmministrazioneSistema/BackupDelSistema/Timeshift|timeshift]], gli '''snapshot''' non sono ricorsivi e quindi non si portano dietro i subvolumi nidificati, ma si dovrebbe spostare manualmente il contenuto della cartella del subvolume, ecco perché in caso di ripristino non ci ritroveremo il contenuto dei subvolumi nidificati. }}} Per creare e/o eliminare un subvolume '''nested''', basta specificare il percorso nel filesystem. È consigliato creare un subvolume '''nested''' su cartelle che potrebbero essere rimosse. Un subvolume '''nested''' può essere rimosso come una semplice cartella. Non dobbiamo specificare nessuna opzione di montaggio in `/etc/fstab` poiché si montano in automatico. Un subvolume '''nested''' viene escluso dagli '''snapshot''' del subvolume superiore, gli '''snapshot''' non sono ricorsivi su altri subvolumi. 0. Creare un subvolume:{{{ sudo btrfs subvolume create /percorso/nomesubvolume }}} 0. Creare un subvolume sulla home dell'utente:{{{ sudo btrfs subvolume create /home/nomeutente/nomesubvolume }}} 0. Listare i subvolumi:{{{ sudo btrfs subvolume list / }}} 0. Eliminare un subvolume:{{{ sudo btrfs subvolume delete /percorso/nomesubvolume }}} ---------- = Compressione = '''Btrfs''' supporta la compressione trasparente e automatica riducendo la dimensione dei file e migliorando le prestazioni. In alcuni casi d'uso specifici, ad esempio thread singolo con I/O di file pesanti, in altri casi riducendo le prestazioni, ad esempio attività multithread e/o cpu con grandi attività file I/O. Le prestazioni migliori si ottengono generalmente con gli algoritmi di compressione '''zstd''' e '''lzo''' . Utile ad aumentare la durata dei dischi '''[[https://it.wikipedia.org/wiki/Unit%C3%A0_di_memoria_a_stato_solido|SSD/NVME]]''', poiché riduce il numero di operazioni di lettura e scrittura. Il caso d'uso da parte dell'azienda '''[[https://lwn.net/Articles/824855/|Facebook]]''', che usa '''Btrfs''' in produzione, in cui hanno riscontrato un aumento della durata sugli SSD consumer, con la compressione (compress=zstd:1). Per approfondire l'argomento leggere la [[https://btrfs.wiki.kernel.org/index.php/Compression|relativa guida (in inglese)]] == Supporto compressione == * '''lzo''' non supporta nessun livello di compressione su '''btrfs'''. * '''zlib''' supporta i livelli di compressione da 1 a 9, predefinito è 3. * '''zstd''' supporta i livelli di compressione da 1 a 15 come da seguente tabella, predefinito è 3. ||||||||<tablestyle="width:80%;">'''Livelli di compressione per zstd'''|| ||<rowstyle="background-color: #cccccc;" :15%>'''Livello''' ||<:15%>'''Rapporto''' ||<:35%>'''Compressione (MB/s)''' ||<:35%>'''Decompressione (MB/s)''' || ||<#f7f7f7> '''1''' || 2.658 || 438.47 || 910.51 || ||<#f7f7f7> '''2''' || 2.744 || 364.86 || 886.55 || ||<#f7f7f7> '''3''' || 2.801 || 336.33 || 828.41 || ||<#f7f7f7> '''4''' || 2.858 || 286.71 || 886.55 || ||<#f7f7f7> '''5''' || 2.916 || 212.77 || 556.84 || ||<#f7f7f7> '''6''' || 2.363 || 119.82 || 990.85 || ||<#f7f7f7> '''7''' || 3.000 || 154.06 || 849.30 || ||<#f7f7f7> '''8''' || 3.011 || 159.54 || 875.03 || ||<#f7f7f7> '''9''' || 3.025 || 100.51 || 940.15 || ||<#f7f7f7> '''10''' || 3.033 || 118.97 || 616.26 || ||<#f7f7f7> '''11''' || 3.036 || 94.19 || 802.11 || ||<#f7f7f7> '''12''' || 3.037 || 73.45 || 931.49 || ||<#f7f7f7> '''13''' || 3.041 || 55.17 || 835.26 || ||<#f7f7f7> '''14''' || 3.087 || 44.70 || 716.78 || ||<#f7f7f7> '''15''' || 3.126 || 37.30 || 878.84 || Dati estrapolati da questa [[https://lkml.org/lkml/2019/1/28/1930|fonte]]. {{{#!wiki important Per usare la compressione '''zstd''' sulla radice di Ubuntu '''/@''' il requisito minimo è d'usare Ubuntu 19.10 o superiore con la versione minima di '''GRUB 2.04''', dove è stato implementato il [[https://www.phoronix.com/scan.php?page=news_item&px=GRUB-Btrfs-Zstd-Support|supporto a zstd]]. }}} {{{#!wiki note Ad oggi non è possibile impostare i livelli di compressione con il comando in spazio utente '''btrfs '''filesystem''' defragment -r -v -czstd''', ma ci sono degli [[https://github.com/kdave/btrfs-progs/issues/184|sviluppi in corso]], e dovrebbe essere resi disponibili in una nuova versione di [[https://github.com/kdave/btrfs-progs/blob/master/CHANGES|btrfs-progs]]. }}} {{{#!wiki note La compressione '''lzo''' comprime meno rispetto a '''zstd''' con prestazioni vicini a '''zstd''' livello 1. }}} [[https://www.phoronix.com/scan.php?page=article&item=btrfs-zstd-compress&num=1|Benchmark]] orientativo delle differenze di compressione tra '''lzo''', '''zstd''' e '''zlib'''. == Esempi di compressione == 0. Comprimere un subvolume con zstd:{{{ sudo btrfs filesystem defragment -r -v -czstd /mnt/@subvolume }}} 0. Comprimere un file o cartella con zstd:{{{ sudo btrfs filesystem defragment -r -v -czstd /percorso }}} 0. Aprire coi [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/fstab` e scrivervi le opzioni di montaggio con '''zstd livello 1''':{{{ UUID=UUID / btrfs noatime,compress=zstd:1,autodefrag,subvol=@ }}} {{{#!wiki tip La compressione di livello 1 '''zstd:1''' potrebbe essere utile in tutti quei casi dove si ha una CPU moderna o un disco rigido a stato solido di tipo '''SSD/NVME'''. }}} {{{#!wiki tip La compressione '''zstd''' a livelli più alti può aiutare in tutti quei casi in cui si hanno dei dati di backup grandi da gestire, a discapito delle prestazioni in base al livello usato, ma a favore del risparmio di spazio. }}} ---------- = Opzioni di montaggio = L'opzione di montaggio consigliata per un uso desktop generico da scrivere nel file `/etc/fstab` è :{{{ noatime,compress=zstd:1,autodefrag }}} Per approfondire l'argomento e ulteriori opzioni di montaggio leggere la [[https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs(5)#MOUNT_OPTIONS|relativa guida (in inglese)]] = Riparare il '''filesystem''' = In caso di problemi col filesystem, evitare di dare comandi a caso ma seguire attentamente le istruzioni dalla wiki di [[https://en.opensuse.org/SDB:BTRFS#How_to_repair_a_broken.2Funmountable_btrfs_filesystem| OpenSUSE (in inglese)]]. {{{#!wiki note [[https://www.suse.com|SUSE]] è il maggior contributore al progetto '''Btrfs'''. }}} ---------- = Strumento Scrub = '''Scrub''' è lo strumento per verificare il [[https://it.wikipedia.org/wiki/Checksum|checksum]] dei dati e metadati e cerca di ripararli automaticamente se c'è una ridondanza (raid 1, dup etc...). È consigliato un controllo periodico, sul come eseguire il suddetto leggere la sezione [[#scrub|Manutenzione]]. Per approfondire l'argomento leggere la [[https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-scrub|relativa guida (in inglese)]] = Strumento Balance = '''Balance''' è lo strumento che serve a liberare spazio sul '''filesystem''' in presenza di carichi di lavoro pesanti. Generalmente per un uso desktop con disco singolo non c'è bisogno di fare un bilanciamento periodico. Utile invece in caso di cambio disco o livello raid per distribuire i gruppi di blocchi su tutti i dispositivi, in modo che corrispondano ai vincoli definiti dai rispettivi profili. Per approfondire l'argomento leggere la [[https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-balance|relativa guida (in inglese)]] <<Anchor(scrub)>> = Manutenzione = Per eseguire la manutenzione periodica di '''balance''' e '''scrub''' [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://btrfsmaintenance|btrfsmaintenance]]. __Non abilitare__ '''trim''' poiché viene abilitato in automatico su '''Ubuntu''' tramite ''service systemd'' quando rileva un disco '''[[https://it.wikipedia.org/wiki/Unit%C3%A0_di_memoria_a_stato_solido|SSD/NVME]]''', e neppure '''defrag''' poiché rompe il collegamento con gli '''snapshot''' occupando tutto lo spazio sul disco, è un buon compromesso l'opzione di montaggio '''autodefrag'''. {{{#!wiki note '''autodefrag''' abilita la deframmentazione automatica dei file. Se abilitato, piccole scritture casuali in file, in un intervallo di alcune decine di kilobyte attualmente predefiniti a 64 KB, vengono rilevate e messe in coda per il processo di deframmentazione. Non adatto per carichi di lavoro di database di grandi dimensioni. }}} __Non abilitare__ la manutenzione se non si ha un carico di lavoro pesante, o si usa un disco singolo (no raid), principalmente questo è pensato per server dove si ha un carico di lavoro pesante. Per uso desktop il consiglio è di non abilitarlo. 0. Abilitare il timer per aggiornare la configurazione all'avvio del sistema (consigliato):{{{ sudo systemctl enable btrfsmaintenance-refresh.service }}} 0. Abilitare il timer per '''balance''', di default impostato settimanalmente:{{{ sudo systemctl enable btrfs-balance.timer }}} 0. Abilitare il timer per '''scrub''', di default impostato mensilmente:{{{ sudo systemctl enable btrfs-scrub.timer }}} Per modificare la configurazione aprire coi [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/default/btrfsmaintenance`. {{{#!wiki note Durante l'esecuzione di '''balance''' potreste notare un rallentamento per il carico IO generato dal bilanciamento. }}} Pagina ufficiale del progetto [[https://github.com/kdave/btrfsmaintenance|btrfsmaintenance]]. ---------- = Btrfs send | receive = '''Btrfs''' ha alcune funzionalità chiave che consentono soluzioni di backup efficienti. Il primo invio chiamato '''Initial Bootstrapping''' è un backup completo e a seconda delle dimensione impiegherà del tempo. Il secondo invio può essere fatto in modo '''incrementale''', se conservato l'ultimo snapshot inviato. A differenza di '''rsync''', '''cp''', che devono scansionare l'origine e la destinazione per confrontare i cambiamenti e sapere cosa copiare, '''Btrfs send''' non ha bisogno di leggere un singolo file sulla sorgente o destinazione per sapere cosa è cambiato, ed è molto più veloce. '''Btrfs send|receive''' è adatto per il backup, ma è principalmente uno schema di replica. Non ha opzioni di filtro per escludere o includere cartelle/file. Preserva tutto: date, permessi ecc. Per approfondire l'argomento leggere la [[https://btrfs.wiki.kernel.org/index.php/Incremental_Backup|relativa guida (in inglese)]] == Backup subvolume == {{{#!wiki note Per inviare lo snapshot di un subvolume, questo deve essere in sola lettura, la destinazione deve essere una partizione Btrfs. }}} {{{#!wiki note Per individuare la lettera e il numero di partizione del '''filesystem''' radice, digitare nel [[AmministrazioneSistema/Terminale|terminale]]:<<BR>> `mount -t btrfs`<<BR>> L'output sarà del tipo:<<BR>> `/dev/sda2 on / type btrfs (rw,noatime,compress=zstd:1,ssd,autodefrag,subvolid=983,subvol=/@)`<<BR>> `/dev/sda2 on /home type btrfs (rw,noatime,compress=zstd:1,ssd,autodefrag,subvolid=257,subvol=/@home)`<<BR>> }}} 0. Montare la radice su '''/mnt'''(La cartella montata è di esempio, si può scegliere o creare altre cartelle per il montaggio):{{{ sudo mount -t btrfs -o --options-source /dev/sda2 /mnt }}} 0. Creare lo snapshot di sola lettura con l'opzione '''-r''' di un subvolume, in questo esempio è /home:{{{ sudo btrfs subvolume snapshot -r /home /mnt/home_snapshot1 }}} 0. Inviare lo snapshot sul disco di backup:{{{ sudo btrfs send /mnt/home_snapshot1 | sudo btrfs receive /percorso/disco/backup/ }}} 0. Creare un secondo snapshot per inviare la differenza (incrementale):{{{ sudo btrfs subvolume snapshot -r /home /mnt/home_snapshot2 }}} 0. Inviare solo la differenza tra lo snapshot '''home_snapshot1''' e '''home_snapshot2''':{{{ sudo btrfs send -p /mnt/home_snapshot1 /mnt/home_snapshot2 | sudo btrfs receive /percorso/disco/backup/ }}} 0. Eliminare il primo snapshot e creare un terzo snapshot, per inviare la differenza del penultimo snapshot e l'ultimo:{{{ sudo btrfs subvolume delete /mnt/home_snapshot1 sudo btrfs subvolume snapshot -r /home /mnt/home_snapshot3 }}} 0. Inviare solo la differenza tra lo snapshot '''home_snapshot2''' e '''home_snapshot3''':{{{ sudo btrfs send -p /mnt/home_snapshot2 /mnt/home_snapshot3 | sudo btrfs receive /percorso/disco/backup/ }}} {{{#!wiki note Il ripristino di un subvolume come la '''/home''', richiede per ovvi motivi l'esecuzione tramite un sistema avviato in '''Live'''. }}} 0. Ripristino di uno snapshot dal backup:{{{ sudo btrfs send /percorso/disco/backup/home_snapshot3 | btrfs receive /mnt/ }}} 0. Rinominare lo snapshot nel subvolume, nel caso della home:{{{ sudo mv /mnt/home_snapshot3 /mnt/@home }}} 0. Riportare il subvolume in lettura e scrittura:{{{ sudo btrfs property set /mnt/@home ro false }}} ---------- <<Anchor(ottimo)>> = Ottimizzazione subvolume su Ubuntu = Creare vari subvolumi può portare ad alcuni vantaggi. Possibilità di escluderli dagli '''snapshot'''. Ad esempio sulla cartella di sistema `/var/cache` del subvolume '''@''', ovvero `/@/var/cache`, si crea un subvolume della cartella `/var/cache`, questa cartella viene escluda dagli '''snapshot''' del subvolume di sistema '''@''' quando usiamo strumenti come '''[[AmministrazioneSistema/BackupDelSistema/Timeshift|timeshift]]''' Possibilità di disabilitare '''COW''', impostare un diverso algoritmo di compressione o disabilitare la compressione. Inviare l'intero subvolume su un disco esterno o di rete per un backup con '''Btrfs send''', l'unico requisito per usarlo è che la destinazione sia in '''Btrfs'''. {{{#!wiki note Per individuare la lettera e il numero di partizione del '''filesystem''' radice, digitare nel [[AmministrazioneSistema/Terminale|terminale]]:<<BR>> `mount -t btrfs`<<BR>> L'output sarà del tipo:<<BR>> `/dev/sda2 on / type btrfs (rw,noatime,compress=zstd:1,ssd,autodefrag,subvolid=983,subvol=/@)`<<BR>> `/dev/sda2 on /home type btrfs (rw,noatime,compress=zstd:1,ssd,autodefrag,subvolid=257,subvol=/@home)`<<BR>> }}} == Subvolume cartella /tmp == 0. Montare la radice su '''/mnt'''(La cartella montata è di esempio, si può scegliere o creare altre cartelle per il montaggio):{{{ sudo mount -t btrfs -o --options-source /dev/sda2 /mnt }}} 0. Creare il subvolume della cartella:{{{ sudo btrfs subvolume create /mnt/@tmp }}} 0. Impostare i permessi della cartella tramite il [[https://it.wikipedia.org/wiki/Sticky|bit sticky]]:{{{ sudo chmod 1777 /mnt/@tmp }}} 0. Disattivare il '''COW''' sul subvolume:{{{ sudo chattr +C /mnt/@tmp }}} 0. Copiare il contenuto della cartella nel subvolume:{{{ sudo cp -a /mnt/@/tmp/* /mnt/@tmp/ }}} 0. Aprire coi [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/fstab` e scriverci le opzioni di montaggio:{{{ UUID=UUID /tmp btrfs noatime,autodefrag,subvol=@tmp }}} 0. Fare clic su '''Ctrl+S''' per salvare e su '''Ctrl+Q''' per chiudere l'editor. 0. Smontare il filesystem:{{{ sudo umount /mnt }}} == Subvolume cartella /var/tmp == 0. Montare la radice su `/mnt` (La cartella montata è di esempio, si può scegliere o creare altre cartelle per il montaggio):{{{ sudo mount -t btrfs -o --options-source /dev/sda2 /mnt }}} 0. Creare subvolume della cartella:{{{ sudo btrfs subvolume create /mnt/@vartmp }}} 0. Impostare i permessi della cartella tramite il [[https://it.wikipedia.org/wiki/Sticky|bit sticky]]:{{{ sudo chmod 1777 /mnt/@vartmp }}} 0. Disattivare il '''COW''' sul subvolume:{{{ sudo chattr +C /mnt/@vartmp }}} 0. Copiare il contenuto della cartella nel subvolume:{{{ sudo cp -a /mnt/@/var/tmp/* /mnt/@vartmp/ }}} 0. Aprire coi [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/fstab` e scriverci le opzioni di montaggio:{{{ UUID=UUID /var/tmp btrfs noatime,autodefrag,subvol=@vartmp }}} 0. Fare clic su '''Ctrl+S''' per salvare e su '''Ctrl+Q''' per chiudere l'editor. 0. Smontare il filesystem:{{{ sudo umount /mnt }}} == Subvolume cartella /var/cache == 0. Montare la radice su `/mnt` (La cartella montata è di esempio, si può scegliere o creare altre cartelle per il montaggio):{{{ sudo mount -t btrfs -o --options-source /dev/sda2 /mnt }}} 0. Creare subvolume della cartella:{{{ sudo btrfs subvolume create /mnt/@varcache }}} 0. Disattivare il '''COW''' sul subvolume:{{{ sudo chattr +C /mnt/@varcache }}} 0. Copiare il contenuto della cartella nel subvolume:{{{ sudo cp -a /mnt/@/var/cache/* /mnt/@varcache/ }}} 0. Aprire coi [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/fstab` e scriverci le opzioni di montaggio:{{{:{{{ UUID=UUID /var/cache btrfs noatime,autodefrag,subvol=@varcache }}} 0. Fare clic su '''Ctrl+S''' per salvare e su '''Ctrl+Q''' per chiudere l'editor. 0. Smontare il filesystem:{{{ sudo umount /mnt }}} == Subvolume cartella /var/log == 0. Montare la radice su `/mnt` (La cartella montata è di esempio, si può scegliere o creare altre cartelle per il montaggio):{{{ sudo mount -t btrfs -o --options-source /dev/sda2 /mnt }}} 0. Creare subvolume della cartella:{{{ sudo btrfs subvolume create /mnt/@varlog }}} 0. Copiare il contenuto della cartella nel subvolume:{{{ sudo cp -a /mnt/@/var/log/* /mnt/@varlog/ }}} 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/fstab` e scriverci le opzioni di montaggio:{{{ UUID=UUID /var/log btrfs noatime,compress=zstd:1,autodefrag,subvol=@varlog }}} 0. Fare clic su '''Ctrl+S''' per salvare e su '''Ctrl+Q''' per chiudere l'editor. 0. Smontare il filesystem:{{{ sudo umount /mnt }}} == Subvolume flatpak == È utile in caso di ripristino di sistema da uno '''snapshot''', poiché le applicazioni '''flatpak''' non vengono ripristinate. 0. Montare la radice su `/mnt` (La cartella montata è di esempio, si può scegliere o creare altre cartelle per il montaggio):{{{ sudo mount -t btrfs -o --options-source /dev/sda2 /mnt }}} 0. Creare subvolume della cartella:{{{ sudo btrfs subvolume create /mnt/@varlibflatpak }}} 0. Copiare il contenuto della cartella nel subvolume:{{{ sudo cp -a /mnt/@/var/lib/flatpak/* /mnt/@varlibflatpak/ }}} 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/fstab` e scriverci le opzioni di montaggio:{{{ UUID=UUID /var/lib/flatpak btrfs noatime,compress=zstd:1,autodefrag,subvol=@varlibflatpak }}} 0. Fare clic su '''Ctrl+S''' per salvare e su '''Ctrl+Q''' per chiudere l'editor. 0. Smontare il filesystem:{{{ sudo umount /mnt }}} == Subvolume immagini di VirtManager == 0. Montare la radice su `/mnt` (La cartella montata è di esempio, si può scegliere o creare altre cartelle per il montaggio):{{{ sudo mount -t btrfs -o --options-source /dev/sda2 /mnt }}} 0. Creare subvolume della cartella:{{{ sudo btrfs subvolume create /mnt/@varlibvirt }}} {{{#!wiki note Da [[https://www.redhat.com/archives/libvir-list/2020-July/msg01382.html|libvirt version 6.6.0]] Non è più necessario disattivare il COW manualmente, se rileva Btrfs come filesystem, viene disattivato in automatico per le nuove immagini. }}} 0. Disattivare il '''COW''' sul subvolume:{{{ sudo chattr +C /mnt/@varlibvirt }}} 0. Copiare il contenuto della cartella nel subvolume:{{{ sudo cp -a /mnt/@/var/lib/libvirt/images/* /mnt/@varlibvirt/ }}} 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/fstab` e scriverci le opzioni di montaggio:{{{ UUID=UUID /var/lib/libvirt/images/ btrfs noatime,autodefrag,subvol=@varlibvirt }}} 0. Fare clic su '''Ctrl+S''' per salvare e su '''Ctrl+Q''' per chiudere l'editor. 0. Smontare il filesystem:{{{ sudo umount /mnt }}} == Subvolume immagini di GNOME-Boxes == {{{#!wiki note Per la versione di '''flatpak''' che si trova sullo store '''flathub''', il percorso alle immagini VM è `/.var/app/org.gnome.Boxes/data/gnome-boxes/images`. }}} Con '''GNOME-Boxes''' già installato seguire i seguenti passaggi. 0. Creare la cartella temporanea:{{{ sudo mkdir /home/utente/boxtmp }}} 0. Copiare il contenuto della cartella:{{{ sudo cp -a /home/username/.local/share/gnome-boxes/images/* /home/username/boxtmp/ }}} 0. Elimina la cartella `/images` per creare il subvolume:{{{ sudo rm -r /home/username/.local/share/gnome-boxes/images }}} 0. Creare subvolume della cartella:{{{ sudo btrfs subvolume create /home/username/.local/share/gnome-boxes/images }}} 0. Ripristinare il contenuto della cartella `/images`:{{{ sudo cp -a /home/username/boxtmp/* /home/username/.local/share/gnome-boxes/images/ }}} Se '''GNOME-Boxes''' non è già installato, prima d'installarlo creare il subvolume `/home/username/.local/share/gnome-boxes/images` e successivamente installare '''GNOME-Boxes'''. = Comandi principali di Btrfs = 0. Leggere e stampare le statistiche di errore IO del dispositivo:{{{ sudo btrfs device stats / }}} 0. Mostrare informazioni dettagliate sulle allocazioni interne nei dispositivi:{{{ sudo btrfs device usage / }}} 0. Mostrare informazioni dettagliate sull'uso del '''filesystem''' interno:{{{ sudo btrfs '''filesystem''' usage / }}} = FAQ = Alcune della domande e risposte più comuni su '''Btrfs'''. D. Come funziona la compressione file incomprimibili? S. Esiste una semplice logica decisionale: se la prima porzione di dati da comprimere non è più piccola dell'originale, la compressione del file è disabilitata, a meno che non ci sia l'opzione di montaggio '''compress-force=algoritmo'''. In tal caso, la compressione viene sempre tentata sul file, per poi essere successivamente scartata, con maggior cicli di lavoro per la '''CPU'''. Questo non è ottimale e soggetto a ottimizzazioni e ulteriori sviluppi. D. Cosa succede se abilito la compressione a dei file già scritti? S. Solo i file creati, modificati e montati con l'opzione '''compress=algoritmo''' verranno compressi. Per applicare la compressione ai file esistenti usare il comando:{{{ btrfs filesystem defragment -c <algoritmo> }}} D. Posso impostare la compressione di un file, cartella o subvolume senza usare l'opzione di montaggio? S. Sì, l'utilità '''chattr''' supporta l'impostazione dell'attributo del file '''c''', che contrassegna l'inode per comprimere i nuovi dati scritti. Per impostare la proprietà di compressione di un file usare il comando:{{{ btrfs property set <file> compression <zlib|lzo|zstd> }}} Ciò forza la compressione da usare su quel file, cartella o subvolume usando l'algoritmo specificato. D. Come posso disattivare la compressione ? S. Per disattivare la compressione usare il comando:{{{ btrfs property set <file> compression none }}} Notare che la disattivazione comporta un notevole aumento di uso dello spazio sul disco. = Ulteriori risorse = * [[https://btrfs.wiki.kernel.org/index.php/Main_Page|Sito ufficiale]] * [[https://help.ubuntu.com/community/btrfs|Aiuto della community (in inglese)]] ---- CategoryAmministrazione