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


101

क्या लिनक्स पर हार्ड डिस्क लोड की निगरानी करने के लिए एक अच्छी कमांड लाइन उपयोगिता है? कुछ ऐसा है topलेकिन फिर डिस्क गतिविधि iso cpu उपयोग की निगरानी।

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

मेरा आदर्श उपकरण कुछ ऐसा होगा जो प्रिंट करता है "अभी आप अपने डिस्क बैंडविड्थ का 35% उपयोग कर रहे हैं"। कोई विचार?


1
बिल्कुल सही सवाल, ठीक वही है जो मैं देख रहा था =)
rafa.ferreira

यह सीधे sysfs को पढ़ने के लिए संभव है, जैसे /sys/block/sda/stat। फ़ील्ड # 1 कुल # पढ़ता है, फ़ील्ड # 5 लेखन का कुल # है, फ़ील्ड # 9 प्रगति में I / O संचालन की संख्या है। Kernel.org/doc/Documentation/iostats.txt में अधिक देखें मान लंबे समय से बिना लिखे हुए हैं और लपेट सकते हैं।
सातनिन

यह एक बहुत अच्छा सवाल है क्योंकि हम हमेशा Plesk सर्वर पर इस समस्या से जूझ रहे हैं। हालांकि, जो चीज गायब है वह है how do you do it with SNMP?। सामान को लॉग इन और चेक करना ठीक है, लेकिन वास्तव में ऐतिहासिक डेटा की आवश्यकता है।
यूजीन वैन डेर मेरवे

जवाबों:


83

आप iostatउपकरण का उपयोग करके इसका एक बहुत अच्छा उपाय प्राप्त कर सकते हैं ।

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

डिस्क का उपयोग अंतिम कॉलम में सूचीबद्ध है। इसे परिभाषित किया गया है

CPU समय का प्रतिशत जिसके दौरान I / O अनुरोध डिवाइस को जारी किए गए थे (डिवाइस के लिए बैंड-चौड़ाई उपयोग)। डिवाइस संतृप्ति तब होती है जब यह मान 100% के करीब होता है।


3
यह किस पैकेज में डेबियन में रहता है, यदि कोई हो? apt-cache dumpiostat
hBy2Py

9
@Brian: यह sysstat पैकेज में है (वैसे भी यम के माध्यम से ...)
जो

आरएचईएल 6.5 पर यह नहीं मिल सका। क्या यह आरएचईएल के लिए उपलब्ध है?
हज़ोक

क्या बिना देरी किए यह काम जारी रह सकता है? डेटा प्राप्त करने के लिए एक ही उदाहरण को चलाने की कोशिश कर रहा है शायद एक ही नंबर प्राप्त करता है क्योंकि यह नमूने नहीं ले सकता है ???
विल्फ

@ हाज़ोक यह आरएचईएल 6.5 पर sysstat RPM का हिस्सा है।
thegeneral

81

iotop शीर्ष का एक संस्करण है जो यह देखता है कि प्रत्येक प्रक्रिया कितना IO उपयोग कर रही है। यह मानक ubuntu रिपॉजिटरी में है; मुझे नहीं पता कि यह आरएचईएल या फेडोरा में है, लेकिन यह होना चाहिए।

यहाँ छवि विवरण दर्ज करें

पुरानी गुठली के लिए (सेंटोस 5.x या आरएचईएल 5.x कहते हैं) जो आईओपीटी का समर्थन नहीं करते हैं, इसके बजाय टोपियो का उपयोग करें (यहां प्रलेखित: http://yong321.freeshell.org/freeware/pio.html#linux । io io आंकड़ों के लिए // io और iotop के समान कार्यक्षमता प्रदान करता है। आगे के विवरण के लिए लिंक देखें।


1
दरअसल, यह उबंटू में डिफ़ॉल्ट रूप से स्थापित नहीं है, इसलिए कोई भी जारी कर सकता है: सूद एप्ट-गेट स्थापित इसे पाने के लिए आइसोटोप
मोशे

1
iotop को 2.6.20 से अधिक कर्नेल की आवश्यकता होती है, जो दुर्भाग्य से RedHat el4 और el5 दोनों को नियंत्रित करता है।
डेव चेनी

2
RedHat 5.4 के रूप में, iotop काम करने के लिए आवश्यक बिट्स को वापस भेज दिया गया है। का आनंद लें!
डेव चेनी

यह फेडोरा में है :)।
जेमी

13

जैसा कि टिप्पणियों में sastanin द्वारा सुझाया गया है, आप सीधे /sys/block/sda/statया में दिए गए मानों को संसाधित कर सकते हैं /proc/diskstats। यह तब सहायक हो सकता है जब कोई भी अन्य उल्लिखित उपकरण उपलब्ध न हो और आप उन्हें आसानी से स्थापित न कर सकें।

उदाहरण के लिए (IIUC) कुछ इस तरह (बैश में) प्रति सेकंड रीड की संख्या देनी चाहिए:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

प्रलेखन के लिए https://www.kernel.org/doc/Documentation/iostats.txt और https://www.kernel.org/doc/Documentation/block/stat.txt देखें ।


7

आपको सबसे ऊपर एक नज़र रखना चाहिए , जो कि सभी जगह एक ही स्थान पर, iotop / top / iftop की शक्ति को जोड़ती है, और आपके सिस्टम के महत्वपूर्ण भागों को उजागर करती है।


5

मैं nmon टूल पर एक नज़र डालने की सलाह दूंगा। यह आपको कई सिस्टम मापदंडों पर लाइव लोड दिखाएगा और साथ ही बाद में होने वाली गड़बड़ी के लिए डेटा रिकॉर्ड करेगा। यह यहाँ उपलब्ध एक मुफ़्त उपकरण है :


5

यह जानने के लिए कि डिवाइस रीड परफॉर्मेंस hdparm -T /dev/sdaका परीक्षण करने के लिए आप बफर कैश (फाइलियो) के प्रदर्शन hdparm -t /dev/sdaका परीक्षण करने के लिए अपने कुल बैंडविड्थ का क्या उपयोग कर सकते हैं

उदाहरण: मेरे लैपटॉप को SATA डिस्क से 82MB / सेकंड और कैश से 2GB / सेकंड मिलता है। मेरे dekstop को कैश से 12GB / sec और HW RAID सरणी से 500MB / सेकंड मिलता है। मुझे संदेह है कि सर्वर नंबर हार्डवेयर पर अंतिम संख्या दोगुनी हो सकती है।

रीडहेड को 256 से अधिक सेट करें, 4096 मेरे लिए सबसे अच्छा काम करता है

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

अलग-अलग ब्लॉक साइज और अलग-अलग रीड-अहेड्स पर 1GB पढ़ने का समय


एसएफ में आपका स्वागत है। आप तार या इंडेंटिंग पैराग्राफ के चारों ओर backquotes लगाकर अपने पोस्ट में हाइलाइटिंग कोड का उपयोग कर सकते हैं।
10

दो चीजें - 1) --setraअब है -a, और 2), hdparm -{T,t}कमांड केवल डिस्क रीड जारी करती है, उसी के अनुसार strace, नोंडेस्ट्रक्टिव हैं। (इंटरनेट पर सलाह के बारे में मानक अस्वीकरण लागू होता है)
i336_

4

हार्ड डिस्क लोड दिखाने के लिए मानक उपकरण है iostat

यह आपको यह नहीं बताएगा कि आप कितने% आयु डिस्क बैंडविड्थ का उपयोग कर रहे हैं, क्योंकि यह नहीं जानता कि आपके डिस्क में कितना बैंडविड्थ है। किसी भी स्थिति में, आपकी डिस्क में केवल सन्निहित डेटा के बड़े स्थानान्तरण के लिए निर्माता का उद्धृत आंकड़ा है।


3

मुझे लगता है कि RRDtool को वही करना चाहिए जो आप चाहते हैं कि यह सिस्टम डेटा को डंप करने के लिए डेमन का उपयोग करता है और फिर आपको इसे पसंद करने की अनुमति देता है। मैंने सिस्टम लोड को मापने के लिए अक्सर ग्राफ आदि का उपयोग करने के लिए इसका उपयोग किया है।

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