कैसे पता लगाएं कि कौन सी प्रक्रिया नियमित रूप से डिस्क पर लिख रही है?


41

मैं कैसे पता लगा सकता हूं कि कौन सी प्रक्रिया लगातार डिस्क पर लिख रही है?

मुझे अपना कार्य केंद्र चुप रहने के लिए पसंद है और मैं सिर्फ एक नया सिस्टम बनाता हूं (P8B75-M + Core i5 3450s - 's' क्योंकि इसमें शांत प्रशंसकों के साथ कम टीडीपी है) और डेबियन व्हीले 64-बिट स्थापित किया है। इस पर।

और मेरे तंत्रिका पर कुछ हो रहा है: मैं कुछ प्रकार के पैटर्न को सुन सकता हूं जैसे कि हार्ड डिस्क लिख रहा था या कुछ मांग रहा था ( टिक ... टिक ... टिक ... त्रिश्रण कुल्ला और हर दूसरे या फिर दोहराएं)।

अतीत में मेरे पास अतीत में एक ही मुद्दा था (कई, कई साल पहले) और यह पता चला कि यह कुछ सीयूपीएस लॉग या कुछ और था और मैंने बस उस (असली) रैम डिस्क में लॉगिंग (महत्वपूर्ण नहीं) को पुनः निर्देशित किया।

लेकिन यहाँ मुझे यकीन नहीं है।

मैंने निम्नलिखित कोशिश की:

ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp

लेकिन वहां कुछ भी नहीं बदल रहा है।

अब अजीब बात यह है कि मैं पैटर्न भी सुनता हूं जब प्रॉम्प्ट मुझे अपना एलवीएम डिक्रिप्शन पासफ़्रेज़ दर्ज करने के लिए कहता है।

क्या यह कर्नेल / प्रणाली में कुछ हो सकता है जिसे मैंने अभी स्थापित किया है या क्या मेरे पास एक दोषपूर्ण हार्डडिस्क है?

hdparm -tT /dev/sda एक सही HD गति (130 GB / s गैर-कैश, sata 6GB) की रिपोर्ट करें और मैंने पहले ही बड़े स्रोतों (Emacs) से बिना किसी समस्या के स्थापित और संकलित कर लिया है, इसलिए मुझे नहीं लगता कि सिस्टम खराब है।

(HD एक सीगेट बैराकूड 500GB है)


क्या आपको यकीन है कि यह एक हार्ड ड्राइव है जो शोर कर रही है, और कुछ और नहीं? (पीएसयू प्रशंसक सहित प्रशंसकों की जांच करें। एक बहुत पतली केबल एक बार जब एक प्रशंसक के बहुत करीब थी और बहुत कम बार ब्लेड को छूने और कुछ "क्लिक" के लिए उछाल ...)
मैट

@ मेत: मैं हार्ड ड्राइव को केस से बाहर ले जाऊंगा (कनेक्टर्स लंबे होने चाहिए) सुनिश्चित करने के लिए और मैं रिपोर्ट करूँगा; )
सेड्रिक मार्टिन

2
सुनिश्चित करें कि आपका डिस्क फाइल सिस्टम रिलेटाइम या नॉटाइम माउंट किया गया है। एक्सेस समय रिकॉर्ड करने के लिए फाइल रीड्स राइट्स इनोड का कारण बन सकता है।
कैम

जवाबों:


43

क्या आपने यह जांचने की कोशिश की कि कौन से कार्यक्रम पसंद कर रहे हैं iotop? यह आपको बताएगा कि वर्तमान में डिस्क पर किस तरह की प्रक्रिया लिख ​​रही है।

उदाहरण आउटपुट:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
 1033 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [flush-8:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]

1
उस टिप के लिए धन्यवाद। मैं iotop के बारे में नहीं जानता था । डेबियन मैं एक किया था पर apt-कैश iotop खोज पता लगाने के लिए कि मैं पड़ा apt-get iotop । बहुत अच्छा आदेश!
सेड्रिक मार्टिन

3
मैं उपयोग iotop -o -b -d 10करता हूं जो हर 10secs उन प्रक्रियाओं की एक सूची प्रिंट करता है जो डिस्क को पढ़ने / लिखने और उपयोग किए जाने वाले IO बैंडविड्थ की मात्रा को दर्शाता है।
ndemou

15

आप IO डीबगिंग को सक्षम कर सकते हैं echo 1 > /proc/sys/vm/block_dumpऔर फिर डिबगिंग संदेशों को / var / log / syslog में देख सकते हैं । इसमें पिछली गतिविधियों के साथ कुछ प्रकार की लॉग फ़ाइल प्राप्त करने का लाभ है, जबकि iotopकेवल वर्तमान गतिविधि को दर्शाता है।


4
जब ब्लॉक_डंप सक्रिय हो जाए तो यह sysloging को सक्षम करने के लिए बिल्कुल पागल है। लॉगिंग डिस्क गतिविधि का कारण बनता है, जो लॉगिंग का कारण बनता है, जो डिस्क गतिविधि आदि का कारण बनता है। इसे सक्षम करने से पहले बेहतर बंद करें (और संदेशों को पढ़ने के लिए dmesg का उपयोग करें)
dan3

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

मैंने इसे लगभग 2 साल पहले आज़माया था और इसने मेरी मशीन को रोक दिया। इन दिनों में से एक है जब मेरे पास कुछ भी महत्वपूर्ण नहीं है, मैं इसे फिर से
आज़माऊंगा

मैंने कोशिश की, वास्तव में कुछ नहीं हुआ। खासकर फाइल सिस्टम बफरिंग की वजह से। Syslog को लिखने से डिस्क पर तुरंत कोई ट्रिगर नहीं होता है।
स्कै

1
मुझे लगता है कि लॉग संदेशों के लिए जगह दर सामान्य सीमित है, जो इस मामले को भी संभालती है?)
वोल्कर साइगेल

5

यह मानते हुए कि डिस्क शोर एक प्रक्रिया के कारण होती है, जो लिखने के लिए होती है और कुछ डिस्क स्पिन्डाउन समस्या के लिए नहीं , आप ऑडिट सबसिस्टम ( auditdपैकेज स्थापित करें ) का उपयोग कर सकते हैं । syncकॉल और उसके दोस्तों पर नजर रखें :

auditctl -S sync -S fsync -S fdatasync -a exit,always

लॉग में देखें /var/log/audit/audit.log। यह करने के लिए सावधान रहें अगर ऑडिट लॉग खुद को फ्लश कर रहे हैं! इसमें चेक करें /etc/auditd.confकि flushविकल्प सेट है none

यदि फ़ाइलों को अक्सर फ्लश किया जा रहा है, तो एक संभावित अपराधी सिस्टम लॉग है। उदाहरण के लिए, यदि आप आने वाले कनेक्शन के प्रयासों को विफल करते हैं और कोई आपकी मशीन की जांच कर रहा है, जिससे बहुत सारी प्रविष्टियाँ उत्पन्न होंगी; इसके कारण मशीन गन-स्टाइल शोर के लिए एक डिस्क बन सकती है। मूल लॉग डेमॉन sysklogd के साथ, जांचें /etc/syslog.conf: यदि लॉग फ़ाइल नाम से पहले नहीं है -, तो उस लॉग को प्रत्येक लिखने के बाद डिस्क में फ्लश किया जाता है।


@StephenKitt हू। नहीं। पूछने वाले ने डेबियन का उल्लेख किया है इसलिए मैंने इसे डेबियन पैकेज के लिंक में बदल दिया है।
गिल्स एसओ- बुराई को रोकना '

3

यह हो सकता है कि आपकी ड्राइव स्वचालित रूप से कम हो जाए, बहुत सारे उपभोक्ता-ग्रेड ड्राइव इन दिनों करते हैं। दुर्भाग्य से भी एक हल्के ढंग से भरी हुई प्रणाली पर, ड्राइव में यह परिणाम लगातार घूमता है और फिर फिर से घूमता है, खासकर यदि आप ड्राइव के तापमान की निगरानी के लिए hddtemp या समान चला रहे हैं (अधिकांश ड्राइव बेवकूफी से आपको स्मार्ट तापमान मान को क्वेरी नहीं करने देते हैं ड्राइव के बिना कताई - cretinous!)।

यह न केवल कष्टप्रद है, यह ड्राइव को तेजी से बाहर कर सकता है क्योंकि कई ड्राइव में सीमित संख्या में पार्क साइकिल हैं। उदाहरण के लिए समस्या के वर्णन के लिए https://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/952556 देखें ।

मैं शेल कोड के निम्नलिखित बिट के साथ अपने सभी ड्राइव पर निष्क्रिय-स्पिंडाउन को अक्षम करता हूं। आप इसे /etc/rc.boot स्क्रिप्ट में या /etc/rc.local या समान में रख सकते हैं।

डिस्क के लिए / देव / एसडी में? ; करना
  / sbin / hdparm -q -S 0 "$ डिस्क"
किया हुआ

2
कि आप ड्राइव को स्पिन किए बिना स्मार्ट रीडिंग को क्वेरी नहीं कर सकते, मुझे अवाक कर देता है: - / अब जाहिर है कि "स्पिनिंग डाउन" मुद्दा काफी जटिल हो सकता है। कताई को अक्षम करने के बारे में: क्या यह अपने आप में कारण नहीं है कि HD तेजी से खराब हो? मेरा मतलब है: यह कभी "आराम" नहीं है जब तक कि सिस्टम चालू है?
सेड्रिक मार्टिन

IIRC आप ड्राइव को स्पिन करने के कारण कुछ SMART मानों को क्वेरी कर सकते हैं, लेकिन तापमान उनमें से किसी भी ड्राइव पर नहीं है जिसे मैंने परीक्षण किया है (WD, Seagate, सैमसंग, Hitachi से मॉडल को शामिल करें)। जो निश्चित रूप से, पागल है क्योंकि तापमान पर चिंता एक ड्राइव को निष्क्रिय करने के कारणों में से एक है। पुन: पहनते हैं: AIUI 1. निरंतर वेग बदलते गति से कम पहने हुए है। 2. ड्राइव को एक सुरक्षित क्षेत्र में सिर पार्क करना होता है और एक ड्राइव को केवल इतनी बार रेट किया जाता है कि (IIRC कुछ सौ हज़ार तक - आसानी से पार हो जाता है अगर ड्राइव सुस्ती और हर कुछ सेकंड में घूमती है)
cas

यह इस बारे में एक लंबी बहस है कि क्या ड्राइव को छोड़ना बेहतर है या उन्हें नीचे स्पिन करना है। व्यक्तिगत रूप से मेरा मानना ​​है कि उन्हें छोड़ना सबसे अच्छा है - मैं रात को अपना कंप्यूटर बंद कर देता हूं और जब मैं बाहर जाता हूं, लेकिन इसके अलावा मैं कभी भी अपने ड्राइव को स्पिन नहीं करता। कुछ लोग उन्हें नीचे ले जाना पसंद करते हैं, कहते हैं, रात में अगर वे कंप्यूटर को छोड़ रहे हैं या यदि कंप्यूटर की निष्क्रियता लंबे समय तक है, और ऐसे मामलों में उन्हें कुछ घंटों के लिए नीचे स्पिन करने का लाभ मिलता है, तो उन्हें छोड़ देना बहस का विषय है। । हालांकि यह कभी भी अच्छा नहीं होता है कि जब हार्ड ड्राइव बार-बार कम समय में बार-बार घूमती है।
माइकल जॉनसन

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

मैंने सोचा कि यह मेरे मुद्दे को ठीक करेगा क्योंकि मैं सुनता हूं कि ड्राइव एक आवधिक क्लैकिंग साउंड (3-4 गुना / सेकंड) करता है जैसे कि यह तब भी लिख रहा है जब यह माउंट नहीं है! लेकिन इस कमांड को चलाने के बाद भी मुझे शोर सुनाई देता है। चिंता की बात है, यह वह ड्राइव है जिसका उपयोग मैं अपने आंतरिक SSD का बैकअप लेने के लिए करता हूं ...
माइकल

1

मैंने अभी-अभी पाया कि स्मार्ट एक बाहरी USB डिस्क को मेरे रास्पबेरी पाई पर बार-बार स्पिन करने का कारण बना रहा था। हालाँकि SMART आम तौर पर एक अच्छी बात है, मैंने इसे फिर से निष्क्रिय करने का फैसला किया और तब से ऐसा लगता है कि अवांछित डिस्क गतिविधि बंद हो गई है


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

1

आप इस पर थोड़ा ध्यान आकर्षित कर सकते हैं। अधिकांश के लिए इसे कम करना चाहिए।

find / -mount -newer /proc -print

/ फाइल सिस्टम के भौतिक उपकरण पर बूट के बाद से संशोधित फाइलें दें। फ़ाइलों को जानने से लेखक को पहचानने में मदद मिलेगी।


1

मामले में आपको इसे एक सटीक डिस्क पर संकीर्ण करने की आवश्यकता है, निम्नलिखित का उपयोग करें:

lsblkडिवाइस नंबर को चलाएं और देखें। नीचे मामले में यह है9:126

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdb           8:16   0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdc           8:32   0   7.3T  0 disk  
└─sdc1        8:33   0   7.3T  0 part  /mnt/InternalFBE

चलाने के lsof | grep '9,126'साथ :साथ बदलें ,ऊपर डिस्क संख्या की तुलना में। मेरे मामले में यह इस प्रकार है:

bash      389162            root  cwd       DIR              9,126      4096  449183796 /mnt/InternalPhase/0000000001/CHANNEL01/LIVE/PHASE/DATA/2018/10/04

389162इस प्रक्रिया को मारने की पीआईडी ​​के साथ प्रयोग करें:

kill -9 389162

-1

समस्या यह है कि सिस्टम को डिस्क बफ़र्स से डिस्क को 5 सेकंड या तो डिफ़ॉल्ट रूप से डेटा फ्लश करने की आवश्यकता है। इस प्रकार यदि डिस्क नीचे घूमती है, तो फ्लश वापस होने के अलावा फिर से स्पिन करने के अलावा कोई विकल्प नहीं होगा। तो समस्या वास्तव में टाल-मटोल या डिस्क पावर प्रबंधन सुविधाओं को पूरी तरह से अक्षम करने के अलावा अन्य नहीं है hdparm -B 255 /dev/hdax। यह शायद बेहतर विकल्प है क्योंकि अक्सर पुनरारंभ करना निश्चित रूप से सभी समय पर रहने की तुलना में अधिक हानिकारक हो सकता है।


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