ค้นหาสิ่งที่กำลังหมุนฮาร์ดไดรฟ์


10

ฉันเป็นเจ้าของ NAS ใช้งาน Linux บางตัว มันมาพร้อมกับส่วนหน้าของการดูแลเว็บที่ฉันสามารถจัดการบริการต่างๆสิทธิของผู้ใช้และเมื่อใดที่ควรเข้าสู่โหมดสลีป ปัญหาของฉันคือด้วยเหตุผลบางอย่างเมื่อ NAS เข้าสู่โหมดนอนหลับฮาร์ดไดรฟ์จะเปิดขึ้นอีกครั้งหลังจากผ่านไปสองสามนาที จากนั้นมันจะหมุนไปสักพักแล้วนอนอีกครั้ง สิ่งนี้จะดำเนินต่อไปเรื่อย ๆ

ฉันจะพยายามหาสาเหตุของสิ่งนี้ได้อย่างไร ฉันยังใหม่กับ Linux แต่ฉันสามารถเข้าถึงรูทได้และตอนนี้มีการเชื่อมต่อ SSH


นี่เก่ามาก แต่อาจมีเคล็ดลับที่เกี่ยวข้อง
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

คุณมีปลั๊กอินการวิเคราะห์ / ชอบบางอย่างที่มีเว็บ / ส่วนต่อประสานกับกล่อง NAS หรือไม่? รายละเอียดกล่อง NAS คืออะไร ฉันสงสัยว่ามีเครื่องมือ systemtap บางตัวที่สามารถใช้ในการตรวจสอบกิจกรรมของดิสก์ systemtap พร้อมใช้งานสำหรับเคอร์เนล Linux รุ่นที่ใหม่กว่าเท่านั้น
Nikhil Mulley

NAS เป็นเครือข่าย Lacie d2 ไม่มีตัวเลือกปลั๊กอิน แต่ฉันเดาว่าฉันสามารถโหลดสิ่งใด ๆ ลงไปได้ มันทำงานบนเว็บเซิร์ฟเวอร์ Green Unicorn เคอร์เนลคือ 2.6.31.14-svn6790
Andreas

คำตอบ:


6

inotify-toolsเป็นวิธีง่ายๆในการทำสิ่งนี้ มีหลายตัวอย่างในไซต์ของพวกเขาที่สามารถทำสิ่งที่คุณต้องการได้ (ดูตัวอย่าง inotifywatch สำหรับตัวอย่างพื้นฐานจริงๆ)


ฉันกำลังดูสิ่งนี้อยู่ ก่อนอื่นฉันต้องคอมไพล์ซอร์สสำหรับซีพียู ARMv5TE นั่นอาจพิสูจน์ได้ว่าเป็นเรื่องยากพอ :)
Andreas


2

เคล็ดลับอื่น: ใช้ Systemtap มีสคริปต์โพรบจำนวนมากบนไซต์ของ systemtap มีประโยชน์มากพอที่จะค้นหาผู้ร้าย

ในกรณีอื่นทั้งหมด

/proc/sys/vm/block_dumpหากคุณต้องการที่จะหากระบวนการที่ก่อให้เกิดดิสก์หมุนขึ้นคุณสามารถรวบรวมข้อมูลโดยการตั้งธง เมื่อตั้งค่าสถานะนี้แล้ว Linux จะรายงานการอ่านและเขียนดิสก์ทั้งหมดที่เกิดขึ้นและการบล็อกสิ่งสกปรกทั้งหมดที่ทำกับไฟล์ สิ่งนี้ทำให้สามารถดีบักสาเหตุที่ดิสก์ต้องการหมุนและเพิ่มอายุการใช้งานแบตเตอรี่ให้ยาวนานยิ่งขึ้น เอาต์พุตของ block_dump ถูกเขียนไปยังเคอร์เนลเอาต์พุตและสามารถดึงข้อมูลได้โดยใช้ "dmesg" หรือดูสิ่งอำนวยความสะดวก syslog kern ของคุณสำหรับปลายทางของข้อความดีบัก /var/log/debugโดยทั่วไปแล้วมันควรจะเป็น เมื่อคุณใช้ block_dump และระดับการบันทึกเคอร์เนลของคุณยังรวมถึงข้อความการดีบักเคอร์เนลคุณอาจต้องการปิด klogd มิฉะนั้นเอาต์พุตของ block_dump จะถูกบันทึกไว้ซึ่งจะทำให้กิจกรรมของดิสก์ไม่ปกติ


2

คุณต้องบอกเคอร์เนลเพื่อแจ้งให้คุณทราบถึงการอ่าน / เขียนไปยังดิสก์ทั้งหมดจากนั้นคุณต้องดูข้อมูลนั้น

ดังนั้น:

# sync
# echo 1 > /proc/sys/vm/block_dump
# dmesg -c | grep '/dev/sda'

syncล้างข้อมูลการเขียนที่ค้างอยู่ทั้งหมดลงในดิสก์เพื่อให้คุณเห็นเฉพาะการอ่านหรือการเขียนใหม่เท่านั้น
dmesg -cแสดงให้คุณเห็นข้อความเคอร์เนลและล้างพวกเขา (มิฉะนั้นคุณจะเห็นข้อความเก่าเช่นกันทุกครั้งที่คุณเรียกใช้ dmesg) grepกรองผลลัพธ์ของ dmesg สำหรับกิจกรรมสำหรับดิสก์ที่คุณสนใจแทนที่ / dev / sda ด้วยอุปกรณ์จริงของคุณ

ฉันมักจะใช้สิ่งนี้เพื่อหมุนดิสก์จากนั้นตรวจสอบเมื่อมันหมุนขึ้นอีกครั้ง:

# sync
# hdparm -y /dev/sda
# while true; do hdparm -C /dev/sda ; sleep 600 ; done

การwhileวนซ้ำตรวจสอบสถานะดิสก์ที่แอ็คทีฟ / ไม่ได้ใช้งานทุก 10 นาที เมื่อคุณเห็นพลังเพิ่มขึ้นให้เรียกใช้dmesgบรรทัดด้านบนเพื่อดูรายละเอียดเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.