TrueNAS Scaleには標準でVirtualization機能(仮想化機能)が装備されています。
Linux対応したことで、簡単にKVM環境が構築できる仕組みになっています。
TrueNAS Scaleを使っているなら仮想化機能を使うのは簡単で、すぐにTrueNAS Scale上で仮想マシンを構築することができます。
本記事ではTrueNAS Scaleの仮想化機能を使って各種OSの仮想マシンを構築していきます。
TrueNAS Scaleの仮想化機能
TrueNAS Scaleは標準で仮想化機能に対応しており、その機能はメニュー「Virtualization」に集約されています。
TrueNAS Scaleでは仮想化機能を使うための追加のモジュールなどは必要ありません。
ここから簡単にWindows系OSやLinux系OSなどを仮想マシンとしてインストールしていくことができ、TrueNAS Scaleを仮想サーバーとして使うことができます。
TrueNAS Scaleの仮想化機能を使う準備
TrueNAS Scaleは標準で(インストール直後状態で)仮想化機能を持っています。
このため、仮想化機能をつかるためにあれこれと面倒な設定は不要ですが、いくつかの設定は必要です。
仮想化で使うデータセット(Dataset)
TrueNAS Scaleで仮想化機能を使うための準備としては、仮想化機能で使用するデータセット(ディスク領域)を作成するだけです。
必要なデータセットとしては「ISOファイル用データセット」と「仮想ディスク用データセット」があります。
ISOファイル用データセット
仮想マシンをインストールする場合、インストールメディア(ISOファイル)が必要です。
このインストールメディア(ISOファイル)をまとめて保存しておくデータセットを作成しておくとよいでしょう。
仮想マシン用データセット
また、作成する仮想マシンの仮想ディスク(ハードディスク)領域が必要です。
仮想ハードディスク専用のデータセットを作成しておきましょう。
ISOファイル用データセットの定義
ISOファイル用データセットはインストールディスク(ISOファイル)を格納するフォルダです。
本記事ではISOファイル用データセットは共有フォルダのサブフォルダとして作成しました。
共有フォルダのサブフォルダとすることで、Windowsクライアントなどから簡単にISOファイルをコピーしたりできます。
仮想マシン用データセットの定義
仮想マシン用データセットは共有フォルダとは別の場所に作成します。
本記事ではプール”tank”直下に”VM”というフォルダ名で作成しました。
ここで作成した仮想マシン用データセット”VM”は仮想マシン作成時に仮想マシン用ハードディスク領域として使用します。
TrueNAS Scaleの仮想環境へWindows10をインストール
仮想マシン環境で使用するデータセットを構築するだけで最低限の準備が完了しました。
ここからは、Windows10を仮想マシンとしてインストールしていきます。
Windows10インストールに必要なもの
Windows10を仮想マシンとしてインストールする場合に必要なものを定義します。
Windows10インストールディスク(ISOファイル)
まず、当然ですがWindows10のインストールディスクが必要です。
通常はDVDやUSBメモリーから起動して使うものですが、仮想マシンではその元となるファイル(ISOファイル)をインストールディスクとして使用します。
Windows 10 のダウンロード | Microsoft
※なお、日常的に使用するためには別途Windows10のライセンスが必要です。
ダウンロードしたインストールディスク(ISOファイル)は先ほど作成した「ISOs」データセットへコピーしておきます。
VirtIOドライバーディスク(ISOファイル)
通常の(物理的な)インストールでは使用しない「KVM環境だから必要」というものがあります。
KVM環境ではハードウェアI/OはVirtIOというインターフェースを使用します。
このインターフェースはWindows系OSにはないため、Windows系OSをKVM環境で動作させるためにはOSのインストールディスクに加えてVirtIOドライバーディスク(ISOファイル)が必要です。
virtio-win-pkg-scripts | github
通常、Windows系OSを仮想マシンとしてインストールする場合、1台目のCD-ROM/DVDにOSのインストールディスクを搭載し2台目のCD-ROM/DVDにVirtIOドライバーディスクを搭載します。
「VirtIOドライバーディスク」もダウンロードしたら「ISOs」データセットへコピーしておきます。
仮想マシンの構成定義
Windows10インストールディスクおよびVirtIOドライバーディスクが揃ったところで実際にWindows10をインストールしていきます。
メニュー「Virtualization」画面から「Add」ボタンで仮想マシンの構成メニューを開きます。
非常に多くの設定項目がありますが、多くは初期値または未入力のままでかまいません。
本記事では以下の内容で構成定義をおこなっています。
Operating System | |
---|---|
Guest Operating System | “Windows”を選択 |
Enable Hyper-V Enlightmennts |
チェック |
名前 | 仮想マシン名を入力 ※本記事では”Windows10″としました |
説明 | ご自由に ※本記事では未入力 |
System Clock | 初期値”Local” |
Boot Method | 初期値”UEFI” |
Shutdown Timeout | 初期値”90″ |
起動時に開始 | チェックをはずす ※TrueNAS起動時に仮想マシン自動起動の場合はチェック |
Enavle Display | チェック(初期値) |
Bind | “0.0.0.0”(初期値) |
パスワード | 任意のパスワードを設定 ※コンソール画面(spice)起動時のパスワード |
CPU And Memory | |
Virtual CPUs | 仮想マシンに割り当てるCPU数 ※本記事では”1″ |
Cores | 仮想マシンに割り当てるCPUコア数 ※本記事では”2″ |
Threads | 仮想マシンに割り当てるCPUスレッド数(1コア当たり) ※本記事では”1″ |
CPUの注釈 | 上記設定で「1CPU/2コア/2スレッドを仮想マシンへ割り当て」となります。 ※仮想マシン上では1CPU/2コアと認識します |
Optional CPU Set | 未設定 |
Pin vcpus | 未設定 |
CPU Mode | Custom(初期値) |
CPU Model | 未設定 |
Memory Size | 4GB(初期値) |
Minimum Memory Size | 未設定 |
Optional NUMA nodeset | 未設定 |
ディスク | |
新しいディスクイメージの作成 | 選択 |
Select Disk Type | “VIRTIO”を選択 |
Zvol Location | ディスクを作成するデータセットを選択 ※本記事では”tank/VM” |
サイズ | 仮想ディスクの容量を設定 ※本記事では”50GB” |
Network Interface | |
Adapter Type | VirtIOを選択 |
Mac Address | 標示値のままにしておく |
Attach NIC | 物理インターフェースを選択 ※本記事では”ens18″ |
Install Media | |
Optional Choose installation media image |
Windows10のインストールISOファイルを選択 |
GPU | |
Hide from MSR | 初期値のままにしておく |
Ensure Display Device | 初期値のままにしておく |
上記を設定したら画面下「保存」ボタンで仮想マシン構成を保存します。
作成した仮想マシンは以下のように一覧表示されます。
仮想マシンの初期実行(インストール)
仮想マシンの「スタート」ボタン押下により仮想マシンが起動(電源オン)します。
仮想マシンがスタートするとメニュー項目は以下のように変化します。
「Display」ボタン押下により、ブラウザの別タブでコンソール画面(spice)が起動、仮想マシン作成時に設定したパスワードを入力するとコンソール画面が表示されます。
見慣れた(?)インストール画面が表示されるので、ここから通常通りにインストールしていきます。
VirtIOドライバーの初期インストール
仮想コンソール(Spice)上でWindowsのインストールを進めていくと、「インストール場所の選択」画面で以下のようになります。
本来はインストールするハードディスクが表示されるのですが、ハードディスク領域が空っぽになっています。
これは、KVM仮想マシンがハードディスクをVirtIOデバイスとして定義されており、しかしWindows系OSは標準ではVirtIOドライバーを持っていないためです(ハードディスクが認識できない)。
よって、ここで「2台目のCD-ROM/DVD」として定義しているVirtIOドライバーをインストールします。
画面の「ドライバーの読み込み」をクリックします。
インストール時には以下の3つをインストールしておくとよいでしょう。
Baloon | Virtio仮想マシンにおけるメモリ管理ドライバー ※あとでもいいけど一応今インストールしておく |
NetKVM | Virtio NICドライバー ※ネット利用に必須 |
viostor | Virtio SCSIドライバー ※ディスク利用に必須 |
Virtioドライバーがインストールされると、Windows10インストーラーは仮想マシンのハードディスクを認識できるようになります。
あとは通常のインストール手順にてWindows10のインストールを進めます。
以上で仮想マシン上にWindows10をインストールする場合の手順となります。
VirtIOドライバーのインストール
仮想マシンとしてWindows10がインストールされたら、最後にVirtIOドライバーおよびqemu-guest-agentをインストールします。
VirtIOドライバーはOSインストール時にインストールした最低限のKVM(VirtIO)ドライバーだけでなくすべてのドライバーをインストールする、ということです。
qemu-guest-agentは仮想ホスト(TrueNAS Scale)から仮想マシンの状態監視や電源管理を行うために必要なモジュールです。
インストール時にも使用した「2台目のCD-ROM/DVD」は今でも有効であり、このディスクを使って最終的にVirtioドライバー等をインストールします。
2台目のCD-ROM/DVDドライブを開き、以下2つのドライバーをインストールします。
- virtio-win-gt-x64
- virtio-win-guest-tools
前者はすべてのVirtioドライバとなります。
後者はKVM環境でのディスプレイドライバーや電源管理のためのツールとなります。
前者「virtiowin-gt-x64」はWindowsインストーラー形式なので、マウスの右クリックメニュー「Windowsインストーラー」から開いてインストールします。
後者「virtio-win-guest-tools」は実行形式のプログラムなので不通にダブルクリックしてインストールします。
以上で仮想マシンとしてのWindows10インストールはすべて完了です。
仮想マシンの操作(Virtualizeメニュー)
仮想マシンの構築(インストール)が完了したらTrueNAS Scaleの「Virtualization」画面は以下のようになります。
この画面メニューから仮想マシンを管理していきます。
機能名 | 機能 |
---|---|
状態 | 右スライドで仮想マシン起動 左スライドで仮想マシン停止 |
自動スタート | チェックで仮想マシン自動起動(ホスト連動) |
スタート | 仮想マシン起動(電源オン) |
Power off | 仮想マシン停止(電源オフ/強制終了) |
停止 | 仮想マシン停止(シャットダウン) |
編集 | 仮想マシン構成変更 ・CPU定義 ・メモリ定義 |
削除 | 仮想マシン削除 |
Device | 仮想マシン構成変更(デバイス追加・削除) ・Optical Device(CD-ROM) ・NIC |
クローン | 仮想マシンをクローン |
Display | 仮想コンソール(Spice)起動 |
Serial shell | シリアルコンソール起動 |
Download logs | 仮想マシン稼働ログのダウンロード |
仮想マシンのバックアップはどうする?
仮想マシンのスナップショットはとれる?
仮想マシンのメニュー「Virtualization」にはスナップショットに関する操作機能がありません。
仮想マシンのスナップショットはTrueNAS Scaleのデータセット・スナップショット機能により運用します。
メニュー「Dataset」から仮想マシンのデータセットを選択します。
「Data Protection」画面(画面右側)から仮想マシンのディスクに対するスナップショット取得や復元の操作を行うことができます。
※ただしProxmoxなどの仮想システムとは違い、あくまでもデータセットに対するスナップショット運用となるため、仮想マシンの構成定義変更などは反映されません。
Windows11はインストールできる?
Windows11はハードウェア要件が高くなっており、特にTPM2.0必須という点で仮想環境ではインストールがむつかしいOSです。
ハードウェア要件を回避する裏技もありますが、正規ライセンスを持っているのに裏技などでインストールするのもちょっと悔しい思いもします。
仮想環境でのWindows11
Windows11のインストール要件は以下のようになっています。
メモリー | 4GB以上 |
---|---|
ハードディスク ※システム領域 |
64GB以上 |
TPM | TPM2.0 |
特に仮想環境においては「TPM2.0必須」という要件がインストールの邪魔をしている状況です。
現在ではVMWare PlayerやProxmoxなどでは仮想TPM2.0が使えるようになっており正規手順でWindows11のインストールが可能です。
また、TrueNAS Scaleと同じような人気のストレージサービス「OpenMediaVault」でもKVMによる仮想環境でWindows11のインストール(正規手順)が可能です。
ではTrueNAS Scaleの仮想マシンとしてWindows11を正規手順でインストールできるのでしょうか?
TrueNAS ScaleへWindows11をインストール
残念ながらTrueNAS Scaleの仮想マシン環境へWindows11は(正規手順では)インストールできないようです。
以下の仮想マシン環境を定義してみました。
この仮想マシン環境へWindows11をインストールしてみると、以下のように「要件を満たしていない」旨のメッセージが表示されインストールできなくなります。
TrueNAS Scale仮想機能のネットワーク環境
TrueNAS Scaleの仮想化機能(Virtualization)の標準構成(初期値)を使って仮想マシンを構築した場合、以下の通信制限があります。
- 仮想マシンからホスト(TrueNAS Scale)へは通信できない
- ホスト(TrueNAS Scale)から仮想マシンへは通信できない
- 仮想マシン同士は通信できる
この仕様のため、たとえば「仮想マシンからホスト(TrueNAS Scale)の共有フォルダを使いたい」「仮想マシンからホスト(TrueNAS Scale)をiSCSIターゲットとして使いたい」という使い方ができません。
KVM標準の仮想インターフェース「MacVTAP/MacVLAN」
TrueNAS Scaleの仮想化機能はKVMにより実現されています。
KVMを使った仮想化ソリューションはTrueNAS Scale以外にもOpenMediaVaultでも採用されているし、最近人気のProxmoxなどもあります。
それぞれのソリューションによって初期状態の仕様は異なりますが、KVM本来の仕様としては仮想インターフェースは「MacVTAP/MacVLAN」による仮想インターフェースが構築されます。
そして、TrueNAS Scaleではこの標準の仮想化インターフェースを使用しています。
MacVTAP/MacVLANの仕様
MacVTAP/MacVLANによる仮想インターフェースではMacVTAP側(ホスト)とMacVLAN側(仮想マシン)では相互に通信ができない仕様になっています。
これはセキュリティ面からの仕様およびホストと仮想マシンの間のトラフィックを考慮した仕様であるためとなっています。
この仕様によって初期状態では仮想マシンとホスト(TrueNAS Scale)間では相互通信ができない仕様になっています。
通常の使用においては特に問題はないのではないか?と思います。
ブリッジインターフェースの作成
仮想マシンとホスト(TrueNAS Scale)間の通信を可能とするための方法はいくつかありますが、簡単なのはブリッジインターフェースを作成することです。
標準ネットワークではホスト(TrueNAS Scale)は物理インターフェース(ens〇〇など)にバインドされています。
これを、ホスト上でブリッジを作成してバインド、さらに仮想マシンもこのブリッジにバインドすることで、仮想マシンとホスト間の通信ができるようになります。
ホストインターフェースの定義変更
では、まずホスト(TrueNAS Scale)のインターフェース定義をブリッジに変更します。
メニュー「ネットワーク」画面の「インターフェース」項目を確認します。
標準構成では上記のように「ens〇〇」などのインターフェースにIPアドレスが定義されています。
このインターフェースに割り振られているIPアドレスを削除します。
インターフェース変更(えんぴつアイコン)から以下のように構成変更します。
DHCP | チェックされている場合はチェックを外す |
---|---|
エイリアス | IPアドレスが定義されている場合は削除(×)マークでIPアドレスを削除 |
上記を変更し「保存」ボタンで保存します。
次に「Add」ボタンで新規インターフェースを作成します。
Type | “Bridge”を選択 |
---|---|
名前 | お好きなブリッジ名称 ※本記事では”br0″ |
DHCP | DHCP運用の場合はチェックする |
Bridge Menbers | 物理インターフェースを選択 |
エイリアス | 固定IPv4運用の場合は「Add」から固定IPv4アドレスを設定 |
以上を設定して「保存」で定義保存します。
今作成したブリッジインターフェース(本記事では”br0″)が作成されていることを確認します。
「Test Change」ボタンを押下することでインターフェースが変更(削除の反映と追加定義の反映)が行われます。
以上でホスト(TrueNAS Scale)でブリッジインターフェース(br0)が作成・反映されました。
仮想マシンでブリッジインターフェースを使う
ホスト(TrueNAS Scale)上でブリッジインターフェースが作成されました。
あとは、仮想マシン定義でNIC(LANカード)をこのブリッジインターフェースにアタッチすれば仮想マシンからもブリッジインターフェースを利用できるようになり、その結果として仮想マシンとホスト(TrueNAS Scale)間の通信ができるようになります。
新規仮想マシンの作成時、または既存仮想マシンの「Devices」メニューから「NIC = br01」と設定するだけです。
まとめ、TrueNAS Scaleで仮想マシンを動かす
以上、TrueNAS Scaleの仮想マシン(Virtualization)機能を使い仮想マシンを構築してみました。
TrueNAS Scaleでは標準インストール状態ですでに仮想サーバーとして必要なモジュールを含んでいるため、特別な追加モジュールなどは必要なく簡単に仮想サーバーとして使用することができます。
ちょっとだけ仮想マシンを動かしてみたい
現在TrueNAS ScaleでNAS環境を構築しているなら、「ちょっとLinux環境が欲しい!」などの場合には有効に使える機能です。
環境構築も簡単だしTrueNAS Scaleの広大なストレージとの連携も簡単です。
わざわざ物理PCを用意する必要もないし、ESXiやProxmoxのような(大掛かりな)仮想環境を構築する必要もありません。
「ちょっと仮想マシンが!」という方には体験用として良いのではないでしょうか?
操作性は落ちる
一方で本格的に仮想マシン環境を構築する場合には不向きだと思います。
なにより仮想マシンの操作がESXiやProxmoxと比べると貧弱です。
仮想マシン構築後の構成変更など一部はWebGUIからできるものの、完全に構成をコントロールするためには仮想マシンのXML定義ファイルを直接編集する必要があります。
これはKVMに対する知識が必要です。
機能拡張はやはりdocker
仮想マシン環境を構築することでTrueNAS Scaleを機能拡張することができます。
そのためにKVMプラグインを使って仮想環境を構築するのもよいかと思います。
しかし、TrueNAS Scaleにはdockerコンテナ環境を構築・操作するためのプラグインも用意されています。
そして、現在では多くのdockerコンテナがアプリケーションとして提供されており、dockerを使って簡単にTrueNAS Scaleを機能拡張することができます。
TrueNAS Scaleでさらに機能拡張する場合にはKVMによる仮想環境ではなく、dockerによる機能拡張がおすすめです。