軽量サクサクのNASサーバー「OpenMediaVault」は豊富なプラグインによる機能拡張ができる仕組みになっています。
その中に「kvmプラグイン」があり、このプラグインを使うことでOpenMediaVaultを簡単に完全仮想化サーバーとして活用できるようになります。
最近ではProxmoxなどのKVMベースの仮想化システムが人気であり、わざわざOpenMediaVaultを仮想サーバーとして使う意味があるのか?という気はしますが、ちょっと試してみたい気もあります。
本記事ではOpenMediaVaultにKVMプラグインを導入し仮想マシンを構築して動かしてみるまでの手順を説明していきます。
KVMプラグインインストール手順
OpenMediaVaultはプラグインにより機能拡張していくことができ、またdocker環境も簡単に構築できるので単なるファイルサーバーとしての機能だけでなく、さまざまなアプリサービスを活用したNASサーバーとして構築することができます。
さらに「KVMプラグイン」を導入することで、完全仮想化サーバーとして活用することもできます。
OMV-Extrasプラグインのインストール
KVMプラグインはOpenMediaVaultの標準プラグインではなく、「OMV-Extras」という有志による拡張プラグイン集の中に含まれています。
このため、「KVMプラグイン」を利用するためには、まず「OMV-Extras」プラグイン集をインストールする必要があります。
OMV-ExtrasはWebGUIからのインストールはできません。
OpenMediaVaultのコンソール(またはSSH)から以下のコマンドにてOMV-Extrasをインストールします。
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
正常にインストール完了すると、WebGUIにメニュー「システム > omv-extras」が表示されるようになります。
KVMプラグインのインストール
OpenMediaVault上でKVM仮想サーバーを構築するためにはKVMプラグインをインストールします。
メニュー「システム > プラグイン」画面を開き、検索欄で「kvm」を検索します。
OpenMediaVault-kvmモジュールを選択(黄色表示)し、ダウンロードボタン(↓)押下によりKVMプラグインがインストールされます。
KVMプラグインのインストールエラー時
もし、インストール時に以下のようなエラーが表示される場合には、メニュー「システム > omv-extras」画面から「Enable Backports」を行ってみてください。
メニュー「システム > omv-extras」画面から「Enable Backports」のリンクをクリックします。
「Enable backports」を実行した後に再度「KVMプラグイン」のインストールを実施してください。
KVMプラグインの環境設定
KVMプラグインがインストールされると、メニュー「サービス > KVM」が表示されるようになります。
多くのサブメニューがありますが、ざっとサブメニューを見てみましょう。
VMs | VM(仮想マシン)の管理(作成・削除など)や運用(起動・終了など)を行います |
---|---|
Pools | KVMで利用する(最低限)以下の2つのディスク領域(Pool)を定義します。 ・ISO領域 ・VM領域 |
Volumes | 仮想マシンで使用する仮想ディスクを管理します |
ISOs | 仮想マシンのインストールに使用するISOファイルを管理します |
Networks | 仮想ネットワークを管理します。 |
Backups | 仮想マシンのバックアップを行います |
Restores | 仮想マシンのリストア(復元)を行います |
Schedule | 仮想マシンの自動起動や自動バックアップなどの設定を行います |
設定 | LXC(Linuxコンテナ)の有効化/無効化ができます |
KVMプラグインの環境を見ながら、必要な環境設定を行っていきましょう。
プール(pool)の設定
KVMプラグインを動作させるためにはまずプール(pool)というディスク領域を最低2つ設定する必要があります。
ひとつは仮想マシンのインストールに使用するインストールディスクイメージ(ISOイメージファイル)を格納するための領域です。
もうひとつは作成する仮想マシンの仮想ディスクを格納するためのディスク領域です。
本記事では前者を「ISOs」ディレクトリとし後者を「VM」ディレクトリとして作成・定義します。
ISOsディレクトリの作成
仮想マシンのインストールメディアとして使用するISOイメージファイルを管理するディレクトリです。
OpenMediaVaultのNAS上のどこに作成しても構いませんが、ISOファイルをコピーしたり削除したりするのでWindowsなどのクライアントから利用できる共有フォルダ内に作成しておくとよいでしょう。
本記事ではSMB/CIFSの共有フォルダ「share」を定義し、その配下に「ISOs」ディレクトリを作成し、ここにISOファイルをコピーしておきます。
これにより、Windowsクライアントから仮想マシンのインストールファイル(ISOファイル)を追加・削除することができます。
VMディレクトリの作成
VMディレクトリは作成する仮想マシンの仮想ディスクを配置するディレクトリです。
このディレクトリはクライアントから見れると誤操作される危険性があるため、クライアントから利用可能な共有フォルダ以外の場所に作成します。
本記事ではOpenMediaVaultの共有フォルダとして「VM」フォルダを作成します。
ネットワークの確認
KVMプラグインインストール直後の仮想ネットワークは以下のようになっており、必要に応じて追加作成(+)することができます。
・図
デフォルトの仮想ネットワーク
初期値として登録されている仮想ネットワークは「default」であり、これはホスト(OMV)に対してルーター(L3)として定義されています。
つまりホスト(OMV)とは独立した別のネットワーク、ということです。
本記事の環境ではKVMプラグインのインストールにより「192.168.122.0/24」ネットワークセグメントとして仮想ネットワーク「Default」が構築されています。
ホストと同じネットワークセグメント(ブリッジ)の作成
これから作成する仮想マシンをホスト(OMV)と同じネットワークに接続したい、という場合もあるでしょう。
この場合は追加でブリッジ仮想ネットワークを作成する必要があります。
ただし、ブリッジを作成するためにはホストであるOpenMediaVaultのネットワーク設定自体を変更する必要があり、もしすでにプラグインやdockerアプリなどでネットワーク機能を利用している場合には大きな影響が出ることが予想されます。
よって、本記事では基本的に初期ネットワークである「Default」を利用し、ブリッジネットワークの設定については後述します。
Windows11 Pro 仮想マシン構築手順
Windowsの仮想マシンを構築してみます。
KVMはvTPMに対応しているのでインストール要件がきびしいWindows11も仮想マシンとしてインストールできてしまいます。
ここではWindows仮想マシンとして、Windows11(Pro)をインストールしてみます。
仮想マシンの構築準備
Windows11をインストールするために必要なインストールディスクイメージを準備します。
Windows系のOSをインストールする場合にはOS本体のインストールディスクイメージに加えてKVM仮想ドライバー「Virtioドライバー」のインストールディスク(ISOファイル)も必要(必須ではありませんが・・・)です。
Windows11インストールディスク
Windows11のインストールディスクは以下のリンクからMicrosoftが提供しています。
Windows 11 をダウンロードする | Microsoft
ページの「Windows 11 ディスク イメージ (ISO) をダウンロードする」からISOファイルをダウンロードし、ダウンロードしたISOファイルはKVMプラグインで定義した「ISOプール」へコピーしておきましょう。
メニュー「サービス > KVM > ISOs」画面ではコピーしたWindows11のインストールディスク(ISOファイル)が確認できます。
VirtIOドライバー
Windows系OSをKVM環境で使う場合、ハードディスクやNICなどはKVM標準の「Virtio」環境で使うのが(パフォーマンス上)推奨されます。
そして、それをWindows系OSで実現するためのドライバーが「Virtioドライバー」です。
KVMプラグインではWebUI上から簡単に最新のVirtioドライバーをダウンロードする機能があります。
メニュー「サービス > KVM > 」からISOプールを選択(黄色表示)します。
ダウンロード(↓)ボタンで最新のVirtioドライバーディスクイメージ(ISOファイル)をISOプールへダウンロードしておきます。
Virtioドライバーディスクのダウンロードが正常終了すると、メニュー「サービス > KVM > ISOs」画面でダウンロードしたファイル「virtio-driver.iso」が確認できます。
Windows11仮想マシン環境の構築
ではWindows11の仮想マシンの構成を設定していきます。
メニュー「サービス > KBM > KVM」画面を開き「Add New VM」ボタンを押下します。
VM(仮想マシン)の構成項目が表示されます。
本記事では仮想マシンとしてWindows11(Pro)をインストールしていきます。
仮想マシンの構成定義画面では以下のように入力・設定しました。
Show advanced options | 詳細オプションの表示 ※チェックしておく |
|
---|---|---|
設定 | VM name | 仮想マシンの名前 ※本記事では”v-win11″とします。 |
アーキテクチャー | 環境にあったアーキテクチャを選択 ※本記事では”x86_64″を指定(初期値) |
|
CPU | 環境にあったCPUを”開発コード名”で指定 ※本記事では”host-passthrough”を指定(初期値) |
|
OS | 本記事では”Microsoft Windows 11″を指定 | |
UEFI | チェックする | |
Secure Boot | チェックする | |
CPUs | “2”以上を設定(Windows11要件) | |
Memory | “4GB”以上を設定(Windows11要件) | |
Audio | チェックしておく | |
TPM | チェックする | |
VNC | チェックする | |
Spice | チェックする | |
Storage Volume | Volume | “Create new disk”を選択(初期値) |
Pool | VMディスク用のPoolを指定 ※本記事では”VM”を選択 |
|
名前 | 作成する仮想ディスクの名前 ※本記事では未入力(自動設定) |
|
Format | qcow2/rawのどちらかを選択 ※本記事では”qcow2″を選択(初期値) |
|
Size ユニット | “70GB”以上を設定 ※Windows11要件 |
|
Bus | “Virtio”を選択 | |
Optical Drive | Optical disk | Windows11インストールISOを選択 |
ネットワーク | モデル | “Virtio”を選択 |
ネットワーク | “default”を選択 | |
MACアドレス | 未設定 |
以上を設定し、画面右下の「保存」ボタンで構成を保存します。
作成された仮想マシン構成は一覧へ表示されます。
Virtioドライバディスクのマウント
仮想マシン構成においてWindows11のインストールディスク(ISOファイル)を指定しているので、仮想マシンの1台目のCD-ROM/DVDドライブへインストールディスクがマウントされています。
これに加え、KVM環境でWindows系OSを使う場合に必要な「VirtIOドライバーディスク」も2代目のCD-ROMへマウントしておきます。
つまり、今回Windows11のインストールでは仮想マシンの「1台目のCD-ROM/DVDドライブにWindows11インストールディスク(ISO)」「2台目のCD-ROM/DVDドライブにVirtIOドライバーディスク(ISO)」という構成にします。
2台目のCD-ROM/DVDドライブのマウントはメニュー「サービス > KVM > VMs」画面の「Optical」アイコンより行います。
「Optical」アイコンの「(+)Add disc」より2つ目のディスク「VirtIOドライバー」を選択します。
以上で2台目のCD-ROM/DVDドライブへVirtIOドライバーディスクをマウントした状態となります。
Windows11のインストール
では作成した仮想マシンへWindows11をインストールしていきます。
メニュー「サービス > KVM > VMs」画面の「状態」アイコンから「スタート」を選択します。
これで仮想マシンは「電源オン」の状態となります。
一覧の「Spice」「noVNC」に「link」が表示されたらlinkをクリックします。
※どちらでもお好きなほうで良いですが、私は「noVNC」を使用します。
これにより、SpeceまたはnoVNC画面が開き画面を見ることができるようになります。
おなじみの「Press any key to boot from CD or DVD….」が表示されているので任意のキーを押下してインストールへ進みます。
※もしタイムアウトした場合は「状態」アイコンから「force」を選んでいったん仮想マシンの電源をオフにし、再度挑戦です。
インストール画面を進めていくと「インストール場所(ディスク)の指定」画面になりますが、ちょっと問題があります。
上記のようにディスク領域が空っぽで選択できません。
これは、仮想マシン構成において仮想ディスク(Storage)を「Virtio」と設定しているためであり、Windows系OSでは標準ではVirtioデバイスを利用できないからです。
ここで「2台目のCD-ROM/DVD」にマウントしたVirtioドライバーディスクがでてきます。
画面の「ドライバーの読み込み」からVirtioドライバー(2台目のCD-ROM/DVD)から仮想マシンに必要なVirtioドライバをインストールしていきます。
インストール時には以下の3つをインストールしておくとよいでしょう。
Baloon | Virtio仮想マシンにおけるメモリ管理ドライバー ※あとでもいいけど一応今インストールしておく |
NetKVM | Virtio NICドライバー ※ネット利用に必須 |
viostor | Virtio SCSIドライバー ※ディスク利用に必須 |
Windows11はインストール時にネット接続必須です。
なので、上記の3つのVirtioドライバーを事前にインストールしておきます。
Virtioドライバーがインストールされると、Windows11インストーラーは仮想マシンのハードディスクを認識できるようになります。
あとは通常のインストール手順にてWindows11のインストールを進めます。
以上で仮想マシン上にWindows11(Pro)をインストールする場合の手順となります。
Virtioドライバーのインストール
OpenMediaVault上のKVM環境へWindows11のインストールが完了しました。
あとはご自由にお使いください、ということになりますが、最後にひとつだけ「Virtioドライバー」のインストールを行っておきます。
インストール時にも使用した「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」は実行形式のプログラムなので不通にダブルクリックしてインストールします。
Windows11仮想マシンの構成変更
KVMプラグインのネットワーク環境
KVMプラグインをインストールした状態では仮想ネットワークとして「Default」ネットワークが定義されています。
Defaultネットワークはメニュー「サービス > KVM > Networks」でその内容を確認することができます。
本記事でのDefaultネットワークの定義内容は以下のようになっています。
Network Name | default |
---|---|
Gateway IP | 192.168.122.1 |
IP Range | 192.168.122.0/24 |
Forwarding | nat |
DHCP Range | 192.168.122.2 – 192.168.122.254 |
ちなみに、我が家のネットワーク構成は以下のようになっています。
ルーターIPアドレス ※Default Gateway/DNS |
192.168.11.1 |
---|---|
OpenMediaVault | 192.168.11.22 |
初期仮想ネットワーク「Default」
KVMプラグインによる作成されるDefaultネットワークはホスト(OpenMediaVault)に対してNATとして定義されていることがわかります。
我が家(本記事)では自宅ネットワークは「192.168.11.0/24」であり、OpenMediaVaultホストのIPアドレスは「192.168.11.22」です。
これに対してKVMの仮想ネットワーク「Default」はNATとして「192.168.122.0/24」のネットワーク分割を行い、さらにDHCP機能を有しています。
そして、仮想マシンはこの「Default」ネットワークをインターフェースとして構築していくことになります。
つまり「仮想マシンから自宅ネットワーク(OpenMediaVault含む)へはアクセスできる」「インターネット利用(Default Gateway)も可能」「自宅ネットワーク機器(OpenMediaVault含む)から仮想マシンへのアクセスは不可」というネットワーク構成となります。
追加作成可能な仮想ネットワーク「MacVTAP」
KVMで初期作成される仮想ネットワーク「Default」はNATとして構築されます。
KVMプラグインで追加作成できる仮想ネットワークに「MacVTAP」インターフェースがあります。
MacVTAPはブリッジインターフェース
MacvTAPネットワークはブリッジネットワークなので、この仮想ネットワークを使うことで仮想マシンを自宅ネットワークに含めることができます。
メニュー「サービス > KVM > Networks」画面から仮想ネットワークの新規作成(+)ボタンを押下してMacVTAPインターフェースを作成することができます。
ホスト(OMV)と仮想マシン間の通信はできない
MacVTAPインターフェースはブリッジインターフェースなので、自宅ネットワークと同一ネットワークに所属させることができます。
しかし、唯一ホスト(OpenMediaVault)と仮想マシン間の通信はできません。
MacVTAPインターフェースの作成
では、MacVTAP仮想ネットワークのインターフェースを作成・定義してみます。
メニュー「サービス > KVM > Networks」画面を開きます。
仮想インターフェースの追加ボタン(+)を押下して「Add macvtap」を選びます。
MacVTAPインターフェース定義画面で以下を定義します。
名前 | macvtapインターフェースの名前 ※本記事では”macvtap” |
---|---|
Network Adapter | OpenMediaVaultの物理インターフェースを選択 ※本記事環境では”ens18″ |
定義したら「追加」。
作成されたMacVTAPインターフェースを選択(黄色表示)して、「状態」アイコンから「スタート」を選択し、インターフェースを起動します。
以上でMacVTAPインターフェースの定義は環境、今後は仮想マシン定義時に必要に応じてMacVTAPインターフェースを利用・定義することができます。
完全独立のブリッジインターフェース
KVMプラグインで簡単に定義できるMacVTAPインターフェースはブリッジインターフェースなので、仮想マシンを直接自宅ネットワークへ参加させることができます。
その一方でホスト(OpenMediaVault)からその仮想マシンへのアクセスはできない、という注意点があり、この点が純粋なブリッジインターフェースとは異なる点です。
では、純粋なブリッジインターフェースを作成することもできます。
ブリッジインターフェース定義の注意点
OpenMediaVaultのKVMプラグイン環境で純粋なブリッジインターフェースを定義するためには、ホストであるOpenMediaVault環境自体をブリッジインターフェースにする必要があります。
つまり仮想化以前に物理(ホスト)的にブリッジインターフェースを作成し、ホスト(OpenMediaVault)をこのブリッジに接続する、という環境定義の変更となります。
このため、以下の注意点があります。
- ホスト(OpenMediaVault)のインターフェースが変更される
- すでに導入済のアプリ(dockerアプリなど)が影響を受ける可能性がある
ホスト(OpenMediaVault)インターフェースの変更が必要なため、手順を間違えるとOpenMediaVaultへのアクセスができなくなる、という危険性があります。
この場合はコンソールによる復旧が必要です。
また、OpenMediaVaultの標準インターフェースは物理インターフェース(enp〇〇など)を使用しているため、これをブリッジインターフェースに変更することで、すでにdockerアプリなどが物理インターフェースを参照して動作している場合には動作しなくなる危険性もあります。
ブリッジインターフェースの定義手順
そうは言ってもホスト(OpenMediaVault)環境のブリッジインターフェースの作成手順は難しくありません。
OpenMediaVaultに対して「現在のインターフェース(物理インターフェース)の定義を削除」して「ブリッジインターフェースを定義」というだけの手順です。
では、やってみましょう。
メニュー「ネットワーク > インターフェース」から現在OpenMediaVaultが使用しているインターフェースの定義内容を控えておきます。
現在定義されているインターフェースを編集モードで開くと定義内容が表示されます。
これをメモしておきます(スクリーンショットが良いかも)。
具体的には現在の以下のネットワーク設定内容を控えておきましょう、ということです。
- IPv4設定
- IPv6設定
- 高度な設定
これは、次のステップで定義するブリッジインターフェースへ同じネットワーク定義を行うための作業です。
そして、現在のネットワーク定義を控えたらインターフェース定義を削除します。
インターフェースを選択(黄色表示)し、削除アイコン押下によりインターフェース定義を削除します。
インターフェース定義を削除すると画面上部に「保留中の構成変更」の黄色表示が出てきますが今の時点では変更しません。
「保留中の構成変更」が表示されたままの状態で、インターフェースの作成(+)から「ブリッジ」を選択します。
ここで、先ほど控えたインターフェース定義(ネットワーク定義)の内容を設定します。
- IPv4設定
- IPv6設定
- 高度な設定
上記を設定したら画面下部から「保存」します。
作成したブリッジインターフェースが一覧表示されたら、先ほどの変更(インターフェース削除)と合わせて「保留中の構成変更」をチェック押下し、設定(インターフェース削除&ブリッジ定義)を反映させます。
以上でホスト(OpenMediaVault)インターフェースのブリッジ化が完了です。
仮想マシンでのブリッジインターフェース利用
ホスト(OpenMediaVault)のインターフェースをブリッジ化してしまえば、仮想マシンからそのブリッジを利用するのは簡単です。
仮想マシンの新規構築時やネットワーク定義変更で以下の定義を行うだけです。
仮想マシンの作成(新規定義)時には「ネットワーク」として以下の設定を行います。
モデル | “bridge”を選択 |
---|---|
ブリッジ | ホストのインターフェース定義のブリッジを選択 |
また、既存の仮想マシンのネットワークを変更する場合の内容も同様です。
モデル | “bridge”を選択 |
---|---|
ブリッジ | ホストのインターフェース定義のブリッジを選択 |
以上が仮想マシンでのブリッジインターフェースの使い方、となります。
まとめ、OpenMediaVaultで仮想マシンを動かす
以上、OpenMediaVaultにKVM環境を構築し、仮想サーバーとして使ってみました。
KVM環境はプラグインとして提供されているので、KVM環境構築や操作については非常に簡単に仮想マシンを動かすことができます。
ちょっとだけ仮想マシンを動かしてみたい
現在OpenMediaVaultでNAS環境を構築しているなら、「ちょっとLinux環境が欲しい!」などの場合には有効に使える機能です。
環境構築も簡単だしOpenMediaVaultの広大なストレージとの連携も簡単です。
わざわざ物理PCを用意する必要もないし、ESXiやProxmoxのような(大掛かりな)仮想環境を構築する必要もありません。
「ちょっと仮想マシンが!」という方には体験用として良いのではないでしょうか?
操作性は落ちる
一方で本格的に仮想マシン環境を構築する場合には不向きだと思います。
なにより仮想マシンの操作がESXiやProxmoxと比べると貧弱です。
仮想マシン構築後の構成変更など一部はWebGUIからできるものの、完全に構成をコントロールするためには仮想マシンのXML定義ファイルを直接編集する必要があります。
これはKVMに対する知識が必要です。
機能拡張はやはりdocker
仮想マシン環境を構築することでOpenMediaVaultを機能拡張することができます。
そのためにKVMプラグインを使って仮想環境を構築するのもよいかと思います。
しかし、OpenMediaVaultにはdockerコンテナ環境を構築・操作するためのプラグインも用意されています。
そして、現在では多くのdockerコンテナがアプリケーションとして提供されており、dockerを使って簡単にOpenMediaVaultを機能拡張することができます。
OpenMediaVaultでさらに機能拡張する場合にはKVMによる仮想環境ではなく、dockerによる機能拡張がおすすめです。