1

サーバーの 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 を使用しています。

4

6 に答える 6

3

hdparm を試したと言うとき、あなたはを試したかを言っていません。エンクロージャーにいくつかの USB ハードドライブがあり、一部のコマンドは機能し、他のコマンドは機能しませんが、それはすべてトランスポートメカニズムのすべての側面に依存していると思います。

  hdparm  -S 120  /dev/sda  

非アクティブ状態が 10 分程度続くと、ドライブ自体がスリープ状態になるように指示する必要があります。

あなたはすでにこれを試したと思いますが、それは明らかではありません。これを答えとして書くと将来の読者に役立つかもしれません.

Nothing accesses the drive but the backup script.

これは理論的には素晴らしいことですが、まれにこれでは不十分であることがわかりました。ルックアップが何らかの理由でディスクキャッシュ外にある場合、ドライブをてさえスピンアップが発生する可能性がある多くのプロセスとタスクがあります。

updatedb一般的な原因は、ファイルのすべてのマウントをスキャンしたり、famディスクgaminの変更を監視するための奇妙なことをしたりするツールです。

疑わしい場合は、スクリプトを実行する前にデバイスをマウントし、完了したらマウントを解除することで、確実性を高めることができます。

目を覚ます可能性のあるものを見る

 lsof +D /mountpoint

アンマウントを試みる前に、おそらくこの出力も解析して、まだ何も使用しようとしていないことを確認する必要があります。

おそらく、怠惰な umount も行う必要があります

 umount -l /mountpoint 

lsof| grepしたがって、実行してから呼び出すまでの間に何かがアクセスした場合でもumount、ドライブがアンマウントされ、読み取りが停止されます。

ハルと仲間たち

また、HAL と友人が接続/削除状態をプローブするドライブにウェイクアップを行っている可能性もあります。そうでないことを本当に願っていますが、一部のデバイスタイプではそうです。ありえない原因だと思いますが、考えられることは何でも考えてみます。

などの楽しいことを試してください

lsof /dev/devicehere 

lsof /dev/devicehere1 

これは、ハンドルに直接または間接的にアクセスするすべてのものの包括的なリストを取得するようです。

于 2008-12-23T22:42:28.120 に答える
2

また、マウント オプションを確認し、マウント オプションとして「noatime」を使用する必要があります。そうしないと、カーネルが定期的にアクセス時間を更新します。したがって、これも問題の原因である可能性があります。

于 2010-09-10T07:42:08.687 に答える
0

次のコマンドでドライブを停止しようとしましたか:

eject -t /dev/yourHD

これは、私の USB ハードドライブでは非常にうまく機能します。

于 2009-01-04T16:41:35.020 に答える
0

翌朝、ドライブがまだ回転していることに気付くことがよくあります。

これは、サーバーなどのときに再びスピンアップしたためではありません。夜中にログファイルか何かに書き込んだ?ドライブのステータス情報を返すことができる sdparm を試すことができます。しかし、BIOS でオプションを設定して、一定の非アクティブ状態の後に HD を自動的にスピンダウンさせる方が簡単だと思います。

于 2008-12-23T14:41:33.580 に答える
0

お使いのドライブではサポートされていないと言われても、それを伝える方法はありませhdparm -C /dev/sdadrive state is: unknown

追加の質問 (既に他の人が回答済み)

  • ドライブを使用しているのは何ですか?
    • lsof
    • フューザー
    • トリガー
  • ドライブをスリープ状態に強制する方法は?
    • hdparm
    • アンマウント
    • アンマウントしてもデバイスを起動できますが、何らかの操作 (smartctl、blkid など) によってのみ可能です。

関連:ドライブが熱くなった場合、バックアップなどを1時間自動的に一時停止することもできます.

于 2015-01-15T16:37:40.553 に答える