Buat hard disk tidur dan hanya bangun bila diperlukan

10

Saya ingin menghubungkan hard disk lain ke komputer saya, yang saya ingin tidur 99% dari waktu. Saya hanya akan menggunakannya untuk beberapa hal, tetapi saya harus menggunakannya setiap saat.

Untuk mencapai ini saya ingin tahu:

  1. Bagaimana cara saya login proses yang mengakses perangkat? Saya perlu pencatatan untuk dapat mengetahui apa yang menyebabkan hard disk untuk bangun jika itu terjadi, jadi saya dapat menindaklanjutinya.
  2. Apakah ada pengaturan kernel khusus yang perlu saya buat agar perangkat dapat tidur lebih lama?
  3. Bagaimana cara mengatur interval tidur hard disk?
Dihapus
sumber

Jawaban:

13

Interval tidur disebut "APM" (Manajemen Daya Otomatis) dan spindown_time. Ini dikontrol dengan hdparmseperti ini:

hdparm -B 50 -S 36 /dev/disk/by-label/BACKUP-HDD

Ini akan membuat HDD Anda melakukan spindown pada ~ 3 menit tanpa aktivitas.

kolypto
sumber
4

Ketika Anda berada di linux, Anda dapat menggunakan fatraceutilitas baru , yang mencatat setiap akses file dan memberi tahu Anda proses mana yang bertanggung jawab:

https://launchpad.net/fatrace

Informasi lebih lanjut di sini:

http://www.piware.de/2012/02/fatrace-report-system-wide-file-access-events/

Itu menggunakan linux fanotify API ( lebih detail ) tersedia sejak linux kernel 2.6.37.

fatrace tidak dikemas oleh semua distribusi pada Juli 2014 (baru-baru ini memasuki pengujian debian, jadi sebaiknya kirim dalam 'jessie'), tetapi mudah dipasang dari sumber.

JosephH
sumber
1
Saya tidak tahu apa yang Anda maksud dengan distribusi "kebanyakan". Seperti biasa, Debian adalah distro terakhir untuk mendapatkan sesuatu. Saya sudah memilikinya di Fedora untuk beberapa waktu ...
Michael Hampton
3

http://en.wikipedia.org/wiki/Fuser_%28Unix%29 - fuser adalah perintah UNIX yang digunakan untuk menunjukkan proses mana yang menggunakan file, sistem file, atau soket yang ditentukan.

http://sourceforge.net/projects/hdparm/ - dapatkan / atur parameter drive ATA / SATA di Linux (cari opsi -S)

http://sg.danny.cz/sg/sg3_utils.html - Paket sg3_utils berisi utilitas yang mengirim perintah SCSI ke perangkat. Serta perangkat pada transportasi yang secara tradisional dikaitkan dengan SCSI (cari sg_start)

Maciek Sawicki
sumber
Terima kasih atas jawaban informatif Anda! Sepertinya fuser hanya memberi tahu saya proses mana yang menggunakan file, filesystem, dan socket pada saat mengeluarkan perintah. Meskipun ini sangat berguna jika suatu proses melakukan sesuatu dengan cepat, seperti mencantumkan isi direktori root perangkat, saya mungkin akan melewatkannya meskipun saya memiliki fuser yang berjalan dalam satu lingkaran. Jika ada sesuatu yang akan menunggu dan mencatat semua aktivitas sampai saya menyuruhnya berhenti, itu akan lebih membantu dalam situasi ini. Apa kamu mengetahui sesuatu?
Dihapus
Saya kira hdparam adalah apa yang akan saya gunakan untuk mengatur waktu tunggu sebelum tidur? Dan sg3_utils hanyalah alat yang ampuh tetapi saya tidak akan menggunakannya dalam kasus ini? (Seperti yang saya kira saya tidak perlu menentukan secara manual kapan HDD harus tidur setelah pengaturannya menggunakan hdparam?)
Dihapus
3

btraceatau blktrace(bungkus btrace) melacak kernel blok I / O dan dapat membantu Anda di sana.

segera
sumber
2

lsof +D /path/to/mount harus menunjukkan kepada Anda setiap proses yang memiliki file yang dibuka di jalur yang ditunjukkan.

Teddy
sumber
0

Saya memiliki masalah serupa. Saya memiliki SSD,, /dev/sdbdengan OS (Linux Mint 18.1 berdasarkan Ubuntu Xenial) dan HDD /dev/sda,, dengan data, yang saya gunakan dari waktu ke waktu. Kedua disk dienkripsi. Partisi HDD tidak dipasang. Lagi pula dalam beberapa menit HDD terbangun, kemudian tidur, lalu bangun lagi. Kekacauan.

Berikut adalah pertanyaan rangkap dengan jawaban yang membantu , yang menyarankan auditduntuk menemukan proses berperilaku buruk.

apt-get install auditd
auditctl -w /dev/sda -p rwa

Lalu saya memaksa HDD untuk tidur hdparm -Y /dev/sda. Kemudian tunggu sampai saya mendengar HDD berputar lagi. Kemudian jalankan ausearch -f /dev/sda. Dalam kasus saya ini menunjukkan entri seperti berikut.

time->Sat Feb 25 12:38:17 2017
type=PROCTITLE msg=audit(1488022697.651:1744): proctitle=2F7573722F6C69622F756469736B73322F756469736B7364002D2D6E6F2D6465627567
type=PATH msg=audit(1488022697.651:1744): item=0 name="/dev/sda" inode=376 dev=00:06 mode=060660 ouid=0 ogid=6 rdev=08:00 nametype=NORMAL
type=CWD msg=audit(1488022697.651:1744):  cwd="/"
type=SYSCALL msg=audit(1488022697.651:1744): arch=c000003e syscall=2 success=yes exit=12 a0=f3fb90 a1=800 a2=7f4745221f64 a3=30 items=1 ppid=1 pid=18520 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="pool" exe="/usr/lib/udisks2/udisksd" key=(null)

Bagian yang relevan adalah exe = "/ usr / lib / udisks2 / udisksd" . Padahal aku juga punya smartmontoolsyang smartdjuga pelakunya. Saya mencopot pemasangan smartmontoolsdan menghentikan udisk2layanan service udisks2 stop. Setelah itu HDD tidur seperti yang diharapkan.

Perhatikan bahwa udisks2secara otomatis akan mulai ketika saya, misalnya, membuka aplikasi Disk , jadi saya harus menghentikannya lagi. Kelemahan lain adalah bahwa parameter SMART tidak dipantau untuk kedua disk, yang tidak baik tetapi sebagai solusi yang cocok.

Juga satu hal yang tidak jelas, adalah bahwa laporan bug ini mengatakan udisks2tidak melakukan polling disk yang sekarang dilakukan oleh kernel. Tetapi bukti tampaknya menunjukkan sebaliknya.

saaj
sumber