最初のホームラボでは、ホストの再インストール、アプリの再構築、容量の拡張を行う際に、すべてのデータセットを一度に移動せずに済むよう、ストレージの役割を分ける必要があります。
ブートドライブ、永続的なアプリケーション状態、大容量ストレージでは、障害、レイテンシ、増加のパターンが異なります。これらを区別のない 1 台のディスクとして扱うのは、更新によってルートファイルシステムが満杯になったり、データベースがメディアファイルと競合したり、容量のアップグレードでオペレーティングシステムの移動が必要になったりするまでの間だけ便利です。明確なトポロジーがあれば、各層を他の層の定義し直しなしに変更できます。
ドライブ容量を選ぶ前にストレージの役割を割り当てる
ハードウェアの名称ではなく、まずデータの挙動から考えます。システム層には、オペレーティングシステム、パッケージの状態、コンテナエンジン、ホスト構成が含まれます。アプリデータ層には、データベース、構成、シークレット、インデックス、その他の永続状態が含まれます。大容量データ層には、メディア、アーカイブ、バックアップ、ISO、プロジェクトファイル、家庭内で共有するデータが含まれます。キャッシュと一時ファイルは、4 つ目の、破棄可能な役割を構成します。
Puget Systems は、独立した復元や再インストールが重要な場合、オペレーティングシステムとアプリケーションをプライマリドライブに置き、プロジェクト資産を分離することを推奨しています。この 役割ベースのストレージ分離は、ワークロードが動画編集でない場合でも、ホームラボにそのまま適用できます。
計画しているすべてのサービスについて、各パスがどの役割に属するか、誰が所有するか、再生成できるか、どの程度の速さで増加するか、どの復元操作で復旧できるかを記録します。ドライブの選定は、このマップによって容量とレイテンシの要件が明らかになってから行うべきです。
ブートドライブを交換可能かつ容量制限のある状態に保つ
ブートドライブには、オペレーティングシステム、ログ、パッケージ更新、コンテナイメージ、一定量の作業データを収容できる十分な容量が必要です。データベース、家族のファイル、VM イメージ、アプリケーションのアップロード先が、インストール時に最も簡単だったという理由だけでブートドライブだけになってはいけません。
LinuxBlog のファイルシステム階層ガイドでは、ファイルシステムを分離することで、あるデータ領域がルートファイルシステムを満杯にし、サーバーの他の部分に影響を及ぼすのを防げると説明しています。その ルートファイルシステムの封じ込め原則こそが、永続的に増加するデータをブート層の外部に置く主な理由です。
ホスト構成、パッケージまたは Compose の定義、ネットワーク設定、外部データマウントの場所を文書化します。ブートドライブは、大容量データを復元せず、アプリケーションの状態がどこに保存されていたかを推測することなく再インストールできる場合に、交換可能性テストに合格します。
永続的なアプリデータは、意図的に用意した低レイテンシーのパスに配置する
データベース、インデックス、アカウントレコード、設定、および頻繁に更新される小さなファイルは、大容量のメディアアーカイブとは異なる動作をします。容量はそれほど大きくないかもしれませんが、高いレイテンシーや一貫性のないバックアップによって、アプリケーションの動作が遅くなったり、復旧不能になったりする可能性があります。SSDに接続された専用パスを使用すれば、この状態を可視化し、使い捨てのコンテナレイヤーから独立させられます。
Better Stackは、Dockerボリュームによって、使用するコンテナから独立したライフサイクルで永続データを管理できると説明しています。このアプリケーションとデータのライフサイクルの境界は、ホームラボで名前付きボリュームの代わりにバインドマウントを使用する場合にも不可欠です。
次のような読みやすい場所を使用します /srv/appdata/photo-service および /srv/appdata/database-name。必要に応じてアプリケーションと整合性のある方法でデータベースをバックアップし、認証情報、スキーマのバージョン、証明書などの依存関係を記録します。同じアプリから生成されるという理由だけで、このパスにキャッシュを混在させないでください。
容量重視でレイテンシーの影響を受けにくいデータにはバルクストレージを使用する
バルクストレージは、メディアライブラリ、アーカイブ、デバイスのバックアップ、ISOファイル、大規模なプロジェクトデータなど、主な要件が容量であるデータセットに適した保存先です。大容量のシーケンシャルな読み書きでは、すべてのデータをフラッシュストレージに保存するコストに見合わない場合があるため、ここではHDDが引き続き役立ちます。
TechTargetのSSDとHDDの比較では、SSDは低レイテンシーを提供する一方、HDDは大容量ストレージの要件に経済的に対応し続けていると説明されています。このレイテンシーと容量の違いは、アプリの状態にはSSDを、大容量の交換可能なデータやシーケンシャルデータにはHDDを使用するトポロジーを裏付けています。
| データの役割 | 一般的な媒体 | 主な優先事項 | よくある間違い |
|---|---|---|---|
| ブートとホスト | SSDまたはNVMe | 信頼性の高い起動と更新 | ユーザーデータでルートファイルシステムをいっぱいにする |
| 永続的なアプリ状態 | SSDまたは保護された高速ティア | 低レイテンシーと一貫した復旧 | 使い捨てコンテナ内にデータベースを残す |
| バルクストレージ | HDDプールまたは大容量SSDプール | 容量と予測可能な拡張 | バルクプールを唯一のバックアップコピーとして使用する |
| キャッシュと一時作業 | SSD、NVMe、または容量を制限した一時パス | 速度と簡単なクリーンアップ | 再構築可能なデータを無期限にバックアップする |
ストレージ媒体そのものがトポロジーなのではありません。重要なのは、アプリケーションからは役割ベースのパスが安定して見え、管理者は後からそのパスの背後にある物理ストレージを交換できるようにすることです。
マウントポイントとサービスの起動順序を安定させる
データドライブのマウントが安定しないと、アプリケーションがブートディスク上の空のディレクトリに書き込む可能性があります。サービスは正常に見えても、誤ったファイルシステムを使い果たしていることがあります。安定した識別子と起動時の依存関係により、この静かなトポロジー障害を防げます。
LinuxBlogのディスクパーティション分割ガイドでは、デバイス名だけに頼らず、ファイルシステムのUUIDとマウントポイントを確認する方法を紹介しています。この永続的なマウント検証ワークフローにより、再起動、コントローラーの変更、ドライブの追加後もパスを安定させられます。
依存するコンテナやサービスを起動する前に、大容量データ用とアプリデータ用のファイルシステムをマウントします。使い捨てデータを使用して、2回の再起動と1回の計画的なストレージ切断をテストします。マウントが見つからない場合は、ワークロードを停止するかアラートを発生させるようにし、ルートファイルシステムへの書き込みに切り替わらないようにします。
アプリの状態と大容量データを異なる復旧単位に応じてバックアップする
アプリケーションの状態には、設定、データベースの整合性、シークレット、バージョン互換性が必要になることがよくあります。大容量データは、ファイルやディレクトリとして復元できる場合があります。単一のファイルシステムスナップショットは便利ですが、依存関係が別の場所にある場合、それだけで完全なアプリケーション復旧が実現するわけではありません。
N2WSは、データベースの復旧には、コピーした1つのディレクトリではなく、データ、スキーマ、設定情報、ログ、バックアップメタデータなどが含まれる場合があると説明しています。この複数要素から成るアプリケーション復旧モデルにより、アプリの状態と大容量ファイルに別々のバックアップポリシーを適用できます。
サービスで許容されるデータ損失の基準を満たせる頻度で、アプリ定義と整合性のある状態をバックアップします。大容量ファイルは、スナップショットまたはバージョンに加えて、独立したコピーでも保護します。再構築によって許容できないダウンタイムが発生する場合を除き、キャッシュはバックアップ対象から除外します。少なくとも1つの復旧用コピーを稼働中のストレージプール外に保存し、ファイルの復元とアプリ全体の再構築を1回ずつテストします。
すべての階層を移動せずに容量の増加を計画する
ブートドライブは、パッケージ、ログ、イメージ、アップデートによって増加します。アプリデータは、データベース、インデックス、ユーザー状態によって増加します。大容量ストレージは、メディア、バックアップ、アーカイブによって増加します。これらの増加速度はそれぞれ異なるため、各階層に独自の警告しきい値と拡張方法が必要です。
TechTargetは、階層型ストレージを、価格、性能、容量、可用性の特性が異なるストレージクラスにデータを対応付ける仕組みと定義しています。このポリシーベースの階層化概念により、容量に関するあらゆる問題がサーバー全体の移行に発展するのを防げます。
ルートファイルシステムの使用量、アプリデータの使用量、大容量プールの使用量について、それぞれ個別にアラートを設定します。可能な場合は、運用上の予備容量として15~20%を確保します。同じマウントパスの背後で容量を追加または交換して、大容量層を拡張します。アプリケーションの状態を移動するのは、単に新しいドライブを取り付けたからではなく、レイテンシ、保護、容量の測定結果によって必要性が明らかになった場合だけにします。
明確な復旧の境界を維持できる最小限のトポロジーを選ぶ
非常に小規模なホームラボでは、ディレクトリを明示し、バックアップを取り、容量を適切に制限すれば、ブートとアプリデータの役割を1台のSSDに置けます。ただし、大容量ファイルは別の容量用パスに置くべきです。より耐久性の高い構成では、ブートSSD、保護されたSSDアプリデータ層、複数ドライブの大容量プールを使用しますが、追加デバイスが役立つのは、障害と復旧の境界を明確にできる場合に限られます。
ServeTheHomeのコンパクトサーバープロジェクトは、ラック規模のプラットフォームを必要とせず、メモリ、ストレージ、ネットワークの明確な組み合わせを中心に小型の専用ノードを設計する方法を示しています。この役割を明確にしたコンパクトサーバーモデルは、測定に基づく必要性もなくストレージ層を追加するより、最初のホームラボの参考として適しています。
| 初めてのホームラボの規模 | ブート層 | アプリデータ層 | 大容量層 |
|---|---|---|---|
| 1~3個の軽量サービス | 1台のSSD | SSD上の明示的にバックアップされたディレクトリ | 分離されたHDD、DAS、またはNASのパス |
| 複数のデータベース依存アプリ | 専用ブートSSD | 分離された保護済みSSDデータセット | HDDプールまたはストレージNAS |
| 仮想マシンと共有ストレージ | ハイパーバイザーのブートデバイス | SSD上のVMおよびアプリケーション層 | 独自のバックアップを備えた独立した大容量プール |
| ストレージ重視の家庭用システム | 交換可能なシステムデバイス | 保護された高速アプリケーション状態 | 複数ベイのストレージ中心NAS |
関連する3つのサービスを中心に最初のサーバーを構築するためのZimaSpaceガイドは、初期のアプリデータの役割を見極めるのに役立ちます。ZimaBoard 2 ミニホームサーバーは、ブートレイヤーとアプリレイヤーをSATAまたはPCIeで直接接続したストレージの近くに保つ、コンパクトなトポロジーに適しています。大容量層に統合型の複数ドライブ容量、長期保持、同時アクセス、ストレージ中心の復旧が必要な場合は、ZimaCube 2 AI NASのほうが明確な基盤になります。
ブートドライブの交換、アプリの再構築、または大容量領域の拡張を行った際に、1つのレイヤーだけが変更され、他のストレージの役割が分かりやすく保たれるなら、そのトポロジーは適切です。
NAS&サーバー設定
もっと読む

5年分の写真にはどれくらいの容量を購入すべきですか?
一般的な推定値の代わりに、家庭内の写真の増加量、使用可能なストレージ容量、復旧用コピー、早期拡張の目安を実測して算出する5年間の写真ワークシート。

家庭用バックアップNASに必要なドライブベイ数は?
独立したファミリーリカバリーコピーを保持しながら、2ベイのシンプルさ、4ベイの拡張性、より大容量の保持ニーズを分けるベイ数のフレームワーク。

10個のコンテナを実行するホームサーバーには、16GBのRAMで十分ですか?
コンテナ数ではなくアプリケーションのサイズを基準にし、監視、制限、スケジューリング、またはアップグレードが必要になるタイミングを定義する16GBメモリテスト。

