初めてセルフホストアプリをインストールする前にストレージを計画する方法

Eva Wong は テクニカルライター であり、 生粋の技術好き としてZimaSpaceで活動しています。ホームラボやオープンソースソフトウェア をこよなく愛する生粋のギークで、複雑な技術概念をわかりやすく、実践的なガイド にまとめることを得意としています。Evaは、セルフホスティングは難しいものではなく、楽しむものだと考えています。チュートリアルを通じて、初めてのNAS構築からDockerコンテナの使いこなしまで、コミュニティがハードウェアのセットアップをわかりやすく理解できるよう 支援しています。、初めてのNAS構築からDockerコンテナの習得まで。

アプリをインストールする前にストレージを計画しましょう。最初に選ぶボリュームによって、アップデート、障害、移行、将来の拡張後に何が残るかが決まります。

セルフホスト型アプリが保存するのは、ユーザーに見えるファイルだけとは限りません。データベース、設定、シークレット、インデックス、サムネイル、ログ、一時ファイル、バックアップなども作成されることがあり、それぞれ性能や復旧要件が異なります。インストール前にこうした役割を整理しておけば、ブートディスク、アプリの状態、置き換えのきかない家庭のデータが、誰も安全に再構築できない一つのフォルダーにまとまるのを防げます。

ドライブやフォルダーを選ぶ前に、データの役割を洗い出す

まずサービスが実現することを定め、次にそれを実現するために必要なデータの役割をすべて洗い出しましょう。写真ライブラリには、オリジナル画像、アップロード中のファイル、データベース、サムネイル、自動生成されるインデックス、エクスポートファイルなどがあります。メディアサービスには、ソースファイル、アートワーク、視聴状況、トランスコード用キャッシュ、設定などがあります。パスワード管理サービスは容量が小さくても、バックアップの整合性とアクセス制御が非常に重要です。

ホームラボの計画ガイドでは、コンテナを導入する前に、目的、ストレージ、バックアップ、ネットワーク、セキュリティ、ドキュメントを定めることを推奨しています。このストレージより先に目的を定める手順に沿えば、後から変わるかもしれないアプリ名ではなく、実際のワークフローに基づいてストレージ構成を決められます。

役割ごとに、所有者、交換可能かどうか、増加の速さ、変更頻度、低レイテンシが必要かどうか、許容できる復旧時点を記録しましょう。ストレージ設計を決めるのは、カタログに並ぶアプリの数ではなく、こうした回答です。

システム、アプリの状態、ユーザーデータ、キャッシュ、バックアップの各レイヤーを分ける

オペレーティングシステムとアプリケーションのコードは、交換できるようにしておくべきです。永続的なアプリケーションの状態には、再インストール後もサービスを元どおりに利用するために必要なデータベース、設定、アカウント記録、インデックス、シークレットが含まれます。ユーザーデータには、写真、書類、メディア、メモなど、実際に価値のあるファイルが含まれます。キャッシュや一時データは、通常、再構築できるようにしておくべきです。稼働中のサーバーに障害が起きても、バックアップから復旧できなければなりません。

分かりやすいアプリストレージのガイドでは、インストール前にアプリケーション用ストレージを構成することを推奨しています。コンテナ化されたサービスは、ホスト側で管理するデータセットやパスをマウントするためです。このアプリケーションのデプロイとマウント先ストレージの分離により、アプリのアップデートや再インストールがユーザーデータの移行に発展するのを防げます。

ストレージ層 一般的な内容 推奨される扱い
システム Linux、ダッシュボード、コンテナエンジン 内蔵SSD。手順を文書化すれば再インストール可能
アプリの状態 データベース、設定、シークレット、インデックス 永続化パス。整合性を保ったバックアップを頻繁に実行
ユーザーデータ 写真、ドキュメント、メディア、プロジェクト バージョン管理と独立したバックアップを備えた容量プール
キャッシュ サムネイル、トランスコード、一時ダウンロード 容量制限のある高速ストレージ。通常はバックアップ対象外
バックアップ 復旧用コピーとエクスポート済み設定 復元テストを備えた独立した障害ドメイン

アクセスパターンに合わせてストレージメディアを選ぶ

容量と速度は別々の要件です。データベースやインデックスでは小規模な読み書きが頻繁に行われるため、低遅延のSSDストレージが適しています。大容量のメディアライブラリ、アーカイブ、世代管理するバックアップには、手頃な価格で大容量のHDDが適している場合があります。一時的なトランスコードや生成プレビューには十分な速度と明確な容量制限が必要ですが、オリジナルデータと同等の保護は不要です。

Better Stackのボリュームガイドでは、永続化が必要なコンテナデータはコンテナ自体を入れ替えた後も保持されなければならないと説明しています。同ガイドの独立したデータライフサイクルモデルは、階層化されたホームサーバーの構成に役立ちます。低遅延が求められるデータはSSDに、大容量のユーザーデータは保護された容量プールに、一時的なキャッシュは復旧に影響せずに消去できるパスに置きましょう。

合計サイズが小さいというだけで、アプリケーションのデータベースを低速でスリープするディスクに置かないでください。再生成可能なサムネイルのバックアップに、高価なSSD容量をいつまでも費やさないでください。ストレージメディアは、それぞれのパスで行われる処理に合わせて選びましょう。

初回インストールの前に安定したパスとマウントを作成する

アプリケーションは、ソフトウェアが変わっても意味が変わらないパスを参照する必要があります。/data/photos、/appdata/photo-service、/cache/photo-serviceのような名前なら、アプリを入れ替えた後も意味が分かります。一時的なコンテナIDや自動生成されたボリュームだけを名前にしたパスは、監査や移行が難しくなります。

ホームサーバーの個人向け設計に関する記事では、大容量で追記中心のメディア、高頻度で変更されるデータベース、再作成可能なアプリケーション定義を分けており、それぞれに異なるバックアップと復元の方法が必要です。このデータの種類に応じた復旧モデルは、すべてをアプリケーションの中に隠すのではなく、データの役割が分かるようにマウントパスを設定すべき理由を示しています。

アプリの起動前に、各ディスクまたはプールが起動時にマウントされることを確認します。使い捨てデータで、2回の再起動と一時的なストレージ切断をテストします。マウント先が見つからない場合は、サービスを停止するか、目に見えるエラーを表示させます。アプリケーションが起動ディスク上の空のディレクトリに新しいファイルを書き込んでしまう事態を防ぎます。

フォルダー構成と合わせて権限とサービスの所有者を計画する

フォルダー構成が明確でも、すべてのコンテナが広範な管理者権限で動いていては不十分です。各サービスは、その機能に必要なパスだけを読み書きできるようにします。家族のユーザーは各自のフォルダーと、共有が許可されたデータにアクセスできる必要があります。一方、バックアップ先や非公開のアプリケーションデータは、一般共有として公開しないでください。

Linux Handbookによると、ファイルへのアクセスはユーザー、グループ、その他に対する権限によって決まります。この所有者とグループに基づく権限モデルは、インストール前にサービスの実行ユーザーをストレージパスに割り当てるための実用的な基盤となります。

計画した各パスの横に、想定する所有者とアクセスモードを記載します。そのうえで、拒否されるべき操作をテストします。メディアサービスがバックアップリポジトリを変更できないこと、一時ダウンローダーが非公開ドキュメントを閲覧できないこと、一般の家族用アカウントがアプリのデータベースやシステムファイルを変更できないことを確認します。

容量は増加量、バージョン、復旧用コピーを考慮して決める

今日表示されているファイルだけを基準に容量を決めないでください。予想される年間増加量、アプリケーションの状態、サムネイルやインデックス、スナップショット、ファイルのバージョン、一時作業領域、データベースのダンプ、更新や修復に必要な空き容量を加味します。重要なのはドライブのラベルに記載された容量の合計ではなく、ミラーリングやパリティ適用後に使用できる容量です。

セルフホスト環境のバックアップガイドでは、サービスを正常に再構築するために必要なデータベース、ユーザーファイル、設定をそれぞれ分けて扱います。この3つの要素からなる復旧用データ一覧は容量計算に含めるべきです。メディアフォルダーのコピーをもう1つ作れば、アプリケーション全体をバックアップしたことになると考えてはいけません。

データベースの増加、クリーンアップジョブの失敗、キャッシュの急増によってシステムディスクが満杯にならないよう、運用予備領域を確保します。実用的な初期モデルは、現在のデータ量に予想増加分、選択した冗長化のオーバーヘッド、バージョン履歴のオーバーヘッド、バックアップまたはスナップショット用の作業領域を加え、通常運用のために少なくとも15~20%の空き容量を確保することです。

アプリを追加する前に再構築と拡張を実証する

サービスを1つ削除しても、その状態がどこに保存されているかを推測せずに再構築できれば、ストレージ計画は整っています。アプリケーションの定義をエクスポートし、データベースまたは設定を整合性の取れた形でバックアップし、ユーザーデータのパスを保持して、テスト用の場所にサービスを復元します。その後、ドライブの追加、データセットの移動、起動ディスクの交換をしても、他のすべてのアプリを再編成する必要がないことを確認します。

セルフホスト環境のバックアップ記事では、通常のファイルと稼働中のデータベースを区別し、コピーしたボリュームなら必ず復元できると考えずに、アプリケーションと整合性の取れたデータベースのエクスポートを推奨しています。このゼロからの復元要件が、ストレージ設計がダッシュボードの外でも成り立つかを判断する最終テストです。

ZimaSpaceのホームサーバーに接続する最初の3つのサービスを選ぶガイドは、初期ストレージの用途を絞るのに役立ちます。最初の構成が小規模で、ストレージを計画的に追加できる場合は、アプリ優先の構成にZimaBoard 2 ミニホームサーバーが適しています。複数ドライブの容量、家族で共有するデータ、スナップショット、ストレージを優先した拡張が最初から必要なら、ZimaCube 2 AI NASがより明確な選択肢です。

永続化するすべてのパスについて、所有者、バックアップルール、増加の見積もり、交換可能なシステム層の外にあるテスト済みの保存先を決めてから、最初のアプリをインストールします。

NASとサーバーのセットアップ

続きを読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.