web-dev-qa-db-ja.com

hdparmを使用してX分経過してもHDDがスタンバイにならない

ホームサーバーでUbuntu 12.04を使用しています。 5つのハードドライブがあります。mdadmを使用してRAID5として構成されたOSと4つのHDD(Samsung HD204UI)を備えた1つのSSD。

RAIDはあまり必要ありません(たとえば、平均して1日に1回程度)。マルチメディアデータといくつかのバックアップが含まれているため、ほとんどの場合、ドライブをスタンバイ状態にすることにしました。

Hdparmを使用して20分後に自動的にスピンダウンするようにドライブを構成しました。ここでは/dev/sdaを例として示します。

hdparm -S 240 /dev/sda

コマンドの出力はこれを確認しました:

/dev/sdb:
 setting standby to 240 (20 minutes)

ただし、問題は、最後のアクセスから約5秒(20分ではなく)後にドライブがスピンダウンすることです。

hdparm -C /dev/sdb

ディスプレイ:

/dev/sdb:
 drive state is:  standby

構成されたとおりにドライブが20分間待機しないのはなぜですか? RAIDのセットアップと関係がありますか? (私はそうは思わない...)

この非常に短いタイムアウトは、RAID5であり、ファイルにアクセスすると、ブロック単位で4つのドライブに分散されるため、問題があります。ドライブ1はドライブ2の読み取り時には必要ないため、次回使用するとき(ドライブ3の読み取り後)にスリープ状態になりました。そのため、ドライブは常に回転を続け、スループットはゼロに近くなります。

私のドライブの寿命を心配している人々のために:ドライブの健全性よりもエネルギーと熱を節約することを好むので、ドライブが平均して1日に1回上下することは問題ではありません(私はRAID5を使用し、コンテンツは非常に重要ではありません)。

9
leemes

BIOSでAHCIが有効になっていますか?そうでない場合は、電源を入れて再試行してください。

それでもうまくいかない場合は、hdparmがSATAドライブでうまく動作しないことがあるため、もう少し複雑なものを試してみる必要があるかもしれません。

Crontabを使用する次の比較的単純なソリューションについては、 このページ をご覧ください。

Sudo apt-get install sg3-utils
crontab -e

次に、これをcrontabの下部に追加します(sdxをスタンバイにしたいドライブに置き換えます)。

0-59/15 * * * * ( if [ ! -f /dev/shm/1 ] ; then touch /dev/shm/1 /dev/shm/2; fi ; mv /dev/shm/1 /dev/shm/2; cat /proc/diskstats > /dev/shm/1 ) >/dev/null 2>&1
0-59/15 * * * * ( export HD="sdx "; if [ "$(diff /dev/shm/1 /dev/shm/2 | grep $HD )" =  "" ] ; then /usr/bin/sg_start --stop /dev/$HD; fi ) >/dev/null 2>&1

もちろん、これを試みる前に、強くお勧めします、ハードドライブの内容のフルバックアップを実行することをお勧めします。

8
SirCharlo

より良い方法は次のとおりです:

hdparm -B 1 -Y/dev/device
hdparm -B 255/dev/device

最初のhdparmは、デバイスをすぐにスタンバイにします。 2番目はAPMをオフにするため、ディスクは次のディスクアクセスまでスタンバイモードのままになります。

1
mat