क्या संपीड़न सक्षम होने पर btrfs स्वतः मौजूदा फ़ाइलों को संपीड़ित करेगा?


26

मैंने /Ubuntu 12.04 LTS इंस्टॉलर में अपने फाइल सिस्टम के प्रारूप के रूप में btrfs को चुना । स्थापना पूर्ण होने के बाद, मैंने compress=lzoमाउंट विकल्पों में जोड़ा /etc/fstabऔर रिबूट किया।

क्या मौजूदा फाइलें अब स्वचालित रूप से संकुचित हो जाएंगी, या मुझे स्पष्ट रूप से ऐसा करने के लिए कुछ करना होगा?


1
आपको रिबूट नहीं करना है, आप बस कर सकते हैं sudo mount -o remount /और नए fstab विकल्प प्रभावी होंगे।
sep332

एनबी कि आपको सेक-फोर्स विकल्प या कुछ फ़ाइलों का उपयोग करने की आवश्यकता हो सकती है, फिर भी आप जो भी करते हैं, वह असम्पीडित रहेगा ...
rogerdpack

कम्प्रेस-फोर्स के बारे में एक नोट। सामान्य संपीड़ित में एक विशेषता है कि अगर यह पता लगाता है कि संपीड़न का कोई लाभ नहीं है, तो यह उस विशेष फ़ाइल के लिए संपीड़न को जारी रखने में परेशान नहीं करता है (जिससे बर्बाद सीपीयू की बचत होती है)। सेक-फोर्स का उपयोग करके, यह वैसे भी बेकार संपीड़न का प्रयास करता है। अच्छे उदाहरण जहां यह लागू होता है वे पहले से संपीड़ित (मल्टीमीडिया, ज़िप फ़ाइलें आदि) फ़ाइलों के लिए हैं। दूसरे शब्दों में, सेक-फोर्स आमतौर पर एक बुरा विचार है। ;)
zaTricky

जवाबों:


27

आपको btrfs fi defragmentमौजूदा डेटा की पुनर्संरचना के लिए बाध्य होना पड़ेगा । अन्यथा, केवल नए डेटा को संपीड़ित किया जाएगा।

से पूछे जाने वाले प्रश्न :

... के साथ रीमाउंटिंग पर विचार करें -o compress, और या तो विशेष फ़ाइलों को फिर से लिखें , या btrfs fi defragmentसब कुछ फिर से खोलने के लिए चलाएं । इसमें थोड़ा सा समय लग सकता है।


btrfs फाई डिफ्रैगमेंट -r -clzo / पाथ / टू / fs
डेविड गुडविन

2
autodefragमाउंट विकल्प के बारे में क्या ? क्या यह भी इसे पहले असम्पीडित फ़ाइलों को संपीड़ित करता है जब यह ऑटो-डिफ्रैग करता है?
गेरीमिया

1
निर्देशिका के भीतर संपीड़ित करने के लिए पुनरावर्ती ध्वज "-r" का उपयोग करना सुनिश्चित करें।
सलामी

10

मैंने वही किया है जो नॉर्बर्ट फेब्रिटस ने कहा था, लेकिन मैंने मौजूदा फाइलों में कोई भी संपीड़न नहीं देखा - df -h / btrfs Fi defragment = 658MB से पहले | df -h / के बाद btrfs फाई डिफ्रैगमेंट = 658MB। नई फाइलें ठीक हैं। थोड़ा खोज कर मुझे यह उद्धरण दें:

इसे चलाना:

# btrfs filesystem defragment ~/stuff

निर्देशिका की सामग्री को डीफ़्रैग्मेन्ट नहीं करता है।

यह डिजाइन द्वारा है। btrfs फाई डिफ्रैग>> को पास की गई एकल फाइलसिस्टम वस्तु पर काम करता है। इसका मतलब यह है कि कमांड केवल डायरेक्टरी> ऑब्जेक्ट>, और डायरेक्टरी की सामग्री द्वारा आयोजित मेटाडेटा को डीफ़्रैग्मेन्ट करता है। यदि आप निर्देशिका की सामग्री> को डीफ़्रैग्मेन्ट करना चाहते हैं, तो ऐसा कुछ अधिक उपयोगी होगा:

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

इसके बाद, मेरा / यह 656MB को छोटा कर रहा है - कुछ भी बड़ा नहीं है, लेकिन निश्चित रूप से संपीड़न है।

स्रोत: https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#Defragmenting_a_directory_doesn.27t_work

उममीद है कि इससे मदद मिलेगी।

मेरी अंग्रेज़ी के लिये क्षमा।


1
1. btrfs का उपयोग करते समय, df का उपयोग या विश्वास न करें । 2. एक बेहतर संपीड़न अनुपात के लिए, zlib का उपयोग करें (हालांकि, यह धीमा है)
इग्निस

3
क्या आपकी कमांड लाइन में शामिल नहीं होना चाहिए defrag -clzoया defrag -czlibसिर्फ इसके बजाय defrag, यदि आप वास्तव में चीजों को संपीड़ित करना चाहते हैं?
jbo5112

5
एक "-r" पुनरावर्ती ध्वज है ताकि आप अभी ऐसा कर सकें:btrfs fi defrag -r -czlib ~/stuff
सलामी

8

ओरेकल के प्रलेखन के अनुसार, आप मौजूदा फ़ाइलों को डी -क्ल्ज़ो, या -क्ज़लिब विकल्पों में से प्रत्येक फ़ाइल को डीफ़्रैग्मेंट करके मौजूदा, ऑनलाइन फ़ाइल सिस्टम पर संपीड़ित कर सकते हैं। LZO को गति के लिए अनुशंसित किया जाता है।

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

यह रूट फाइल सिस्टम में हर फाइल पर btrfs डीफ़्रैग्मेंटर को चलाने के लिए फ़ाइंड कमांड का उपयोग करता है (शुरुआत में "खोज" कमांड के ठीक बाद स्लैश द्वारा दिया गया है)। यदि आपके पास अन्य सबवोल्यूम हैं, तो आप इसे एकल स्लैश के बजाय एक सबवोल्यूम के पथ के साथ फिर से उपयोग कर सकते हैं (मेरे पास एक / घर है, उदाहरण के लिए)।

आपको इसके लिए रूट विशेषाधिकारों की आवश्यकता होगी, इसलिए यदि आपको आवश्यकता हो तो सामने की ओर sudo जोड़ें।

देख:


3

Https://btrfs.wiki.kernel.org/index.php/Mount_options#List_of_options के अनुसार कम्प्रेशन एल्गोरिदम निम्नलिखित उपलब्ध हैं:


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. 

नोट: यह पोस्ट अतिरिक्त प्रश्न के लिए उत्तर है कि किस प्रकार के संपीड़न एल्गोरिदम उपलब्ध हैं जो नीचे पूछा गया था ... इसलिए कृपया मुझे दोष न दें।


2

ArchWiki के अनुसार :

युक्ति: compressमाउंट विकल्प का उपयोग किए बिना प्रति-फ़ाइल में संपीड़न को भी सक्षम किया जा सकता है; बस chattr +cफ़ाइल पर लागू होते हैं । जब निर्देशिकाओं पर लागू किया जाता है, तो यह नई फ़ाइलों का कारण बनते ही स्वचालित रूप से संकुचित हो जाएगा।

बहुत अच्छा! भगवान BTRFS को आशीर्वाद दें!

इसके अलावा, BTRFS विकि से :

क्या मैं सेक माउंट विकल्प का उपयोग किए बिना किसी फ़ाइल पर संपीड़न को मजबूर कर सकता हूं ?

हाँ। उपयोगिता chattrफ़ाइल विशेषता सी को सेट करने का समर्थन करती है जो नए लिखित डेटा को संपीड़ित करने के लिए इनकोड को चिह्नित करती है।


-9

संपीड़न को Btrfs में डिफ़ॉल्ट रूप से सक्षम किया जाता है, इसलिए जब तक आप इसे निष्क्रिय रूप से अक्षम नहीं करते, तब तक इसे संपीड़ित किया जाना चाहिए।


11
सच नहीं है, आपको compression=इसे सक्षम करने के लिए fstab में "अपने पसंदीदा संपीड़न एल्गोरिथ्म" को पास करना होगा।
टर्बो

@turbo क्या संपीड़न अल्गोरिथम उपलब्ध हैं?
.--

ऐसा लगता है कि वर्तमान में 2 कंप्रेशन्स की अनुमति है (ठीक है, 3 यदि आप "कोई नहीं" गिनते हैं): btrfs.wiki.kernel.org/index.php/…
rogerdpack
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.