लेख निर्देशिका
कुछ दिन पहले, एक दोस्त ने मुझे देर रात मैसेज करके बताया कि उसका सर्वर क्रैश हो गया था।
इसके विशिष्ट लक्षण बेहद विचित्र थे: वेबसाइट अचानक त्रुटियां दिखाने लगी, लॉग नहीं लिखे जा सकते थे, और नई फाइलें बनाने पर तुरंत यह संदेश आता था कि डिस्क भर गई है।
लेकिन जब उन्होंने `df -h` कमांड से जाँच की, तो उन्हें यह देखकर आश्चर्य हुआ कि डिस्क में स्पष्ट रूप से कई गीगाबाइट खाली जगह थी। भला यह कैसे भर सकती थी?
मैंने उसे उसी समय और वहीं कह दिया, "भाई, तुम्हारे पास सिर्फ स्टोरेज स्पेस ही नहीं है, तुम्हारा इनोड ओवरलोड हो चुका है।"
उन्होंने प्रश्नचिह्न के साथ उत्तर दिया: इनोड वास्तव में क्या है?
दरअसल, जब कई लोग पहली बार इस जाल में फंसे थे, तो उन्होंने ठीक उसी तरह प्रतिक्रिया दी थी, क्योंकि स्कूल में किसी ने भी उन्हें ये सब बातें नहीं सिखाई थीं।
आइए सबसे पहले यह स्पष्ट कर लें कि इनोड क्या होता है।
इसे पुस्तकालय की अनुक्रमणिका कार्ड की तरह समझें, और इसे समझना आसान हो जाएगा।
डिस्क स्पेस एक किताबों की अलमारी की तरह है; आप उस पर कितनी किताबें रख सकते हैं यह उसकी क्षमता पर निर्भर करता है, जिसे समझना सभी के लिए आसान है।
इनोड प्रत्येक पुस्तक के लिए एक इंडेक्स कार्ड की तरह होता है, जिसमें उसका नाम, स्थान और उसे स्थानांतरित करने वाले व्यक्ति का नाम दर्ज होता है।
लिनक्स में , प्रत्येक फ़ाइल और प्रत्येक निर्देशिका को एक इनोड में स्थान लेना आवश्यक है, चाहे फ़ाइल कितनी भी छोटी क्यों न हो।
भले ही वह एक खाली फाइल हो, सिस्टम फिर भी उसके लिए एक इंडेक्स कार्ड का उपयोग करेगा।
सिस्टम द्वारा बनाई जा सकने वाली फ़ाइलों की कुल संख्या की एक सीमा होती है; यह सीमा इननोड्स की कुल संख्या के बराबर होती है।
एक बार इनोड का उपयोग हो जाने के बाद, भले ही आपकी डिस्क में अभी भी सैकड़ों गीगाबाइट खाली जगह हो, ऑपरेटिंग सिस्टम कोई भी नई फाइल बनाने से इनकार कर देगा।
लॉग नहीं लिखे जा सकते, कैश नहीं बनाया जा सकता, और वेबसाइट पूरी तरह से क्रैश हो जाती है—यही वह विचित्र दृश्य है जिसे आप देख रहे हैं।
सच कहूं तो, यह एक बहुत ही पेचीदा स्थिति है क्योंकि त्रुटि संदेश उस स्थान से भेजा जाता है जिसे आप नहीं देख रहे होते हैं।
पहला तरीका है `df -i` का उपयोग करके त्वरित अवलोकन प्राप्त करना।
हेस्टियासीपी वातावरण में , आप सीधे टर्मिनल में एसएसएच के माध्यम से लॉग इन कर सकते हैं और यह लाइन टाइप कर सकते हैं।
df -iयह प्रत्येक माउंटेड पार्टीशन के लिए कुल इननोड्स की संख्या, उपयोग किए गए इननोड्स की संख्या और शेष इननोड्स की संख्या को सूचीबद्ध करेगा।
आउटपुट में, IUse% नामक एक कॉलम है, जो कि वह प्रमुख मीट्रिक है जिस पर आपको नज़र रखनी चाहिए।
यदि किसी पार्टीशन का IUse% 100% तक पहुँच जाता है, तो भले ही उस पार्टीशन में अभी भी पर्याप्त डिस्क स्थान हो, वह अब कोई नई फाइल या लॉग नहीं बना पाएगा।
मैंने अपने दोस्त को सुझाव दिया कि वह पहले इसे चलाए, ताकि यह एक सेकंड में यह पता लगा सके कि समस्या इनोड के साथ है या नहीं , जो अनुमान लगाने से कहीं अधिक तेज़ होगा।
दूसरा तरीका यह है कि किसी विशिष्ट उपयोगकर्ता की सटीक गणना करने के लिए `find` फ़ंक्शन का उपयोग किया जाए।
समस्या इननोड में है, इसकी पुष्टि करने के बाद, अगला कदम यह पता लगाना है कि कौन इंडेक्स कार्ड का अत्यधिक उपयोग कर रहा है।
HestiaCP में प्रत्येक उपयोगकर्ता के लिए एक अलग होम डायरेक्टरी होती है। आप किसी विशिष्ट वेबसाइट डायरेक्टरी के अंतर्गत फ़ाइलों और डायरेक्टरी की कुल संख्या आसानी से गिन सकते हैं।
find /home/用户名/web/你的域名/public_html | wc -l"username" और "youre domain name" को अपने वास्तविक पथ से बदलें। टर्मिनल द्वारा लौटाया गया शुद्ध अंक उस निर्देशिका में मौजूद सभी फ़ाइलों और फ़ोल्डरों का योग है।
प्रत्येक फ़ाइल या निर्देशिका एक इनोड से संबंधित होती है, इसलिए यह संख्या इनोड के उपयोग को दर्शाती है।

यदि आप प्रत्येक को व्यक्तिगत रूप से जांचने में बहुत आलसी हैं और एक ही बार में पूरी साइट पर सभी उपयोगकर्ताओं के उपयोग वितरण को देखना चाहते हैं, तो एक एकल लूप कमांड भी उपलब्ध है।
for d in /home/*; do echo -n "$d: "; find "$d" 2>/dev/null | wc -l; doneयह पंक्ति /home के अंतर्गत प्रत्येक उपयोगकर्ता निर्देशिका में फ़ाइलों की कुल संख्या प्रिंट करेगी, जिससे यह पता लगाना आसान हो जाएगा कि किस उपयोगकर्ता निर्देशिका में असामान्य रूप से अधिक संख्या में फ़ाइलें हैं।
तीसरी रणनीति उन उप-निर्देशिकाओं की पहचान करना है जो सबसे अधिक आयोडीन की खपत करती हैं।
कभी-कभी आपको पता होता है कि किसी वेबसाइट में इनोड वैल्यू बहुत ज़्यादा है, लेकिन फिर भी आप यह पता नहीं लगा पाते कि स्क्रीन पर मौजूद फाइलों की भरमार में क्या गड़बड़ है।
ऐसे मामलों में, आपको एक स्तर नीचे जाकर उन सबफ़ोल्डरों को ढूंढना होगा जिनमें बड़ी संख्या में छोटी फाइलें होती हैं, जैसे कि कैश डायरेक्टरी, सेशन डायरेक्टरी और लॉग डायरेक्टरी - ये सबसे समस्याग्रस्त क्षेत्र हैं।
find /home/用户名/web/你的域名/public_html -type d -exec sh -c 'echo -n "{}: "; find "{}" -maxdepth 1 | wc -l' \; | sort -n -r -k 2 | head -n 10यह कमांड उन शीर्ष 10 सबफ़ोल्डरों की सूची देगा जो सबसे अधिक फ़ाइलों का उपयोग करते हैं।
सूची के सबसे ऊपर वाला पथ वह स्थान है जहां बड़ी संख्या में छोटी फाइलें एक साथ समूहबद्ध हैं।
मैंने अपने दोस्त से कहा कि शायद यह कोई कैशिंग प्लगइन है जो चुपके से छोटी फाइलें बना रहा है, और इस लाइन को चलाने से इसकी पुष्टि हो जाएगी।
चौथी सलाह यह है कि repquota का उपयोग करके कोटा सीमा की जांच करें।
यदि आपके सर्वर में लिनक्स फाइल सिस्टम कोटा सक्षम है, तो आप समस्या को एक अलग दृष्टिकोण से देख सकते हैं।
repquota -aयह कमांड सभी उपयोगकर्ताओं के लिए फ़ाइल सीमा और वास्तविक फ़ाइल उपयोग की जानकारी प्रदान करेगा।
आउटपुट में फ़ाइल सीमा अनुभाग पर विशेष ध्यान दें; प्रयुक्त कॉलम यह दर्शाता है कि कितनी फ़ाइलों का उपयोग किया गया है।
"सॉफ्ट" और "हार्ड" कॉलम सॉफ्ट और हार्ड लिमिट थ्रेशहोल्ड को दर्शाते हैं। "यूज्ड" कॉलम का स्तर "हार्ड" तक पहुँचने पर, सिस्टम नए फाइल बनाने से सीधे इनकार कर देगा।
यह इस बात से बिल्कुल अलग है कि आपकी डिस्क में कितनी जगह बची है।
अंत में, आइए जांच के सभी पहलुओं को आपस में जोड़ते हैं।
चलिए, उस दोस्त के पास वापस चलते हैं जिसने शुरुआत में आधी रात को सर्वर को क्रैश कर दिया था।
उसने मेरे द्वारा बताए गए चार चरणों का पालन किया, जिसकी शुरुआत `df -i` कमांड से यह पुष्टि करने से हुई कि इनोड वास्तव में भरा हुआ था।
फिर, फाइंड का उपयोग करके, हमने एक पुरानी, बंद पड़ी वेबसाइट की कैश डायरेक्टरी का पता लगाया जो बेतहाशा छोटी-छोटी फाइलें उत्पन्न कर रही थी।
अंत में, `repquota` की जाँच करने पर पुष्टि हुई कि यह वास्तव में निर्धारित सीमा तक पहुँच गया था।
जंक कैश के उस ढेर को साफ करने के बाद, वेबसाइट तुरंत फिर से चालू हो गई।
इसलिए अगली बार जब आपको इस अजीबोगरीब स्थिति का सामना करना पड़े जहां "डिस्क में स्पष्ट रूप से जगह है लेकिन आप फाइलें नहीं लिख सकते," तो तुरंत हार्ड ड्राइव जोड़ने की जल्दी न करें।
सबसे पहले, इनोड को देखने के लिए `df -i` का उपयोग करें; सच्चाई शायद उस इंडेक्स कार्ड पर छिपी हो सकती है जिसे आपने पहले कभी नहीं देखा हो।
मुझे सचमुच विश्वास है कि सिस्टम के मूल में छिपी हुई सामान्य ज्ञान की ये छोटी-छोटी बातें सौ ऑप्टिमाइजेशन सूचियों को याद करने से कहीं अधिक उपयोगी हैं।
आशा है कि चेन वेइलियांग के ब्लॉग ( https://www.chenweiliang.com/ ) पर साझा किया गया लेख "हेस्टियासीपी में इनोड उपयोग की जांच कैसे करें? डिस्क स्थान उपलब्ध होने के बावजूद फाइल लिखने में असमर्थता का कारण" आपके लिए उपयोगी होगा।
इस लेख का लिंक साझा करने में संकोच न करें: https://www.chenweiliang.com/cwl-34619.html
