Pertanyaan Apakah btrf secara otomatis mengompres file yang ada saat kompresi diaktifkan?


Saya memilih btrfs sebagai format saya / filesystem di installer Ubuntu 12.04 LTS. Setelah instalasi selesai, saya menambahkan compress=lzo ke opsi mount di /etc/fstab dan reboot.

Apakah file yang ada akan dikompresi secara otomatis sekarang, atau haruskah saya secara eksplisit melakukan sesuatu untuk menyebabkan hal itu terjadi?


25
2018-05-01 03:35


asal


Anda tidak perlu reboot, Anda bisa saja sudo mount -o remount / dan opsi fstab yang baru akan berlaku. - sep332
NB yang mungkin Anda perlukan untuk menggunakan opsi kompress-force atau beberapa file masih akan tetap tidak terkompresi, apa pun yang Anda lakukan ... - rogerdpack
Catatan tentang kompres-gaya. Kompres normal memiliki fitur bahwa jika mendeteksi bahwa kompresi memiliki sedikit manfaat, tidak mengganggu melanjutkan kompresi untuk file tertentu (dengan demikian menghemat CPU yang terbuang). Dengan menggunakan kompresi-gaya, itu mencoba kompresi yang tidak berguna pula. Contoh bagus di mana ini berlaku adalah untuk file yang sudah dikompresi (multimedia, file zip, dll). Dengan kata lain, kompres-gaya umumnya a buruk ide. ;) - zaTricky


Jawaban:


Anda harus berlari btrfs fi defragment untuk memaksa rekompresi data yang ada. Jika tidak, hanya data baru yang akan dikompresi.

Dari FAQ:

... pertimbangkan untuk melakukan remount dengan -o compress, dan menulis ulang file tertentu di tempat, atau jalankan btrfs fi defragment untuk mengkompres ulang semuanya. Ini mungkin membutuhkan waktu beberapa saat.


25
2018-05-01 17:28



btrfs fi defragment -r -clzo / path / ke / fs - David Goodwin
Bagaimana tentang autodefrag opsi mount? Apakah itu juga membuatnya memampatkan file yang sebelumnya tidak terkompresi ketika melakukan defrag otomatis? - Geremia
Pastikan untuk menggunakan "-r" tanda rekursif untuk mengompresi dalam direktori. - Salami


Saya telah membuat apa yang Norbert Fabritius katakan, tapi saya tidak melihat ada kompresi pada file yang ada - df -h /  sebelum  btrfs fi defragment = 658 MB | df -h /  setelah  btrfs fi defragment = 658 MB. File baru baik-baik saja. Mencari sedikit, bawakan saya kutipan ini:

Menjalankan ini:

# btrfs filesystem defragment ~/stuff

tidak men-defragmen isi direktori.

Ini berdasarkan desain. btrfs fi defrag beroperasi pada objek filesystem tunggal yang dilewatkan ke> it. Ini berarti bahwa perintah defragmen hanya metadata yang dipegang oleh direktori> objek, dan bukan isi direktori. Jika Anda ingin men-defragmen isi> direktori, sesuatu seperti ini akan lebih berguna:

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

Setelah ini, saya / itu menduduki 656MB - tidak ada yang besar, tetapi tentu saja ada kompresi.

Sumber: https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work

Semoga bantuan ini.

Maaf bahasa inggris saya.


10
2018-05-17 16:37



1. Saat menggunakan btrfs, jangan gunakan atau percaya df. 2. Untuk rasio kompresi yang lebih baik, gunakan zlib (namun, lebih lambat) - ignis
Seharusnya tidak ada baris perintah Anda defrag -clzo atau defrag -czlib bukan hanya defrag, jika Anda ingin benar-benar memadatkan barang? - jbo5112
Ada tanda rekursif "-r" jadi Anda bisa melakukan ini sekarang: btrfs fi defrag -r -czlib ~/stuff - Salami


Menurut dokumentasi Oracle, Anda dapat memampatkan file yang ada pada sistem file online yang ada dengan mendefragmentasi setiap file di dalamnya dengan opsi -c, -clzo, atau -czlib. LZO direkomendasikan untuk kecepatan.

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

Ini menggunakan perintah find untuk menjalankan defragmenter btrfs pada setiap file di root filesystem (diberikan oleh slash tepat setelah perintah "find" di awal). Jika Anda memiliki subvolume lainnya, Anda dapat menggunakannya lagi dengan jalur subvolume (saya punya satu di / home, misalnya), bukan satu garis miring.

Anda perlu hak akses root untuk ini, jadi tambahkan sudo ke depan jika perlu.

Lihat:


8
2017-09-05 21:12





Menurut https://btrfs.wiki.kernel.org/index.php/Mount_options#List_of_options berikut algoritma kompresi tersedia:


kompres, kompres-gaya
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. 

Catatan: Posting ini adalah jawaban untuk pertanyaan tambahan apa jenis algoritma kompresi yang tersedia yang ditanyakan di bawah ini ... jadi tolong jangan salahkan saya.


2
2018-03-16 11:22





Menurut ArchWiki:

Tip: Kompresi juga dapat diaktifkan per file tanpa menggunakan    compress opsi mount; cukup terapkan chattr +c ke file. Kapan   diterapkan ke direktori, itu akan menyebabkan file baru menjadi otomatis   dikompresi saat mereka datang.

Sangat bagus! Tuhan memberkati BTRFS!

Juga, dari wiki BTRFS:

Dapatkah saya memaksakan kompresi pada file tanpa menggunakan kompres opsi mount?

Iya nih. Utilitas chattr mendukung pengaturan atribut file c itu   menandai inode untuk mengompres data yang baru ditulis.


2
2018-03-12 02:58





Kompresi diaktifkan secara default di Btrfs, jadi kecuali Anda menonaktifkannya dengan teliti, itu harus dikompresi.


-9
2018-05-06 11:16



Tidak benar, Anda harus lulus compression= "algoritma kompresi favorit Anda" di fstab untuk mengaktifkannya. - turbo
@turbo Apa kompresi algorigthms yang tersedia? - hexafraction
Sepertinya ada 2 kompresi yang saat ini diizinkan (baik, 3 jika Anda menghitung "tidak ada"): btrfs.wiki.kernel.org/index.php/… - rogerdpack