Bagaimana saya bisa mengendalikan waktu putar HDD?


71

Saya memiliki 2 HDD di PC saya. Ubuntu mematikan HDD sekunder dengan sangat cepat setelah sekitar 15 menit, yang merupakan kependekan dari saya. Saya perlu mengendalikan waktu ini. Bagaimana saya bisa melakukannya?

Saya mencoba manajemen daya GNOME tetapi tidak menemukannya berguna.

Jawaban:


67

Lihatlah hdparm.

Dari manual ( man hdparmpada baris perintah):

-S Mengatur batas waktu siaga (spindown) untuk drive. Nilai ini digunakan oleh drive untuk menentukan berapa lama menunggu (tanpa aktivitas disk) sebelum mematikan motor spindel untuk menghemat daya. Dalam keadaan seperti itu, drive mungkin memakan waktu selama 30 detik untuk menanggapi akses disk berikutnya, meskipun kebanyakan drive jauh lebih cepat.

Pengkodean nilai batas waktu agak aneh. Nilai nol berarti "batas waktu dinonaktifkan": perangkat tidak akan secara otomatis memasuki mode siaga. Nilai dari 1 hingga 240 menentukan kelipatan 5 detik, menghasilkan batas waktu dari 5 detik hingga 20 menit. Nilai dari 241 hingga 251 menentukan dari 1 hingga 11 unit 30 menit, menghasilkan batas waktu dari 30 menit hingga 5,5 jam. Nilai 252 menandakan batas waktu 21 menit. Nilai 253 menetapkan periode waktu habis yang ditentukan vendor antara 8 dan 12 jam, dan nilai 254 dicadangkan. 255 diartikan sebagai 21 menit plus 15 detik. Perhatikan bahwa beberapa drive yang lebih lama mungkin memiliki interpretasi yang sangat berbeda dari nilai-nilai ini.

Jadi sudo hdparm -I /dev/sdb | grep levelakan menampilkan nilai spindown saat ini, misalnya:

Advanced power management level: 254

Dari manual: 254 dicadangkan jadi saya berharap ini adalah default Ubuntu (dapatkah ada yang mengkonfirmasi / memperluas ini?)

Contoh:

sudo hdparm -S 25 /dev/sdb = spindown setelah 25 * 5 detik.

sudo hdparm -S 245 /dev/sdb = spindown setelah (245-240) * 30 menit.


terima kasih Rinzwind untuk tipsnya, yang membantu saya banyak tetapi saya berharap saya melihat ini untuk gui di rilis Ubuntu berikutnya atau dapat diintegrasikan dalam gnome power manager
user16295

4
Mengenai jawaban lzap Anda tampaknya grepuntuk APM ( -Bparm) tetapi berbicara tentang -Sspindown. Apakah Anda juga tahu sesuatu tentang APM?
turbo

3
-BPengaturan saat ini ditunjukkan seperti yang ditunjukkan di atas. Bagaimana saya bisa melihat -Spengaturan saat ini ?
SabreWolfy

5
sudo hdparm -y /dev/sdbmembunuh binatang itu dengan segera
siamii

1
@ SabreWolfy Saya sudah menanyakan itu sebagai pertanyaan terpisah: Bagaimana saya bisa mengetahui waktu putaran drive saat ini?
ændrük

46

Utilitas Disk -> pilih drive HDD -> klik ikon "Tindakan lainnya ..." di sudut kanan atas -> Pengaturan drive ...

Milik saya terlihat seperti ini: tangkapan layar


6
Paling mudah sejauh ini, terima kasih! (BTW paket yang harus Anda instal jika Anda tidak memilikinya gnome-disk-utility.
Gerhard Burger

cara untuk pergi linux! +1
neu-rah

Ya, sangat mudah - senang ini ada di sini.
Zzzach ...

@ Ray Anda, tuan, luar biasa! Saya pada dasarnya tidak punya harapan bahwa itu akan bekerja untuk HDD eksternal tetapi ternyata berhasil!
UTF-8

1
Mengapa sebagian besar tip melibatkan pengeditan file rawan kesalahan atau operasi konsol, sementara alat yang ramah pengguna seperti ini sudah keluar!
WooYek

30

Jika Anda tertarik untuk melakukan pengaturan hdparm secara persisten di antara reboot, alih-alih menambahkannya ke crontab, Anda dapat menggunakan /etc/hdparm.conf. Saya memiliki yang berikut ini, perhatikan penggunaan huruf kapital S, bukan huruf kecil:

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

Tambahkan baris yang menggantikan UUID oleh Anda, atau Anda juga dapat menentukan perangkat menggunakan /dev/sdXformat. Anda dapat mengetahui UUID disk Anda dengan perintah sudo blkid.


3
Apakah benar menggunakan command_linesaat ini? Saya punya contoh berbeda di /etc/hdparm?
Dims

1
Jawaban Ondra Žižka tampaknya lebih terkini.
Raphael

9
  1. Temukan UUID disk Anda .

    sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
    
  2. Sunting /etc/hdparm.conf

    sudo -H gedit /etc/hdparm.conf  # Be careful from now on
    
  3. Cari spindown-timeatau bagian pengaturan disk Anda.

    /dev/disk/by-label/4TB {
        spindown_time = 1200
    }
    
  4. Saya lebih suka merujuk ke disk oleh UUID yang tetap sama di instalasi yang berbeda (kecuali jika Anda mengubahnya di HW itu sendiri).

    /dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
        spindown_time = 1200
    }
    
  5. Jika skrip init menyebabkan masalah boot, Anda bisa meneruskan nohdparm baris perintah kernel, dan skrip tidak akan dijalankan.


Apa unit untuk parameter itu?
detly

IIRC, ini detik. Atau mungkin ini adalah parameter yang memiliki aturan liar seperti "jika di bawah 10, lalu puluhan detik, jika di bawah 100, maka itu menit", dan semacamnya. Saya harus mencari.
Ondra Žižka

2
Ini bukan unit, periksa ini: wiki.archlinux.org/index.php/Hdparm
Ondra Žižka

Cheers, entah kenapa aku tidak bisa menemukannya man hdparm.conf.
detly

man hdparm.confsecara tidak langsung membaca bahwa nilai diteruskan ke -Skarenanya untuk nilai <255 harus kompatibel dengan aturan dalam jawaban teratas . Setiap informasi lebih lanjut disambut.
dma_k

8

Setelah menghabiskan berjam-jam saya menemukan bahwa drive WDC saya tidak mendukung perintah hdparm -S, tidak peduli nilai atribut idle3 (google: idle3ctl). Dan itu adalah masalah umum dengan drive WD. Tapi saya senang mengumumkan bahwa hd-idle ( http://hd-idle.sourceforge.net/ ) berfungsi dengan sempurna. Jika diinstal dari paket dpkg-builded (lihat Catatan Instalasi), ia menciptakan daemon di ubuntu dan debian (konfigurasi ada di / etc / default / hd-idle). Berfungsi dengan baik setelah melanjutkan dari hibernasi juga.

mc default # ps aux | grep hd-idle | grep -v grep | cut -c 66-; untuk f dalam [iklan]; lakukan hdparm -C / dev / sd $ f | grep -v "^ $"; Selesai
/ usr / sbin / hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log
/ dev / sda:
 kondisi drive adalah: aktif / idle
/ dev / sdb:
 kondisi drive adalah: standby
/ dev / sdc:
 kondisi drive adalah: standby
/ dev / sdd:
 kondisi drive adalah: standby



5

Saya menemukan bahwa perilaku spindown Samsung HD204UI tergantung pada level APM ( hdparm -B). Jika level APM adalah 127, batas waktu spindown adalah 10 detik. Jika level APM adalah 150, batas waktu spindown ditentukan oleh -Sopsi.


hdparm dapat diatur tetapi tidak mendapatkan -Sopsi (lihat Cara menentukan waktu spindown disk ). Untuk mendapatkannya, gunakan perangkat lunak GUI "Disk". Lihat jawaban lain dengan tangkapan layar.
KrisWebDev

5

Saya menambahkan sesuatu seperti:

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

ke root crontab. Menggunakan uuid lebih baik saya pikir karena sda/ sdbdll tampaknya berubah setiap kali reboot


10
Kenapa tidak digunakan hdparm.conf?
ændrük

3

Di Ubuntu 14.04

Disk> sorot drive> klik gir di sudut kanan atas> Pengaturan Drive> sekarang Anda memiliki pengaturan Standby, APM, AAM dan Write Cache dalam GUI yang mudah digunakan!


Bagaimana Anda membuat ini bekerja? Saya telah mengatur ini, dan setelah reboot jika saya kembali di dalamnya telah mengingat bahwa drive harus dimatikan, tetapi tidak pernah melakukannya. hdparm -C selalu menunjukkannya aktif dan hanya menjalankan hdparm -S xxx dari commandline membuatnya bekerja.
dan carter

1
Di mana Anda menemukan "Disk"?
nealmcb

1

Pada Debian, dengan drive WD, saya menemukan bahwa pengaturan level apa pun dengan hdparm -S menghasilkan drive mengembalikan level 254 pada hdparm berikutnya -I . Jadi saya benar-benar tidak yakin apakah mereka berputar atau tidak. Saya pikir mereka masih berputar.

Drive-drive ini berada pada larik server, dan saya benar-benar tidak ingin mereka pernah berputar. Di masa lalu saya telah mengurangkan ini dengan menetapkan tugas cron untuk memperbarui file setiap beberapa menit.


1

Saya tidak beruntung dengan hdparm pada HDD eksternal yang dipasang di kandang USB, yang saya gunakan untuk melayani media dengan minidlna.

Saya mendapat ide dari sini: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping-while-mounted

Hasil terbaik berasal dari penggunaan uuid disk, yang dapat Anda temukan dengan:

sudo blkid

Metode berikut memang membutuhkan akses root, tetapi begitu juga hdparm. Ini menggunakan crontab untuk membaca blok acak dari drive setiap 5 menit dan mengabaikan semua pesan. Untuk memastikan Anda memiliki UUID yang tepat, ujilah di baris perintah seperti ini (pastikan Anda menggunakan UUID yang Anda inginkan, bukan yang ini):

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

Anda akan melihat output seperti ini:

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

Untuk menekan pesan ini, yang akhirnya bisa ditulis di suatu tempat, berpotensi / filesystem (yang ada di SSD dalam kasus saya), di bawah ini adalah apa yang saya gunakan di root crontab. Anda sampai di sana bersama

sudo crontab -e

Kemudian, di bawah komentar:

*/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

Semoga ini bisa membantu orang lain dengan masalah serupa. Sayangnya, ini masih ditulis ke syslog, tetapi ada kemungkinan cara untuk menekannya; lihat posting ServerFault ini .

[sunting] 2017-01-07 09:02:

Saya dapat menekan pesan-pesan ini dengan mengedit /etc/rsyslog.d/50-default.conf untuk mengubah baris ini:

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

untuk ini:

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

Sayangnya, ini menekan semua pesan cron; Saya tidak bisa mendapatkan cron untuk mengarahkan kembali log dari sistem file root (yang ada pada SSD yang sudah tua dalam kasus saya, jadi saya ingin membatasi menulis), tetapi karena ini hanya server rumah, saya mungkin tidak kehilangan banyak. Pasti tidak akan merekomendasikan strategi ini untuk mesin produksi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.