डु कमांड को चलाने के लिए बहुत लंबा समय लगता है


9

मैं du -shडिस्क हॉग खोजने के लिए कई प्रकार की निर्देशिकाओं में भाग रहा हूं । मुझे आरएचईएल 5 के साथ दो समान सर्वर (डेल PE2850s) मिले, और duएक सर्वर को दूसरे पर चलाने में काफी समय लगेगा ।

उदाहरण के लिए, du -sh /opt/foobarसर्वर ए पर 5 मिनट का समय लगेगा (जिसमें लगभग 25 जीबी है), और सर्वर बी पर, डेटा की समान मात्रा वाला एक ही कमांड लगभग तात्कालिक रूप से मुझे रिपोर्ट करेगा। मुझे शीर्ष पर दौड़ते समय कुछ भी स्पष्ट नहीं दिखता है, आदि।

किसी भी सलाह की काफी सराहना की जाती है।


3
की गति du -sडेटा के आकार पर निर्भर नहीं है, बल्कि फाइलों की संख्या पर निर्भर है। क्या दोनों डायरेक्टरी ट्री में समान संख्या में फाइलें होती हैं?
लदादादा

2
इसके अलावा, duबहुत तेजी से काम करेगा अगर सभी निर्देशिका मेटा डेटा (जैसे फ़ाइल आकार) वर्तमान में कैश है। यदि एक सर्वर पर किसी अन्य कारण से ऐसा होता है और दूसरे पर नहीं, तो इसके परिणामस्वरूप बड़े अंतर होंगे।
स्वेन

@ लाडदादा मैं कहूंगा हां फाइलों में समान राशि है। यहां तक ​​कि जब फ़ाइल आकार की एक सूची प्राप्त करने के लिए तारांकन जोड़ने को व्यक्तिगत रूप से स्क्रॉल करने में लंबा समय लगता है। लेकिन मुझे पूरी तरह से यकीन नहीं है कि मेटा डेटा कैश्ड है या नहीं यह कैसे सत्यापित किया जाए।
जॉन वेन्रब

जवाबों:


6

यदि आपके पास उस निर्देशिका में बड़ी संख्या में फाइलें हैं और निर्देशिका की सामग्री लगातार बदलती रहती है, तो निर्देशिका प्रविष्टि समय के साथ ही खंडित हो जाती है। फिर जब OS डायरेक्टरी कंटेंट को पढ़ रहा होता है, तो बहुत सारे और बहुत सारे अनावश्यक डिस्क सॉक्स मिलेंगे। यह विशेष रूप से ext * filesystems (ext4 बेहतर हो सकता है) के साथ होता है और पुराने ReiserFS v3.x filesystems (यदि वह पिछले 85% पूर्ण या तो मिला)।

समाधान काफी आसान है:

cp -pr origdir newdir
mv origdir origdir.bak
mv newdir origdir

बेशक अगर सब कुछ रैम में कैश किया जाता है, तो इससे कोई फर्क नहीं पड़ता; आमतौर पर लिनक्स कैश अक्सर एक्सेस की गई फाइलें और काफी आक्रामक तरीके से डायर करता है। यदि आप वास्तव में उन निर्देशिकाओं की सामग्री को रैम में रखना चाहते हैं, तो आप ls -lah /your/dir 2>&1 >/dev/nullअपने क्रोन की तरह कुछ डाल सकते हैं ।

संपादित करें: ओह, एक बात मेरे दिमाग में आई। यदि आपके सर्वर में कुछ कैश के साथ बैटरी-समर्थित RAID नियंत्रक है, तो कृपया जांच लें कि बैटरी ठीक है। मैंने ऐसी स्थितियों को देखा है जहां बैटरी मृत हो गई है और नियंत्रक कैश को पूरी तरह से निष्क्रिय कर देता है, जिससे प्रदर्शन बहुत खराब हो जाता है। उदाहरण के लिए, एचपी सर्वर आईएलओ में बता सकता है कि नियंत्रक बैटरी के बारे में कुछ लॉग करता है; वास्तविक सर्वर स्वास्थ्य डैशबोर्ड में सब कुछ ठीक और हरा-भरा लगता है, लेकिन केवल लॉग प्रविष्टि आपको इस बारे में बताएगी।


1
यह शायद मुझे कुछ समय लगेगा, यह एक उत्पादन सर्वर पर है इसलिए मुझे इसे रात भर करने की आवश्यकता होगी और पूरी निर्देशिका में कई सौ गीगाबाइट डेटा शामिल हैं इसलिए मैं इसे नीचे नहीं बांधना चाहता ... मैं रिपोर्ट करूंगा कल सुबह पहली बात। विचार के लिए धन्यवाद।
जॉन वेन्रब

मैं अभी भी यह कमांड चला रहा हूं और यह नहीं बता रहा हूं कि इसमें कितना समय लगेगा। मैंने इसका नाम भी बदल दिया है और cp अभी भी चल रहा है, इसे शुरू करने के बाद से लगभग 1hr15 मिनट का है। यहां तक ​​कि एक और शेल में उस फोल्डर पर डु चलने में एक लंबा समय लगा, लेकिन आपको लगता है कि मुझे सिर्फ umountड्राइव करना चाहिए और fsckयह?
जॉन वीनरूब

बस इसे चलने दें जब तक कि यह आपके उत्पादन को किसी तरह से परेशान न करे। RHEL5 और इसके डिफ़ॉल्ट CFQ I / O अनुसूचक के साथ आप cp कमांड को निष्क्रिय वर्ग में रख सकते हैं ताकि यह अन्य प्रक्रियाओं को धमकाने न पाए: ionice -c3 -p $(pidof cp)या तो।
जने पिक्कारनेन ०ne

कृपया मेरा नवीनतम संपादन भी पढ़ें।
जने पिक्कारेनैन

1
मुझे पता है कि यह एक समय हो गया है, लेकिन मैं आखिरकार आपके द्वारा बताए गए cp कमांड को करने के लिए तैयार हो गया। 25 जीबी कॉपी करने के लिए दो दो घंटे। हेट मूव करने के बाद, एक और डु -श रन चलाना उतना ही धीमा था। वास्तव में भी बैकअप निर्देशिका मिटा भी धीमी है!
जॉन वेन्रब

0

मैं बिना किसी स्विच के सरल डु कमांड की कोशिश करने का सुझाव देता हूं। आप अंततः देखेंगे कि कौन सी निर्देशिका प्रक्रिया को धीमा कर रही है। एक दोषपूर्ण डिस्क, या कोई अन्य कारण हो सकता है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.