どうも、やまもとやまです。
サーバー仮想化、色々ありますよね。
VMware、Docker、LXC、OpenVZ、等々。
今回はKVMでの仮想化を試してみようと思います。
環境
AlmaLinux9を最小インストールした環境を元に構築します。
CPUの仮想化支援機能は有効にしておきましょう。
ホストサーバーのIPアドレスは198.51.100.10とします。
また、作成する仮想マシンのIPアドレスを192.168.51.20とします。
KVMの導入
QEMUとlibvirtを組み合わせて利用するため、これらをインストールします。
# dnf install qemu-kvm libvirt virt-install
とりあえずこれだけ指定しておけば、最低限必要なパッケージもまとめてインストールされます。簡単ですね!
ネットワークの設定
libvirt導入時にデフォルトでブリッジが作成されますが、NAT接続用のブリッジとなり、そのままでは外部から仮想マシンへの接続ができないため、ブリッジを作成します。
# nmcli con add type bridge ifname br0 con-name br0
# nmcli con modify br0 ipv4.method manual ipv4.address "198.51.100.10/24" ipv4.gateway "198.51.100.1" ipv4.dns "8.8.8.8"
# nmcli con modify br0 ipv6.method ignore
# nmcli con add type bridge-slave ifname ens3 master br0
# nmcli con del ens3;systemctl restart NetworkManager
インストールとネットワーク設定後は一旦ホストサーバーごと再起動して各サービスを起動させます。
OSのISOファイル設置
仮想マシンへのOSインストール用ISOファイルを用意します。
とりあえず今回はAlmaLinux9のISOを利用します。
デフォルトでイメージ用ディレクトリがあるので、以下へ保存しましょう。
| /var/lib/libvirt/images/AlmaLinux-9-latest-x86_64-boot.iso |
仮想マシンの作成
では仮想マシンを作成します。
仮想マシンの作成はvirt-install、各種操作はvirshコマンドで実行可能です。
# virt-install --name al9test --memory 2048 --vcpus 2 --disk size=50 --network bridge=br0 --location /var/lib/libvirt/images/AlmaLinux-9-latest-x86_64-boot.iso --nographics --extra-args="console=tty0 console=ttyS0,115200n8"
各オプションパラメータはだいたい以下の内容です。
| name | 仮想マシン名 |
| memory | メモリサイズ(MiB) |
| vcpus | 仮想コア数 |
| disk | size指定で対象サイズ(GiB)のディスクイメージを自動で作成し割り当てられます。作成済みのイメージを設定することも可能です。 |
| network | 仮想ネットワークの指定です。今回はブリッジモードで、対象ブリッジのインタフェースを指定します。他にNICへの直接接続等も可能。 |
| localtion | インストール用ISOファイルを指定しています。ISOをドライブにマウントするのではなく、OS直接インストールするためlocation指定になっていますが、GUI利用の場合はcdromオプションでマウントしたりします。 |
| extra-args | カーネル起動時の追加パラメータを指定できます。今回はシリアルコンソール接続のために指定している値で、記載内容はおまじないのようなやつです。 |
上記コマンドを実行すると仮想マシン作成後にコンソール接続した状態となり、しばらくするとOSインストールプロセスが開始されます。
GUIを利用する方法もありますが、準備が面倒な場合はとりあえずこれで、、
各種設定を指定し、実行すればOSインストールが完了します。
作成中や作成後、仮想マシンのネットワーク設定を行うと外部から仮想マシンIPアドレスに指定した198.51.100.20へも無事ping通信ができています。
インストール後、コンソール接続は Ctrl+] で解除可能です。
起動した仮想マシンで各種操作も問題ないですね。
KVMの各種操作
KVMのホストサーバーから、各種操作が可能です。
仮想マシン一覧の表示
virsh listコマンドで一覧が表示可能です。
# virsh list --all
Id Name State
-------------------------
2 al9test running
仮想マシンと状態が表示されます。
allオプションを付けない場合は、稼働中のものだけ表示されます。
仮想マシンの停止
virsh shutdownコマンドで停止を実行可能です。
# virsh shutdown al9test
Domain 'al9test' is being shutdown
# virsh list --all
Id Name State
--------------------------
- al9test shut off
停止しましたね。
仮想マシンの起動
virsh startコマンドで起動可能です。
# virsh start al9test
Domain 'al9test' started
# virsh list --all
Id Name State
-------------------------
3 al9test running
停止していた仮想マシンが起動しました。
仮想マシンの再起動
virsh rebootコマンドで再起動可能です。
# virsh reboot al9test
Domain 'al9test' is being rebooted
仮想マシンの強制停止
仮想マシンがハングアップやフリーズし、shutdownでは停止できないことがあります。
強制停止する場合は、virsh destroyコマンドで実行可能です。
# virsh destroy al9test
Domain 'al9test' destroyed
# virsh list --all
Id Name State
--------------------------
- al9test shut off
destroyというと破壊されそうですが、削除されたりはしませんのでご安心を(とはいえ強制停止するので破損等が発生する可能性はありますが、、)。
まとめ
KVMを導入し、仮想マシン作成および簡単な操作を試してみました。
ネットワーク周りの設定は少し分かりづらいところもありますが、仮想化の機能がカーネルに組み込まれているため、導入もシンプルですぐに利用可能なのが便利ですね。
次回はもう少し色々と試してみようと思います。
それではまた!

