"सीडी" में / sys / कर्नेल / डिबग / ट्रेसिंग अनुमति परिवर्तन का कारण बनता है


10

मैंने आज एक बहुत ही अजीब मुद्दे का सामना किया है, और इसके बारे में पूरी तरह से असहाय हूं।

मेरे द्वारा प्रबंधित कुछ सर्वरों की निगरानी नागियोस के साथ की जाती है। हाल ही में मैंने इस त्रुटि के साथ एक डिस्क उपयोग जांच को विफल देखा:

डिस्क क्रिटिकल - / sys / कर्नेल / डिबग / ट्रेसिंग सुलभ नहीं है: अनुमति से इनकार किया

मैं जांच करना चाहता था और मेरी पहली कोशिश इस निर्देशिका की अनुमति की जांच करना था, और इनकी तुलना दूसरे सर्वर (जो अच्छी तरह से काम कर रहा है) से कर रहा था। यहां वे कमांड हैं जो मैं काम कर रहे सर्वर पर चला रहा हूं और आप देखेंगे कि जैसे ही मैं cdनिर्देशिका में होता हूं , इसकी अनुमति बदल जाती है:

# Here we've got 555 for /sys/kernel/debug/tracing
root@vps690079:/home/admin# cd /sys/kernel/debug
root@vps690079:/sys/kernel/debug# ll
total 0
drwx------ 30 root root 0 Jul 19 13:13 ./
drwxr-xr-x 13 root root 0 Jul 19 13:13 ../

dr-xr-xr-x  3 root root 0 Jul 19 13:13 tracing/
drwxr-xr-x  6 root root 0 Jul 19 13:13 usb/
drwxr-xr-x  2 root root 0 Jul 19 13:13 virtio-ports/
-r--r--r--  1 root root 0 Jul 19 13:13 wakeup_sources
drwxr-xr-x  2 root root 0 Jul 19 13:13 x86/
drwxr-xr-x  2 root root 0 Jul 19 13:13 zswap/

# I cd into the folder, and it (./) becomes 700!!
root@vps690079:/sys/kernel/debug# cd tracing/
root@vps690079:/sys/kernel/debug/tracing# ll
total 0
drwx------  8 root root 0 Jul 19 13:13 ./
drwx------ 30 root root 0 Jul 19 13:13 ../
-r--r--r--  1 root root 0 Jul 19 13:13 available_events
-r--r--r--  1 root root 0 Jul 19 13:13 available_filter_functions
-r--r--r--  1 root root 0 Jul 19 13:13 available_tracers


# Next commands are just a dumb test to double-check what I'm seeing
root@vps690079:/sys/kernel/debug/tracing# cd ..
root@vps690079:/sys/kernel/debug# ll
total 0
drwx------ 30 root root 0 Jul 19 13:13 ./
drwxr-xr-x 13 root root 0 Sep 27 10:57 ../

drwx------  8 root root 0 Jul 19 13:13 tracing/
drwxr-xr-x  6 root root 0 Jul 19 13:13 usb/
drwxr-xr-x  2 root root 0 Jul 19 13:13 virtio-ports/
-r--r--r--  1 root root 0 Jul 19 13:13 wakeup_sources
drwxr-xr-x  2 root root 0 Jul 19 13:13 x86/
drwxr-xr-x  2 root root 0 Jul 19 13:13 zswap/

क्या आपके पास कोई विचार है जो इस व्यवहार का कारण बन सकता है?
साइड नोट, जांच को पुनः निर्धारित करने के लिए chmod का उपयोग करके पुनः-स्थापना की अनुमति नहीं लगती है।


1
टर्मिनल इनपुट के नमूने प्रदान करते समय, गैरमानक उपनामों को प्रतिस्थापित करने पर विचार करें, जैसे कि llवे जिस कमांड के लिए खड़े होते हैं।
रोमन ओडिस्की सैप

2
@RomanOdaisky यह उबंटू में एक डिफ़ॉल्ट उर्फ ​​है, शायद यह नहीं पता था कि यह डिफ़ॉल्ट नहीं था
GammaGames

@TecloM ने जो कहा उसके शीर्ष पर, यह आपके कर्नेल संस्करण के लिए कर्नेल बग जैसा दिखता है। 4.19.0-4 पर व्यवहार सामान्य है।
V13

जवाबों:


20

/ sys

/sysहै sysfs, पूर्ण रूप से वर्चुअल कि मौजूदा सिस्टम कर्नेल और हार्डवेयर विन्यास को दर्शाता है, और किसी भी वास्तविक डिस्क स्थान का उपभोग नहीं करता है स्मृति में गिरी संरचनाओं में देखने के लिए। नई फाइलें और निर्देशिका सामान्य फैशन में इसे नहीं लिखा जा सकता है।

डिस्क स्पेस मॉनिटरिंग इसे लागू करने से उपयोगी जानकारी नहीं मिलती है और यह बेकार की कोशिश है। इसमें अन्य रैम-आधारित वर्चुअल फाइल सिस्टम के लिए माउंट पॉइंट्स हो सकते हैं, जिनमें ...

/ Sys / कर्नेल / डिबग

/sys/kernel/debugके लिए मानक माउंट बिंदु है debugfs, जो विभिन्न कर्नेल डीबगिंग और ट्रेसिंग सुविधाओं के लिए एक वैकल्पिक वर्चुअल फाइल सिस्टम है।

क्योंकि यह डिबगिंग सुविधाओं के लिए है, इसलिए इसे उत्पादन उपयोग के लिए अनावश्यक माना जाता है (हालाँकि आप सिस्टम की कुछ विशेषताओं या इसी तरह की सुविधाओं के लिए उपयोग करना चुन सकते हैं)।

चूंकि debugfsज्यादातर मामलों में वसीयत द्वारा दी गई सुविधाओं का उपयोग करने की आवश्यकता होती rootहै, और इसका प्राथमिक उद्देश्य कर्नेल डेवलपर्स के लिए डिबग जानकारी प्रदान करने का एक आसान तरीका है, यह थोड़ा "किनारों के आसपास खुरदरा" हो सकता है।

जब कर्नेल को लोड किया गया था, तो कर्नेल ट्रेसिंग सबसिस्टम के लिए आरंभीकरण दिनचर्या /sys/kernel/debug/tracingडिबग्स एक्सेस प्वाइंट के रूप में पंजीकृत है, जब तक कि यह पहली बार वास्तव में एक्सेस नहीं हो जाता है, तब तक किसी और इनिशियलाइज़ेशन को टालना, ट्रेसिंग सबसिस्टम के संसाधन उपयोग को कम करने के मामले में यह पता चलता है। जरूरत नहीं)। जब आप cdनिर्देशिका में आते हैं, तो यह आस्थगित प्रारंभ हो गया था और ट्रेसिंग सबसिस्टम उपयोग के लिए स्वयं पढ़ गया था। वास्तव में, मूल /sys/kernel/debug/tracingशुरू में बिना किसी पदार्थ के एक मृगतृष्णा थी, और यह केवल "वास्तविक" बन गया जब (और क्योंकि) आपने इसे अपने cdआदेश तक पहुँचा दिया ।

debugfs किसी भी वास्तविक डिस्क स्थान का उपयोग नहीं करता है: जब कर्नेल बंद हो जाता है, तो उसके भीतर निहित सभी जानकारी गायब हो जाएगी।

/ Sys / एफएस / cgroup

/sys/fs/cgroupएक tmpfsप्रकार का रैम-आधारित फाइल सिस्टम है, जिसका उपयोग विभिन्न चल रही प्रक्रियाओं को नियंत्रण समूहों में समूहित करने के लिए किया जाता है । यह वास्तविक डिस्क स्थान का उपयोग नहीं करता है। लेकिन अगर यह फाइल सिस्टम किसी कारण से लगभग पूर्ण हो रहा है, तो यह डिस्क स्थान से बाहर चलने की तुलना में अधिक गंभीर हो सकता है: इसका मतलब यह हो सकता है कि

क) आप मुफ्त रैम से बाहर चल रहे हैं,

बी) कुछ जड़-स्वामित्व वाली प्रक्रिया कचरा लिख ​​रही है /sys/fs/cgroup, या

ग) कुछ नियंत्रण समूहों के सही मायने में बेतुकी संख्या पैदा करने का कारण बन रहा है, संभवतः एक क्लासिक "फोर्क बम" की शैली में, लेकिन systemd-बेड सेवाओं या इसी तरह की।

जमीनी स्तर

एक डिस्क उपयोग जांच को /sysबाहर रखा जाना चाहिए क्योंकि /sysकिसी भी डिस्क पर कुछ भी संग्रहीत नहीं है।

यदि आपको निगरानी करने की आवश्यकता है /sys/fs/cgroup, तो आपको इसके लिए एक समर्पित जांच प्रदान करनी चाहिए जो सामान्य डिस्क स्थान की जांच की तुलना में अधिक सार्थक अलर्ट प्रदान करेगी।


1
इस उत्तर के लिए धन्यवाद जितना मुझे चाहिए उतना विवरण! मैं /sysअपनी निगरानी सीमा से बाहर कर दूंगा।
१२:२०

1
@zessx: इसके अलावा /procऔर शायद /dev(क्योंकि भले ही यह 100% रैम-समर्थित नहीं है, एक तरफ इसमें कई तरह की फाइलें और निर्देशिकाएं शामिल हैं जो विभिन्न तरीकों से "अजीब" हैं, और दूसरी तरफ, यदि आप वास्तव में हैं एक टन डिस्क स्थान का उपभोग /devकरें, आपका सेटअप क्षैतिज रूप से टूट गया है और आपको आग पर पूरी गंदगी को प्रकाश में लाना चाहिए)।
केविन

" /sysहै sysfs, एक पूरी तरह से राम-आधारित आभासी फाइल सिस्टम" - मैं बहुत यकीन है कि की सामग्री को कर रहा हूँ sysfs100% में गिरी डेटा संरचनाओं से संश्लेषित कर रहे हैं और ऐसा नहीं रैम कहीं में रहते हैं। वास्तव में, मैं तर्क दूंगा कि "रैम-आधारित वर्चुअल फाइलसिस्टम" एक ऑक्सीमोरोन है: या तो यह रैम-आधारित है, अर्थात इसका बैकिंग स्टोर है (भले ही यह फाइल सिस्टम के लिए एक बहुत ही गैर-पारंपरिक बैकिंग स्टोर हो), तो यह है। " आभासी नहीं है, या यह आभासी है, तो इसका कोई बैकिंग स्टोर नहीं है।
जॉर्ग डब्ल्यू मित्तग

1
@ JörgWMittag ध्यान दें कि मैंने बहुत ध्यान से कहा कि sysfsयह एक रैमडिस्क है। इन-कर्नेल डेटा संरचनाएँ कहाँ रहेंगी, यदि RAM में नहीं है, वैसे भी? मैं मानता हूँ कि "वर्चुअल" शब्द यहाँ समस्याग्रस्त है, जैसा कि आप जानते होंगे कि लिनक्स कर्नेल में सभी फाइलसिस्टम ड्राइवरों के शीर्ष पर VFS (वर्चुअल फ़ाइल सिस्टम) परत होती है, जो "वर्चुअल" का उपयोग किसी अन्य अर्थ में करती है, जैसा कि सभी संभव filesystems के लिए एक समान अमूर्त। लेकिन यह स्पष्ट रूप से वर्णन करना मुश्किल है कि वास्तविक फाइलसिस्टम से कैसे procऔर कैसे sysfsअलग हैं, क्योंकि यह मुख्य बिंदु छड़ी बनाने के लिए सिर्फ पृष्ठभूमि की जानकारी थी।
टेल्कोएम

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