サーバーの HD を毎晩バックアップするスクリプトを作成しました。スクリプトの最後で同期し、数分待ってから同期し、発行sg_start --stop
してデバイスを停止します。これは、増分バックアップを 10 分間行った後に HD をオフにすることで、デバイスの寿命を延ばすことを目的としています (デスクトップ ディスクは、数千回のオン/オフ サイクルに耐えることができますが、連続実行では数百時間しか耐えられません)。
これは常に機能するとは限りません。翌朝、ドライブがまだ回転していることに気付くことがよくあります。ドライブが停止したことを確認するために使用できるシェルコマンドはありますか (そのため、停止コマンドを再度発行することができます [EDIT2] または、ドライブの実行中にプロセスリストを作成するスクリプトを記述して、これをデバッグできるようにします [/EDIT2] ])?
[編集] sg_inqを試しました (sg_start man ページで提案されているように) が、このコマンドは常に 0 を返します。
hdparmを試してみましたが、USB ドライブ (/dev/sdX 経由で接続) の場合は常に「ドライブの状態は不明です」が返され、ドライブをスピンダウンしようとすると、「HDIO_DRIVE_CMD(setidle1) に失敗しました: 入力/出力エラー」が表示されます。 .
sdparmはドライブのアイドル タイマーの設定をサポートしているようですが (「電源モード条件ページ」を参照)、IDLE オプションには「変更可能: n」があり、ドライブの電源状態を示すオプションが見つかりませんでした。
[EDIT2] 注:sg_start --stop
コンソールからドライブを停止できます。それは常に機能します。真夜中まで常にダウンしているとは限りません。サーバーは地下にあり (ここはすてきで涼しい場所です)、暖かいリビングルームからドライブが起動しているかどうかを確認する方法があればいいのですが:) ドライブのステータスを教えてくれるコマンドがあれば、スピンアップしたときに警告するスクリプトを作成し(毎分チェック)、何が原因であるかを突き止めることができます。
それが重要な場合: 私は openSUSE 11.1 を使用しています。