Sıkıştırma etkinleştirildiğinde btrfs varolan dosyaları otomatik olarak sıkıştırır mı?


26

/Ubuntu 12.04 LTS kurulumunda btrfs'yi dosya sistemimin formatı olarak seçtim . Kurulum tamamlandıktan sonra, compress=lzomontaj seçeneklerine ekledim /etc/fstabve yeniden başlattım.

Mevcut dosyalar şimdi otomatik olarak sıkıştırılacak mı, yoksa bunun olmasını sağlamak için açıkça bir şey yapmalı mıyım?


1
Yeniden başlatmak zorunda değilsiniz, sadece yapabilirsiniz sudo mount -o remount /ve yeni fstab seçenekleri etkili olacaktır.
sep332

Sıkıştırma kuvveti seçeneğini kullanmanız gerekebilecek NB, aksi halde bazı dosyalar ne yaparsanız yapın sıkıştırılmaya devam eder ...
rogerdpack 12:14

Sıkıştırma kuvveti ile ilgili bir not. Normal sıkıştırmanın özelliği, sıkıştırmanın faydası olmadığını veya çok az yararı olduğunu tespit etmesi durumunda, söz konusu dosya için sıkıştırmaya devam etmeyi zahmet etmemesidir (bu sayede boşa harcanan CPU'yu kaydeder). Sıkıştırma kuvveti kullanarak, yine de gereksiz sıkıştırma dener. Bunun geçerli olduğu örnekler, zaten sıkıştırılmış dosyalar (multimedya, zip dosyaları, vb.) İçindir. Başka bir deyişle, sıkıştırma kuvveti genellikle kötü bir fikirdir. ;)
zaTricky

Yanıtlar:


27

btrfs fi defragmentMevcut verilerin yeniden sıkıştırılmasını zorlamak için koşmanız gerekecek . Aksi takdirde, yalnızca yeni veriler sıkıştırılacaktır.

Gönderen SSS :

... yerine yeniden yerleştirmeyi düşünün -o compressve belirli dosyaları yerinde btrfs fi defragmentyeniden yazın ya da her şeyi yeniden sıkıştırmak için çalıştırın . Bu biraz zaman alabilir.


btrfs fi birleştirme -r -clzo / path / to / fs
David Goodwin

2
autodefragMount seçeneğinden ne haber ? Bu aynı zamanda otomatik birleştirme işlemi sırasında sıkıştırılmamış dosyaları sıkıştırmasını da sağlıyor mu?
Geremia

1
Dizinlerde sıkıştırmak için özyinelemeli bayrağı "-r" kullandığınızdan emin olun.
Salami

10

Norbert Fabritius söylediklerini yaptığım ama mevcut dosyalarda herhangi bir sıkıştırma fark etmedi - df -h / önce btrfs fi Birleştirmek = 658MB | df -h / after btrfs fi birleştirmesi = 658MB. Yeni dosyalar tamam. Biraz arama yapmak bana bu teklifi getir:

Bunu çalıştırıyorum:

# btrfs filesystem defragment ~/stuff

dizinin içeriğini birleştirmez.

Bu, tasarım gereğidir. btrfs fi defrag,> kendisine iletilen tek dosya sistemi nesnesinde çalışır. Bu, komutun yalnızca dizin> nesnesinin tuttuğu meta verileri değil, dizin içeriğini birleştirdiği anlamına gelir. Dizinin içeriğini birleştirmek istiyorsanız, bunun gibi bir şey daha yararlı olacaktır:

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

Bundan sonra, benim / 656MB işgal - büyük bir şey değil, ama kesinlikle sıkıştırma var.

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

Umarım bu yardım.

Üzgünüm ingilizcem


1
1. btrfs kullanırken, df'yi kullanmayın veya güvenmeyin . 2. Daha iyi bir sıkıştırma oranı için zlib kullanın (ancak daha yavaştır)
yoksay

3
Bir şeyleri sıkıştırmak istiyorsanız komut satırınız defrag -clzoda defrag -czlibiçermeli defragmidir, yoksa yerine mi?
jbo5112

5
"-R" özyinelemeli bir bayrak var, böylece şimdi bunu yapabilirsiniz:btrfs fi defrag -r -czlib ~/stuff
Salami

8

Oracle’ın belgelerine göre, varolan dosyaları varolan, çevrimiçi bir dosya sistemindeki -c, -clzo veya -czlib seçenekleriyle birleştirerek sıkıştırabilirsiniz. Hız için LZO önerilir.

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

Bu, btrfs birleştiricisini kök dosya sistemindeki her dosyada çalıştırmak için find komutunu kullanır (başlangıçta "find" komutundan hemen sonra eğik çizgi tarafından verilir). Başka alt hacimleriniz varsa, tek eğik çizgi yerine bir alt hacmin yoluyla (örneğin, evde / evde var) tekrar kullanabilirsiniz.

Bunun için kök ayrıcalıklarına ihtiyacınız olacak, bu nedenle gerektiğinde cepheye sudo ekleyin.

Görmek:


3

Https://btrfs.wiki.kernel.org/index.php/Mount_options#List_of_options 'a göre sıkıştırma algoritmaları mevcuttur:


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. 

Not: Bu mesaj, aşağıda sorulan ne tür sıkıştırma algoritmalarının mevcut olduğu konusunda ek soruya cevap veriyor ... bu yüzden lütfen beni suçlama.


2

ArchWiki'ye göre :

İpucu: Sıkıştırma, compressmount seçeneğini kullanmadan dosya başına da etkinleştirilebilir ; basitçe chattr +cdosyaya uygulayın . Dizinlere uygulandığında, yeni dosyaların geldikçe otomatik olarak sıkıştırılmasına neden olur.

Çok hoş! Tanrı BTRFS'yi korusun!

Ayrıca, BTRFS wiki'den :

Sıkıştırma mount seçeneğini kullanmadan bir dosyada sıkıştırma zorlayabilir miyim ?

Evet. Yardımcı program chattr, yeni yazılan verileri sıkıştırmak için düğmeyi işaretleyen c dosya özniteliği ayarını destekler.


-9

Sıkıştırma, Btrfs'de varsayılan olarak etkindir; bu nedenle, açıkça devre dışı bırakmadığınız sürece, sıkıştırılması gerekir.


11
Doğru değil, compression=etkinleştirmek için fstab içindeki "favori sıkıştırma algoritmanızı" geçmelisiniz .
turbo

@turbo Hangi sıkıştırma algoritmaları mevcuttur?
ζ--

Şu anda izin verilen 2 sıkıştırma var gibi görünüyor (iyi, "yok" olarak sayarsanız 3): btrfs.wiki.kernel.org/index.php/…
rogerdpack
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.