キャッシュプール
Unraid では、cache pool は 1 台以上のドライブからなる集合で、通常は SSD または高速 HDD です。これらのドライブは、メインの array に移動される前に、一時的にデータを保存します。cache pools を使うと、書き込み速度を大幅に向上させ、データを保護し、Docker コンテナの実行や virtual machines のような特定の作業向けに専用ストレージを提供できます。
Cache pools はいくつもの利点を提供し、Unraid のセットアップに次のような価値ある追加機能をもたらします。
-
書き込み速度の向上: Cache pools を使うと、データをメインの array に転送する前に、より高速なドライブへ素早く書き込めます。これにより、ファイル保存時の体感パフォーマンスが大幅に向上します。
-
キャッシュ済みファイルのデータ保護: cache pool 内で複数のドライブを使用することで(RAID 1 のように構成する場合など)、冗長性を追加できます。つまり、キャッシュされたデータは、メインの array に到達する前の段階でドライブ障害から保護されます。
-
アプリケーション向けに最適化されたストレージ: Docker コンテナや virtual machines などのアプリケーションを cache pool に保存すると、パフォーマンスが向上し、メインの array への負荷が軽減され、よく使用されるファイルへのアクセス時間も短縮されます。
-
柔軟で専用のストレージ: 複数の cache pools を使えば、用途ごとに特定のプールを割り当てられます。たとえば、1 つのプールをダウンロード専用に、別のプールを virtual machines 用にすることで、リソース競合を減らし、効率を高められます。
:::info[Keep 心に留めておく
- 複数のプール: 異なる cache pools を作成して名前を付け、特定のニーズに合わせて調整できます。
- SSD と HDD: SSD は速度に優れており、HDD は大容量の順次データ処理に使用できます。さらに、HDD は SSD の寿命を延ばすのに役立ちます。
- 冗長性が重要: データを保護するには、cache pool で 1 台以上のドライブを使用してください。1 台だけのプールでは、ドライブ障害の可能性から保護できません。
- ファイルシステムの選択: cache pools の既定のファイルシステムは BTRFS で、冗長性と柔軟性を高めるためのさまざまな RAID オプションをサポートしています。ファイルシステムの選択について詳しくは、ファイルシステム を参照してください。
- Mover との統合: cache pool に書き込まれたデータは、設定したスケジュールに基づいて自動的にメインの array に転送されます。これにより、user shares を整理しやすく、管理しやすい状態に保てます。
- アプリケーションのパフォーマンス: Docker コンテナ、アプリデータ、VM ディスクを cache pool に配置することで、アクセス速度が向上し、メインストレージへの負荷を最小限に抑えられます。
:::
プールモード
Unraid の cache pools は、主に シングルデバイスモード と マルチデバイスモード の 2 つのモードで動作できます。これらのモードの違いを理解しておくと、パフォーマンス、柔軟性、データ保護の最適なバランスを、ニーズに合わせて見つけやすくなります。
シングルデバイスモード
シングルデバイスモードでは、cache pool は 1 台のデバイスのみで構成されます。つまり:
- 冗長性なし: デバイスが故障すると、array に転送されていないそのデバイス上のデータは失われます。
- ファイルシステムのオプション: BTRFS 以外のファイルシステム、たとえば XFS や ZFS を使用できます。
単一デバイスモードはシンプルです。デバイスの追加や削除は簡単ですが、冗長性や拡張といった高度な機能は利用できません。
マルチデバイスモード
cache pool を 1 台以上のデバイスでセットアップすると、マルチデバイスモードになります。知っておくべきことは次のとおりです:
- データ保護: このモードでは BTRFS または ZFS を使用してデバイス間でデータをミラーリングし、ドライブ障害からキャッシュされたデータを保護します。1 台のデバイスが失われても、データは失われません。
- 組み合わせ自由: SSD と HDD の混在を含め、サイズや種類の異なるデバイスを追加または削除できます。
- 容量管理: BTRFS ディスク使用量計算機 を使用して、RAID レベルと使用するデバイスのサイズに基づいて、利用可能な容量を見積もります。ZFS プールについては、構成の詳細について ZFS ストレージガイド を参照してください。
cache pool の一般的な作業には次のものがあります:
- シングルデバイスモードとマルチデバイスモードの切り替え
- プールへのディスク追加
- プール内のディスクの交換
- プールと array の間でファイルを移動する(プールと array の間でファイルを移動する を参照)
マルチデバイスモードへの切り替え
Unraid の Cache pools は、単一デバイスから複数デバイスへ拡張でき、容量と冗長性を高められます。マルチデバイスモードを利用するには、プールを BTRFS または ZFS でフォーマットしておく必要があります。
プールを BTRFS または ZFS に変換する
cache pool がすでに BTRFS または ZFS でフォーマットされていない場合は、次の手順で変換できます。
プールを BTRFS または ZFS に変換するには:
- 重要な内容をバックアップします。プール内のファイルを array に移動するには、プールと array の間でファイルを移動する を参照してください。
- array を停止します。
- Main タブでプールをクリックし、ファイルシステム形式として BTRFS または ZFS を選択します。
- array を起動します。
- プールが アンマウント不可 と表示されたら、確認して Format をクリックします。
- フォーマット後、BTRFS または ZFS のプールになります(この段階ではシングルデバイスです)。
- (必要に応じて)追加のドライブを追加します。
- ファイルをプールに戻してデータを復元します。
ドライブを追加してマルチデバイスプールを作成する
プールを BTRFS または ZFS にフォーマットしたら、冗長性の追加やストレージ拡張のためにさらにドライブを追加できます。既存のプールにディスクを追加する詳しい手順については、プールへのディスク追加 を参照してください。
冗長性を高めるためにドライブを追加するには:
- array を停止します。
- Main タブで、新しいデバイスを 1 台以上プールに割り当てます。
- array を起動します。
- Unraid は新しいデバイスを自動的に組み込み、balance(BTRFS)または resilver(ZFS)を開始します。
- Main タブで最初のプールデバイスをクリックし、進行状況を確認するには Balance Status(BTRFS)または zpool status(ZFS)を確認します。
- 完了すると、プールは容量と冗長性を強化した マルチデバイスモード で動作します。
BTRFS Disk Usage Calculator を使用して、選択した RAID レベルとデバイスサイズに基づく利用可能容量と冗長性を見積もれます。
プールへのディスク追加
ストレージ要件が増えるにつれて、追加のディスクを加えてキャッシュプールを拡張したくなる場合があります。このプロセスにより、RAID 構成によるデータ保護を維持しながら、容量とパフォーマンスの両方を高められます。
プールにディスクを追加したい場合は、プールがすでに BTRFS または ZFS でフォーマットされていることを確認してください。そうでない場合は、プールを BTRFS または ZFS に変換する で説明しているように、まずフォーマットする必要があります。
BTRFS プール
BTRFS プールにディスクを追加するには:
- array を停止します。
- Main タブで、プールを開きます。
- Pool Devices セクションで、Slots を追加するデバイス数と正確に同じ値に設定します。
- 利用可能なスロットに新しいデバイスを割り当てます。
- array を起動して変更を有効にします。
ZFS プール
ZFS プールの拡張は、プール構成の種類によって異なります:
- 単一 vdev の RAIDZ1/2/3 プール: RAIDZ 構成で 1 つのドライブ समूहからなるプールです。1 台ずつ拡張できます。下の RAIDZ expansion を参照してください。
- ミラー プール: ドライブをミラーで対にしたプールです。追加のミラーペアを加えて容量を増やせます。
- マルチ vdev プール: 複数のドライブ समूह(たとえば複数の RAIDZ グループや複数のミラーペア)を持つプールです。既存のグループに個別のドライブを追加して拡張することはできません。
すべての ZFS プールがデバイス追加で拡張できるわけではありません。1 台ずつの拡張が可能なのは、単一 vdev の RAIDZ1/2/3 プールのみです。その他の構成では、ミラー プールに新しいミラーペアを追加する、または RAIDZ プールに同じ幅の新しい vdev を追加するなど、完全な vdev を追加する必要があります。
新しく 2 台構成の ZFS プールを作成し、後で 1 台ずつドライブを追加して拡張する予定がある場合は、初期設定で既定のミラー構成ではなく RAIDZ1 を選択してください。2 台構成のプールは既定ではミラー(冗長性あり)になりますが、RAIDZ1 を選ぶと、データを移行せずに将来プールを段階的に拡張できます。2 台以上に拡張する予定がない場合は、シンプルさとパフォーマンスの点から既定のミラー構成が推奨されます。
RAIDZ の拡張
Unraid 7.2 以降では、単一 vdev の RAIDZ1/2/3 プールを 1 台ずつ拡張できます。この機能により、プール全体を再構築せずに、段階的に容量を増やせます。
単一 vdev の RAIDZ プールを拡張するには:
- array が動作中の状態で、Main → Pool Devices からプール名を選択して詳細を表示します。
- Pool Status 領域で Upgrade Pool ボタンを確認します。表示されている場合は、続行する前にクリックする必要があります。なお、プールをアップグレードすると、以前の Unraid リリースへダウングレードできる範囲が制限されます。
- array を停止します。
- Main → Pool Devices で、プールにスロットを追加します。
- 適切なドライブを選択します(プール内で最も小さいドライブ以上の容量である必要があります)。
- array を起動します。
"invalid expansion" 警告が表示された場合は、手順 2 で述べた Upgrade Pool ボタンを使って、先にプールをアップグレードする必要があります。
プールからディスクを削除する
BTRFS または ZFS のマルチデバイス cache pool からディスクを削除すると、ハードウェアを再利用したり、故障したドライブを交換したり、ストレージを再構成したりできます。この操作が可能なのは、プールが冗長性あり(データとメタデータの両方で RAID 1 など)として設定されており、残りのデバイスにすべてのデータを格納できる十分な空き容量がある場合に限られます。
WebGUI の使用
WebGUIを使用してディスクを削除するには:
- arrayを停止します: [Main]タブに移動し、arrayを停止するためのオプションを探します。
- プールのドライブの割り当てを解除します: 削除したいドライブを見つけ、[Main]タブでその割り当てを解除します。
- arrayを開始します: 変更を適用するためにarrayを再起動します。
- 削除を確認します: [Main]タブで最初のプールデバイスをクリックし、次に[Balance Status](BTRFSの場合)または[zpool status](ZFSの場合)を確認して、デバイスが正しく削除されたことを確認します。
:::note[Timing]
ドライブの削除とプールのリバランスには、データ量やデバイスの速度によっては数時間かかる場合があります。
:::
コマンドラインの使用(詳細)
コマンドラインに慣れている場合、この方法のほうがより細かく制御でき、WebGUI オプションが利用できないときに役立ちます。コマンドラインインターフェースの使用方法について詳しくは、コマンドラインインターフェースを参照してください。
コマンドラインを使用してディスクを削除するには:
-
array が起動していることを確認し、コマンドラインインターフェースを開きます。
-
下のコマンドを入力し、
Xを削除したいドライブに対応する文字に置き換えます(Main タブに表示されているとおりです):btrfs device remove /dev/sdX1 /mnt/cache- 暗号化されたデバイスの場合は、
/dev/mapper/sdX1を使用します。 - NVMe デバイスの場合は、
nvmeXn1p1を使用します。
- 暗号化されたデバイスの場合は、
-
完了を待ちます: カーソルが戻ったら、デバイスの削除は完了です。
-
削除したメンバーを Unraid に「忘れさせる」:
-
再び array を停止し、削除したデバイスを除く残りのすべてのプールメンバーを再割り当てしてから、array を開始します。
複数のデバイスを削除するには:
1 つのコマンドで実行できます:
btrfs device remove /dev/sdX1 /dev/sdY1 /mnt/cache
ただし、削除は引き続き 1 台ずつ順番に行われることに注意してください。
:::note[Timing]
WebGUI の方法と同様に、データ量とデバイス速度によっては、デバイスの削除とリバランスに数時間かかる場合があります。
:::
プールにデバイスが 1 台だけ残っている場合は、すべてが正しく動作するように、RAID プロファイルを single に変換する必要があります。詳細な手順については、プールの RAID レベルを single に変更する のセクションを参照してください。
プールの RAID レベルを変更する
BTRFS は、cache pools の RAID レベルを動的に変更できるため、array を停止したりデータを失ったりせずに設定を調整できます。この柔軟性により、要件の変化に応じてパフォーマンス、冗長性、またはストレージ効率を最適化できます。BTRFS プールへのディスク追加については、BTRFS プール を参照してください。
対応する RAID レベル
| RAID レベル | データ保護 | 容量効率 | 用途 |
|---|---|---|---|
| シングル | なし | 100% | 冗長性が不要な一時ストレージや重要度の低いデータ。 |
| RAID 0 | なし | 100% | パフォーマンスと容量を最大化しますが、重要なデータには推奨されません。 |
| RAID 1 | 1 台のディスク障害 | 50% | Unraid プールの既定値。Docker/VM ストレージや重要なデータに最適です。 |
| RAID 10 | 1 台のディスク障害 | 50% | RAID 0 の速度と RAID 1 の冗長性を組み合わせた、高性能用途向けの構成です。 |
| RAID 5* | 1 台のディスク障害 | 67-94% | 実験的機能。 大容量メディアストレージ向けに、容量と冗長性のバランスを取ります。 |
| RAID 6* | 2 台のディスク障害 | 50-88% | 実験的機能。 大容量ドライブを使ったアーカイブストレージに、追加の保護を提供します。 |
プールの RAID レベルを変更するには:
- 通常モードで array を起動します。
- Main タブでプール名をクリックします。
- Balance Status までスクロールして、データとメタデータの現在の RAID レベルを確認します。
- ドロップダウンから新しい RAID プロファイルを選択します。
- Balance をクリックして変換を開始します。
例: RAID 1 からシングルプロファイルへの変換
- 進行状況を WebGUI で監視します。
:::note[Timing]
バランス操作には、プール内のデータ量、ドライブ速度、選択した RAID レベルの複雑さによって、数時間から数日かかることがあります。
:::
停止した場合のバランス操作のトラブルシューティング - クリックして展開/折りたたみ
バランス操作が停止したように見える、または応答しない場合は、次の手順に従ってください:
- Tools → Logs で、
btrfsのエントリで絞り込みます。 - 操作を停止して再開します:
- バランスのキャンセル をクリックします。
- array を再起動します。
- バランス操作を再度開始します。
- プール内のすべてのデバイスで SMART テストを実行します。ディスクの健全性監視の詳細については、SMART reports and disk health を参照してください。
- プールに少なくとも 10〜15% の空き容量があることを確認します。
- 問題が解決しない場合は、ログを Unraid forums に共有してください。診断情報の取得方法については、Capture diagnostics and logs を参照してください。
高度な BTRFS の設定については、BTRFS wiki を参照してください。
ディスクをプール内で交換する
cache pool 内のディスク交換は、ストレージシステムのパフォーマンスと信頼性を維持するために重要な作業です。
:::note[Prerequisites]
- プール構成を確認してください: RAID 1 のような冗長 RAID プロファイルでプールが設定されていることを確認します。これは、管理インターフェースの Main → Pool → Balance Status(BTRFS の場合)または ZFS プールのステータス(ZFS の場合)で確認できます。
- 適切な交換用ディスクを選択してください: 新しいディスクは、交換対象のディスクと同じサイズ以上である必要があります。
- ホットスワップ対応: ハードウェアがホットスワップをサポートしている場合、ディスク交換のためにシステムの電源を切る必要はありません。
:::
プール内のディスクを交換するには:
- Main タブで、array を停止します(Array Operation → Stop)。
- (必要に応じて)ホットスワップがない場合は、古いディスクを物理的に取り外します。
- 交換用ディスクを取り付け、正しく接続されていることを確認します。
- Main タブを更新して新しいディスクを検出します。
- 新しいディスクを以前のスロットに割り当てます。
- array を起動します。
- WebGUI で再構築の進行状況を監視します。
:::important[Timing]
再構築には、ディスク容量やシステムの現在の負荷に応じて時間がかかる場合があります。たとえば、RAID 1 構成で 4TB SSD を再構築する場合、約 3〜6 時間かかることがあります。システムを中断なく動作させられるときに実施するのがよいでしょう。
:::
キャッシュプールの最小空き容量
cache pool の最小空き容量を設定すると、特に高解像度動画のような大きなファイルを扱う場合に、ファイルの配置をより適切に制御できます。この設定により、Unraid はプールへの書き込みをいつ停止し、より大きなストレージの array に直接書き込みを開始するかを判断でき、処理の中断やデータ破損を避けられます。
:::tip[Example]
約 10 GB のファイルを頻繁にダウンロードする場合は、最小空き容量を少なくとも 10 GB、できれば調整の余地を持たせるために 20 GB に設定してください。
:::
Main タブでプール名をクリックし、Individual Pool Settings に進むと、最小空き容量を設定できます。
仕組み
- プールを含む共有にファイルを転送すると、Unraid は最初に到達したしきい値を優先します(共有の最小空き容量、またはプールの最小空き容量のどちらか先に達した方)。
- 最小空き容量の設定は、空き容量がこの値を下回ったときに Unraid が cache pool の使用を停止するよう指示します。
- 共有が cache pool を Primary storage として使用している場合、ファイルは最小空き容量に達するまでプールに保存され、その後は直接 array に送られます。
- cache pool のみを使用する設定(Secondary storage なし)では、この設定は適用されません。
- Primary storage として array のみを使用する設定の場合、ファイルはそのまま array に保存されます。
Media 共有の floor は 20GB に設定されており、その共有のファイルには適切です。ただし、VM 用にもそのプールを使用していて、vdisk の拡張に備えて余裕を残したい場合は、プールの floor を 50GB に設定できます。こうすると、プールの空き容量が 50GB 未満になった後の Media 共有への転送は、すべて直接 array に送られます。
最小空き容量は、予想される最大ファイルサイズ以上に設定し、できればその 2 倍にしてください。たとえば最大ファイルが 30 GB なら、最小値を 60 GB に設定します。
最小空き容量を 0 に設定しないでください。 ディスク容量不足エラーの原因になります。必ず妥当な値を設定してください。
プールと array の間でファイルを移動する
保守の準備、ハードウェアのアップグレード、パフォーマンスの最適化などの際には、cache pool とメイン array の間でファイルを移動する必要がある場合があります。この操作は、構成変更やドライブ交換の前に cache pool をバックアップする場合にも役立ちます。Unraid には、user shares 向けにこの処理を自動化する、Mover という組み込みツールがあります。
プールから array へ移動
メンテナンスやアップグレードの前に、データを सुरक्षितに保つために、cache pool から array へファイルを移動します。
プールから array にファイルを移動するには:
- 設定 に移動し、Docker と VM Manager をオフにします。これにより、ファイルが開いたまま保持されるのを防ぎ、Mover がすべてをスムーズに転送できるようになります。
- Shares タブで、移動したい各共有(
appdataやsystemなど)について、Primary storage を移動元の cache pool に、Secondary storage を array に設定します。Mover action は cache → array に設定します。 - Main タブに移動し、Move Now をクリックして、cache pool から array へファイルを転送します。
- Mover が完了したら、Main タブで cache エントリの横にあるフォルダーアイコンをクリックして、ファイルが移動されたことを確認します。
- すべてのファイルが array に移動したら、Docker と VM サービスを安全に再度オンにできます。
array からプールへ移動
メンテナンス後、またはパフォーマンス向上のために新しいキャッシュデバイスを追加したときに、ファイルをcache poolに戻します。
arrayからプールへファイルを移動するには:
- 設定に移動し、DockerとVM Managerをオフにして、開いているファイルが干渉しないようにします。
- Sharesタブで、移動したい各共有(たとえば
appdataやsystem)について、Primary storageを移動先のcache poolに、Secondary storageをarrayに設定します。Mover actionをarray → cacheに設定します。 - Mainタブに移動し、Move Nowをクリックして、arrayからcache poolへのファイル移動を開始します。
- Moverが完了したら、ファイルがcache pool上にあることを確認します。
- 移動が完了したら、設定でDockerとVM Managerを再びオンにします。
- (オプション)共有をcache poolのみに使用するよう設定するには: 共有のすべてのファイルをcache pool上に残したい場合、その共有のPrimary storageをcache poolに、Secondary storageをNoneに設定します。
ファイルが間違ったプールやキャッシュに入ってしまうことがあるのはなぜですか? - クリックして展開/折りたたみ
Linux レベルで user shares 間のファイルを移動する場合(たとえば mv の使用時や Docker コンテナ内など)、Linux は操作の最適化を試みます。送信元と送信先の両方が同じマウントポイント(/mnt/user)上に見える場合、Linux はファイルを移動せずに名前変更として処理することがあります。その結果、共有の「Use cache」設定が「No」になっていても、ファイルが元のディスクやプールに残ることがあります。
ファイルを意図どおりに移動させるには、次の方法を検討してください:
- Mover ツールを使用する。
- ファイルをコピーしてから元のファイルを削除する。
- ネットワーク経由でファイルを移動する。
これらの方法は、ファイルが誤った場所に配置されるのを防ぐのに役立ちます。
複数のプール
Unraid では、最大 34 個の個別ストレージプールを作成・管理でき、各プールは最大 200 台のデバイスを持てます。複数のプールにより、さまざまな用途に合わせてストレージを割り当て、パフォーマンスを向上させ、必要に応じて冗長性を調整できます。各プールは異なるファイルシステム、RAID レベル、デバイス種別(SSD、HDD、NVMe など)を使用できます。
複数のプールを使用する理由
- パフォーマンスの最適化: VMs、Docker コンテナ、ダウンロード、メディアごとにプールを分けることで、速度向上と競合の削減が期待できます。
- データを保護: 各プールに異なる RAID レベルやファイルシステムを割り当て、要件に応じた冗長性とバックアップオプションを用意できます。
- ワークロードを分離: 重要なアプリケーションは高速で冗長性のあるプールに置き、大量データはより大容量でコスト効率の高いデバイスに保存します。
- 柔軟に管理: 他に影響を与えることなく、プールを個別に拡張、縮小、またはフォーマットできます。
一般的な使用例
| ユースケース | 構成例 | 利点 |
|---|---|---|
| 高性能な VMs | NVMe SSD プール、RAID 1、BTRFS または ZFS | 冗長性を備えた高速 I/O |
| Docker/Appdata ストレージ | SSD プール、RAID 1、BTRFS または ZFS | 高速アクセスとデータ保護 |
| 大量メディアのダウンロード | 大容量 HDD プール、RAID 0 またはシングル、XFS/BTRFS | 冗長性を抑えた大容量 |
| プロジェクト/チームの分離 | 各チーム/プロジェクトごとに個別のプール | リソース競合を削減 |
| スナップショットとバックアップ先 | ZFS プール、RAIDZ1/RAIDZ2(マルチデバイス) | ネイティブのスナップショットとバックアップをサポート |
複数のプールと array ディスクから user share にアクセスする場合、Unraid は次の順序でディレクトリ一覧を結合します:
- 共有に割り当てられたプール
- Array ディスク(disk1, disk2, ..., disk28)
- その他のプール(順序どおり)
プール間でファイルを移動する
Unraid では、WebGUI を使ってプール間でファイルを直接移動することはできませんが、Mover ツールまたはコマンドラインを使用すれば可能です。
:::note[Remember]
いずれかのファイルが Docker コンテナおよび/または VM に属している場合、ファイルを正常に移動するにはサービスを無効にする必要があります。
:::
Mover の使用
- 設定 に移動し、Docker と VM Manager をオフにして、オープン中のファイルを防ぎます。
- pool1 から array にファイルを移動します(cache → array):
- array から pool2 にファイルを移動します(array → cache):
- 必要に応じて、Docker と VM サービスを再度有効にします。
:::note[Timing]
大きなデータセットの移動には、ファイルサイズとデバイス速度に応じて数時間かかる場合があります。
:::
手動でのファイル転送(詳細)
- 上記のとおり Docker と VM サービスを無効にします。
rsyncまたはmvコマンドを使用して、マウントポイント間でファイルを転送します(例:/mnt/pool1/shareから/mnt/pool2/shareへ)。- 元のプールから削除する前に、ファイルを確認してください。
- Docker と VM サービスを再度有効にします。
データ損失を防ぐため、必ずファイルパスを確認し、正しい共有名を使用してください。