夜間にHome Assistantでディスクアクセスが繰り返し発生する場合、通常はスケジュールされた処理であり、ストレージデバイスやRecorderが故障している証拠ではありません。
最も早い診断方法は、保持期間を変更したりデータベースを移動したりする前に、Home Assistant、アドオン、データベース、ホストのタイムスタンプを、アクセスが集中する時間帯と照合することです。Recorderのメンテナンス、自動バックアップ、ログローテーション、カメラやアドオンによる書き込み、ホストレベルのバックアップジョブは、いずれも似たようなバーストを発生させます。まずはこの現象をタイミングの問題として扱い、どのプロセスが書き込みを行っているか、どれくらい続くか、毎晩同じ処理が正常に完了しているかを確認してください。
設定を調整する前に、ディスクスパイクとスケジュール済みジョブを照合する
まず、繰り返し発生するアクセスの前後1時間を対象に、ディスクレイテンシ、書き込み速度、プロセスまたはコンテナのI/O、正確な開始時刻と終了時刻を記録します。毎晩ほぼ同じ分に始まるパターンは、スケジュールされたメンテナンスを強く示します。一方、家庭内の活動に応じて発生時刻がずれるパターンは、インテグレーション、カメラ、またはデバイスによる処理である可能性が高くなります。
Home AssistantのRecorderは定期的に保持期間に関する処理を実行します。また、コミュニティで共有されているタイミングの観察結果から、データベースのパージは早朝に実行され、長期統計は独自の周期で継続することが分かっています。そのため、ディスクが毎晩決まった時間帯に動作する場合は、Recorderのパージタイミングを最初に比較すると有効です。
ドライブが動作しているというだけで、保持期間を短縮したり、履歴を無効にしたり、データベースを移動したりしないでください。まず、書き込み元がRecorderであることを確認します。スパイクがデータベース処理の前後に始まる場合は、バックアップのスケジュール、Dockerまたはアドオンのログ、ファイルシステムのスナップショット、NASレプリケーション、ウイルス対策スキャン、同じディスクを共有するメディアサービスやカメラサービスを比較してください。
4つの一般的な原因は、それぞれ異なるI/Oパターンを示す
主な候補は、Recorderのメンテナンス、自動バックアップ、頻繁に書き込むインテグレーションやアドオン、ホストレベルのストレージジョブです。これらは重なることがあるため、重要な証拠は単に「ディスクがビジー」であることではありません。同じ時間帯に、データベースファイル、バックアップ先、ログパス、または別のコンテナのどれが書き込みを担っているかを確認する必要があります。
Home Assistantの自動バックアップシステムは、当初は早朝のスケジュールを使用していましたが、その後、ユーザーがタイミングを設定できるようになりました。そのため、バックアップ処理がデータベースのメンテナンスと近い時間帯に実行されることは自然です。自動バックアップのタイミングに関するリリース履歴は、夜間のI/OがすべてRecorderによるものだと決めつけず、設定されたバックアップ時間帯を確認すべきことを示しています。
以下のパターンを仮説として利用し、一度に変更するスケジュールは1つだけにしてください。1つのジョブを移動または無効化した結果、他のHome Assistantの処理を変えずにディスクスパイクも一緒に移動した場合、その原因が確認できます。
原因1:Recorderのパージまたは再パック
- 特徴:予測可能な早朝の時間帯に、データベース中心の書き込みが発生する。
- 確認方法:その時間帯のRecorderログ、データベースサイズ、ストレージレイテンシを比較する。
- IF–THEN:パージまたは再パックのタイミングに沿って発生し、正常に終了する場合、それは原因不明のループではなく、スケジュールされたメンテナンスです。
原因2:自動バックアップまたはアドオンのバックアップ
- 特徴:アプリデータの読み取りに加え、ローカル、USB、またはネットワーク上のバックアップストレージへ大量のシーケンシャル書き込みが発生する。
- 確認方法:バックアップジョブの開始時刻と保存先のスループットを比較する。
- IF–THEN:バックアップのスケジュールを変更するとディスクのバーストも移動する場合は、データベースの書き込みを抑制するのではなく、バックアップを維持したまま実行時間帯を変更してください。
原因3:ロギング、カメラ、または頻繁に通信するインテグレーション
- 特徴:1回のメンテナンス時間帯に集中するのではなく、エンティティのイベントに応じて継続的または繰り返し小さな書き込みが発生する。
- 確認方法:頻繁に変化するエンティティ、デバッグログ、カメラ映像、アドオンのデータベースを特定する。
- IF–THEN:スケジュールされたジョブがない時間にも書き込みが続く場合は、Recorder全体の機能を制限するのではなく、該当する書き込み元を抑制してください。
原因4:別のホストジョブがディスクを共有している
- 特徴:別のコンテナ、スナップショット、スクラブ、またはレプリケーションプロセスがI/Oを占有している間、Home Assistantのレイテンシが上昇する。
- 確認方法:Home Assistantのログだけでなく、ホストレベルでI/Oの割り当てを確認する。
- IF–THEN:隣接するジョブを移動することで夜間の競合が解消する場合、問題の原因はHome Assistantではなく、Home Assistantが影響を受けていた側です。
正常なメンテナンスと異常な書き込み負荷を区別する
正常なスケジュール済みバーストは、開始後に処理量が一定の範囲に収まり、データベースエラーやその後のテールレイテンシの上昇を伴わず、通常の状態に戻ります。注意すべき兆候は、アクセス時間帯が毎晩長くなること、データベースの破損やロックエラーが繰り返されること、ファイルシステムが満杯になること、またはジョブが安定した完了状態に到達しないことです。
Recorderの最適化事例では、不要な記録対象を減らすことでデータベースの増加を抑え、将来的なメンテナンスやバックアップの負荷を軽減できることが示されています。このような記録量の削減は、Recorderの記録量が実際の問題だと証拠で確認できた後にのみ行ってください。ディスクLEDが点灯したというだけで反射的に実施するものではありません。
問題と判断する境界は、ユーザーから見える影響があるか、または処理を完了できる余裕が失われているかです。夜間のジョブが家庭での活動時間帯より前に終了し、ストレージレイテンシも正常であれば、アクセスが発生すること自体は不具合ではありません。メンテナンスが朝のオートメーションと重なる、バックアップが繰り返し失敗する、またはデータベースが空き容量の限界に近づいている場合は、保持期間、スケジュール、ストレージ、または処理の分離を変更する必要があります。
一晩の切り分けテストを実施し、元の時間帯を検証する
通常のHome Assistant設定は維持し、疑わしいジョブを1つだけ別の時間帯に移動してください。両方の夜にわたって、ディスクの書き込み速度、I/O待機時間、データベースの活動状況、コンテナレベルの書き込み元を記録します。複数のインテグレーションやバックアップを同時に無効にしないでください。改善したとしても、どの変更が効果をもたらしたのか分からなくなります。
関連するZimaSpaceのHome Assistantのバックグラウンド処理に関する分析でも、同じ帰属ルールが用いられています。リソースの急増をハードウェア容量の問題とみなす前に、キューに入っている処理やスケジュールされた処理の担当元を特定してください。
夜間の書き込み元が特定され、その活動が一定の範囲に収まり、データベースとバックアップが正常に完了し、空き容量が健全に保たれ、元の時間帯でも通常のローカル操作に影響がなければ、システムは合格です。同じ管理されたテストで継続的なエラー、終わりのない処理時間、または正当なスケジュール済みジョブに従わないI/Oレイテンシが確認された場合にのみ、ストレージの健全性確認やデータベースの復旧へ進んでください。
サポートとヒント
もっと読む

同時稼働するコンテナ向けにHome Assistantのデータベース接続を最適化する方法
実測したアクティブ接続数とレイテンシーに基づいて外部Recorderデータベースを調整し、最大接続数を増やしたり、別のホストのプールをコピーしたりしないでください。

Home Assistantでジョブやインポートの重複を防ぐ方法
トレースと一意の操作キーを使用して、重複するアクションやレコードを生成せずに自動化とインポートを安全に再試行できるようにします。

データベースボリュームがいっぱいになった後にHome Assistantを修復する方法
まず証拠を削除せずに満杯になったRecorderボリュームから復旧し、その後増加を抑え、再起動後も履歴と自動化が維持されることを確認する。

