ฉันจะควบคุมเวลาหมุนของ HDD ได้อย่างไร


71

ฉันมี HDD 2 ตัวในพีซีของฉัน Ubuntu ปิด HDD ตัวที่สองอย่างรวดเร็วหลังจากนั้นประมาณ 15 นาทีซึ่งสั้นสำหรับฉัน ฉันต้องการควบคุมเวลานี้ ฉันจะทำมันได้อย่างไร

ฉันลองใช้การจัดการพลังงานของ GNOME แต่ไม่พบว่ามีประโยชน์

คำตอบ:


67

hdparmมีลักษณะที่

จากคู่มือ ( man hdparmบนบรรทัดคำสั่ง):

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

การเข้ารหัสค่าการหมดเวลาค่อนข้างแปลกประหลาด ค่าศูนย์หมายถึง "การหมดเวลาถูกปิดใช้งาน": อุปกรณ์จะไม่เข้าสู่โหมดสแตนด์บายโดยอัตโนมัติ ค่าตั้งแต่ 1 ถึง 240 ระบุทวีคูณเป็น 5 วินาทีโดยให้ระยะหมดเวลาจาก 5 วินาทีถึง 20 นาที ค่าจาก 241 ถึง 251 ระบุจาก 1 ถึง 11 หน่วย 30 นาทีให้เวลาหมดจาก 30 นาทีถึง 5.5 ชั่วโมง ค่า 252 หมายถึงหมดเวลา 21 นาที ค่า 253 กำหนดช่วงเวลาการหมดเวลาที่ผู้ขายกำหนดระหว่าง 8 ถึง 12 ชั่วโมงและสงวนค่า 254 ไว้ 255 ถูกตีความว่าเป็น 21 นาทีและ 15 วินาที โปรดทราบว่าไดรฟ์รุ่นเก่าบางรุ่นอาจมีการตีความค่าเหล่านี้แตกต่างกันมาก

ดังนั้นsudo hdparm -I /dev/sdb | grep levelจะแสดงค่าสปินดาวน์ปัจจุบันตัวอย่างเช่น:

Advanced power management level: 254

จากคู่มือ: 254 ถูกสงวนไว้ดังนั้นฉันคาดว่ามันจะเป็นค่าเริ่มต้นของ Ubuntu (ทุกคนสามารถยืนยัน / ขยายในเรื่องนี้ได้โปรด?)

ตัวอย่าง:

sudo hdparm -S 25 /dev/sdb = spindown หลังจาก 25 * 5 วินาที

sudo hdparm -S 245 /dev/sdb = spindown หลังจาก (245-240) * 30 นาที


ขอบคุณ Rinzwind สำหรับเคล็ดลับที่ช่วยฉันมาก แต่ฉันหวังว่าฉันจะเห็น gui นี้ในรุ่นถัดไปของ Ubuntu หรือมันอาจจะรวมอยู่ใน gnome power manager
user16295

4
เกี่ยวกับคำตอบของ lzap คุณดูเหมือนจะgrepAPM ( -Bparm) แต่พูดคุยเกี่ยวกับ-Sspindown คุณรู้จัก APM บ้างไหม?
เทอร์โบ

3
การ-Bตั้งค่าปัจจุบันจะแสดงตามที่ระบุไว้ข้างต้น ฉันจะดูการ-Sตั้งค่าปัจจุบันได้อย่างไร
SabreWolfy

5
sudo hdparm -y /dev/sdbฆ่าสัตว์ร้ายทันที
siamii

1
@ SabreWolfy ฉันได้ถามว่าเป็นคำถามแยกต่างหาก: ฉันจะหาเวลาสปินดาวน์ของไดรฟ์ปัจจุบันได้อย่างไร
ændrük

46

Disk Utility -> เลือก HDD drive -> คลิกที่ไอคอน "More actions ... " ที่มุมบนขวา -> Drive settings ...

ของฉันมีลักษณะเช่นนี้: ภาพหน้าจอ


6
ง่ายที่สุดโดยไกลขอบคุณ! (BTW แพคเกจที่คุณจำเป็นต้องติดตั้งถ้าคุณไม่ได้นี้คือgnome-disk-utility.
แกร์ฮาร์ดเบอร์เกอร์

วิธีที่จะไปลินุกซ์! +1
neu-rah

ใช่ง่ายมาก - ดีใจที่อยู่ตรงนี้
Zzzach ...

@ เรย์คุณครับน่ากลัว! โดยทั่วไปฉันไม่มีความหวังว่ามันจะใช้ได้กับ HDD ภายนอก แต่มันก็ทำได้!
UTF-8

1
ทำไมเคล็ดลับส่วนใหญ่ถึงมีข้อผิดพลาดเกิดขึ้นได้ง่ายในการแก้ไขไฟล์หรือการดำเนินการของคอนโซล
WooYek

29

หากคุณสนใจในการทำการตั้งค่าของ hdparm ถาวรระหว่างเรียบแทนที่จะเพิ่มไปยัง crontab /etc/hdparm.confคุณสามารถใช้ ฉันมีสิ่งต่อไปนี้โปรดสังเกตการใช้ตัวพิมพ์ใหญ่ S ไม่ใช่ตัวพิมพ์เล็ก:

command_line {
    hdparm -S 25 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215 
}

เพิ่มบรรทัดนั้นแทน UUID โดยคุณหรือคุณอาจระบุอุปกรณ์โดยใช้/dev/sdXรูปแบบ คุณสามารถหา UUID sudo blkidดิสก์ของคุณด้วยคำสั่ง


3
มันถูกต้องที่จะใช้command_lineในปัจจุบัน? ผมมีตัวอย่างที่แตกต่างกันในของฉัน/etc/hdparm?
Dims

1
คำตอบของ Ondra Žižkaดูเหมือนจะทันสมัยมากขึ้น
Raphael

9
  1. ค้นหา UUID

    sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
    
  2. แก้ไข /etc/hdparm.conf

    sudo -H gedit /etc/hdparm.conf  # Be careful from now on
    
  3. ค้นหาspindown-timeหรือส่วนการตั้งค่าดิสก์ของคุณ

    /dev/disk/by-label/4TB {
        spindown_time = 1200
    }
    
  4. ฉันชอบอ้างถึงดิสก์โดย UUID ซึ่งยังคงเหมือนเดิมในการติดตั้งที่แตกต่างกัน (เว้นแต่คุณจะเปลี่ยนใน HW เอง)

    /dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
        spindown_time = 1200
    }
    
  5. หากสคริปต์เริ่มต้นทำให้เกิดปัญหาการบู๊ตคุณสามารถส่งผ่านnohdparm บรรทัดคำสั่งเคอร์เนลและสคริปต์จะไม่ถูกเรียกใช้


หน่วยของพารามิเตอร์นั้นคืออะไร?
Detly

IIRC มันเป็นวินาที หรือนี่อาจเป็นพารามิเตอร์ที่มีกฎไวด์เช่น "ถ้าต่ำกว่า 10 แล้วก็นับเป็นสิบวินาทีถ้าต่ำกว่า 100 ก็เป็นนาที" และเช่นนั้น ฉันต้องการค้นหา
Ondra Žižka

2
ไม่ใช่หน่วยตรวจสอบสิ่งนี้: wiki.archlinux.org/index.php/Hdparm
Ondra Žižka

man hdparm.confไชโยด้วยเหตุผลบางอย่างผมไม่สามารถหาได้ใน
Detly

man hdparm.confอ้อมอ่านว่าค่าที่ถูกส่งผ่านไป-Sด้วยเหตุนี้ค่า <255 ควรจะเข้ากันได้กับกฎในคำตอบด้านบน ยินดีต้อนรับข้อมูลเพิ่มเติมใด ๆ
dma_k

8

หลังจากใช้เวลาหลายชั่วโมงฉันพบว่าไดรฟ์ WDC ของฉันไม่รองรับคำสั่ง hdparm -S ไม่ว่าจะเป็นค่าแอตทริบิวต์ idle3 (google: idle3ctl) ก็ตาม และนั่นเป็นปัญหาที่พบได้ทั่วไปกับไดรฟ์ WD แต่ฉันยินดีที่จะประกาศว่า hd-idle ( http://hd-idle.sourceforge.net/ ) ทำงานได้อย่างไม่มีที่ติ หากติดตั้งจากแพ็กเกจ dpkg-builded (ดูหมายเหตุการติดตั้ง) จะสร้าง daemon บนทั้ง ubuntu และ debian (config อยู่ใน / etc / default / hd-idle) ทำงานได้ดีหลังจากกลับมาทำงานจากโหมดไฮเบอร์เนตเช่นกัน

mc ค่าเริ่มต้น # ps aux | grep hd-idle | grep -v grep | ตัด -c 66-; สำหรับ f ใน [ad]; ทำ hdparm -C / dev / sd $ f | grep -v "^ $"; เสร็จแล้ว
/ usr / sbin / hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log
/ dev / SDA:
 สถานะไดรฟ์คือ: active / idle
dev / sdb /:
 สถานะไดรฟ์คือ: สแตนด์บาย
/ dev / SDC:
 สถานะไดรฟ์คือ: สแตนด์บาย
/ dev / SDD:
 สถานะไดรฟ์คือ: สแตนด์บาย



5

ฉันค้นพบว่าพฤติกรรมของแกนหมุนของ Samsung HD204UI ขึ้นอยู่กับระดับ APM ( hdparm -B) หากระดับ APM คือ 127 การหมดเวลาของสปินด์ดาวน์คือ 10 วินาที หากระดับ APM คือ 150 การหมดเวลาของสปินดาวน์จะถูกกำหนดโดย-Sตัวเลือก


hdparm สามารถตั้งค่า แต่ไม่ได้รับ-Sตัวเลือก (ดูวิธีการกำหนดเวลาของดิสก์ ) เพื่อให้ได้ใช้ซอฟต์แวร์ GUI "Disk" ดูคำตอบอื่น ๆ ที่มีภาพหน้าจอ
KrisWebDev

5

ฉันเพิ่มสิ่งที่ชอบ:

@reboot sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e  > /dev/null 2> /dev/null

เพื่อรากของ crontab การใช้ uuid นั้นดีกว่าฉันคิดว่าเพราะsda/ sdbฯลฯ ดูเหมือนว่าจะมีการเปลี่ยนแปลงในการรีบูตทุกครั้ง


10
ทำไมไม่ใช้hdparm.conf?
ændrük

3

ใน Ubuntu 14.04

ดิสก์> ไฮไลต์ไดรฟ์> คลิกเกียร์ที่มุมขวาบน> การตั้งค่าไดรฟ์> ตอนนี้คุณมีการตั้งค่าสแตนด์บาย, APM, AAM และเขียนแคชใน GUI ที่ใช้งานง่าย!


คุณทำงานนี้ได้อย่างไร ฉันได้ตั้งค่านี้และหลังจากรีบูตถ้าฉันย้อนกลับไปในจำได้ว่าไดรฟ์ควรปิดตัวลง แต่มันไม่เคยทำ hdparm -C แสดงว่ามันทำงานอยู่เสมอและการเรียกใช้ hdparm -S xxx จาก commandline ทำให้มันทำงานได้เสมอ
แดนคาร์เตอร์

1
คุณพบ "ดิสก์" ที่ไหน
nealmcb

1

บน Debian ด้วยไดรฟ์ WD ฉันพบว่าการตั้งค่าระดับใด ๆ กับhdparm -S จะส่งผลให้ไดรฟ์กลับสู่ระดับ 254 ในhdparm -Iถัดไป ดังนั้นฉันไม่แน่ใจว่าพวกเขาจะปั่นป่วนหรือไม่ ฉันคิดว่าพวกเขายังคงปั่นป่วน

ไดรฟ์เหล่านี้อยู่ในอาร์เรย์ของเซิร์ฟเวอร์และฉันไม่ต้องการให้พวกเขาปั่นป่วน ก่อนหน้านี้ฉันเคยทำสิ่งนี้โดยการตั้งค่างาน cron เพื่ออัปเดตไฟล์ทุกสองสามนาที


1

ฉันไม่มีโชคกับ hdparm บน HDD ภายนอกที่ติดตั้งในตู้ USB ซึ่งฉันใช้เพื่อให้บริการสื่อด้วย minidlna

ฉันเจอความคิดจากที่นี่: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping-while-mounted

ผลลัพธ์ที่ดีที่สุดมาจากการใช้ดิสก์ uuid ซึ่งคุณสามารถค้นหาได้ด้วย:

sudo blkid

วิธีการต่อไปนี้ต้องการการเข้าถึงรูท แต่ทำเช่นนั้น hdparm สิ่งนี้ใช้ crontab เพื่ออ่านบล็อกแบบสุ่มจากไดรฟ์ทุก 5 นาทีและไม่สนใจข้อความทั้งหมด เพื่อให้แน่ใจว่าคุณมี UUID ที่ถูกต้องให้ทดสอบบนบรรทัดคำสั่งเช่นนี้ (ตรวจสอบให้แน่ใจว่าคุณใช้ UUID ที่คุณต้องการไม่ใช่แบบนี้):

sudo dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM

คุณควรเห็นผลลัพธ์เช่นนี้

1+0 records in
1+0 records out
512 bytes copied, 0.000738308 s, 693 kB/s`

เพื่อระงับข้อความนี้ซึ่งอาจจบลงด้วยการเขียนที่ใดที่หนึ่งอาจเป็นไปได้ว่า / filesystem (ซึ่งอยู่ใน SSD ในกรณีของฉัน) ด้านล่างเป็นสิ่งที่ฉันใช้ใน root crontab คุณไปถึงที่นั่นด้วย

sudo crontab -e

จากนั้นภายใต้ความคิดเห็น:

*/5 * * * * bash -c 'dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM' >/dev/null 2>&1

หวังว่านี่จะช่วยคนอื่นในเรื่องที่คล้ายกัน น่าเสียดายที่สิ่งนี้ยังคงถูกเขียนลงใน syslog แต่อาจมีวิธีที่จะระงับได้ ดูโพสต์ ServerFaultนี้

[แก้ไข] 2017-01-07 09:02:

ฉันสามารถระงับข้อความเหล่านี้ได้โดยแก้ไข /etc/rsyslog.d/50-default.conf เพื่อเปลี่ยนบรรทัดนี้:

*.*;auth,authpriv.none -/var/log/syslog

สำหรับสิ่งนี้:

*.*;cron,auth,authpriv.none -/var/log/syslog

น่าเสียดายที่สิ่งนี้จะระงับข้อความ cron ทั้งหมด ฉันไม่สามารถรับ cron เพื่อเปลี่ยนเส้นทางการล็อกออกจากระบบไฟล์รูท (ซึ่งอยู่ใน SSD แบบเก่าในกรณีของฉันดังนั้นฉันต้องการ จำกัด การเขียน) แต่เนื่องจากนี่เป็นเพียงเซิร์ฟเวอร์ภายในบ้านฉันอาจไม่พลาดอะไรมากมาย จะไม่แนะนำกลยุทธ์นี้สำหรับเครื่องจักรที่ผลิต

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