Memaksa spin-down hard-drive eksternal di linux (raspberry pi)

16

Saat ini saya sedang menyiapkan server-rumah menggunakan Raspberry Pi dengan hard-disk eksternal yang terhubung melalui usb. Namun, hard drive saya tidak akan pernah berputar saat menjadi idle.

Saya sudah mencoba petunjuk yang disediakan di raspberrypi.org ... tanpa hasil.

1.)

sudo hdparm -S5 /dev/sda

kembali

/dev/sda:
 setting standby to 5 (25 seconds)
SG_IO: bad/missing sense data, sb[]:  70 00 04 00 00 00 00 0a 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

2.)

sudo hdparm -y /dev/sda

kembali

/dev/sda:
 issuing standby command
SG_IO: bad/missing sense data, sb[]:  70 00 04 00 00 00 00 0a 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

... dan 3.)

sudo sdparm --flexible --command=stop /dev/sda

kembali

/dev/sda: HDD         1234

... tanpa spin-down drive.

Saya menggunakan perangkat keras berikut:

  • Inateck FDU3C-2 dual Ports USB 3.0 HDD docking station
  • Digital Barat WD10EZRX Hijau 1TB

Mungkinkah sinyal spin-down yang dikirim ditimpa / hilang / diabaikan?

pengguna258346
sumber
1
Pembaruan: Stasiun dok Inateck menioned memiliki fungsi untuk mengkloning hard drive, menyediakan master / sumber dan port slave / sink untuk HDD. Saat mencolokkan HDD ke port slave, perintah, yang disebutkan di atas, latihan. Ini membatasi masalah hilangnya spin-down ke port master.
user258346
1
Jika Anda berpikir ini adalah solusi, Anda harus menerima solusi Anda sendiri. Meskipun kelihatan norak, ini berguna untuk pembaca masa depan dengan masalah yang sama.
MariusMatutiae
1
Anda tentu menyadari, bahwa perintah yang Anda gunakan dalam skrip Anda sama dengan yang Anda nyatakan tidak berfungsi, bukan? hdparm -y / dev / sda ...
MariusMatutiae

Jawaban:

4

Saya tidak beruntung dengan hd-idle; itu berlari tetapi tidak berfungsi. Saya akhirnya menulis skrip di bawah ini:

#!/bin/bash
# This script looks for recent disk access, and if nothing has changed, puts /dev/"drive" into spindown mode.
# This should be used only is the hdparm power management function is not working.
# Call this script with cron or manually as desired
#
#
#
# Change which drive this script looks at by changing the drive variable below:
drive="sda"
#
#
current=`date`
caller=$(ps ax | grep "^ *$PPID" | awk '{print $NF}')
filename="/tmp/diskaccess.txt"
if [ -f "$filename" ]; then
    stat_old=`cat "$filename" | tr -dc "[:digit:]"`
    stat_new=`cat /sys/block/"$drive"/stat | tr -dc "[:digit:]"`
    if [ "$stat_old" == "$stat_new" ]; then
        stat="0"
        echo "The disk hasn't been used; spinning down /dev/$drive"
        echo $stat_old
        hdparm -y /dev/$drive > /dev/null
    else
        stat="1"
        echo $stat_old
        echo $stat_new
        echo "The drive has been used..."
        echo $stat_new > $filename
    fi
else
    echo "/tmp/diskaccess.txt file does not exist; creating it now."
    echo $stat_new > $filename
fi
echo $stat " - " $drive " - " $current " - by: " $caller >> /tmp/diskaccesslog.txt
pengguna300457
sumber
4
Saya pikir hdparm -ytidak berhasil.
Cristian Ciupitu
Terima kasih, bekerja dengan sempurna. Harddisk biru WD saya berputar sekarang, saat tidak digunakan. Menurut Anda, apa intervall yang masuk akal untuk memanggil skrip? Saya menyebutnya setiap 15 menit untuk saat ini.
Tarator
5

Ya, itu mungkin tetapi akan membutuhkan beberapa pekerjaan pengembangan kustom dan tidak sepele dan kode akan khusus untuk USB-> SATA bridge chip DI DALAM kandang Anda.

Kesepakatannya adalah bahwa jembatan USB berfungsi lebih dari sekadar konverter listrik. HDD yang terpasang USB mengemulasi drive SCSI yang memiliki set perintah berbeda. Sementara standar perintah baca / tulis / cari terjemahkan sepanjang waktu, putaran eksotis atas / bawah tidak. Kebanyakan chip tidak akan melakukan itu. Selain itu TIDAK ada API tingkat chip universal. Jadi, jika saya menulis kode saya harus memiliki panduan pemrograman untuk chip jembatan USB.

Intinya, kecuali Anda memiliki pemrograman khusus pada chip dan terbiasa dengan set instruksi ATA dan SCSI dan merangkum perintah pass-through, maka Anda hanya perlu melakukannya tanpa. Terlalu banyak pekerjaan dan tidak ada standar.

David Lethe
sumber
5

Sangat mungkin bahwa sinyal yang Anda kirim diabaikan. Anda tidak memberikan output dari

sudo hdparm -I /dev/sdX

yang akan memberi tahu kami kemampuan disk, tetapi banyak disk tidak merespons perintah ini.

Untungnya, ada utilitas yang sangat mudah digunakan, hd-idle, yang dapat Anda unduh dari sini , memungkinkan Anda untuk memaksa disk berputar setelah beberapa selang waktu yang ditentukan. Program ini telah dikembangkan khusus untuk Debian, (tetapi bekerja pada Linux secara umum), sehingga pemasangannya harus sangat mudah bagi Anda. Saya hanya berharap ini juga berfungsi pada arsitektur ARM, sesuatu yang tidak bisa saya uji.

Sunting: ini mengkompilasi dan menginstal dengan benar pada raspbian.

MariusMatutiae
sumber