当ページでは、ホストにXCP-ngを導入する手順を紹介してゆきます。
1. システム構成要件 #
スペックは高ければ高いほど良いですが、予算も考慮した必要十分なシステム構成を見つける必要があります。XCP-ng公式のシステム要件だけではHCI仮想環境に必要な構成を導き出すのは難しいと思いますので、当方独自のサイジング方法と構成例を紹介させてもらいます。
1)サイジング方法 #
| リソース | 公式システム要件 | HCI仮想環境に必要なシステム構成 (当方独自のサイジング方法) | |
|---|---|---|---|
| 最低 | 推奨 | ||
| ホストの設置台数 | – | – | 最低2台でも稼働可能だが、3台以上かつ奇数台の設置を強く推奨(*1) |
| CPU(*2) | 64-bit x86 CPU Intel VT/AMD-V 1.5GHz以上 シングルコア | 64-bit x86 CPU Intel VT/AMD-V 2GHz以上 マルチコア | ①Hyper-Threadingに対応していないCPUの場合 1VM当りのvCPU数 x 同時稼働VM数(*4)÷(ホスト台数 – 1)(*5) ②Hyper-Threadingに対応しているCPUの場合 1VM当りのvCPU数 ÷ 2 x 同時稼働VM数(*4)÷(ホスト台数 – 1)(*5) |
| メモリ(*3) | 2GB | 4GB以上 | 最低要件+1VM当りの容量 x 同時稼働VM数(*4)÷(ホスト台数 – 1)(*5) |
| プライマリDISK | 46GB | 70GB以上 | 最低要件+ISOストレージ必要容量(*6) |
| セカンダリDISK(*7) | – | – | 1VM当りの容量 x 最大保管VM数(*8)x 複製数(*9) ÷ ホスト台数 ÷ 0.93(*10) |
| プライマリNIC | 100Mbps | 1Gbps以上 | 最低1Gbpsできれば10Gbps |
| セカンダリNIC(*11) | – | – | 最低1Gbpsできれば10Gbps |
- XCP-ng+XOSTORではホスト間のクォーラム(多数決)により異常のあるホストを隔離(フェンシング)することでシステムの正常稼働(高可用性)を担保しているのですが、偶数台の場合、ネットワーク障害によっては多数決が効かずスプリットブレインを起こしてシステムの停止やデータの損失を招く危険性があるため、奇数台のホストの設置が強く推奨されています。なお、同スペックのホストを追加して奇数台にせずとも、QDeviceのような軽量ホストをタイブレーカーとして1台追加することで上記のリスクを回避することは可能です。
- HCI仮想環境のサイジングでは、CPUのオーバーコミットは考慮していません。
- HCI仮想環境のサイジングでは、メモリのバルーニングは考慮していません。
- 一度に稼働させる可能性のあるVMの総数を指定します。
- 1台故障しても残りのホストで全てのVMがカバーできるよう、1台少ない台数で割ります。
- ISOストレージをプライマリDISK(ローカルストレージ)に設置しない場合は追加不要です。
- HCI仮想環境では、データ同期共有ストレージ専用のセカンダリ物理DISKが必須となります。
- 稼働/非稼働に関わらず共有ストレージに保管しておきたいVMの最大数を指定します。一時的にVMをコピーする際もDISK容量は消費するため最大数には余裕を持たせた方が良いです。
- HCI環境構築時に設定する予定のデータのレプリケーション数(1~3)を指定します。
- 実際に必要となる容量から物理DISKのカタログスペック(250GB/500GB/1TB等)を概算で算出するための係数となります。
- 小規模環境であればデータ同期専用のセカンダリNICの追加は必須ではありませんが、HCI仮想環境のレスポンス低下やネットワーク不具合に繋がるため、追加することをお勧めします。なお、セカンダリネットワークはルーター不要のため、HUBを用意するだけでOKです。
2)構成例 #
当方のHCI仮想環境で稼働しているホストのシステム構成を紹介させてもらいます。
| ホスト名 | 機種 | CPU | RAM | DISK1 | DISK2 | NIC1 | NIC2 |
|---|---|---|---|---|---|---|---|
| xcp-ng01.ktcsp.net | NEC MJ33M/L | Corei5-4590 | 16GB | 128GB SSD | 250GB HDD | 192.168.0.101 | 10.10.10.1 |
| xcp-ng02.ktcsp.net | NEC MJ33M/L | Corei5-4590 | 16GB | 128GB SSD | 250GB HDD | 192.168.0.102 | 10.10.10.2 |
| xcp-ng03.ktcsp.net | NEC MJ33M/L | Corei5-4590 | 16GB | 128GB SSD | 250GB HDD | 192.168.0.103 | 10.10.10.3 |
サーバー専用機ではなくパソコンを利用しているため、CPUは4コア/4スレッド(Hyper-Threading未対応)で増設不可、メモリも最大16GBまでと限界はありますが、今のところ5つのVMが問題なく稼働しています。なお、当方では自宅で眠っていたHDDを勿体なさからDISK2に再利用しましたが、SSDが用意できるのであればDSIK2もSSDにした方が良いと思います。
3)その他注意点 #
以下、セカンダリDISK/セカンダリNIC増設時における注意点です。
- 増設時にDSIK名(sdx)やNIC名(ethx)が入れ替わることがあります(参)
- すべてのホストのNIC名(ethx)は完全に一致している必要があります
DISK名について
DISK名はBIOSの認識順で決まるため、XCP-ng導入後に増設しても同じ結果となり後から変えることもできませんが、XCP-ngはUUIDでDISKを識別するため支障はありません。
NIC名について
NIC名もBIOSの認識順で決まりますが、セカンダリNIC増設前にXCP-ngを導入すればオンボードNICを「eth0」に固定することができます。また、XCP-ng導入後でもinterface-renameコマンドを使って後からCLIでNIC名を変更することもできます。
2. XCP-ngの導入 #
それでは早速ホストへのXCP-ngの導入を進めてゆきます。
1)インストール用メディアの作成 #
まずは、インストール用メディア(USBメモリ)を作成します。
XCP-ng公式サイトからLTS最新版のISOファイルをダウンロードします。

ダウンロードしたISOファイルをRufusなどでUSBに書き込み、起動用USBメモリを作成します。

2)インストール #
作成したインストール用メディアを使ってすべてのホストにXCP-ngの導入を行ってゆきます。
| 導入画面ではマウスが使えないためキーボードで操作してゆきます。 | ||
| 選択肢の選択 | : | 矢印キー |
| 選択肢の決定 | : | スペースキー |
| 決定項目の移動 | : | タブキー |
| 文字や数字入力 | : | 文字や数字のキー |
| 最終決定 | : | Enterキー |
作成したUSBメモリからホストを起動し、インストール画面が表示されたらEnterキーを押します。

キーボード配列を選択し、OKで決定します。

注意事項を確認し、そのままOKで決定します。

エンドユーザー許諾(EUA)に同意します。

起動用USBメモリがBIOSモードだった場合は注意画面が表示されますが、そのままOKで進めます。
(UEFIモードに変更したい場合は、起動用USBメモリの作成からやり直してください)

XCP-ngを導入するDISK(プライマリDISK)を選択します。(注)

プライマリDISK名が「sda」であるとは限りません。
上記画面にはDISKが1台しか表示されていませんが、実際は、複数のDISK(起動用USBメモリ、プライマリDISK、増設していた場合はセカンダリDISK)が表示されますので、DISK情報などを元に正しいプライマリDISK(sda/sdb/sdc…)を選択する必要があります。
仮想マシンを格納するDISK(こちらもXCP-ngと同じプライマリDISK)を選択します。(注)

- この画面も同様に複数表示されますので正しいプライマリDISKを選択してください。
- 格納先をセカンダリDISKに指定する設定は、HCI環境を構築する段階で行いますので、この段階ではセカンダリDISKを選択しないでください。
XCP-ngのファイルシステム(通常はEXT)を選択します。

インストール元(USBメモリなのでLocal media)を選択します。

インストール元(USBメモリ)の検証を行うを選択します。

問題なければ検証成功の画面が表示されるのでそのままOKで決定します。

ターミナル(SSH)やWeb(XO Lite)で接続するためのrootパスワードを設定します。

インターネットプロトコル(通常はIPv4)を選択します。

ネットワーク情報(固定IP・サブネットマスク・デフォルトゲートウェイ)を設定します。

ホスト名(FQDN推奨)とDNS参照アドレス(ルーターのIPアドレス)を設定します。

タイムゾーンエリアを選択します。

タイムゾーンエリア内の都市を選択します。

NTPサーバーの種類(manually)を選択します。

自国内で公開されているNTPサーバー(日本ならntp.nict.jpなど)を設定します。

最後に「Install XCP-ng」を選択して導入を開始します。

導入準備が完了するまでしばらく待機します。

導入が完了するまで引き続き待機します。

導入が完了したら、起動用USBメモリを取り外し、OKで決定してホストを再起動します。

XCP-ngホストが起動するまで待機します。

以下の画面が表示されればXCP-ngの導入は完了です。

XCP-ngホストにターミナル接続してシステムアップデートを行い、ホストを再起動します。
# yum update
# reboot
再起動後、起動に失敗しているサービスがないか念のため確認します。
# systemctl --failed
0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
以上でXCP-ngの導入は完了です。
続いて、XCP-ng環境を一元管理できるWebUIツール(Xen Orchestra)を導入・設定してゆきます。
