ทำให้ HDD อยู่ในโหมดเตรียมพร้อมหลังจาก X นาทีโดยใช้ hdparm ไม่ทำงาน


12

ฉันใช้ Ubuntu 12.04 บนเซิร์ฟเวอร์ภายในบ้าน มีฮาร์ดไดรฟ์ 5 ตัว: SSD หนึ่งตัวที่มีระบบปฏิบัติการและ HDD 4 ตัว (Samsung HD204UI) ที่กำหนดค่าเป็น RAID5 โดยใช้ mdadm

ฉันไม่ต้องการ RAID บ่อยนัก (พูดโดยเฉลี่ยประมาณวันละครั้ง) มันมีข้อมูลมัลติมีเดียและการสำรองข้อมูลบางอย่างดังนั้นฉันตัดสินใจที่จะทำให้ไดรฟ์อยู่ในสถานะเตรียมพร้อมเกือบตลอดเวลา

ฉันกำหนดค่าไดรฟ์ให้หมุนโดยอัตโนมัติหลังจาก 20 นาทีโดยใช้ hdparm นี่/dev/sdaเป็นตัวอย่าง:

hdparm -S 240 /dev/sda

ผลลัพธ์ของคำสั่งยืนยันสิ่งนี้:

/dev/sdb:
 setting standby to 240 (20 minutes)

แต่ปัญหาคือไดรฟ์หมุนลงหลังจากนั้นประมาณ 5 วินาที (แทน 20 นาที) หลังจากการเข้าถึงครั้งสุดท้ายและ

hdparm -C /dev/sdb

แสดง:

/dev/sdb:
 drive state is:  standby

ทำไมไดรฟ์ไม่รอ 20 นาทีตามที่กำหนดไว้? มีสิ่งที่ต้องทำด้วยการตั้งค่า RAID หรือไม่? (ฉันไม่คิดอย่างนั้น ... )

การหมดเวลาที่สั้นมากนี้เป็นปัญหาเนื่องจากมันเป็น RAID5 และเมื่อฉันเข้าถึงไฟล์มันจะถูกบล็อกแบบกระจายรอบ ๆ ไดรฟ์ทั้งสี่ เนื่องจากไม่จำเป็นต้องใช้ไดรฟ์ 1 เมื่ออ่านไดรฟ์ 2 จึงหยุดทำงานเมื่อใช้ครั้งต่อไป (หลังจากอ่านไดรฟ์ 3 แล้ว) ดังนั้นไดรฟ์จะหมุนขึ้นลงตลอดเวลาทำให้ปริมาณงานใกล้ศูนย์

สำหรับคนที่กังวลเกี่ยวกับอายุการใช้งานของไดรฟ์ของฉัน: มันจะไม่มีปัญหาว่าไดรฟ์ถูกหมุนขึ้นและลงโดยเฉลี่ยวันละครั้งเพราะฉันชอบการประหยัดพลังงานและความร้อนต่อสุขภาพของไดรฟ์ (ฉันใช้ RAID5 และเนื้อหาไม่ดี สำคัญมาก)


3
ดีใจที่คุณได้คำตอบของคุณที่นี่ ความอัปยศพวก ServerFault ช่างเลือกมาก ฉันคิดว่าเทคนิคการประหยัดพลังงานนั้นมีความสำคัญในทุกสถานการณ์ขององค์กร แต่พวกเขาจะพลาด
tomfanning

1
@tomfanning ฉันคิดว่า ServerFault นั้นเหมาะสำหรับเซิร์ฟเวอร์ขนาดใหญ่อย่างเช่นในดาต้าเซ็นเตอร์เท่านั้น แต่ฉันไม่รู้และฉันคาดว่าเซิร์ฟเวอร์ภายในบ้านจะนับเป็นเซิร์ฟเวอร์ด้วย ถ้าไม่ฉันควรวางเซิร์ฟเวอร์ไว้ในสวนของฉันดังนั้นมันจึงไม่อยู่ในบ้านของฉันอีกต่อไป สิ่งที่ฉันไม่เข้าใจจริง ๆ คือเหตุผลที่พวกเขาไม่ได้อยู่กับสิ่งที่ฉันต้องการและตอบคำถามหากพวกเขามีคำตอบที่สร้างสรรค์สำหรับคำถามของฉัน แต่ต้องการให้ฉันปล่อยให้มันเป็นสิ่งที่ฉันต้องการ [สำหรับคนอื่นที่ไม่รู้ว่าเรากำลังพูดถึงอะไร: serverfault.com/q/389222/116951]
leemes

คำตอบ:


11

AHCI เปิดใช้งานใน BIOS ของคุณหรือไม่ หากไม่ลองเปิดเครื่องแล้วลองใหม่อีกครั้ง

หากยังไม่สามารถใช้งานได้คุณอาจต้องลองทำอะไรที่ซับซ้อนกว่าhdparmนี้บ้างเพราะไม่ได้เล่นกับไดรฟ์ SATA เสมอซึ่งเป็นสิ่งที่ฉันเข้าใจว่าคุณมี

ลองดูหน้านี้เพื่อดูวิธีแก้ปัญหาง่ายๆที่ใช้ crontab:

sudo apt-get install sg3-utils
crontab -e

ตอนนี้เพิ่มที่ด้านล่างของ crontab ของคุณ (แทนที่ sdx ด้วยไดรฟ์ที่คุณต้องการใส่ในโหมดสแตนด์บาย):

0-59/15 * * * * ( if [ ! -f /dev/shm/1 ] ; then touch /dev/shm/1 /dev/shm/2; fi ; mv /dev/shm/1 /dev/shm/2; cat /proc/diskstats > /dev/shm/1 ) >/dev/null 2>&1
0-59/15 * * * * ( export HD="sdx "; if [ "$(diff /dev/shm/1 /dev/shm/2 | grep $HD )" =  "" ] ; then /usr/bin/sg_start --stop /dev/$HD; fi ) >/dev/null 2>&1

แน่นอนว่าก่อนที่จะลองทำสิ่งนี้ขอแนะนำอย่างยิ่งให้ทำการสำรองข้อมูลทั้งหมดของฮาร์ดไดรฟ์ของคุณ


ทำงานเหมือนจับใจ ฉันเปิดใช้งาน AHCI ใน BIOS โหมด SATA ถูกตั้งค่าเป็น RAID (เมนบอร์ดของฉันมีคอนโทรลเลอร์ RAID บนบอร์ดซึ่งฉันไม่ได้ใช้) ฉันไม่รู้ว่า AHCI นั้นจำเป็นสำหรับการควบคุม SMART ของไดรฟ์ SATA ที่เหมาะสมหรือสิ่ง hdparm กำลังทำอยู่ที่นี่ ขอบคุณ!
leemes

ครับ @SirCharlo อะไรคือคำสั่งพื้นฐานในการสร้าง hdd ในโหมดแสตนด์บาย (โดยใช้มันsg3-utils)? มันคือ/usr/bin/sg_start --stop /dev/sdxอะไร
Oki Erie Rinaldi

1

อาจเป็นวิธีที่ดีกว่านี้:

hdparm -B 1 -Y / dev / อุปกรณ์
hdparm -B 255 / dev / อุปกรณ์

hdparm แรกทำให้อุปกรณ์สแตนด์บายทันที อันที่สองปิด APM ดังนั้นดิสก์จะยังคงอยู่ในโหมดสแตนด์บายจนกระทั่งการเข้าถึงดิสก์ครั้งต่อไป


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