डिस्क (USB संलग्नक में) माउंट नहीं होने पर भी जागते रहते हैं


13

सेट अप

मेरे पास USB एनक्लोजर (बफैलो ड्राइववार्ड क्वैड) है जो मेरे नैस सर्वर (ubuntu सर्वर 14.04) से जुड़े चार ड्राइव हैं। बाड़े को JBOD मोड में कॉन्फ़िगर किया गया है, इसलिए मैं लिनक्स में सभी डिस्क देखूंगा।

डिस्क (sdb और sdc) में से दो सॉफ्टवेयर /dev/md0raid1 (raid1) के साथ कॉन्फ़िगर किए गए हैं । और पत्रिकाओं के बिना ext4 फाइल सिस्टम के साथ /dev/md0एकल विभाजन ( /mnt/part1) के रूप में माउंट किया गया है ।

अन्य दो डिस्क (sdd और sde) LVM के साथ एक वॉल्यूम समूह के रूप में स्थापित किए जाते हैं, जहाँ से मैंने दो तार्किक विभाजन लगाए हैं। जिनमें से एक पूरी मात्रा समूह क्षमता ( /mnt/part2) का 90% है , और एक जो 10% ( /mnt/part3) है। दोनों भी पत्रिकाओं के बिना ext4 हैं।

एपीएम मुद्दे

मेरी समस्याएँ डिफ़ॉल्ट APM मोड्स के साथ शुरू हुईं, जैसा कि मैंने देखा कि हार्ड ड्राइव का हेड हर दो मिनट में काफी आक्रामक रूप से पार्क होता है। विषय पर थोड़ा शोध करने के बाद, मैंने उपयोग करना समाप्त कर दिया hdparm -B198 /dev/sd[bcde]। यह कुछ हद तक बिजली की बचत की अनुमति देता है, लेकिन वास्तव में बिना किसी हेड पार्किंग के।

कोई नींद?

मैं वर्तमान स्थिति से खुश हूं, लेकिन मैं फिर भी चाहूंगा कि अगर कोई गतिविधि न हो तो ड्राइव सो जाए। विशेष रूप से sdb और sdc ( /mnt/part1) जो वास्तव में 95% समय के लिए कोई गतिविधि नहीं करता है। मैंने जो भी कोशिश की है, समस्या यह है कि ड्राइव एक या दो मिनट से अधिक समय तक नहीं सोते हैं।

सभी विभाजन को अनमाउंट करना, और जारी hdparm -y /dev/sd[bcde]करना ड्राइव को स्लीप मोड में डाल देगा, लेकिन केवल कुछ मिनटों के लिए। इसके बाद वे सभी एक-एक कर उठेंगे। मैंने block_dump ( echo 1 > /proc/sys/vm/block_dump) को सक्षम करके समस्या को डीबग करने का प्रयास किया है , लेकिन डिस्क तक कोई पहुंच नहीं है।

मैंने एपीएम को भी अक्षम करने की कोशिश की hdparm -B255 /dev/sd[bcde], और उन्हें उसके बाद सोने की आज्ञा दी, लेकिन यही बात। अभी भी ड्राइव कुछ मिनटों के बाद जागते हैं।

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

अपडेट # 1

मुझे समय लगा कि डिस्क्स को जारी करने के बाद उठने में कितना समय लगता है hdparm -y /dev/sd[bc]। निम्नलिखित टाइमस्टैम्प पैटर्न को दर्शाता है:

00:00 hdparm -y /dev/sd[bc]
00:40 disks start to wake up
00:59 disks fully awake
01:00 hdparm -y /dev/sd[bc]
03:40 disks start to wake up
03:59 disks fully awake
04:00 hdparm -y /dev/sd[bc]
06:40 disks start to wake up
06:59 disks fully awake

यानी ऐसा लगता है कि प्रत्येक 3 मिनट में कुछ चेक / डिस्क को जगाता है। स्टैंडबाई मोड पर जाने के लिए पहला कमांड सिर्फ चौकी से 40 सेकंड की दूरी पर हुआ।

अद्यतन # 2

मशीन के साथ रिबूट किया acpi=off apm=off। मदद भी नहीं की। Btw, मशीन लेनोवो L520 लैपटॉप है। बस किसी के मामले में यह प्रासंगिक है।


2
मेरी $ .02: अपनी मशीन पर सब कुछ रोकने की कोशिश करें (जांच उपकरणों की जांच करने के लिए आस-पास के डेमॉन शायद चारों ओर देख रहे हों), नोमैट माउंट विकल्प का उपयोग करें।
लेज़्ज़्लो वल्को

@LaszloValko, प्रक्रियाओं को कम करने में कामयाब रहा upstart-{socket,file}-bridge, dhclient, getty and sshd- कोई भाग्य नहीं है :(। बेशक बहुत सारी कर्नेल प्रक्रियाएं चल रही हैं (जिन्हें कोष्ठक में सूचीबद्ध किया गया है)। अभी तक इस पर ध्यान नहीं दिया गया है कि क्या मैं कुछ कर्नेल मापदंडों द्वारा कम कर सकता हूं ... और जो अच्छे उम्मीदवार होंगे।
टोनी

1
यह बताने का सरल तरीका कि क्या यह बाड़े या आपके ओएस को ड्राइव को नीचे स्पिन करने के लिए होगा, तो यूएसबी को डिस्कनेक्ट करें।
सर्कस कैट

@qasdfdsaq, दुर्भाग्यवश यह बफ़ेलो ड्राइवस्टेशन कुछ फैंसी पॉवरडाउन फीचर के साथ आता है। जब यूएसबी केबल अनप्लग हो जाए तो बाड़े खुद ब खुद बन्द हो जाता है। यहां तक ​​कि पावर स्विच में केवल "बंद" और "ऑटो" विकल्प हैं।
टोनी

1
बस अंधेरे में एक शॉट: चेकबोन अपडेट करें ।conf के pruned पाथ्स और बाइंड mounts, ताकि इन रास्तों को स्पष्ट रूप से छोड़ दिया जाए ('पता लगाएं' सेवा); यह आसानी से कुछ इसी तरह की सेवा हो सकती है, हालांकि।
माइकल

जवाबों:


2

थोड़ा ओवरकिल हो सकता है, लेकिन SystemTapआपको यह पहचानने में मदद मिल सकती है कि उस डिस्क पर i / o क्या प्रक्रिया कर रहा है।

SystemTap तैयार करें

[root@localhost ~]# stap-prep
snip

ट्रेस स्क्रिप्ट स्थापित करें

[root@localhost ~]# cat >/tmp/traceio2.stp
#! /usr/bin/env stap
global device_of_interest

probe begin {
  /* The following is not the most efficient way to do this.
      One could directly put the result of usrdev2kerndev()
      into device_of_interest.  However, want to test out
      the other device functions */
  dev = usrdev2kerndev($1)
  device_of_interest = MKDEV(MAJOR(dev), MINOR(dev))
}

probe vfs.write, vfs.read
{
  if (dev == device_of_interest)
        printf ("%s(%d) %s 0x%x\n",
            execname(), pid(), ppfunc(), dev)
}

जिस डिवाइस आईडी को आप मॉनिटर करना चाहते हैं, उसका चित्र बनाएं, इस मामले में मैं मॉनिटर करने जा रहा हूं / dev / sda5

[root@localhost ~]#  df -k /
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda5       18141508 16293424    903496  95% /
[root@localhost ~]# ls -l /dev/sda5
brw-rw----. 1 root disk 8, 5 Jul  1 01:21 /dev/sda5
[root@localhost ~]# 

मॉनिटर, हेक्स में प्रमुख + लघु संख्या (8,5) का उपयोग कर। अपराधी का पता लगाएं। ख़ुश हो जाओ

[root@localhost ~]# /tmp/traceio2.stp 0x805
accounts-daemon(434) vfs_read 0x800005
accounts-daemon(434) vfs_read 0x800005
accounts-daemon(434) vfs_read 0x800005
lightdm(503) vfs_write 0x800005
bash(3036) vfs_read 0x800005
bash(3036) vfs_read 0x800005
^C
[root@localhost ~]#
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.