GNU/Linux >> Linux の 問題 >  >> Linux

Linux(ラズベリーパイ)で外付けハードドライブのスピンダウンを強制する

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

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

要するに、チップにプログラミングの詳細がなく、ATA および SCSI 命令セットとカプセル化パススルー コマンドに精通していない限り、何もしなくても済むことになります。仕事が多すぎて標準がない。


送信しているシグナルが無視される可能性は十分にあります。

の出力を提供していません
sudo hdparm -I /dev/sdX

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

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

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


私は 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

Linux
  1. RedhatLinuxのテキストモードインストールを強制する方法

  2. リモートLinuxサーバーを強制的に再起動します

  3. Linuxエコーコマンド

  1. Linux での echo コマンドの例

  2. Linux でのバックグラウンド プロセス

  3. % は Linux シェル文字列で何をしますか?

  1. Linuxコマンドラインで力を使用する

  2. Linux シェル wc -c カウント文字数 +1

  3. ローカル IP トラフィックを外部インターフェイスに強制する