btrfs comprimerà automaticamente i file esistenti quando la compressione è abilitata?

25

Ho scelto btrfs come formato del mio filesystem / nell'installer di Ubuntu 12.04 LTS. Al termine dell'installazione, ho aggiunto compress=lzo alle opzioni di montaggio in /etc/fstab e riavviato.

I file esistenti verranno automaticamente compressi ora o devo fare qualcosa in modo esplicito perché ciò accada?

    
posta ændrük 01.05.2012 - 05:35

6 risposte

25

Dovrai eseguire btrfs fi defragment per forzare la ricompressione dei dati esistenti. Altrimenti, solo i nuovi dati verranno compressi.

Da domande frequenti :

  

... considera il rimontaggio con -o compress e riscrivi i file specifici sul posto oppure esegui btrfs fi defragment per ricomprimere tutto. Questo potrebbe richiedere un po 'di tempo.

    
risposta data Norbert Fabritius 01.05.2012 - 19:28
10

Ho fatto quello che ha detto Norbert Fabritius, ma non ho notato alcuna compressione nei file esistenti - df -h / prima btrfs fi defragment = 658 MB | df -h / dopo fi deframmentazione btrfs = 658 MB. I nuovi file sono ok. Cercando un po 'mi porti questa citazione:

  

Esecuzione di questo:

     

# btrfs filesystem defragment ~/stuff

     

non deframmenta il contenuto della directory.

     

Questo è di design. btrfs fi defrag opera sul singolo oggetto del filesystem passato a & gt; it. Ciò significa che il comando deframmenta solo i metadati contenuti nella directory & gt; object, e non i contenuti della directory. Se vuoi deframmentare il contenuto di & gt; della directory, qualcosa di simile sarebbe più utile:

     

# find -xdev -type f -exec btrfs fi defrag '{}' \;

Dopodiché, il mio / il mio / il suo / i ha 656 MB - niente di enorme, ma certamente c'è compressione.

Fonte: collegamento

Spero che questo aiuto.

Scusa il mio inglese.

    
risposta data J. Neto 17.05.2013 - 18:37
8

Secondo la documentazione di Oracle, è possibile comprimere i file esistenti su un filesystem online esistente deframmentando ogni file in esso con le opzioni -c, -clzo o -czlib. LZO è raccomandato per la velocità.

find / -xdev \( -type f -o -type d \) -exec btrfs filesystem defragment -v -clzo -- {} +

Questo usa il comando find per eseguire la deframmentazione di btrfs su ogni file nel filesystem di root (dato dalla barra subito dopo il comando "find" all'inizio). Se disponi di altri sottovolumi, puoi utilizzarlo di nuovo con il percorso di un sottovolume (ne ho uno in / home, ad esempio) invece della singola barra.

Avrai bisogno dei privilegi di root per questo, quindi aggiungi sudo in primo piano se necessario.

See:

risposta data Geoff 05.09.2013 - 23:12
2

In base al link sono disponibili i seguenti algoritmi di compressione:


compress,compress-force
Enable compression. Starting with kernel 2.6.38 you can choose the algorithm for compression:

 - compress=zlib - Better compression ratio. It's the default and safe for olders kernels.
 - compress=lzo - Faster compression.
 - compress=no - Disables compression (starting with kernel 3.6). 

compress-force= - Enable compression even for files that don't compress well, like videos and dd images of disks. The options compress-force=zlib and compress-force=lzo works for kernels >2.6.38.

Note that old (before 2012) btrfs-progs versions will probably fail some operations (e.g. fsck) on filesystems with LZO compression. 

Nota: questo post è la risposta alla domanda aggiuntiva che tipo di algoritmi di compressione sono disponibili qui sotto ... quindi per favore non incolpare me.

    
risposta data Rostislav Stribrny 16.03.2013 - 12:22
2

In base a ArchWiki :

  

Suggerimento: la compressione può anche essere abilitata per file senza usare il    compress opzione di mount; applica semplicemente chattr +c al file. quando   applicato alle directory, farà sì che i nuovi file siano automaticamente   compressi come vengono.

Molto bello! Dio benedica BTRFS!

Inoltre, da wiki BTRFS :

  

Posso forzare la compressione su un file senza utilizzare l'opzione di montaggio comprimi ?

     

Sì. L'utilità chattr supporta l'impostazione dell'attributo file c che   segna l'inode per comprimere i nuovi dati scritti.

    
risposta data Geremia 12.03.2015 - 03:58
-9

La compressione è abilitata di default in Btrfs, quindi a meno che non la disabiliti esplicitamente, dovrebbe essere compressa.

    
risposta data Diego 06.05.2012 - 13:16

Leggi altre domande sui tag