メインコンテンツへスキップ

Unraidとは何ですか?

Unraidは、ハードウェアを完全に制御できるように設計された組み込みオペレーティングシステムです。堅牢なネットワーク接続ストレージ(NAS)システム、application server、そしてvirtual machines (VMs)のホストとして機能します。

UnraidはUSBフラッシュドライブにインストールされ、そこから起動して、ルートRAMファイルシステムに読み込まれます。最新のLinuxカーネルと更新されたハードウェアドライバを使用しているため、最小限のメモリ使用量を維持しながら、ほぼあらゆる64ビットx86_64システム上で実行できます。OSのすべての構成データはブートドライブに保存され、OSと同時に読み込まれます。

Unraidには、簡単に管理できるユーザーフレンドリーなWebインターフェースがあります。一般的な作業向けの基本操作と、経験豊富なユーザー向けの高度な設定を備えています。多くの人に適した設定を既定値として採用しつつ、カスタマイズも可能です。このシンプルさと柔軟性の組み合わせにより、コンテンツを効果的に保存、保護、共有、楽しむことができます。

Unraidの中核機能は、次の3つの主要分野にあります:

ソフトウェア定義NAS

ユーザーがネットワーク上でストレージ容量を効率的に共有できるようにします。

アレイとパリティ

Unraidは、64ビット対応のあらゆるシステムをネットワーク接続ストレージ(NAS)デバイスに変えるための、シンプルで柔軟なソリューションを提供します。IDE、SATA、SASのいずれで接続されたドライブでも扱うことができ、さまざまな容量のドライブに対応しています。つまり、ストレージの需要が増えたときに、新しいドライブを1台ずつ追加でき、構成を拡張しても既存データを再編成する必要はありません。

The main job of an Unraid array is to organize and protect the data stored across several drives. It does this by using up to two special drives called parity drives. These parity drives are important because they help reconstruct your data if one of the other drives fails. In fact, with just one parity drive, you can protect all the other drives in your array, keeping your data safe. Plus, you can mix different sized drives and easily expand your storage over time, making Unraid a user-friendly option for anyone looking to manage their data effectively.

パリティの仕組み - クリックして展開/折りたたみ

Unraidでは、parity情報がリアルタイムで更新されます。仕組みを理解するために、ハードドライブの内容を長いビット列と考えてみてください。各ビットは0か1のいずれかです。すべてのドライブにわたってn番目のビット値を合計し、その合計が偶数か奇数かを判定することで、対応するn番目のparityビットを適切に設定できます。データドライブが故障した場合、このparity情報により正確なビット値を特定できるため、交換用ドライブ上で精密な再構築が可能になります。

たとえば:

パリティなし

上の画像では、3台のドライブに、デバイスサイズごとに異なるビット列が含まれています。これらのドライブには保護がないため、1台が故障するとデータは失われます。故障に備えて、parity diskとして4台目のディスクが必要です。このディスクは、最も大きいデータディスクと同じかそれ以上の容量でなければなりません。

To set the parity bits, we find the total for each column. If the sum is even, the parity bit is 0; if odd, the parity bit is 1.

先ほどと同じ画像ですが、フレームごとにparityを計算したものです:

パリティ

例ではドライブ2が故障し、交換用の新しいドライブを購入したとします:

ドライブ障害

新しいディスク上のデータを再構築するには、parityビットを計算するのではなく、失われたビットを求めます。1列目の合計は0なので、失われたビットは0です。6列目の合計は1なので、失われたビットは1です。

parityを使用したディスクの再構築は、データ損失を防ぎ、障害耐性を提供して、ドライブが故障してもシステムへ完全にアクセスできるようにします。

ユーザー共有

Unraidは、ほとんどのRAIDシステムとは異なり、データを1つにまとめるのではなく、個々のドライブに保存します。root userとして、user sharesを作成できます。これは、arraycache pool内の複数のドライブからファイルを集める最上位フォルダーのようなものです。つまり、どの特定のドライブにファイルが保存されているかを気にする必要はなく、Unraidが整理してくれます。

これらの共有は、特定のドライブを含めたり除外したり、ストレージ全体でファイルをどのように分散するかを設定してカスタマイズすることもできます。さらに、SMBNFSなどのネットワークオプションを設定し、セキュリティ設定を適用することで、ユーザーの共有アクセスを管理できます。プライベートなデータを安全に保つために、ユーザーアカウントを作成し、信頼できる相手にアクセス制限を設定できます。

User shares distribution example
User shares - Distribution
User shares distribution example larger
User shares - Access

キャッシュドライブを理解する

Unraidの際立った機能の1つがcache driveで、データ転送の高速化に役立ちます。cache driveを3台以上のドライブと併用すると、書き込み速度は最大で3倍になります。cache driveを使ったuser sharesにファイルを保存すると、データはまずcache driveに保存されます。これにより高速に書き込みでき、その後Moverと呼ばれる処理が、通常は夜間にデータをメインのストレージarrayへ移動し、cache driveの空きを確保します。

データ保護をさらに強化するために、複数のドライブを使ったcache poolを構成できます。この構成はストレージ容量を増やすだけでなく、ZFSBTRFSなどの技術を使って、RAID 1に似た追加の保護をデータに提供します。総じて、Unraidによる共有とcache drivesの管理は、柔軟で効率的、かつ安全なストレージソリューションを実現します。

共有設定とキャッシュの構成方法の詳細はこちらをご覧ください。

Cache Poolでのデータキャプチャの仕組み

アプリケーションサーバー

コンテナ化されたアプリケーションの実行を可能にします。

Unraidは、Dockerコンテナ化によってストレージソリューションを多用途なapplication serverへと変えます。このアプローチは、システムの安定性と使いやすさを維持しながら、従来のNASの制限を克服します。

従来のNASソリューションには、アプリケーションホスティングに関して次の3つの主要な課題があります:

  1. OSの互換性問題 - 異なるオペレーティングシステム向けに設計されたアプリケーションを実行できないこと。
  2. 複雑なライフサイクル管理 - インストール時の難しさにより、削除後に残存アーティファクトが残ることがあります。
  3. アプリケーションの競合 - ソフトウェアコンポーネント同士、またはシステム操作と干渉する可能性があります。

UnraidのDocker活用は、次の3つの重要な方法でこれらの課題に対処します:

  1. OSからの独立性 - 各コンテナは独自のLinux環境で実行されるため、ホストOSとの互換性問題がありません。
  2. イメージベースの展開 - 事前設定済みのアプリケーションパッケージにより、ワンクリックでインストールでき、アプリケーションを完全にアンインストールできます。
  3. プロセスの分離 - コンテナ化されたアプリケーションは別々のユーザー空間で動作するため、ソフトウェア間の競合を防ぎます。

Dockerコンテナを使うと、virtual machinesに伴うオーバーヘッドなしに、隔離された軽量な環境でアプリケーションを実行できます。Unraidは、Docker HubCommunity Applicationsを通じて、事前設定済みの数千ものアプリにアクセスできるようにすることで、Dockerの利用を簡単にします。このコンテナ化アプローチにより、Unraidユーザーは互換性の問題なしに複数のアプリケーションを同時に実行できます。また、自己完結型のアプリケーションパッケージを使用することでシステムを整理しやすくし、Dockerのエコシステムを通じてサーバー機能を簡単に拡張できます。

注記

Dockerの詳細設定については、Dockerコンテナの実行を参照してください。

仮想化プラットフォーム

ベアメタルに近い性能で仮想マシンを実行します。

Unraidは仮想化ホストとして機能し、hypervisorを使用して仮想ゲストに安全にリソースを割り当てます。これにより、ネットワーク接続ストレージにとどまらず、さまざまなアプリケーションを隔離された環境で実行できます。

ヒント

Unraidでハードウェア仮想化を使うには、CPU、チップセット、BIOS、デバイスドライバーが互換性を備えていることを確認してください。必要条件の全一覧は、VMセットアップガイドにあります。サーバーがこれらの要件を満たしていない場合、UnraidのWebGUIではVMsメニューが無効になります。

仮想マシン(VM)の利用による利点 - クリックして展開/折りたたみ

DockerコンテナはLinuxベースのアプリケーションで人気ですが、VMsはUnraidサーバー構成の柔軟性と効率を高め、Unraidサーバーで次のような明確な利点をもたらします:

  • 分離: VMsは別々の環境で独立して実行されるため、1つが故障しても他に影響しません。

  • 統合: 複数の物理サーバーを1台のUnraidマシンに統合し、ハードウェア要件を減らして保守を簡素化できます。

  • リソース割り当て: Unraidでは、各VMにCPU、メモリ、ストレージ、ネットワークリソースを個別に割り当てることができ、重要なワークロードに必要なリソースを確保できます。

  • テストと開発: VMsを使うと、複数の物理マシンを用意しなくても、異なる環境でソフトウェアを簡単に作成・テストできます。

  • セキュリティ: VMsの分離によりセキュリティが強化され、マルウェアが相互に広がりにくくなります。

  • レガシーアプリケーションのサポート: VMsにより、最新のハードウェアでは互換性がない可能性のあるレガシーアプリケーションやオペレーティングシステムを実行できます。

  • リソースの分離:VMに専用リソースを割り当てられるため、VMs間での性能問題を防げます。

  • リソースの過剰割り当て: 物理リソースで通常は許容される数より多くのVMsを実行できますが、すべてが同時に割り当てられたリソースを完全に使うわけではないことを理解しておく必要があります。

仮想化向けの割り当て可能デバイスのサポート - クリックして展開/折りたたみ

Unraid's KVM-based virtualization uses modern tools for flexible hardware assignment while maintaining host stability.

主な構成要素は次のとおりです:

中核技術

  • QEMUlibvirt: VMのライフサイクルを管理します。
  • VFIOデバイスパススルー: ハードウェアへ直接アクセスできます。
  • VirtIOVirtFS: ストレージとネットワークの性能を最適化します。
  • OVMF: UEFIとセキュアブートをサポートします。

割り当て済みリソース

  • 計算: CPU pinningによる専用CPUコア。
  • メモリ: 分離されたRAM。
  • ストレージ: VirtIOによるSSD最適化されたvirtual disks
  • 周辺機器: GPU passthroughサポートを含む、PCI/USBデバイスの完全なパススルー。

プラットフォームの柔軟性

  • i440fxQ35のマシンタイプをサポートします。
  • Xen HVMおよびXen PVのワークロードに対応しています。
  • Intel VT-xAMD-Vのハードウェア仮想化を有効にします。

割り当て可能なリソース

VMのセットアップ手順については、仮想マシンの作成を参照してください。

注意

GPU passthroughには互換性のあるハードウェアが必要です(VMセットアップを参照)。