मेरे XFS फाइल सिस्टम अचानक अधिक स्थान और विरल फाइलों से भरे क्यों हैं?


62

मैंने विभिन्न लिनक्स सर्वरों में लगभग 10 वर्षों के लिए डेटा / वृद्धि विभाजन के रूप में एक्सएफएस फाइलसिस्टम चलाए हैं।

मैंने हाल ही में CentOS / RHEL सर्वर पर 6.2+ संस्करण चलाने के साथ एक अजीब घटना देखी है।

EL6.0 और EL6.1 से नए OS संशोधन के कदम के बाद स्थिर फाइलसिस्टम का उपयोग अत्यधिक परिवर्तनशील हो गया। शुरू में EL6.2 + के साथ स्थापित सिस्टम समान व्यवहार प्रदर्शित करते हैं; एक्सएफएस विभाजन पर डिस्क उपयोग में जंगली झूलों को दिखाना ( नीचे ग्राफ़ में नीली रेखा देखें)।

पहले और बाद में। शनिवार को 6.1 से 6.2 तक उन्नयन हुआ। एक्सएफएस ग्राफ

पिछले सप्ताह की पिछली तिमाही की डिस्क उपयोग ग्राफ, पिछले सप्ताह के उतार-चढ़ाव को दिखाती है। यहाँ छवि विवरण दर्ज करें

मैंने बड़ी फ़ाइलों और भगोड़ा प्रक्रियाओं (लॉग फाइलें, शायद?) के लिए फाइल सिस्टम की जांच करना शुरू कर दिया। मुझे पता चला कि मेरी सबसे बड़ी फाइलें duऔर से विभिन्न मूल्यों की रिपोर्ट कर रही थीं ls। स्विच के duसाथ और उसके बिना चलना --apparent-sizeअंतर को दिखाता है।

# du -skh SOD0005.TXT
29G     SOD0005.TXT

# du -skh --apparent-size SOD0005.TXT
21G     SOD0005.TXT

पूरे फाइलसिस्टम में ncdu उपयोगिता का उपयोग करके एक त्वरित जांच की गई :

Total disk usage: 436.8GiB  Apparent size: 365.2GiB  Items: 863258

ओएस / कर्नेल के पिछले संस्करण की तुलना में लगभग 70GB खोई हुई जगह के साथ फाइलसिस्टम विरल फाइलों से भरा है !

मैंने Red Hat Bugzilla और परिवर्तन लॉग के माध्यम से देखा कि क्या XFS के संबंध में समान व्यवहार या नई घोषणाओं की कोई रिपोर्ट थी।

नाडा।

मैं नवीनीकरण के दौरान कर्नेल संस्करण 2.6.32-131.17.1.el6 से 2.6.32-220.23.1.el6 तक गया; मामूली संस्करण संख्या में कोई बदलाव नहीं।

मैंने filefragउपकरण के साथ फ़ाइल विखंडन की जाँच की । XFS विभाजन पर सबसे बड़ी फ़ाइलों में से कुछ के हजारों विस्तार थे। xfs_fsr -vगतिविधि की धीमी अवधि के दौरान ऑनलाइन डीफ़्रेग पर चलने से अस्थायी रूप से डिस्क उपयोग को कम करने में मदद मिली (बुधवार को पहले ग्राफ़ में ऊपर देखें)। हालाँकि, भारी सिस्टम गतिविधि के फिर से शुरू होते ही गुब्बारे का उपयोग।

यहां क्या हो रहा है?


2
मम्म ... पियाजा ....
टॉम ओ'कॉनर

जवाबों:


76

मैंने दिसंबर 2010 से XFS स्रोत के पेड़ के लिए एक कमेटी के बारे में चर्चा के लिए इस मुद्दे का पता लगाया । पैच कर्नेल 2.6.38 में पेश किया गया था (और जाहिर है, बाद में कुछ लोकप्रिय लिनक्स वितरण कर्नेल में वापस आ गया था)।

डिस्क उपयोग में देखे गए उतार-चढ़ाव एक नई सुविधा का परिणाम हैं; एक्सएफएस डायनामिक सट्टा ईओएफ प्रीलेकेशन

यह फ़ाइल के आकार में वृद्धि के रूप में स्पेस के आवंटन को लिखकर स्ट्रीमिंग के दौरान फ़ाइल विखंडन को कम करने के लिए एक कदम है। प्रति फ़ाइल उपदेशित अंतरिक्ष की मात्रा गतिशील है और मुख्य रूप से फाइल सिस्टम पर उपलब्ध रिक्त स्थान का एक कार्य है (अंतरिक्ष से पूरी तरह से बाहर निकलने के लिए)।

यह इस अनुसूची का अनुसरण करता है:

freespace       max prealloc size
  >5%             full extent (8GB)
  4-5%             2GB (8GB >> 2)
  3-4%             1GB (8GB >> 3)
  2-3%           512MB (8GB >> 4)
  1-2%           256MB (8GB >> 5)
  <1%            128MB (8GB >> 6)

यह फाइलसिस्टम के लिए एक दिलचस्प अतिरिक्त है क्योंकि यह कुछ बड़े पैमाने पर खंडित फाइलों के साथ मदद कर सकता है, जिनसे मैं निपटता हूं।

अतिरिक्त स्थान को अस्थायी रूप से पेजकेच, डेंट्री और इनोड्स से मुक्त करके पुनः प्राप्त किया जा सकता है:

sync; echo 3 > /proc/sys/vm/drop_caches

allocsizeफ़ाइल सिस्टम माउंट के दौरान एक मान को परिभाषित करके सुविधा को पूरी तरह से अक्षम किया जा सकता है । XFS के लिए डिफ़ॉल्ट है allocsize=64k

इस परिवर्तन का प्रभाव शायद मॉनिटरिंग / थ्रॉल्डिंग सिस्टम (जो मैंने इसे पकड़ा है) द्वारा महसूस किया जाएगा, लेकिन डेटाबेस सिस्टम को भी प्रभावित किया है और पतले-प्रावधान वाली आभासी मशीनों और भंडारण सरणियों के लिए अप्रत्याशित या अवांछित परिणाम हो सकते हैं (वे उपयोग करेंगे) आपकी अपेक्षा से अधिक स्थान)।

सब के सब, यह मुझे बंद गार्ड पकड़ा क्योंकि वितरण स्तर पर या यहाँ तक कि XFS मेलिंग सूची की निगरानी में फाइल सिस्टम परिवर्तन की कोई स्पष्ट घोषणा नहीं थी ।


संपादित करें :
इस सुविधा के साथ XFS संस्करणों पर प्रदर्शन में अत्यधिक सुधार हुआ है। मैं उन संस्करणों पर लगातार <1% विखंडन देख रहा हूं जो पहले 50% विखंडन तक प्रदर्शित हुए थे। लेखन प्रदर्शन विश्व स्तर पर है!

EL6.3 में संस्करण के लिए विरासत XFS की तुलना में एक ही डाटासेट से आँकड़े।

पुराना:

# xfs_db -r -c frag /dev/cciss/c0d0p9
actual 1874760, ideal 1256876, fragmentation factor 32.96%

नया:

# xfs_db -r -c frag /dev/sdb1
actual 1201423, ideal 1190967, fragmentation factor 0.87%

4
एक लाख अपवोट और मेरा राज्य आपको
जोएल ई सलास

1
धन्यवाद! हम सिर्फ डेबियन स्क्वीज़ से उबंटू में अपग्रेड हुए और सोच रहे थे कि डु और एलएस लार्गिश फाइलों के लिए ऐसे बेतहाशा अलग-अलग मूल्यों को क्यों दिखा रहे हैं (जैसे। 50Mb बनाम 64Mb)
गाइल्स थॉमस

1
@ewwhite क्या आपने अंतरिक्ष को पुनः प्राप्त करने के लिए इस सुविधा को बंद कर दिया? या यह लेख सिर्फ यह कह रहा है, अरे, यह विशेषता है जो रिपोर्ट किए गए आकारों में विसंगति पैदा कर रहा था? ऐसा लगता है "डेटाबेस सिस्टम पर, या पतले-प्रावधान वाले VMs, इसे बंद करने पर विचार करें", लेकिन मुझे यकीन नहीं है कि आपने क्या करने का फैसला किया है, आखिरकार।
JDS

2
@ मैं इसे छोड़ देता हूं। यह विखंडन को समाप्त करता है और मेरे अनुप्रयोगों में प्रदर्शन को बढ़ावा मिला है।
ewwhite

3
ओह, अद्भुत खोज। यह 35GB फ़ाइलों पर 750GB का उपयोग कर रहा था। इसके बाद xfs_fsrयह लगभग 35GB पर वापस आ गया है। मुझे उस पर नजर रखनी होगी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.