Bagaimana cara menonaktifkan hard disk spin down atau head parking di FreeBSD?

Dec 23 2020

Saya telah membangun file server FreeBSD baru dengan beberapa HDD. Saya menemukan setiap kali disk tidak diakses untuk sementara waktu, disk akan berputar sepenuhnya atau memarkir kepalanya. Bagaimana cara menonaktifkan spin down HDD atau head parking? Di Linux, saya tahu ini bisa dilakukan lewat hdparm, tapi bagaimana dengan FreeBSD?

catatan:

  1. AFAIK, Ini bukan pertanyaan duplikat. 99% dari hasil pencarian untuk "HDD spin down" di serverfault.com adalah khusus untuk Linux. Satu-satunya pertanyaan terkait "HDD spin down" di serverfault.com adalah Bagaimana membuat hard drive standby (spin down) pada timer? , yang tidak menjawab pertanyaan, dan menggunakan ataidle , usang sejak 2018-12-31. Kandidat lain termasuk Bagaimana cara mendapatkan FreeNAS untuk memutar disk? - tidak menjawab pertanyaan, atau Memeriksa apakah disk dalam keadaan tidur (FreeNAS) - menggunakan atacontrol, dihapus sejak FreeBSD 11.

  2. Hasil pencarian dari "freebsd spin down hard disk" di Google atau DuckDuckGo sebagian besar terdiri dari posting forum lama di forums.freebsd.org atau tutorial dari tempat lain, yang semuanya menyertakan saran ataidleatau atacontrolalat yang sekarang sudah usang . Selain itu, tidak ada posting yang menjelaskan hubungan antara mode Standby ATA dan APM, dan penjelasan tentang Kondisi Daya yang Diperpanjang tidak ada.

Oleh karena itu, saya yakin pertanyaan referensi "Bagaimana cara menonaktifkan pemutaran hard disk atau parkir kepala di FreeBSD" dengan penjelasan mendetail tentang ATA Standby, APM, dan EPC akan bermanfaat bagi komunitas, dan membantu pembaca lebih lanjut yang datang dari penelusuran mesin.

Jawaban

9 比尔盖子 Dec 23 2020 at 22:00

Pada FreeBSD 12, camcontroldigunakan untuk mengontrol manajemen daya HDD, termasuk pemintalan dan parkir keras. Sebelumnya, ataidleatau atacontroltelah digunakan, tetapi fungsinya telah digabungkan menjadi camcontrol, mereka tidak digunakan lagi dan tidak lagi didukung.

TL; DR

Anda harus menjalankan perintah ini setiap kali reboot. Misalnya, via /etc/rc.local.

Nonaktifkan pemutaran otomatis

Setel timer "Standby" ke 0detik, setel APM ke angka yang sama atau lebih besar 128, dan nonaktifkan timer "standby_z" EPC. Jangan lupa ganti ada1ke hard drive Anda.

# ATA has a "Standby" timer, but there's no "Idle" timer. The time
# `-t` is for standby timer.
# XXX: This command put the disk to Idle immediately, even if we only
# want to program a timer, there is no way to do that otherwise. 
# But it's only a one-time event on boot, it shouldn't matter.
camcontrol idle ada1 -t 0

# Enable APM should automatically disable EPC. If "camcontrol apm"
# succeeds but "camcontrol epc" fails, it's safe to ignore. Vice versa,
# if "camcontrol epc" succeeds but "camcontrol apm" fails, it's also
# safe to ignore.
camcontrol apm ada1 -l 128
camcontrol epc ada1 -c state -d -p standby_z

Ini seharusnya cukup baik untuk kebanyakan orang.

Nonaktifkan putaran bawah & parkir kepala otomatis

Setel timer "Standby" ke 0detik, nonaktifkan APM, dan nonaktifkan EPC.

Ini pada dasarnya menonaktifkan semua manajemen daya. Jika hard drive Anda mendukung EPC, disarankan untuk menggunakan solusi EPC di bawah ini (teruskan membaca), daripada menonaktifkan semua manajemen daya secara membabi buta. Selain itu, jika Anda tidak melihat peningkatan Jumlah Siklus Muat / Bongkar yang berlebihan di SMART, Anda mungkin tidak membutuhkannya, menonaktifkan spin down sudah cukup baik.

# There is a "Standby" timer, but there is no
# "Idle" timer. Actually both "standby -t" and
# "idle -t" program the same "Standby" timer.
camcontrol idle ada1 -t 0
# not specify a number = disable apm
camcontrol apm ada1
# EPC is not necessaily supported, it can fail
camcontrol epc ada1 -c disable

Terakhir, perlu dicatat bahwa tidak ada cara yang dijamin untuk menonaktifkan parkir kepala, pada akhirnya ini adalah perilaku khusus vendor dan model. Hal terbaik yang dapat kami coba adalah menonaktifkan manajemen daya sebanyak mungkin. Biasanya berfungsi, tetapi tidak berpengaruh pada beberapa model hard drive yang bermasalah (seperti WD Green). Satu-satunya cara untuk menyimpannya adalah menggunakan alat khusus vendor, yang berada di luar cakupan jawaban ini.

Nonaktifkan putaran bawah otomatis atau parkir kepala melalui EPC

Jika hard drive Anda mendukung EPC, disarankan untuk menggunakan solusi EPC di bawah ini (teruskan membaca) untuk menonaktifkan spin down atau head parking. Untuk mencegah HDD menurun, nonaktifkan standby_z. Untuk mencegah HDD dari parkir, nonaktifkan Idle_b, Idle_cdan standby_y.

Pertama, periksa apakah HDD Anda mendukung EPC.

# check whether EPC is supported
camcontrol identify ada1 | grep "Feature\|extended power conditions"

# see the current EPC power state
camcontrol epc ada1 -c status

Untuk mengaktifkan dan menonaktifkan spin-down melalui EPC ...

# disable APM first, and enable EPC.
# APM can fail if the HDD only support EPC, which is okay.
camcontrol apm ada1
camcontrol epc ada1 -c enable

# disable spin-down (Standby_z) via EPC
camcontrol epc ada1 -c state -d -p standby_z
# just in case, also disable the Standby timer
camcontrol idle ada1 -t 0

### Optional: disable head parking ###

# disable head parking (Idle_b, Idle_c, Standby_y)
camcontrol epc ada1 -c state -d -p idle_b
camcontrol epc ada1 -c state -d -p idle_c
camcontrol epc ada1 -c state -d -p standby_y

Penyelesaian masalah

Jika HDD Anda tidak mendukung APM, Anda akan mendapatkan error berikut. Jika HDD Anda hanya mendukung EPC, Anda dapat menggunakan EPC dan mengabaikan kesalahan ini.

camcontrol: ATA SETFEATURES ENABLE APM failed

Jika HDD Anda tidak mendukung EPC (atau jika EPC sudah sepenuhnya dinonaktifkan, misalnya juga, mengaktifkan APM akan menonaktifkan EPC secara otomatis), Anda dapat menggunakan APM dan mengabaikan kesalahan ini.

SETFEATURES EXTENDED POWER CONDITIONS. ACB: ef 4a 03 00 00 40 00 00 00 00 00 00
CAM status: ATA Status Error
ATA status: 51 (DRDY SERV ERR), error: 04 (ABRT )
RES: 51 04 00 00 00 00 00 00 00 00 00

Jika Anda tidak dapat menonaktifkan spin down hard disk atau head parking tidak dapat dinonaktifkan terlepas dari Standby / Idle Timer, APM, atau pengaturan EPC, sayangnya, hanya alat khusus vendor yang dapat membantu Anda. Itu di luar cakupan jawaban ini.


Penjelasan

Untuk memahami arti dari perintah-perintah tersebut, kita harus berhenti sejenak untuk mempelajari latar belakang teknisnya. Faktanya, manajemen daya HDD berantakan. Ini dikendalikan oleh tiga mekanisme independen, yaitu, ATA Command Set 2 (ATA8-ACS2) dasar , Advanced Power Management (APM) , dan Extended Power Condition (EPC) . Selain itu, jika kami menghitung fitur milik vendor yang ditemukan di beberapa hard disk Seagate dan WD Green, ada empat mekanisme secara total, tetapi di luar cakupan jawaban ini.

Untuk mendapatkan hasil yang diharapkan, masing-masing mekanisme ini harus dikonfigurasi dengan benar. Misalnya, jika pengatur waktu Siaga disk dinonaktifkan melalui Set Perintah ATA , tetapi APM masih disetel ke nilai yang lebih rendah dari 128, disk akan tetap berputar. Dan untuk memperumit masalah, tidak semua hard drive mendukung semua mekanisme ini. Misalnya, beberapa HDD kelas perusahaan tidak mendukung APM dan menggunakan EPC secara eksklusif, kami juga memiliki HDD yang mendukung EPC tetapi menonaktifkannya, secara default ke APM, sebagai tambahan, beberapa HDD generasi sebelumnya dan banyak HDD kelas konsumen tidak mendukungnya. t mendukung EPC sama sekali.

Untuk mendapatkan pengaturan yang diinginkan, setiap mekanisme manajemen daya harus dikonfigurasi dengan benar.

Set Perintah ATA 2 (ATA8-ACS2)

Spesifikasi ATA Command Set 2 mendukung manajemen daya dasar. Ini mendefinisikan empat status daya dalam drive ATA dan timer Siaga .

  1. Aktif –Perangkat penuh daya dan siap untuk mengirim / menerima data.

  2. Idle –Perangkat mampu merespons perintah tetapi perangkat mungkin membutuhkan waktu lebih lama untuk menyelesaikan perintah daripada saat dalam Activemode. Konsumsi daya perangkat dalam kondisi ini lebih rendah daripada mode Aktif. Jika ada hard drive, itu akan berputar.

  3. Siaga –Perangkat mampu merespons perintah tetapi perangkat mungkin membutuhkan waktu lebih lama (hingga 30 detik) untuk menyelesaikan perintah daripada dalam mode Idle. Konsumsi daya berkurang dari mode Idle. Jika ada hard drive, itu akan diputar ke bawah.

  4. Tidur - Ini adalah mode daya terendah. Antarmuka perangkat biasanya tidak aktif dan, jika ada hard drive, drive tersebut akan diputar ke bawah. Perangkat akan keluar dari mode Tidur hanya setelah menerima reset. Waktu bangun bisa selama 30 detik.

Sumber: SATA Power Management: It's Good to Be Green

Dengan kata lain, Siaga menyebabkan hard drive berputar, dan Idle adalah mode daya rendah tanpa pemutaran. Karena standar tidak mengatakan apa yang harus dilakukan hard drive dalam mode Idle , itu adalah perilaku khusus vendor. Untuk tebakan yang cerdas, ini dapat memungkinkan HDD berputar dengan kecepatan rendah, atau juga memarkir kepalanya. Terakhir, Sleep tidak boleh digunakan, kecuali Anda akan melepas HDD atau mematikan sistem.

Hanya pengatur waktu siaga yang dapat dinonaktifkan dengan mengaturnya ke 0detik. The idle negara tidak dikontrol oleh timer, dan tidak dapat dinonaktifkan.

Atau, Anda juga dapat mengatur timer Siaga ke nomor yang Anda inginkan, namun pengkodean timernya benar - benar aneh !

Sumber: Set Perintah ATA / ATAPI - 2 (ACS-2)

Ringkasan ringkas dapat ditemukan dari hdparmhalaman manual:

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 waktu tunggu dari 30 menit hingga 5,5 jam. Nilai 252 menandakan batas waktu 21 menit. Nilai 253 menetapkan periode waktu tunggu yang ditentukan vendor antara 8 dan 12 jam, dan nilai 254 dicadangkan. 255 diartikan sebagai 21 menit ditambah 15 detik. Perhatikan bahwa beberapa drive lama mungkin memiliki interpretasi yang sangat berbeda dari nilai-nilai ini.

Di FreeBSD,

# check whether ATA power management is supported
# don't omit "^", or you'll get "advanced power management"
camcontrol identify ada1 | grep "Feature\|^power management"

# set standby timer, 0 to disable
camcontrol idle ada1 -t 0

# "idle -t 0" is equivalent to "standby -t 0", it set the same
# "Standby" timer, but without forcing the device to standby,
# only to "idle", which allows a quicker recovery. There is
# no way to set the timer without actually send an "idle"
# or "standby" command.
camcontrol idle ada1 -t 0

Namun, iblis ada di detailnya. Tidak ada cara yang dijamin untuk menonaktifkan status "Standby" atau "Idle". Pertama, seperti yang dinyatakan sebelumnya, tidak ada timer untuk "Idle", hanya timer untuk "Standby". Jadi, jika vendor HDD memutuskan untuk memasuki Idle secara agresif, dan jika mode Idle menyiratkan head parking, Anda kurang beruntung tanpa EPC. Misalnya, beberapa hard drive WD Green diketahui melakukan head parking secara agresif.

Selain itu, HDD diizinkan untuk memasuki "Idle" atau "Standby" dengan sendirinya tanpa campur tangan host.

PM1: Idle: Status ini harus dimasukkan ketika perangkat menerima perintah IDLE atau perintah IDLE IMMEDIATE. Beberapa perangkat mungkin menjalankan manajemen daya internal khusus vendor dan transisi ke mode Idle tanpa intervensi host. [...]

PM2: Siaga: Status ini harus dimasukkan ketika:

  • h) perangkat melakukan fungsi manajemen daya khusus vendor;

Sumber: Set Perintah ATA / ATAPI - 2 (ACS-2)

Jadi, jika vendor HDD memutuskan untuk memasuki Standby secara agresif, Anda juga kurang beruntung.

Manajemen Daya Lanjutan (APM)

Advanced Power Management (APM) adalah mekanisme manajemen daya untuk komputer pribadi yang distandarisasi di akhir tahun 90-an. Sudah lama digantikan oleh ACPI, namun masih digunakan dalam manajemen daya HDD dan didukung oleh hampir semua hard drive. Ini tidak didukung hanya di beberapa hard drive kelas perusahaan.

Level APM adalah skala dari pengaturan konsumsi daya terendah 01 jam hingga level kinerja maksimum FEh. Tabel 120 menunjukkan nilai-nilai ini Kinerja perangkat dapat meningkat dengan meningkatnya level APM. Konsumsi daya perangkat dapat meningkat dengan meningkatnya level manajemen daya. Level APM mungkin berisi band diskrit (misalnya, perangkat dapat menerapkan satu metode APM dari 80h hingga A0h dan performa yang lebih tinggi, metode konsumsi daya yang lebih tinggi dari level A1h hingga FEh). APM level 80h dan lebih tinggi tidak mengizinkan perangkat berputar ke bawah untuk menghemat daya.Kode subcommand 85h menonaktifkan APM. Subperintah 85h tidak dapat diterapkan pada semua perangkat yang menerapkan subperintah SET FITUR 05h.

Tabel 120: Level APM

  • 00h (0): Dicadangkan
  • 01h (1): Konsumsi daya minimum dengan Standby
  • 02h-7Fh (2-127): Level manajemen daya menengah dengan Standby
  • 80h (128): Konsumsi daya minimum tanpa Siaga
  • 81h-FDh (129-254): Tingkat manajemen daya menengah tanpa Siaga
  • FEh (254): Performa maksimal
  • FFh (255): Dicadangkan

APM tidak tergantung pada pewaktu Siaga. Jika APM dan pengatur waktu Siaga disetel, perangkat akan masuk ke status Siaga saat pengatur waktu kedaluwarsa atau algoritme APM perangkat menunjukkan bahwa status Siaga harus dimasukkan.

Sumber: Set Perintah ATA / ATAPI - 2 (ACS-2)

Implementasi APM tidak ditentukan oleh standar, oleh karena itu tergantung pada vendor dan model hard drive Anda. Satu-satunya hal yang bisa kami yakini adalah itu

  1. "128" mengaktifkan semua fitur hemat daya tanpa harus memutar. Agaknya, HDD dapat berputar dengan kecepatan rendah, atau memarkir kepalanya.

  2. Biasanya APM bisa dinonaktifkan. Mungkin saja pengurangan kecepatan atau parkir kepala dapat dinonaktifkan jika APM dinonaktifkan, tetapi kami tidak dapat mengetahui secara pasti.

  3. Pada beberapa hard drive, APM tidak dapat dinonaktifkan, sebagai alternatif, kita dapat menggunakan "254", mode kinerja maksimum yang ditentukan oleh APM.

Di FreeBSD,

# check whether APM is supported
camcontrol identify ada1 | grep "Feature\|advanced power management"

# set APM level
camcontrol apm ada1 -l 128

# disable APM
camcontrol apm ada1

Kondisi Daya yang Diperpanjang (EPC)

Ini adalah standar manajemen daya terbaru di hard drive, biasanya didukung pada hard drive kelas perusahaan (beberapa hard drive baru tidak mendukung APM, EPC digunakan secara eksklusif). Seagate memasarkan EPC sebagai Teknologi PowerChoice ™ .

Ini menawarkan tingkat manajemen daya yang lebih baik, lebih spesifik daripada Idle dasar , status Siaga dalam set perintah ATA standar. Ini mendefinisikan 2 kondisi daya dan 5 kondisi daya.

  1. PM1: Status menganggur
  • Idle_a

    • Menonaktifkan beberapa elektronik.
    • Disk berputar dengan kecepatan penuh (7.200 RPM).
  • Idle_b

    • Menonaktifkan beberapa elektronik.
    • Kepala diturunkan untuk mendorong jalan.
    • Disk berputar dengan kecepatan penuh (7.200 RPM)
  • Idle_c

    • Menonaktifkan beberapa elektronik.
    • Kepala diturunkan untuk mendorong jalan.
    • Kecepatan drive dikurangi menjadi RPM yang lebih rendah (RPM berkurang)
  1. PM2: Status siaga
  • Standby_y

    • Sama seperti Idle_cdi Seagate dan HGST (sekarang WD).
  • Standby_z

    • Kepala diturunkan untuk mendorong jalan.
    • Motor penggerak berputar ke bawah.

Sumber: * ATA / ATAPI Command Set - 2 (ACS-2) * Hard Drive untuk Efisiensi Daya RendahEnergy dalam Penyimpanan Disk oleh Hitachi * Teknologi Seagate® PowerChoice ™ Memberikan Penghematan dan Fleksibilitas Daya Hard Drive yang Belum Pernah Ada Sebelumnya oleh Seagate * Ultrastar® DC HC620 Hard disk spesifikasi drive oleh HGST / Western Digital.

Setiap kondisi daya dapat dikontrol oleh pengatur waktu, dan juga dapat diaktifkan atau dinonaktifkan secara individual.

Perhatikan bahwa makna yang tepat dari Idle_a, Idle_b, Idle_c, Standby_y, atau Standby_ztidak spesifik dalam standar sama sekali! Sekali lagi, terserah produsen perangkat HDD untuk menerapkannya. Saya menggunakan definisi dari lembar data HGST / WD Ultrastar dan Seagate . Pastikan untuk memeriksa lembar data lengkap model hard drive Anda!

Jelas untuk melihat bahwa untuk hard drive pilihan kami, menonaktifkan Standby_zakan mencegah HDD berputar ke bawah, dan menonaktifkan Idle_b, Idle_cdan Standby_yakan mencegah head dibongkar. Jadi, jika HDD Anda mendukung EPC, disarankan untuk menggunakannya.

Selain itu, APM harus dinonaktifkan terlebih dahulu sebelum menggunakan EPC.

Rangkaian fitur Kondisi Daya yang Diperpanjang dan rangkaian fitur Manajemen Daya Lanjutan sama-sama eksklusif. Semua sub-perintah EPC, kecuali Enable the EPC feature set (lihat 7.49.18.6), akan mengembalikan perintah dibatalkan jika set fitur EPC dinonaktifkan. Jika perangkat memproses SET FITUR Aktifkan subperintah APM tanpa kesalahan dan IDENTIFIKASI DEVICE data word 120 bit 7 (lihat 7.17.7.41) diatur ke satu, maka perangkat akan menonaktifkan set fitur EPC.

Di FreeBSD,

# check whether EPC is supported
camcontrol identify ada1 | grep "Feature\|extended power conditions"

# see the current EPC power state
camcontrol epc ada1 -c status

# disable APM first
camcontrol apm ada1

# enable EPC
camcontrol epc ada1 -c enable

# disable spin-down (Standby_z)
camcontrol epc ada1 -c state -d -p standby_z

# disable head parking (Idle_b, Idle_c, Standby_y)
camcontrol epc ada1 -c state -d -p idle_b
camcontrol epc ada1 -c state -d -p idle_c
camcontrol epc ada1 -c state -d -p standby_y