Linux(raspberry pi)で外部ハードドライブのスピンダウンを強制する


16

現在、USB経由で接続された外部ハードディスクを備えたRaspberry Piを使用してホームサーバーをセットアップしています。ただし、アイドル状態のときにハードドライブがスピンダウンすることはありません。

raspberrypi.orgで提供されているヒントをすでに試してみましたが、 成功しませんでした。

1.)

sudo hdparm -S5 /dev/sda

戻り値

/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

戻り値

/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

...および3.)

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

戻り値

/dev/sda: HDD         1234

...ドライブのスピンダウンなし。

次のハードウェアを使用します。

  • Inateck FDU3C-2デュアルポートUSB 3.0 HDDドッキングステーション
  • Western Digital WD10EZRX Green 1TB

送信されたスピンダウン信号がどこかで上書き/消失/無視される可能性はありますか?


1
更新:旧式のInateckドッキングステーションには、ハードドライブのクローンを作成する機能があり、HDDのマスター/ソースポートとスレーブ/シンクポートを提供します。HDDをスレーブポートに接続すると、上記のコマンドが動作します。これにより、スピンダウンがマスターポートにないという問題が制限されます。
user258346

1
これが解決策だと思うなら、あなたはあなた自身の解決策を受け入れるべきです。Cornyのように見えるかもしれませんが、同じ問題を抱えている将来の読者にとっては便利です。
MariusMatutiae

1
もちろん、スクリプトで使用するコマンドは、機能していないと述べたものとまったく同じであることに気付きますか?
hdparm

回答:


4

私はhd-idleで運がありませんでした。実行されましたが、機能しませんでした。私は最終的に以下のスクリプトを書くことになりました:

#!/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

4
hdparm -yうまくいかないと思った。
クリスティアン・Ciupitu 14

おかげで、完璧に動作します。使用されていない場合、WDの青いハードディスクがスピンダウンします。あなたの意見では、cronがスクリプトを呼び出すための合理的な間隔は何ですか?今のところ15分ごとに呼び出します。
タレーター

5

はい、可能ですが、いくつかのカスタム開発作業が必要であり、簡単ではありません。コードは、エンクロージャ内のUSB-> SATAブリッジチップに固有のものになります。

契約は、USBブリッジが電気変換器以上のものとして機能することです。USB接続のHDDは、異なるコマンドセットを持つSCSIドライブをエミュレートします。標準の読み取り/書き込み/シークコマンドは常に変換しますが、よりエキゾチックなスピンアップ/ダウンは変換しません。ほとんどのチップはそれを行いません。さらに、ユニバーサルチップレベルAPIはありません。したがって、コードを記述した場合、USBブリッジチップのプログラミングマニュアルが必要になります。

要するに、チップ上にプログラミングの詳細があり、ATAおよびSCSI命令セットとパススルーコマンドのカプセル化に精通していない限り、あなたはただやらなければならないでしょう。仕事が多すぎて標準がありません。


5

送信している信号が無視される可能性は完全にあります。の出力を提供しませんでした

sudo hdparm -I /dev/sdX

ディスクの機能はわかりますが、多くのディスクは単にこれらのコマンドに応答しません。

幸いなことに、非常に便利なユーティリティであるhd-idleがありますこれはここからダウンロードでき、指定された時間が経過した後にディスクを強制的にスピンダウンできます。このプログラムはDebian用に特別に開発されています(ただし、一般的にLinux上で動作します)。そのため、インストールは非常に簡単です。私がテストできないARMアーキテクチャでも動作することを願っています。

編集:raspbianで正しくコンパイルおよびインストールします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.