自宅サーバーや自作NASを24時間365日動かしていると、どうしても気になってくるのが「電気代」「HDDの動作音・発熱」です。

一般的な3.5インチHDDは、データの読み書きをしていないアイドル時でも、ディスクが回転しているだけで1台あたり約4〜6Wの電力を消費します。我が家のNASには現在5台のHDDを搭載しているため、ディスクだけで常時約25W前後を消費している計算になります。

これを「アクセスがない時はモーターを止める(スピンダウン / スタンバイ)」運用にできれば、年間で約6,000円前後の電気代削減になり、夜間の「フォーン……」という駆動音や熱からも解放されます。

しかし、OpenMediaVault(OMV)のWebUIでスピンダウン設定を入れただけでは「なぜか全然スリープしてくれない」「一度寝ても数十分ですぐ叩き起こされる」という現象に直面しました……。

そこで今回、CLI(ターミナル)での詳細調査から、HDDごとの仕様の壁、そしてスリープを阻害していた「S.M.A.R.T.監視の罠」の解除までを徹底検証しました!

同じように「OMVでHDDが寝てくれない!」とお悩みの方に向けて、確実に全台スピンダウンさせる手順を実践メモとして共有します!

💡 生成AI活用のメモ 本記事で紹介しているOpenMediaVaultの検証・設定修正は Gemini とのペアプログラミングでCLI調査および設定変更を実施し、本記事の構成・執筆もGeminiでまとめています。

1. 今回のNAS環境(OSとデータの物理分離が成功の鍵)

まずは今回の検証を行ったストレージ環境です。

OMVのディスク一覧画面(SSD 1台 + HDD 5台)
  • OSドライブ: SanDisk 480GB SSD(/dev/sdc) ➔ ルート(/)やSwapを配置
  • データドライブ: 3TB〜6TB HDD × 5台(/dev/sda, sdb, sdd, sdf, sdl
📌 重要:OSとデータ領域の物理分離は必須! NASのHDDスリープを成功させる最大の前提条件は、「OS(システム)をSSDに入れ、データ用HDDと完全に分けておくこと」です。OSがHDD上にあると、OSログの記録や定期タスクの書き込みで数分おきにディスクが叩き起こされてしまい、スリープを維持できなくなります。

2. 【CLI調査】ターミナルから現状を把握する

WebUIで設定をいじる前に、まずはSSHターミナルからディスクの認識状況やCPUの省電力状態を確認しておきます。

ターミナルでの初期調査(lsblk、CPUガバナー、hdparm導入)

① ドライブ構成の確認(lsblk

lsblk -o NAME,MODEL,SIZE,ROTA,TYPE,MOUNTPOINT

ROTA カラムに注目します。

  • 1: 回転ディスク(HDD) ➔ 今回のスピンダウン対象
  • 0: 非回転ディスク(SSD) ➔ 常時稼働(OSドライブ)

② CPU省電力ガバナーの確認

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | sort -u

出力が powersave になっていればOKです。CPU側はすでにアイドル時にクロックを下げて省電力動作するよう設定されています。

③ ハードディスク制御ツール hdparm のインストール

DebianベースのOMVでは、初期状態で hdparm コマンドが入っていないことがあるためインストールしておきます。

sudo apt update && sudo apt install -y hdparm

3. HDDごとのAPM対応チェックと「仕様の壁」

続いて、全HDDに対して APM(Advanced Power Management: 詳細電源管理) の対応状況と現在の電源状態をチェックしました。

for d in sda sdb sdd sdf sdl; do echo "=== /dev/$d ==="; sudo hdparm -B -C /dev/$d; done

実行してみたところ、メーカーや型番(世代)によって挙動がバラバラであることが判明しました。

ドライブ メーカー / 型番 / 容量 初期APM状態 調査結果・対応方針
/dev/sda Seagate ST3000DM001 (3TB) APM_level = 128 APM対応。127 に設定することでスピンダウン可能。
/dev/sdb 東芝 DT01ACA300 (3TB) APM_level = off sudo hdparm -B 127 /dev/sdb でAPM有効化に成功!
/dev/sdd 東芝 DT01ACA300 (3TB) APM_level = off 同上。コマンドでAPM有効化可能。
/dev/sdf WD Blue WD30EZRZ (3TB) not supported APM非対応規格。
/dev/sdl Seagate ST6000VN001 (6TB) not supported APM非対応規格(IronWolf等)。
✨ 重要ノウハウ:APM非対応のHDDはどうする? 最近のWD製HDDや大容量NAS向けHDD(Seagate IronWolfなど)は、規格上APM(-B)をサポートしていません(not supported が返ってきます)。

しかし心配無用です!APMには非対応でも、「スピンダウンタイマー(例: 10分アクセスなしで停止)」や手動スタンバイ命令(hdparm -y)は問題なく受け付けてくれます

そのため、OMVのWebUI設定では迷わず全台まとめて「APM: 127」「10分」で統一して設定してしまって問題ありません(非対応ドライブはAPM設定がハードウェア側で無視されるだけで、実害はありません)。

4. 【最大の罠】HDDが寝ない最大の原因は「S.M.A.R.T.監視」だった!

ここが今回の一番のハマりどころでした!

「GUIでスピンダウン時間を10分に設定したのに、いつまで経ってもディスクが回り続けている……」
「手動でスリープさせても、数十分後に気づいたら勝手にスピンアップしている……」

この元凶を突き止めるため、デーモン設定を確認したところ、犯人は S.M.A.R.T.監視デーモン(smartd) でした。

ターミナルでのsmartd設定変更前後とスリープ成功の様子

ターミナルで smartd.conf の設定を確認してみます。

grep -v "^#" /etc/smartd.conf

すると、各ドライブの設定行に以下のようなオプションが記述されていました。

... -W 0,0,0 -n never,q
⚠️ ここが最大の罠!「-n never」の正体 smartd-n never オプションは、「ディスクがスリープ状態だろうが何だろうがお構いなしにポーリングしてヘルスチェックを実行する」という仕様です。

せっかくディスクがスタンバイに入っても、smartdが定期監視のたびに強制的にスピンアップ(起床)させていたのです!

解決策:OMV WebUIでPower modeを「Standby」に変更する

この設定は、設定ファイルを直接書き換えてもOMVが再生成してしまうため、WebUI側から恒久的に変更します。

OMVのS.M.A.R.T.設定画面(Power mode: Standby)
  1. OMVのWebUIで 「Storage(ストレージ)」 ➔ 「S.M.A.R.T.」 ➔ 「Settings(設定)」 を開きます。
  2. 「Power mode(電源モード)」 の項目を Never から Standby に変更します。
  3. 「Save(保存)」をクリックし、上部に表示される黄色いバーのチェックボタン(適用)を押します。

再度ターミナルで grep -v "^#" /etc/smartd.conf を確認すると、-n standby,q に書き換わっていることが確認できます。
これで、「HDDがスリープしている間はヘルスチェックをスキップし、ディスクを起こさない」という理想的な挙動になります!


5. OMV WebUIでの恒久スピンダウン設定

続いて、サーバー再起動後も自動でスピンダウン設定が適用されるよう、各HDDの設定を行います。

OMVのディスク編集画面(APM 127、スピンダウン10分、ライトキャッシュ有効)
  1. WebUIの 「Storage(ストレージ)」 ➔ 「Disks(ディスク)」 を開きます。
  2. データ用の各HDD(sda, sdb, sdd, sdf, sdl)を選択し、編集(ペンのアイコン)をクリックします。
  3. 以下の通り設定します:
    • Advanced Power Management (APM): 127 - Intermediate power usage with standby
    • Spindown time: 10 minutes(運用スタイルに合わせて調整)
    • Enable write-cache: 有効(チェックを入れる)
  4. 「Save」をクリックし、全5台分設定したら画面上部の「変更を適用」を実行します。

6. 動作確認:全台スタンバイ(スリープ)の達成!

設定が完了したら、実際にHDDがスリープするかテストしてみましょう。

# ① 全HDDを一括で手動スピンダウンさせる
for d in sda sdb sdd sdf sdl; do sudo hdparm -y /dev/$d; done

# ② ディスクを起こさずに電源状態を確認する(-C オプション)
for d in sda sdb sdd sdf sdl; do echo -n "$d: "; sudo hdparm -C /dev/$d | grep "drive state"; done
💡 NOTE hdparm -C コマンドは、スリープ中のディスクを回転させずに状態だけを問い合わせる安全なコマンドです。

実行した結果がこちらです:

sda:  drive state is:  standby
sdb:  drive state is:  standby
sdd:  drive state is:  standby
sdf:  drive state is:  standby
sdl:  drive state is:  standby

見事に5台すべてのHDDが standby(スピンダウン停止状態)になりました!

この状態でしばらく放置してみましたが、smartdによる余計なスピンアップも発生せず、静かな状態がしっかりと維持されることを確認できました。


7. まとめ&スリープ運用の注意点

今回の設定により、常時稼働NASの静音化と大幅な省電力化を達成できました!

最後に、HDDスピンダウン運用を始める上での注意点とポイントをまとめておきます。

  • 初回アクセス時のスピンアップラグ
    スリープ中にPCから共有フォルダを開こうとすると、ディスクのモーターが回転を始めて読み込み可能になるまで約3〜5秒程度の待ち時間が発生します。故障やフリーズではないのでご安心ください。
  • スピンダウン時間の間隔
    HDDは頻繁なスピンアップ・スピンダウン(起動・停止の繰り返し)が最もモーターやヘッドに負荷をかけます。頻繁にアクセスする環境では、スピンダウン時間を短くしすぎず「20分〜30分」程度に設定するのがおすすめです。
  • 省電力効果のインパクト
    3.5インチHDD 5台で約25W削減。年間約6,000円前後の電気代削減になり、常時稼働サーバーとしては非常に大きなメリットです。

OpenMediaVaultで「スリープ設定が効かない」「HDDが勝手に起きてしまう」と悩んでいる方は、ぜひ今回の S.M.A.R.T.設定(Power mode: Standby)hdparmによる調査 を試してみてください!