Ubuntu 20.04.3 LTSにKVM環境の構築

作成日:2021/09/20
最終更新日:2021/09/20

Ubuntu 20.04.3 LTSにKVM環境の構築

作成日:2021/09/20
最終更新日:2021/09/20

概要

記事を溜め込んでいるので、少しずつ放出します。

Ubuntu 20.04.3 LTS(Long Term Support)にKVM(Kernel-based Virtual Machine)環境を構築するまでの間に、Ubuntu Server 18.04 LTSやUbuntu Server 20.04 LTSにKVM環境を構築してきましたが、その内容は割愛します。

今までは、サーバー機に常時モニタを接続していなかったこともあり、サーバー用のディストリビューションを導入していましたが、サーバー機からHDMIケーブルとUSBの延長ケーブルを自席まで引き回したことを機に、普通のデスクトップ向けのディストリビューションに変更しました。デスクトップ向けのUbuntuを個人向けに使用する一番のメリットはLive patchを利用できることだったりします。ただし、パッチを当ててくれるだけなので必要に応じて再起動は必要です。次点で、そのままデスクトップ利用できる点でしょうか。

サーバー環境の変遷も例によって挙げておきます。

  1. PC実機数台構成
  2. FreeBSD jailによる仮想化
  3. VirtualBoxによる仮想化
  4. Xenによる仮想化
  5. KVMによる仮想化 ←今ここ

HOSTの設定

本稿では、サーバー機本体をHOSTと呼び、KVM上に構築する環境をGUESTと呼びます。

Ubuntu Server 20.04.3 LTSのインストール

HOSTとなる端末のOSはUbuntu 20.04.3 LTSを用います。 最近はUbuntuのインストールをUSBメモリから行うことが多くなりました。 今回は、デスクトップ環境を構築するので、Ubuntuのインストール時に設定することの内容に沿って初期設定します。

OpenSSHのインストール

通常はデスクトップ環境にログインして設定変更すればよいですが、SSHでログインできると何かと便利なためOpenSSHを導入します。

コマンド1. OpenSSHのインストール
sudo apt- install openssh-server
sudo systemctl start sshd

KVMの導入

KVMの導入

KVMを導入するにあたって、フロントエンドにlibvirt[1]を用いると管理がとても楽になります。インストールが終わったあとに、自動生成される kvmlibvirt という名称のグループへKVMを使用するユーザを所属させます。

コマンド2. KVMのインストール
sudo apt install libvirt-clients qemu-utils qemu-kvm libvirt-dev libvirt-daemon virtinst libvirt-daemon-system
sudo gpasswd -a ユーザ名 kvm
sudo gpasswd -a ユーザ名 libvirt

HOSTのNICをブリッジに変更

UbuntuはNIC(Network Interface Card)をNetplanで管理しますが、デスクトップ版ではNetwork Managerによって管理します。 そのため、nmcliコマンドを使用して設定を変更します。今回、設定変更するインタフェースは enp2s0 になります。また、IPv4アドレスは固定し、IPv6アドレスは動的に設定します。 ブリッジインタフェースはデフォルトでSTP(Spanning Tree Protocol)が有効になっているため、無効化しておきます。

コマンド3. ネットワークインタフェースの設定
nmcli connection add type bridge ifname br0
nmcli connection modify bridge-br0 bridge.stp no
nmcli connection modify bridge-br0 \
  ipv4.method manual \
  ipv4.address "CIDR表記のIPアドレス" \
  ipv4.gateway ゲートウェイのIPアドレス \
  ipv4.dns DNSサーバのIPアドレス \
  ipv6.method auto
nmcli connection add type bridge-slave ifname enp2s0 master bridge-br0
nmcli connection delete 有線接続\ 1

上記の設定変更をしたら、一回再起動します。

仮想HDDの作成

仮想HDDファイルを作成します。 /var/log は別の仮想HDDファイルに格納したいので2つ作成します。作成する場所は /home/kvm/vm 以下とします。作成する場所は適宜読み換えてください。

コマンド4. 仮想HDDファイルの作成
qemu-img create -f qcow2 UbuntuServer-20.04.3LTS.qcow2 40G
qemu-img create -f qcow2 log.qcow2 4G

GUEST用OSのインストールメディアの用意

GUEST用のインストールメディアのイメージをHOSTにダウンロードします。今回はUbuntu ServerをGUESTにインストールすることにするので、ubuntu-20.04.3-live-server-amd64.isoをダウンロードしておきます。また、ダウンロードしたISOファイルは /home/kvm/iso 以下に格納しておきます。

GUESTの起動

サーバー機にインストールしているのでGUESTのコンソールへはVNCでアクセスすることにします。 対してクライアントとしてはUbuntuにはRemminaというVNCクライアントが入っているのでこれを使用します。

以下のコマンドを実行してGUESTを起動します。このコマンドの例では、guestという名前でGUESTを定義します。また、HOSTのポート番号65000へVNCを用いてアクセスすることで、GUESTのコンソール画面を操作可能です。また、キーボードは日本語キーボードを想定しています。

コマンド2. KVMのインストール
sudo apt install libvirt-clients qemu-utils qemu-kvm libvirt-dev libvirt-daemon virtinst libvirt-daemon-system
sudo gpasswd -a ユーザ名 kvm
sudo gpasswd -a ユーザ名 libvirt

インストールを完了し、再起動をかけるところまで進むとGUESTが終了します。

GUESTの起動

以下のコマンドを実行すると、GUESTが起動します。

コマンド5. GUESTの起動
virsh start guest

起動しているGUESTの確認

以下のコマンドを実行すると、起動しているGUESTを確認できます。また、 --all オプションを付与することで、起動していないGUESTを含めた一覧を表示可能です。

コマンド6. 起動しているGUESTの確認
virsh list
(ここから)
 Id   Name        State
---------------------------
 1    guest       running

(ここまで)

GUESTの設定変更

以下のコマンドを実行すると、GUESTの仮想マシンとしての設定を変更できます。設定変更はGUESTを停止している状態で行うと良いです。

コマンド7. GUESTの設定変更
virsh edit guest

GUESTの自動起動

以下のコマンドを実行すると、HOSTの起動時にGUESTを自動起動します。自動起動を解除する場合には、 autostartguest の間に --disable オプションを追加してコマンドを実行します。

コマンド8. GUESTの自動起動
virsh autostart guest

まとめ

  • Ubuntu 20.04.3 LTSにKVM環境を構築した。
  • デスクトップ版のUbuntuはNICの操作をするのに nmcli コマンドを使用する。
  • libvirtを用いるとGUESTの操作がかんたんになる。

参考文献

  1. Red Hat, Inc., libvirt, libvirt, 2005-2021