AlmaLinuxにKVM仮想マシンを作成する

almalinux

はじめに

仮想マシンは、1台の物理コンピュータ上で複数の独立したオペレーティングシステムを実行するための技術です。仮想マシンを使用すると、複数のOSを同時に使用したり、異なるOSをテストしたり、開発環境を構築したりすることができます。

KVMは、Linuxカーネルに組み込まれた仮想化ソフトウェアです。KVMを使用すると、無料で仮想マシンを作成および管理することができます。

このブログ記事では、KVMを使用して仮想マシンを作成する方法を説明します。

仮想マシンのメリット

仮想マシンには、次のようなメリットがあります。

  • 1台の物理コンピュータ上で複数のOSを実行できる。
  • 異なるOSをテストできる。
  • 開発環境を構築できる。
  • リソースを効率的に利用できる。

KVMのメリット

KVMには、次のようなメリットがあります。

  • 無料で使用できる。
  • Linuxカーネルに組み込まれているため、安定性が高い。
  • さまざまなハードウェアに対応している。

開発環境

  • AlmaLinux 9.3 (ホストマシン)
  • AlmaLinux 9.3 (ゲストマシン)

インストール

では、仮想マシンの作成に必要なパッケージをインストールしてきます。

$ sudo dnf install qemu-kvm libvirt virt-install

システムのチェック1回目

まずインストールが完了したらシステムが仮想化ホストとして実行できるか確認します。virt-host-validateというツールがインストールされているのでそれを実行します。

$ virt-host-validate  
  QEMU: Checking for hardware virtualization                                 : PASS
  QEMU: Checking if device /dev/kvm exists                                   : PASS
  QEMU: Checking if device /dev/kvm is accessible                            : PASS
  QEMU: Checking if device /dev/vhost-net exists                             : PASS
  QEMU: Checking if device /dev/net/tun exists                               : PASS
  QEMU: Checking for cgroup 'cpu' controller support                         : PASS
  QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
  QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
  QEMU: Checking for cgroup 'memory' controller support                      : PASS
  QEMU: Checking for cgroup 'devices' controller support                     : WARN (Enable 'devices' in kernel Kconfig file or mount/enable cgroup controller in your system)
  QEMU: Checking for cgroup 'blkio' controller support                       : PASS
  QEMU: Checking for device assignment IOMMU support                         : PASS
  QEMU: Checking if IOMMU is enabled by kernel                               : WARN (IOMMU appears to be disabled in kernel. Add intel_iommu=on to kernel cmdline arguments)
  QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)

私の環境では「devices」、「IOMMU」、「secure guest」の3つでワーニングが出ていました。調べたところStack ExchangeのUnix&Linuxのページに、起動時のカーネルコマンドラインパラメータに「intel_iommu=on」と「systemd.unified_cgroup_hierarchy=0」を追加する必要があるということが書かれていました。

しかし、そのサイトに書かれているgrub2-mkconfigコマンドを使ってもうまくいきませんでした。皿に調べたところ、RedHatのサイトにgrubbyコマンドを使ってカーネルコマンドラインパラメータを変更する方法が書かれていました。

コマンドラインパラメータの変更

まず、現在のコマンドラインパラメータを確認してみます。

$ cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-362.8.1.el9_3.x86_64 root=/dev/mapper/almalinux-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/almalinux-swap rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap

grubbyコマンドを実行しコマンドラインパラメータを変更します。

$ sudo grubby --update-kernel=ALL --args="intel_iommu=on"
$ sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"

一旦、再起動します。もう一度確認してみます。

$ cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-362.8.1.el9_3.x86_64 root=/dev/mapper/almalinux-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/almalinux-swap rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap intel_iommu=on systemd.unified_cgroup_hierarchy=0

すると、intel_iommu=onsystemd.unified_cgroup_hierarchy=0が末尾に追加されています。

システムのチェック2回目

$ virt-host-validate
  QEMU: Checking for hardware virtualization                                 : PASS
  QEMU: Checking if device /dev/kvm exists                                   : PASS
  QEMU: Checking if device /dev/kvm is accessible                            : PASS
  QEMU: Checking if device /dev/vhost-net exists                             : PASS
  QEMU: Checking if device /dev/net/tun exists                               : PASS
  QEMU: Checking for cgroup 'cpu' controller support                         : PASS
  QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
  QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
  QEMU: Checking for cgroup 'memory' controller support                      : PASS
  QEMU: Checking for cgroup 'devices' controller support                     : PASS
  QEMU: Checking for cgroup 'blkio' controller support                       : PASS
  QEMU: Checking for device assignment IOMMU support                         : PASS
  QEMU: Checking if IOMMU is enabled by kernel                               : PASS
  QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)

「devices」と「IOMMU」は無事PASSするようになりました。まだsecure guest supportにワーニングが出ていますが、これはツールがインテルCPUに対応していないらしいのでこのままで大丈夫そうです。Stack Overflowにその内容が書かれています。

環境の準備

libvirtdの起動

systemctl enable –nowコマンドでlibvrtdを起動します。

$ sudo systemctl enable --now libvirtd
Created symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service → /usr/lib/systemd/system/libvirtd.service.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd.socket → /usr/lib/systemd/system/libvirtd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket → /usr/lib/systemd/system/libvirtd-ro.socket.

結果は、active (running)enabledになっていればOKです。

libvirtd-status-running

cockpit

この記事ではCockpitを使って仮想マシンを作成します。Cockpitは、Red Hatが開発・提供するWebベースのLinux管理ツールです。Webブラウザからアクセスできるため、コマンドラインやGUIの管理ツールよりも簡単に操作できます。インストールについては参考ページを参照してください。

iso

インストール時に使用するisoファイルをダウンロードしてきます。ここでは、bootインストール用のAlmaLinux-9.3-x86_64-boot.isoをダウンロードします。ダウンロードしてきたisoファイルはどこでも良いですが、ここでは、/var/lib/libvirt/imagesに置いています。また、isoファイルの所有者、グループをroot:rootにしておきます。

$ sudo curl -O https://repo.almalinux.org/almalinux/9.3/isos/x86_64/AlmaLinux-9.3-x86_64-boot.iso
$ sudo mv AlmaLinux-9.3-x86_64-boot.iso /var/lib/libvirt/images
$ sudo ls -lh /var/lib/libvirt/images/AlmaLinux-9.3-x86_64-boot.iso
-rw-r--r--. 1 root root 899M Nov 24 19:50 /var/lib/libvirt/images/AlmaLinux-9.3-x86_64-boot.iso

仮想マシンの作成

仮想マシンの作成

それでは、cockpitの画面左の仮想マシンメニューを選んで、「仮想マシンの作成をクリックします。

各項目と設定値は以下の通りになっています。

  1. 仮想マシンの名前:almalinux9-00
  2. 接続タイプ:System
  3. インストールソース:/home/higmasan/AlmaLinux-9.3-x86_64-boot.iso
  4. AlmaLinux 9
  5. qcow2 ボリュームの新規作成
  6. ストレージの制限:60GiB
  7. メモリ:6GiB

作成時して実行する」をクリックしたら下の画面のようになります。VNC コンソール画面で操作することができます。右上の展開を押すとVNC コンソール画面が大きくなり操作しやすくなります。

ゲストOSのインストール

Install AlmaLinux 9.3を選択してEnterを押します。

使用する言語を選択します。デフォルトで日本語になっているのでそのまま「続行」をクリックします。

地域設定は日本に設定されています。ソフトウェアの選択を変更するためクリックします。

ここでは、「最小のインストール」に変更します。変更したら完了をクリックして元の画面に戻ります。

システムの「インストール先」をクリックすると下のような画面になります。ここでは、インストールするディスクを選択して完了ボタンをクリックします。

次に、ネットワークとホスト名の設定をクリックします。ここでは、ホスト名をalamalinux9-00にして適用ボタンをクリックします。

次に、rootパスワードを設定します。設定したら、「完了」をクリックします。

最後に、ユーザの作成を行います。ここでは、「このユーザを管理者にする」にチェックを入れておきましょう。完了ボタンを押して次に進みます。

最後に「インストールの開始」を押してインストールを開始します。

インストールが完了すると、下のような画面になります。それでは、「システムの再起動」をクリックします。

作成したユーザでログインできればゲストOSのインストールは完了です。

動作確認

ホストOSからゲストOSにpingコマンドを送ってみましょう。ゲストOSのipアドレスはcockpitの仮想マシン→almalinux9-00と選択した画面にあります。そこには192.168.122.25ということがわかります。

ping 192.168.122.25を実行すると無事レスポンスが返ってきていればOKです。

コメント