Oracle Linux 8.4へインストールしたKVMで仮想マシンを作成
目次
概要
KVMの仮想マシンを作成するのに少し手こずったので手順を残しておきます。 virt-install コマンドで仮想マシンの作成とディスクイメージの作成を同時に行い、 ディスクイメージをスパースファイルに指定しました。 しかし、ディスクメージがスパースファイルにならず、作成時に指定したサイズ(今回は80GB)で ホストOSのストレージプールを消費してしまいました。 そこで、qemu-img コマンドで先にディスクイメージを作成すると、期待通りスパースファイルで作成されましたので、 ひと手間かかりますが、ディスクイメージの作成と仮想マシンの作成を分けて実施する手順としました。
構成
環境構成
Oracle Linux 8.4のKVM仮想化環境を利用しています。
サーバ構成
ハードウェア
KVM導入済みホストOSのハードウェアスペックは以下の通りとなっています。
項目 | 内容 |
---|---|
vCPU | 6コア |
メモリ | 10GB |
ネットワークアダプタ | 1 ※数 |
ハードディスク1 | 80GB |
ハードディスク2 | 200GB |
OS
Oracle Linux Server release 8.4 x86_64
モジュール
- virt (仮想化モジュール)
主要パッケージ
- virt-install-2.2.1-4.0.1.el8.noarch.rpm
- virt-viewer-9.0-9.el8.x86_64.rpm
仮想マシン構成
仮想マシンスペック
本手順で作成するKVMの仮想マシンスペックは以下のとおりとしています。
項目 | 内容 |
---|---|
vCPU | 2コア |
メモリ | 2GB |
ハードディスク | 80GB |
OS
AlmaLinux release 8.4 (Electric Cheetah) x86_64
環境構築
QEMUディスクイメージ作成
ディスクイメージ作成
qemu-img コマンドでディスクイメージを作成します。 後続の仮想マシン作成手順の中で virt-install コマンドで一緒に作成することもできますが、 スパースファイルを指定して作成してもスパースファイルにならなかったので、 対策として先にディスクイメージの作成を行っています。 ディスクイメージの作成場所はストレージプールのパス(今回の環境では /vmdata/ )内にしています。
# qemu-img create -f qcow2 /vmdata/vm001.qcow2 80G Formatting '/vmdata/vm001.qcow2', fmt=qcow2 size=85899345920 cluster_size=65536 lazy_refcounts=off refcount_bits=16
ディスクイメージ作成後のサイズ確認
80GBのディスクイメージを作成しましたが、作成後にディスクイメージのファイルサイズを確認すると、 約198KBとなっています。スパースファイルとして作成できています。
# ls -l /vmdata/vm002.qcow2 -rw-r--r-- 1 root root 197888 9月 7 22:22 /vmdata/vm001.qcow2
仮想マシンの作成
仮想マシンの作成と起動
virt-install コマンドで仮想マシンを作成します。 以下のコマンドを実行すると、指定したオプションに沿って仮想マシンが作成された後、 AlmaLinuxのインストールディスク(ISOファイル)を読み込んでインストーラが起動します。
# virt-install \ > --name vm001 \ > --vcpus 2 \ > --memory 2048 \ > --cdrom /vmdata/isos/AlmaLinux-8.4-x86_64-dvd.iso \ > --os-variant almalinux8 \ > --disk path=/vmdata/vm001.qcow2 \ > --network network=bridge-br0 \ > --graphics vnc,port=5901,listen=0.0.0.0 \ > --boot uefi WARNING グラフィックスが要求されていますが DISPLAY 変数が設定されていません。virt-viewer を起動できません。 WARNING ゲストのコンソールがないため、デフォルト値 --wait -1 を適用します。 インストールの開始中... Domain installation still in progress. Waiting for installation to complete.
標準出力としてはここで止まってプロンプトが返ってこない状態になりますが、 作成した仮想マシンではゲストOS(今回はAlmaLinux)のインストールが開始されています。
ゲストOSのインストール
KVMが稼働しているホストOSのIPアドレス(今回は 192.168.0.52)と virt-install コマンドのオプションで指定した VNC接続用ののポート番号(今回は 5901)を指定してVNCクライアントで接続するとお馴染みのAlmaLinuxのインストール画面が表示されます。
以下はUltraVNC Viewer 1.3.2で接続した場合のゲストOS(AlmaLinux)のインストール画面です。
インストール手順は特に特殊なものはないので割愛しますが、注意点としては、 virt-installでネットワークはホストOSの仮想スイッチ(ブリッジ)に接続していますので、 ホストOSと同じサブネットに接続されている前提でネットワークの設定を行います。 また、UEFIブートを指定していますので、ディスクの構成時に /boot/efi を作成する必要があります。 ゲストOSのインストールが完了すると以下の画面が表示されます。
[システムの再起動]ボタンをクリックするとゲストOS(AlmaLinux)の再起動が開始されます。
仮想マシンの作成完了
ゲストOSの再起動の過程でシャットダウンが終わると virt-install コマンドのプロンプトが返ってきます。
インストールの開始中...
Domain installation still in progress.
Waiting for installation to complete.
※ゲストOSインストール後の再起動を実行すると以下の部分が表示されプロンプトが返ってくる※
ドメインがシャットダウンしました。続けています。
仮想マシンの作成が完了しました。
ゲストを再起動しています。
#
ゲストOSの再起動が終わるとVNCの画面にはログイン画面が表示されています。
起動中の仮想マシンの確認
上記の流れで仮想マシンのインストールを行うと、仮想マシンとしては起動状態となっていますので、 ホストOS上で仮想マシンの一覧を表示すると「状態」が「実行中」と表示されます。
# virsh list Id 名前 状態 ---------------------- 2 vm001 実行中 #
仮想マシンの停止
仮想マシンの停止は接続しているVNCの画面やTeraTerm接続でシャットダウンを実行することで停止できますが、 以下のようにホストOS上から virsh コマンドを実行することでも停止することができます。 VNCで接続していた場合はここで切断されます。
# virsh shutdown vm001 ドメイン vm001 はシャットダウン中です #
仮想マシンの停止確認
virsh list コマンドは起動中の仮想マシンしか表示されませんので、停止中の仮想マシンも表示するには --all オプションを指定して実行します。作成した仮想マシンの「状態」が「シャットオフ」と表示されます。
# virsh list --all
Id 名前 状態
------------------------------------
- almalinux84-1 シャットオフ
- almalinux84-2 シャットオフ
- oraclelinux84 シャットオフ
- vm001 シャットオフ ←今回作成した仮想マシン
#
ゲストOSインストール後のディスクイメージのサイズ確認
作成した仮想マシンにゲストOSとしてAlmaLinux 8.4をインストールした後の状態で ディスクイメージのサイズは2.7GB程度となっています。 引き続きスパースファイルとして存在できています。
# ls -l /vmdata/vm001.qcow2 -rw-r--r-- 1 root root 2752512000 9月 7 22:38 /vmdata/vm001.qcow2