「SAVACAN」担当のMKです。
以前の記事 では、libvirt + KVM + Cockpit を利用した仮想環境の構築方法をご紹介しました。
今回は Cockpit の代わりに virt-manager を活用した仮想環境構築手順 をご紹介いたします。
virt-managerはLinuxの X11 上で動作する仮想マシンを管理するGUIアプリケーションです。そのため、操作には MobaXterm や PuTTY +Xmingなど、X11に対応したリモートコンソールから接続する必要があります。
GUIなので、仮想マシンの作成・管理をより直感的に行うことが可能な点が大きな特徴です。以降の記事では、具体的なセットアップ手順について詳しく解説していきます。
KVMとは何か?
KVM(Kernel-based Virtual Machine) は、Linuxカーネルに統合されている仮想化機構です。大幅な値上げで騒がれているVMwareからの移行先の一つとしても注目されています。
KVMを利用することで、Linuxサーバー自体をハイパーバイザーとして運用できます。これにより、Linuxサーバーを仮想ホストとして、複数の仮想ゲスト(VM)を同時に管理、運用する事が可能となります。
KVMを利用するには、下記のCPU機能が必須となりますので事前に確認してください。
Intel系:VT-x
AMD系:AMD-V
ARM系:VE(EL2)
KVMは、カーネルレベルで実装されているため、以下のような成熟したカーネル機能を直接利用することができます。
- メモリマネージャー
- プロセススケジューラー
- 入出力(I/O)スタック
- デバイスドライバー
- セキュリティマネージャー
- ネットワークスタック
各VMは、ネットワークカード、グラフィックアダプター、CPU、メモリ、ディスクなど専用に割り当てられた仮想のハードウェアを持ち、通常のLinuxプロセスとして実行されます。そのためオーバーヘッドが少なく、高いパフォーマンスを発揮します。
主なハイパーバイザー製品として、以下のようなハイパーバイザー型仮想化プラットフォームが広く利用されています。
- VMware ESXi
- Linux KVM
- Microsoft Hyper-V
ホスト型仮想化とは
ホスト型仮想化は、既存のOS(ホストOS)上に仮想化ソフトウェアをインストールして仮想マシンを実行する方式です。
ホストOSの上で仮想化ソフトウェアが動作し、その上でゲストOSを稼働させる構造となるため、ハイパーバイザー型と比較するとオーバーヘッドが大きくなりやすいという特徴があります。
一方で、ハードウェア要件が低く導入が容易なので、個人利用や検証環境の構築に適している点が強みです。
代表的なホスト型仮想化ソフトウェアには以下があります。
- VMware Workstation Player
- Oracle VM VirtualBox
オーバーヘッドとはなんだ?
主に、目的の結果にたどり着くまでに発生する中間処理の事を指します。
ホスト型仮想化環境においては、VM とハードウェアの間に仮想化ソフトウェアの処理が存在する分、オーバーヘッドが多くなりがちです。逆にハイパーバイザ―型の仮想化では、カーネルで処理可能な部分が多く、ホスト型と比較してオーバーヘッドが小さくなります。
KVMでできること
設定変更の反映にはサーバーの停止が必要となりますが、KVM では以下のような柔軟なリソース管理が可能です。
- NIC やストレージを後から追加
- CPU コア数やメモリ割り当てなどのリソースを変更
- 別の KVM ホストへ VM を移行
これは多くのクラウドサーバーサービスで謳われているメリットと同じですね。
つまり、クラウドサーバーサービスの内部でも、KVMの様な仮想化技術によってサーバーを管理、運営しているのです。
また、KVMには、AWSの マルチAZ のようなことができる「ライブマイグレーション」機能 があります。
ライブマイグレーション とは、稼働中の VM を、大きなシステム停止時間を発生させることなく別の物理ホストへ移動できる機能です。移行中も VM の電源はオンのまま維持され、ネットワーク接続やアプリケーションの稼働も継続されます。
ただし、ライブマイグレーションを利用するためには、移動するホスト間でストレージが共有されており、共有ストレージ内で VM が稼働している必要があります。このため事前にライブマイグレーションを前提とした構成にて構築してある必要がある点に注意してください。どこ様な環境でも使える機能ではありません。
導入をご検討の際は、可用性向上のメリットとあわせて、費用面のバランスを十分にご確認いただくことをおすすめします。
KVMのインストール
それではvirt-managerでKVMを操作するためインストール手順のご説明をしていきます。
今回も 以前の記事 と同じでAlmaLinux8.10にインストールしています。
関連パッケージインストールします。
yum -y install qemu-kvm libvirt libvirt-daemon* virt-install bridge-utils xorg-x11-xauth virt-manager vlgothic-fonts.noarch vlgothic-p-fonts.noarchサービスの自動起動有効化と起動
systemctl enable libvirtd
systemctl enable libvirt-guests
systemctl start libvirtd
systemctl start libvirt-guests仮想マシンがブリッジ接続できるようにネットワークを設定して変更を反映します。
vi /etc/sysconfig/network-scripts/ifcfg-eno1
DEVICE=eno1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=MACアドレスを設定します
BRIDGE=br1vi /etc/sysconfig/network-scripts/ifcfg-br1
DEVICE="br1"
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=[IPアドレスを設定します]
PREFIX=24
GATEWAY=[GWを設定します]
DNS1=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System br1"MobaXterm や PuTTY など、X Window System(X11)を利用可能なコンソールからvirt-managerを起動します。
virt-manager起動に成功すると仮想マシンマネージャーが立ち上がります!

仮想マシンを新規構築する
KVMホストのローカルにAlmaLinux8のインストール用のISOをアップロードしておきます。
[新しい仮想マシンの作成]をクリックします。

ローカルのインストールメディアを選択し[進む]をクリックします。

ローカルにアップロードしたISOを参照し[進む]をクリックします。

メモリとCPUを入力し[進む]をクリックします。

仮想マシンに必要なディスク容量を入力し[進む]をクリックします。

仮想マシンが起動し、コンソール画面での操作が可能となりますので、通常のコンソールでのインストール手順を進めます。
インストール後は外部と疎通が取れるかなど通常の確認をしましょう。

最後に
弊社へ保守を依頼いただいているあるお客様では、オンプレミス上に構築したKVMの仮想環境にて、1日2,500万PVを超えるWEBサイトを運用されております。安定性やレスポンスにおいても十分な速度を発揮しています。また、KVMを起因とするトラブルも発生せず、長期間の安定稼働を達成しております。
クラウド環境は従量課金なので、検証用途であっても料金が発生するものです。KVMであれば高額な仮想化ソリューションを購入する必要がありませんので、ちょっとした検証環境作りが手軽にできますし、イメージから復元する事で頻繁なスクラップ&ビルドも簡単です。
要件さえ満たせば通常の家庭用パソコンでも構築可能なので、空いているマシンがあれば是非お試しください。
最近では、Amazon EC2にてベアメタルインスタンスではない仮想インスタンスの一部プランにて仮想化のネストに対応したとのニュースがありました。これにより、EC2上でKVMのハイパーバイザーが構築可能となります。夢が広がりますね。
