清水理史の「イニシャルB」

小型高性能な「おうちHCI」で、仮想マシンを使い捨て感覚で次々デプロイ

ASRock DeskMini 310で作るシングルノード「Nutanix」環境

 「テスト用に、しばらくの間、仮想マシンを常時稼働させておきたい……」。このような場合、クラウドに仮想マシンを用意するのが一般的だろう。ただし、使い方によっては毎月のコストが重荷になってくることがある。そこで用意したのが「Nutanix Community Edition」だ。今回は、ASRockの小型ベアボーン「DeskMini 310」を利用し、6コア32GB環境のHCI(Hyper Converged Infrastructure)を稼働させてみた。

ASRockの小型ベアボーン「DeskMini 310」を稼働環境として利用

小さくて高性能なサーバーで「おうちHCI」を構築

 かつての「自宅サーバー熱再び」とでも言ったところだろうか。

 このところ、小さくて高性能なPCを自宅サーバーにしたいという欲求が高まっている。

 そもそものきっかけは、「月に1~2回ほどの頻度で、数日間連続稼働する仮想マシンが必要」という個人的なニーズからだった。

 RPA関連の検証やコンテンツ制作といった用途で、ロボットを稼働させっぱなしにすることが多いのだが、こうしたニーズだと、Windows 10のクライアントHyper-Vは「帯に短し」で連続稼働に向かず、かといってクラウドは「たすきに長し」で無稼働期間のストレージコストがかさんでしまう。

RPA関連のテストで常時ロボットを動かせる仮想マシンが必要

 もちろん、仮想化に対応したNASを使うという手もあるが、その場合、ストレージやCPUが決してパワフルなわけではないため、利用にストレスを感じてしまう。

 コストを気にしながら遠慮がちにクラウドを使うくらいなら、いっそのこと自宅に仮想化基盤を用意してしまった方がよさそうだということで、行き着いたのが「Nutanix」というわけだ。

無料の仮想化基盤「Nutanix Community Edition」

 Nutanixは、いわゆるHCI製品だ。「HCI:ハイパーコンバージドインフラストラクチャー」は、仮想化基盤で使われるサーバー、ネットワーク、ストレージの3要素を、1台のアプライアンスとして提供する仕組みとなる。

仮想化基盤の「Nutanix」。Community Editionなら無料で自宅サーバーを構築できる

 従来の仮想化基盤は、サーバー、ネットワーク、ストレージが個別のベンダーから提供されることが多く、複雑かつ大規模な構成が必要だったが、HCIでは1台のアプライアンスにこの機能が詰め込まれており、SDS(Software Defined Storage)などソフトウェアによる仮想化技術を活用して、アプライアンス内部のストレージをクラスタ全体で利用できるようになっている。

 中小規模の企業や拠点などのサーバーインフラとして活用されることが多く、通常は専用アプライアンスを複数台接続したクラスタ構成で冗長性や拡張性を確保するが、無償版の「Nutanix Community Edition」を利用すれば、汎用的なPCにソフトウェアをインストールすることで、シングルノードでも稼働させることが可能となっている。

 クラウドライクなウェブベースの管理ツールを使って仮想マシンを簡単にデプロイできるなど、その手軽さも特徴の1つだ。例えば、海外のウェブサイトを見ると、Intelの高性能NUCであるSkull Canyonこと「NUC6i7KYK」を3台使ったコンパクトな「Bookshelf Cluster」を構築している猛者までいる。

 こうした情報なども参考にしながら、仮想マシンをバンバン作って、課金を気にせず好きなだけ連続稼働させたり、無駄にストレージを使いまくることができる贅沢な環境を用意してみよう。

Nutanix CE用マシンとして、ASRockのベアボーン「DeskMini 310」を用意

 というわけで、空いた時間に、いろいろ試行錯誤してみた。

 まず、今回利用したハードウェアを紹介しよう。いろいろ検討した結果、ASRockから販売されているベアボーン「DeskMini 310」を利用し、以下の構成で組んでみた。

CPUに6コアのCore i5 9400を使用し、メモリは32GBを搭載した
製品コスト
ベアボーンASRock DeskMini 3101万7409円
CPUIntel Core i5 94002万2980円
メモリCrucial DDR4-2666 SO-DIMM 16GB×21万6540円
SSD-1Samsung 860 QVO 1TB1万990円
SSD-2Western Digital WD Blue M.2 500GB0円(余りもの)
HDDWestern Digital WD Blue 500GB0円(余りもの)
そのほか16GB USBメモリー0円(余りもの)

 Nutanix CEの動作要件としては、物理4コア以上でIntel VT-xサポートのCPUと、16GB以上のメモリが必須で、200GB以上のSSD、500GB以上のHDD、Intel NICが推奨される。

 ただし、詳しくは後述するが、管理ツールの稼働に大量のメモリが必要になる。このため32GBはないと、複数台の仮想マシンを稼働させるのが厳しい。できれば64GB欲しかったが、SO-DIMMで1枚32GBのモジュールは高価なため、今回は妥協して16GB×2の32GB構成とした。

 LANが1Gbps×1(Intel 219-V)なので、複数台の仮想マシンを稼働させると厳しいが、家庭用ということで、こちらも妥協することにした。

 結論から言えば、このハードウェア構成でも、6~7台の仮想マシンを稼働させるには十分だ。稼働後の状況を見てみると、ティア2用のHDDがほとんど使われないので(ストレージ仮想化によりSSDにホットデータ、HDDにコールドデータを自動的に配置してくれる)、SSDだけの構成でもよかったように思えるが、このあたりはもっと長期間稼働させてみてから判断する必要がありそうだ。

 さて、インストールの基本的な流れは、以下の通りだ。

  1. Nutanix CEのダウンロード
  2. USBメモリーへの書き込み(USB Writer 1.3使用)
  3. USBブート(USBはつなぎっぱなし)
  4. インストール

 VMwareなどの仮想環境へ、ネステッドでさらにNutanix CEをインストールする例もあるが、今回はまっさらなPCに直接ベアメタルでインストールを行なった。

 ASRock DeskMini 310には、microSDカードスロットがマザーボード上に搭載されているため、当初はここから起動しようと考えていたのだが、microSDからの起動時にエラーが発生してしまったため、背面のUSB 3.0ポートにUSBメモリーを装着し、こちらから起動させることにした。

 なお、一部の機能はUSBメモリー上でそのまま稼働するため、つなぎっぱなしで運用する必要がある点には注意が必要かもしれない。

microSDを装着できるが、microSDへのNutanix CEのインストールに失敗した

 このほかの注意点は、Nutanix CEのダウンロードが少々ややこしい点だろう。NutanixのCommunity Editionのウェブページから「Nutanix Next Community Download Software」のリンクにアクセスすると、「Nutanix Next」というユーザーコミュニティに転送される。

 そのままではアクセスが拒否されるので、Nutanix Nextにユーザー登録してログインした上で、もう一度アクセスすると、掲示板の投稿を参照できるようになる。この投稿にダウンロード用のリンクが掲載されているので、そこからダウンロードするという流れだ。

コミュニティに投稿されたメッセージから、Nutanix CEのインストーラーをダウンロードできる

 インストールは、画面の表示に従っていくだけであっさり完了するが、ホストとCVMのIPアドレスだけは、途中で設定する必要がある。

 ホストとは、Nutanix CEが利用するハイパーバイザーである「AHV」が稼働するマシンで、ここでは物理的なPCのIPアドレスを設定する。もう一方のCVMは、Nutanix CEの管理ツールが稼働するコントローラーの仮想マシンとなる。

 今回は複数台でクラスターを構成せず、シングルノードで利用するので「Create single-node Cluster」にチェックマークを付け、DNSサーバーのアドレスも手動で設定した。このたりは、同社が公開している以下の動画で詳しく解説されているので、事前に目を通しておくと安心だ。

仮想マシンをデプロイする

 インストール後は、先に設定したCVMのIPアドレスから「PRISM」と呼ばれるウェブUIにアクセスすることで管理ができる。

「PRISM」を使って管理する

 初期設定がいくつか必要なので、次の各項目を設定しておくといいだろう。

  • Language Settings:日本語
  • クラスタ詳細:クラスタ名(任意)とクラスタの仮想IPアドレス
  • NTPサーバー:ntp.nict.jpなど
  • ネットワーク構成:任意の名前でVlan.0で作成
  • ストレージコンテナ:任意(ISO格納用とVM格納用など)
まずクラスタ名やNTPサーバーなどを設定
ネットワークも設定しておく
イメージをアップロードして仮想マシンの作成に備える

 続いて、イメージを登録する。Nutanix CEでは、OSインストール用のISO(VMのテンプレート仮想HDDなども)を「イメージ設定」からアップロードしておく必要がある。インストールしたいOSのISOを登録しておくといいだろう。

 また、Windowsベースの仮想マシンを稼働させる場合は、ストレージを認識させるための「VirtIO」ドライバーも必要になる。Nutanix CEをダウンロードした際のNutanix NEXTの投稿にリンクが掲載されているので、そこからダウンロードし、イメージ設定へアップロードしておこう。

 ここまで準備しておけば、あとは仮想マシンを好きなように作成すればいい。

 「仮想マシン」メニューから「仮想マシンを作成」をクリックして、割り当てるCPUのコア数、メモリ容量、ディスク、ネットワークを設定すれば、数秒ほどで仮想マシンが用意される。

 Windows系のOSをインストールする際は、VirtIOが必須なので、仮想マシンにCD-ROMドライブを2台登録し、1台目にはOSのISO、2台目にはVirtIOのISOをマウントしておく。

 これで、Windowsのインストール時にインストール先を選択する画面で、ドライバーの読み込み先としてVirtIOを登録することで、ストレージが認識されるようになる。

GUIで簡単に仮想マシンを作成できる
OSがWindowsなら、ストレージの認識にVirtIOドライバーが必要だ。CD-ROMドライブを2つ設定し、片方にVirtIOのISOを指定する

 仮想マシンを1台インストールしてしまえば、あとはクローンで複製したり、クラスタにSSHでアクセス後、acliからコマンド(image.create Windows10Template clone_from_vmdisk=vm:Windows10Enterprise:scsi.0 image_type=kDiskImage annotation="EVAL90")を使って、テンプレートとしてイメージ化したりすれば、2台目以降を簡単にデプロイできるようになる(Windows側でSysprepも必要)。

 管理は、PRISM上でウェブベースのコンソールを表示することも可能だが、リモートデスクトップを有効にして管理すればいい。

 クラウド上のマシンだと、リモートデスクトップでの管理にS2SのVPNの構築が必要となってしまうが、ローカルならそこまで気をつかわなくても、リモートデスクトップから手軽に利用可能だ。

 気分は、ほとんどクラウドサービスで、ウェブブラウザーからデプロイして、さっと仮想マシンを使えるようになるのが、なかなか軽快だ。テンプレートイメージを作っておくと本当にデプロイが楽で、仮想マシンを使い捨て感覚で次々にデプロイできるようになる。これはなかなか便利だ。

ウェブブラウザーからコンソールも表示可能

同時稼働5台が限界? 32GBもあるのに??

 環境が構築できたので、テストで使う仮想マシンをいくつか作成し、次々に稼働させてみたのだが、ここでメモリの壁に突き当たってしまった。

 2GBずつメモリを割り当てた仮想マシンを5台稼働させ、さらに6台目を起動させようとしたところで、「No host has enough available memory for VM」というメッセージが表示され、仮想マシンを起動することができなかった。

32GBだと仮想マシンは5台までが限界か?

 「32GBもあるのに?」と思って確認してみると、CVMにメモリが16GBが割り当てられていて、仮想マシンで利用できるメモリが限られてしまうようだ。

 それにしても、もう少し稼働できそうなものだが、CPU内蔵のビデオ機能にメモリの一部が割り当てられていたり、ホストにもメモリが割り当てられていたりするので、実質的に2GB×5台が限界となったようだ。

 テスト環境なので、5台同時稼働なら十分なのだが、どうにも「損をした」気分だ。

 そこで、いろいろ調べてみると、ホストにSSHで接続し、次のコマンドを利用することで、CVMのメモリを減らすことが可能なようだ。海外では、割り当てメモリを8GBにする以下の設定例が紹介されていた。

virsh list --all
virsh shutdown NTNX-xxxxxxxx-A-CVM
virsh setmem NTNX-xxxxxxxx-A-CVM 8G --config
virsh setmaxmem NTNX-xxxxxxxx-A-CVM 8G --config

 ならば、ということで8GBでチャレンジしてみたが、これはさすがに厳しいようだ。2GB×6台+3GB×2台を同時稼働させたところ、あっという間にCVMのメモリ使用量が90%近くに達してメモリ不足の警告が表示され、しかもPRISMのUIから仮想マシンの操作ができない状態になってしまった。

 続いて、10GB化にチャレンジした。こちらは一見うまく動作しているように見えた。さすがに9台目ではエラーが発生したが、2GB×8台を稼働させることが可能で、仮想マシンも問題なく操作できた。

 しかし、CVMのメモリ使用量が時間が経つごとに数%ずつジワジワと上がり続け(途中で仮想マシンをシャットダウンしても)、半日ほど経過した段階で85%近くに達し、こちらも動作に限界が訪れてしまった。

CVMのメモリ使用量がじわじわと増加していき、いつの間にか85%を超えてしまった

 テスト環境で、実際にはそれほど同時に稼働させることはないとは言え、さすがに10GB以下での運用は難しいと判断し、さらに増やして12GBとしてみた。

 この12GB構成の場合、同時稼働は2GB×7台が限界となるが、CVMのメモリ使用量は65%前後が上限となり、数日稼働させた段階では、安定しているように見えた。

 しかし、20日ほど稼働させると、毎日じわじわと0.5%くらいずつメモリ使用量が増え続け、こちらも75%を突破してしまった。

12GB構成でも、20日ほどでCVMのメモリ使用量が75%を突破してしまった

 Nutanixはメモリ命、という話は聞いたことがあったが、ここまで必要とは思わなかった。もちろん、再起動すれば一時的にはメモリ使用量を減らせるが、いかにテスト環境とは言え、それを繰り返すのは非効率的だ。実装メモリ32GBごときのPCで使うには、荷が重いというのが実情だろう。

Hyper-V Server 2019は挫折

 以上、ASRockでDeskMini 310とNutanix CEを利用した「おうちHCI」を構築してみた。

 PRISMは操作性も良く、クラウド感覚で仮想マシンを「ひょいひょい」用意できるので、非常に便利だ。シングルノードなのでNutanixの実力を全く発揮できていないが、こうした使い方もアリなのではないかと思える。

 しかしながら、とにかくメモリが必要となる。今後は、64GBへアップグレードするか、別のプラットフォームに変更することを検討している。

 実はHyper-V Server 2019+Windows Admin Centerという構成に切り替えることも検討したのだが、これはあきらめた。

 実際にインストールをしてみたが、ネットワーク(Intel I219-V)の認識に手間取った(INFの書き換えとブート時のサインオフオプション設定が必要)上に、Nutanix CEでは設定一切不要で階層化されたストレージも、Hyper-V Server 2019ではPowerShellで手動で構築する必要があり、やたらと手間が掛かった。

 Windows Admin Centerの仮想マシン管理も、Nutanic CEのPRISMほど洗練されていなかったことから、利用をあきらめてしまった。

 やはり、仮想化基盤ということなら、VMwareのESXiが有力なのだろうか。あらためてチャレンジして、この場で報告することにしたい。

Amazonで購入

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できる Windows 10 活用編」ほか多数の著書がある。