VMセットアップ
Unraid上でVMをセットアップすると、Windows、Linux、その他のプラットフォームなどのフルOSを、コンテナーやネイティブアプリと並行して実行する柔軟な方法になります。新しいソフトウェアを試したい場合、レガシーアプリケーションを実行したい場合、デスクトップ環境をホストしたい場合、あるいはゲームやクリエイティブ作業のためにハードウェアパススルーを活用したい場合でも、UnraidのVM Managerなら、あらゆるスキルレベルの人が取り組みやすくなります。
:::tip[New Unraid 7.0 の
Unraid 7.xでは、VMsに次のような大幅な強化が加わります:
詳細はVM マネージャーの機能のセクションをご覧ください。
:::
まだ行っていない場合は、概要とシステム準備 の手順を確認し、ハードウェアと共有が仮想化に対応していることを確認してください。
独自の仮想マシンを作成する
システムの準備と設定が完了したら、WebGUIを使って新しいVMを作成できます。
isosとdomainsの共有が正しく設定され、アクセス可能であることを確認してください。共有の管理については、こちらの 共有管理 を参照してください。- OS のインストール ISO と、Windows VMs の場合は最新の VirtIO ドライバー ISO を
isos共有にアップロードします。 - グラフィックスにはGPU passthroughを使用するかVNCを使用するかを決めます。
基本的な VM を作成するには:
- Virtual Machines ページで Add VM をクリックします。
- Template を Custom に設定するか、一般的なディストリビューション用の事前定義済み OS テンプレートを選択します。
- VM の Name を入力し、必要に応じて Description も入力します。
- VM を array と一緒に自動的に起動したい場合は、Autostart をオンにします。
- Operating System の種類を選択します。これにより VM のアイコンも調整されます。
- VM に CPU cores を割り当てます。ホストで使用可能な物理コア数まで割り当てられます。
- VM の Initial Memory(RAM)を指定します。推奨値についてはゲスト OS のドキュメントを参照してください。
- isos 共有から OS Install ISO を選択します。
- Primary vDisk(場所、サイズ、種類)を設定します。
- Graphics Card を選択します:
- Sound Card を割り当てます(任意ですが、GPU 経由の HDMI オーディオには必要です)。
- 必要に応じて USB Devices を割り当てます。
- デバイスは VM を起動する前に接続しておく必要があります(USB のホットプラグはサポートされていません)。
- Unraidの起動デバイス(USB)は割り当て対象にできません。
- Create VM をクリックします。Start VM after creation のチェックを外さない限り、VM は自動的に起動します。
ユーザー VM テンプレート
Unraid 7.1 以降ではユーザー VM テンプレートが導入され、独自の VM 設定を簡単に保存して再利用できます。ユーザーテンプレートにより VM の展開が効率化され、セットアップ全体で一貫性を確保できます。
ユーザー テンプレートを作成するには:
- テンプレート化したい VM を編集します。
- Create/Modify template を選択し、名前を入力します。
- テンプレートは Add VM 画面のユーザーテンプレート領域で利用できるようになります。
ユーザー テンプレートを使用するには:
- VMsページでAdd VMをクリックし、User Templatesセクションからテンプレートを選択します。
インポート/エクスポート:
- ユーザーテンプレートにカーソルを合わせ、矢印をクリックしてサーバーにエクスポートするか、ダウンロードします。
- 別の Unraid システムでは、Import from file または Upload を使ってテンプレートを追加します。
Unraid 7.x の新機能: VM Manager
Unraid 7.xでは、強力な機能拡張が多数追加された**VM Manager**により、VMsの実行と管理がより効率化されます。これらの機能は初心者から上級者まで対応しており、VMsの展開、カスタマイズ、最適化がより簡単になります。
:::tip[Highlights]
- VM のクローン、スナップショット、再利用可能なテンプレートで時間を節約
- 高度なパススルーとストレージオプションで、パフォーマンスと互換性を微調整
- 使用状況統計とインラインの
XML編集により、可視性と制御性が向上します
:::
ワークフローの強化
高度なハードウェアとストレージのオプション
- PCI multifunction/other: 高度なパススルーシナリオ向けに、複雑な PCI デバイスまたはグループを割り当てます。
- QEMU コマンドラインパススルー: 上級者向けの VM 調整のために、カスタム QEMU 引数を追加します。
- Storage override: 各 VM の virtual disk の保存場所を指定します。
- SSD flag & unmap: SSD 向けに vDisk のパフォーマンスを最適化し、discard/unmap サポートを有効にします。
SR-IOVfor Intel iGPU: 統合 Intel グラフィックスを複数の VMs で共有します。- ZFS 向け VM 名の検証: ZFS プール で、VM 名にサポートされない文字が使われるのを防ぎます。
強化されたグラフィックスと GPU 共有
VirGLとQXLの仮想 GPU: 複数の Linux VMs 間で Intel/AMD GPU を共有するか、マルチスクリーン/メモリオプションにQXLを利用します。- CPU pinning は任意: Unraid に CPU 割り当てを自動管理させるか、必要に応じてコアを手動でピン留めできます。
その他の高度な機能
- View all graphics cards and VM-assigned IP addresses in the VM tab
- QEMU ppc64 ターゲットと
qemu:overrideのサポート - Windows VMs 向け Hypervclock サポート
- エミュレート CPU の "Migratable" のオン/オフ
- タイマー/オフセットの設定オプション
- 特定の用途向けに keymap/nogpu オプションを利用可能
- VM アイコンの選択と編集の改善
- プライマリ GPU をパススルーとして割り当てる際の警告(
vBIOSが必要な場合があります) QXLビデオドライバーで Unraid VMs を GUI モードで起動XML表示におけるパスとアイコンの問題に対する各種修正
VM スナップショット
VMスナップショットを使うと、特定の時点におけるVMの現在の状態を保存できます。問題が発生した場合はその状態に戻せますし、安全に変更をテストするためにスナップショットを使うこともできます。これは、新しいソフトウェアのインストール、設定変更、システム更新の前に特に便利です。
スナップショットを作成すると、Unraidはその時点以降にVMへ加えられたすべての変更を記録する「オーバーレイファイル」を生成します。次のように考えるとわかりやすいでしょう:
- 元のVMディスク: これはVMの現在の状態を表します(写真のようなものです)。
- スナップショットのオーバーレイ: これは、スナップショット以降に加えられたすべての変更を記録する別ファイルです(編集履歴の一覧のようなものです)。
- VMは動作を継続: VMは元のディスクとオーバーレイファイルの両方を一緒に使用します。
この構成では複数のスナップショットを作成でき、それぞれが独自のオーバーレイファイルを生成します。これにより、以前のどの状態にも簡単に戻せます。
例:
- "Clean Windows Install"という名前のスナップショットを作成します。
- いくつかのソフトウェアをインストールし、変更を加えます。
- "After Software Install"という名前の別のスナップショットを作成します。
- これで、クリーンなインストール状態にも、ソフトウェアのインストール後の状態にも戻せます。
- また、Block CommitやBlock Pullを使って変更を永続化することもできます。
- スナップショットの作成
- スナップショットの管理
- スナップショットへの復元
VMのスナップショットを作成するには:
- WebGUIのVMsページに移動します。
- VMの名前をクリックして詳細を展開します。
- Snapshotsセクションを探し、Create Snapshotをクリックします。
- スナップショットにわかりやすい名前を付けます(たとえば、"Before Windows Update" や "Clean Install State" など)。
- メモリダンプオプション: 現在のUnraidビルドでは、"Memory dump" チェックボックスは既定で選択されていません。これをオンにすると、VMのRAMも含めた完全なメモリベースのスナップショットになります(実行中の状態を保存できますが、作成と復元はより大きく、より遅くなります)。オフのままにすると、ディスクのみのクラッシュ整合性のあるスナップショットが作成されます(小さくて高速ですが、メモリ上の未保存データは失われます)。完全な実行時状態の保持が必要か、ディスクの復旧だけでよいかに応じて選択してください。
- Createをクリックしてスナップショットを保存します。
- VMに大きな変更を加える前にスナップショットを作成してください。
- スナップショットの内容を思い出しやすい説明的な名前を付けてください。
- 必要に応じてMemory dumpを選択してください。完全な実行時状態を保持したい場合は有効にし、ディスクのみで高速に復旧したい場合は無効のままにします。
- 重要な節目ではスナップショットを残し、古いものは削除してストレージ容量を節約してください。
スナップショットを作成すると、VMの詳細セクションに一覧表示されます。各スナップショットには次の情報が表示されます:
- 名前: スナップショットに付けた名前。
- 日時: スナップショットが作成された時刻。
- サイズ: 使用しているストレージ容量。
スナップショットを管理するには:
- WebGUI の VMs タブに移動します。
- VMの名前をクリックして詳細を展開します。
- Snapshotsセクションに移動します。
- 使用可能なRevert、Block Commit、Block Pull、またはRemoveボタンを使用します。
スナップショットを元に戻す: これは、スナップショットを作成した時点のVMの状態に正確に復元します。スナップショット以降に加えられた変更は失われます。VMは、まるでスナップショットが存在しなかったかのように元のディスクファイルを使用します。
Block Commit: この処理は、スナップショットのオーバーレイからのすべての変更を元のVMディスクファイルにコピーします。既定では、"Pivot" と "Delete" のオプションが選択された状態で表示されます:
-
Pivot: このオプションは、VMがオーバーレイファイルの使用から元のディスクファイルの使用に戻るよう切り替えます。コミット後、VMはオーバーレイファイルの代わりに、変更を含む元のディスクを使用します。
-
Delete: このオプションは、変更が元のディスクにコミットされた後、スナップショットのオーバーレイファイルを削除します。
-
両方("Pivot" + "Delete"):
変更に満足し、それを永続化したい場合はBlock Commitを使用します。
Block Pull: これは元のディスクデータをスナップショットのオーバーレイファイルに取り込み、オーバーレイファイルを完全で独立したものにします。VMは引き続きオーバーレイファイルを使用しますが、もはや元のディスクに依存しません。現在の状態を保持し、スナップショットを永続化したい場合に使用します。
スナップショットを削除: これは、VMに影響を与えずにスナップショットのオーバーレイファイルを単に削除します。VMは引き続き元のディスクファイルを使用し、スナップショット以降の変更は失われます。
以前の状態に戻す必要がある場合は:
- VMが現在実行中であれば停止します。
- WebGUI の VMs タブに移動します。
- VMの名前をクリックして詳細を展開します。
- Snapshotsセクションに移動します。
- 復元したいスナップショットを見つけて、Revertボタンをクリックします。
- 復元することを確認します(これにより、スナップショット作成後に行った変更は失われます)。
- VMを起動します。これで、スナップショットを作成したときの状態とまったく同じになります。
スナップショットに戻すと、そのスナップショット作成後に加えられた変更は永続的に削除されます。復元する前に、その変更を本当に失ってよいか確認してください。
スナップショットの保存
スナップショットはシステムのストレージ容量を使用します。各スナップショットは、現在の状態とスナップショットの状態との差分のみを保存しますが、これらの差分は時間とともに蓄積される可能性があります。
考慮すべき点をいくつか挙げます:
- QCOW2ディスクはスナップショットをサポートしており、この機能と相性が良いです。
- 保存場所: スナップショットはVMファイルと一緒に保存されるため、cache poolsまたはarrayに十分な空き容量があることを確認してください。
スナップショットの保存場所:
- スナップショットのメタデータは
/etc/libvirt/qemu/snapshotdb/VM_name/に保存されます。 - 実際のスナップショットデータは、cache poolsまたはarray上のVMファイルと同じ場所に保存されます。
VMスナップショットの仕組みについて、ブロック図や複数スナップショットを使う高度なシナリオを含むより詳しい技術情報は、QEMU snapshots documentationをご覧ください。
- システム更新前: Windowsの更新やLinuxパッケージの更新をインストールする前にスナップショットを作成します。問題が発生した場合でも、すばやく以前のバージョンに戻せます。
- ソフトウェアのテスト: 新しいアプリケーションをインストールしたり、設定変更を行ったりします。結果に満足できない場合は、変更前のクリーンなVMスナップショットに戻します。
- 開発作業: プロジェクトのさまざまな段階でスナップショットを作成します。これにより、自由に試しながら、既知の良好な状態へ戻せます。
- バックアップ戦略: 適切なバックアップの代わりにはなりませんが、スナップショットは最近の変更をすばやく復旧するのに役立ちます。
仮想 GPU と GPU 共有の使用
Unraid は現在、Linux VMs 向けに VirGL と QXL を使った高度な GPU 共有をサポートしています(Nouveau ドライバーを使用する一部の Nvidia GPU も含む)。
VirGLを使用するには、Graphics Card を Virtual に設定し、VM console video driver を VirtIO(3D) に設定します。QXLを使用するには、Graphics Card を Virtual に設定し、VM console video driver をQXL(best) に設定します。VirGLは物理モニターに出力せず、Windows VMs や標準の Nvidia プラグインとは互換性がありません。QXLはマルチスクリーンと設定可能なビデオメモリをサポートします。
高度なオプション
より高度なオプションのガイダンスを表示するには、このセクションを展開してください
追加設定にアクセスするには、Add VM ページで Advanced View に切り替えます。
最も重要な高度なオプションを、目的別のセクションに分けて紹介します:
CPU mode:
- Host passthrough: すべてのホスト CPU 機能を VM に公開し、最大限のパフォーマンスを実現します。
- Emulated: 汎用 CPU モデルを使用し、互換性の問題を減らしますが、パフォーマンスは制限されます。
Memory ballooning:
- Max Memory を設定すると、動的メモリ割り当て(memory ballooning)を有効にできます。
- PCI デバイスが割り当てられた VMs では利用できません(例: GPU passthrough)。
Machine type:
i440fx: Windows VMs のデフォルトです。GPU passthrough に問題がある場合のみ変更してください。Q35: Linux VMs のデフォルトであり、特に GPU passthrough を使うほとんどの最新 OS に推奨されます。
BIOS type:
- SeaBIOS: レガシー OS 向けの従来の BIOS です。
- OVMF: Windows 8 以降、ほとんどの最新 Linux ディストリビューション、および GPU passthrough に必要な UEFI BIOS です。
BIOSタイプは新しいVMを作成するときにのみ設定できます。
Hyper-V extensions:
- WindowsのVMsでは、互換性とパフォーマンスを向上させるためにHyper-V extensionsを有効にします。
VirtIOドライバISO:
- 必要に応じて既定のVirtIO ISOを上書きしてください。特にテスト時や新しいドライバーを使用する場合に有効です。
vDiskタイプ:
RAW: 最速のパフォーマンス。スナップショットにはあまり柔軟ではありません。QCOW2: スナップショットをサポートしますが、パフォーマンスはやや低くなります。
VirtFSマッピング(Linux VM):
ネットワーク設定:
- Network MAC address を変更するか、別の Network Bridge を選択します。
- 更新アイコンをクリックすると、新しいMACアドレスが自動生成されます。
- 必要に応じて追加の仮想ネットワークインターフェースを追加します。
- VM の起動に失敗する場合は、ISO と vDisk のパスを再確認してください。
- GPU passthrough では、ハードウェアと BIOS 設定が IOMMU/VT-d/AMD-Vi をサポートしていることを確認してください。
- 一部のUSBデバイスはパススルーで安定して動作しない場合があります。デバイス固有のアドバイスについてはテストし、Unraidフォーラムに相談してください。
パススルー用 PCI デバイスのバインド
GPUや任意のPCIデバイスをVMに割り当てる前に、デバイスをvfio-pciドライバーに「バインド」することが重要です。この処理により、そのデバイスはUnraidから隠され、VM専用になります。
パススルー用に PCI デバイス(GPU、USB コントローラー、NVMe など)をバインドするには:
- WebGUIのTools → System Devicesに移動します。
- 検出されたすべての PCI デバイスとその IOMMU グループの一覧を確認します。
- vfio-pci にバインドしたい各デバイスの横のボックスにチェックを入れます(Unraid から隠すためです)。
- Unraid ですでに使用中のデバイス(ディスクコントローラーやネットワークカードなど)は選択できないことに注意してください。
- GPU を選択した場合は、対応するサウンドデバイスも選択します。
- 変更を保存するには、Bind Selected to VFIO at Boot をクリックします。
- バインドを有効にするにはサーバーを再起動してください。
ハードウェア構成を変更した場合(PCI デバイスの追加や削除など)は、System Devices に戻って、正しいデバイスが引き続きバインドされていることを確認してください。デバイスのバインドが解除されていたり、誤ってバインドされている場合、パススルーの対象として表示されないことがあります。
バインド後、VM の編集または作成時に、バインドされたデバイスが Other PCI Devices ドロップダウンに表示されます。
トラブルシューティング
- 以前に
VFIO-PCIConfig プラグインを使用していた場合は、アンインストールしてください。この機能は現在組み込み済みです。 - すべてのバインドをリセットするには、
/boot/config/vfio-pci.cfgを削除してシステムを再起動します。 - 再起動後、詳細なトラブルシューティングには System Devices ページの View
VFIO-PCILog ボタンを利用してください。 - 唯一の GPU をバインドすると、Unraid が GUI で起動しない場合があることに注意してください。必ずその場合の対策を計画しておいてください。
- 詳細については、Unraid フォーラムの公式ガイド を参照してください。
仮想マシンの GPU パススルー
GPU passthroughを使うと、物理グラフィックスカードをVMに直接割り当てられ、ゲーム、クリエイティブ作業、機械学習でほぼネイティブに近いパフォーマンスを得られます。
- Performance: 要求の厳しいアプリケーションにハードウェアへ直接アクセスできます。
- Compatibility: 専用 GPU を必要とするグラフィックス負荷の高いワークロードを実行できます。
- 柔軟性: Unraidサーバーを多目的ワークステーションに変えます。
前提条件
Hardware:
- Intel VT-d または AMD-Vi に対応した CPU(BIOS で IOMMU を有効化)。
- パススルー対応の GPU(コミュニティで検証済みのハードウェア を参照)。
- PCIe デバイスを適切に分離できるマザーボード。
Software:
GPUパススルーを設定するには:
- ハードウェアが IOMMU をサポートし、BIOS で有効になっていることを確認してください。
- BIOS で仮想化機能を有効にします(Intel VT-x/VT-d または AMD-v/AMD-vi)。
- Unraid を最新の安定版に更新します。
- GPU を VM 作成または編集画面のグラフィックスカード欄で VM に割り当てます。
- GPU passthrough を使用する場合は、USB キーボードとマウスを VM に割り当てます。
- GPU passthrough との互換性を高めるため、VM には OVMF BIOS を使用します。
- VM を起動し、GPU が正しくパススルーされていることを確認します。
一部の GPU では、適切なパススルーのために追加の設定や ROM 注入が必要になる場合があります。
ROM の手動注入
一部の GPU、特に特定の NVIDIA モデルでは、正しく初期化するために ROM ファイルを VM に手動で指定する必要があります。これは、GPU のオンボードファームウェアが既定では正しくパススルーされず、ブラックスクリーンや起動失敗などの問題を引き起こす場合に必要になることがよくあります。手動 ROM 注入は、BIOS と VM 設定の調整を試した後の最終手段です。
ROM を注入するには:
-
GPU ROM をダウンロード:
- TechPowerUp VGA BIOS database にアクセスします。
- GPU モデルを検索し、適切な ROM ファイルをダウンロードします。
- rom を Unraid の
isosまたはdomains共有に保存します。
-
VM XML を編集:
-
GPU の
<hostdev>ブロックを見つけて<rom>タグを追加します:
<hostdev mode='subsystem' type='pci' managed='yes'>
<driver name='vfio'/>
<source>
<address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</source>
<rom file='/mnt/user/isos/gpu_roms/your_gpu.rom'/> <!-- Update path -->
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</hostdev>
-
保存してテスト: Update をクリックして VM を起動します。
よくある問題
このセクションでは、UnraidでVMsを管理する際の高度なトピックと、よくある問題の解決策を扱います。以下のセクションを展開すると、手順ごとの説明とトラブルシューティングのヒントを確認できます。
vDisk を拡張する
クリックして展開/折りたたむ
VMのディスク容量が不足している場合は、WebGUIから直接vDiskのサイズを拡張できます。
vDisk を拡張するには:
- WebGUI の VMs タブに移動します。
- VM が停止していることを確認します。
- VM の名前をクリックして詳細を展開します。
- 拡張したい vDisk を見つけます。Capacity フィールドの値をクリックして編集可能にします。
- 新しい希望サイズを入力し(例: 100 ギガバイトの場合は
100G)、Enter を押します。 - これで新しい容量が設定されました。
Unraid GUIからvDiskを縮小することはできません。拡張のみサポートされています。
ゲストOS内でパーティションを拡張する
vDiskのサイズ変更後、VMを起動します。新しい空き領域を使うには、ゲストOS内でパーティションを拡張する必要があります:
-
Windows: 内蔵のディスクの管理ツールを使用してパーティションを拡張します。
-
Linux(LVM):
fdisk、pvresize、lvextend、resize2fsなどのツールを使用して、パーティションと論理ボリュームを拡張します。例:
sudo fdisk /dev/vda
sudo pvresize /dev/vda3
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv必要に応じてデバイス名を調整してください。
ディスク変更を行う前には、必ずVMをバックアップしてください。
UEFI シェルで停止する
クリックして展開/折りたたむ
VM 起動後にブラックスクリーンになる
クリックして展開/折りたたむ
エラー: "Failed to set IOMMU for container: operation not permitted"
クリックして展開/折りたたむ
このエラーは通常、IOMMU グループの競合または割り込み再マッピングの欠如を示します:
-
PCIe ACS オーバーライドを有効にする:
- Settings → VM Managerに移動します。
- PCIe ACS override を Downstream または Both に設定します。
- Unraid を再起動します。
-
Unsafe interrupts を許可(詳細設定):
-
Unraidの起動ボリュームで
syslinux.cfgを編集します:append vfio_iommu_type1.allow_unsafe_interrupts=1 initrd=/bzroot -
VM ゲストを完全に信頼している場合にのみ使用してください。
-
IOMMUグループの詳細な説明については、Alex Williamsonのブログを参照することをおすすめします。