centOS-stream8にKVMをインストールしてVMを作成する

KVMのインストール

ハードウェアの確認

バーチャルマシン(VM)をインストールするには最低限CPUがVT-x(Intel)又はSVM(AMD)に対応している必要があります。今回使用するIntelのNUCはPentiumN3700を搭載しており、IntelサイトにてVT-xに対応していることを確認出来ます。

仮想化パッケージのインストール

パッケージのインストールをしてから、ホストマシンの仮想化支援機能の確認を行います。VT-xに対応していなかったり、BIOS設定でOFFにしている場合はここでエラーとなります。

[root@server hoge]# dnf -y module install virt
[root@server hoge]# virt-host-validate
  QEMU: 確認中 for hardware virtualization                                 : 成功
  QEMU: 確認中 if device /dev/kvm exists                                   : 成功
  QEMU: 確認中 if device /dev/kvm is accessible                            : 成功
  QEMU: 確認中 if device /dev/vhost-net exists                             : 成功
  QEMU: 確認中 if device /dev/net/tun exists                               : 成功
  QEMU: 確認中 for cgroup 'cpu' controller support                         : 成功
  QEMU: 確認中 for cgroup 'cpuacct' controller support                     : 成功
  QEMU: 確認中 for cgroup 'cpuset' controller support                      : 成功
  QEMU: 確認中 for cgroup 'memory' controller support                      : 成功
  QEMU: 確認中 for cgroup 'devices' controller support                     : 成功
  QEMU: 確認中 for cgroup 'blkio' controller support                       : 成功
  QEMU: 確認中 for device assignment IOMMU support                         : 警告 (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)
  QEMU: 確認中 for secure guest support                                    : 警告 (Unknown if this platform has Secure Guest support)

警告にあるIOMMUはCPUがVT-d(Intel)又はAMD-Viに対応していない場合に出るようですが、問題ありません。"secure guest"の部分はIntel製CPUだと出るようです。

GRUB2設定ファイルの編集

ハードウェアがVT-d(Intel)又はAMD-Viに対応している場合は、IOMMUをONするように設定ファイルを編集します。今回のハードウェアは対応していないのでこの手順は飛ばしています。

[root@server hoge]# cat /etc/default/grub

 

設定ファイルの変更内容はIntel製CPUの場合はGRUB_CMDLINE_LINUXの末尾に"intel_iommu=on"を追記します。AMD製CPUの場合、"amd_iommu=on"を追記します。

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cs-swap rd.lvm.lv=cs/root rd.lvm.lv=cs/swap rhgb quiet intel_iommu=on"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

次に、GRUB2の設定ファイルを実行します。その後、再起動を行います。

[root@server hoge]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Adding boot menu entry for EFI firmware configuration
done
[root@server hoge]# reboot

サービスの起動

ここまで設定が完了したら、サービスの起動と自動起動設定を行います。

[root@server hoge]# systemctl start libvirtd
[root@server hoge]# systemctl enable libvirtd

 

cockpitのインストール

cockpitとは

ブラウザからマシンの操作を可能にするツールです。今回は仮想マシンのOSインストールはcockpit上から行うために使用します。ここでインストールと起動、自動起動設定をしておきます。

[root@server hoge]# dnf -y install virt-install cockpit cockpit-machines
[root@server hoge]# systemctl start cockpit.socket
[root@server hoge]# systemctl enable cockpit.socket

firewallの設定も変更しておきます。

[root@server hoge]# firewall-cmd --add-service=cockpit --zone=home --permanent
[root@server hoge]# firewall-cmd --reload

ここで"--zone=home"としている部分については、都度環境に合わせる必要があります。nucは有線と無線2つのNICが搭載されていますが、今回は有線側を"public"、無線側を"home"として設定しています。SSH通信は"home"側から行っています。

cockpitによる通信の確認

ブラウザ(FireFoxが無難)にて"http://[ホストアドレス]:9090"にアクセスするとcockpitからホストマシンの状態確認や操作が可能になります。Linux系のブラウザから接続するツールはChrome等だと動作しないことがあるため、FireFoxで利用するのがおすすめです。

cockpitの警告

初回接続時は警告が出ますが、詳細設定から接続の継続が可能です。2回目以降はそのまま接続出来ます。

OSインストール用メディアの準備

centOS-stream8インストールディスクをダウンロード

OSインストールディスクをダウンロードします。今回はダウンロードしながらインストールするbootタイプのディスクを利用します。

[root@server hoge]# mkdir /iso
[root@server hoge]# curl -L -o /iso/centos8stream.iso http://ftp.riken.jp/Linux/centos/8-stream/isos/x86_64/CentOS-Stream-8-x86_64-20210506-boot.iso

しばらく待つとダウンロードが完了します。

ブリッジ接続のセットアップ

ネットワーク構成

最終的には外部からはホストマシンと仮想マシンが独立している状態を目指します。現状のネットワークを確認すると仮想化ツールインストール時に外部への通信のみを可能なvirbr0が自動作成されていますが、これだけでは不十分なので、新たなブリッジインターフェースを作成します。

[root@server hoge]# nmcli d
DEVICE          TYPE      STATE            CONNECTION
virbr0          bridge    接続済み (外部)  virbr0
wlp2s0          wifi      接続済み         *****-*****-5G
enp3s0          ethernet  接続済み         enp3s0
p2p-dev-wlp2s0  wifi-p2p  切断済み         --
lo              loopback  管理無し         --
virbr0-nic      tun       管理無し         --

構成例

ブリッジインターフェースを構成する対象は有線の"enp3s0"とします。現状と変更後の設定は下記のようにしました。

~現在の"enp3s0"の設定~
IPアドレス:192.168.***.20
デフォルトGW:192.168.***.1

~変更後の"enp3s0"の設定~
IPアドレス:192.168.***.21
デフォルトGW:192.168.***.1

~変更後の仮想マシンNICの設定~
IPアドレス:192.168.***.22
デフォルトGW:192.168.***.1

以上の構成を行うために新規ブリッジインターフェイスbr0を作成し、元のenp3s0を削除した後、enp3s0をbr0に含める形で再登録します。注意点としてenp3s0を使用してSSH通信をしていた場合、削除した段階(又はリブートした時)で通信が途切れます。今回はSSHはwlp2s0を使用しているため、その心配はありません。

[root@server hoge]# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0
[root@server hoge]# nmcli connection modify br0 ipv4.addresses 192.168.***.21/24 ipv4.method manual
[root@server hoge]# nmcli connection modify br0 ipv4.gateway 192.168.***.1
[root@server hoge]# nmcli connection modify br0 ipv4.dns 8.8.8.8
[root@server hoge]# nmcli connection del enp3s0
[root@server hoge]# nmcli connection add type bridge-slave autoconnect yes con-name enp3s0 ifname enp3s0 master br0
[root@server hoge]# reboot

再起動後に通信設定に間違いが無いか確認のために、192.168.***.21に対してSSH接続を試みて、問題無ければ設定完了です。

新規仮想マシンの作成

新規仮想マシンのスペック

今回はcentOS-stream8を導入予定です。インストール時は若干大きめのリソースを用意して後で調整することにします。

~主な設定内容~
OS種類:centos-stream8
仮想CPU数:1
RAM:2048MB
ストレージ:15GB
ネットワークインターフェース:br0

利用可能なOS種類は下記コマンドで確認出来ます。

[root@server hoge]# osinfo-query os

新規仮想マシンの作成

設定値どおりの仮想マシンを作成します。

[root@server hoge]# VM_NAME="compute-vm01"
[root@server hoge]# virt-install \
--name ${VM_NAME} \
--hvm --arch x86_64 --os-type linux\
 --os-variant centos-stream8 \
--vcpus 1 --ram 2048 \
--disk path=/var/lib/libvirt/images/${VM_NAME}.img,format=qcow2,size=15 --network bridge=br0 \
--graphics vnc,keymap=ja \
--noautoconsole \
--location /iso/centos8stream.iso

エラーが無ければ無事に作成されました。確認してみます。

[root@server hoge]# virsh list
 Id   名前           状態
-----------------------------
 1    compute-vm01   実行中
[root@server hoge]# virsh domiflist compute-vm01
 インターフェース   種類     ソース   モデル   MAC
------------------------------------------------------------------
 -                  bridge   br0      virtio   52:54:00:1e:f6:b5

以上で仮想マシン作成は完了です。

仮想マシンのセットアップ

cockpit上でのセッティング

cockpitにてアクセスします。FireFoxにて"https://192.168.***.21"にアクセスするとログイン画面となるため、rootでログインします。"仮想マシン"項目を確認すると、作成した仮想マシンが既に起動状態かもしれんせん。私の環境ではbootマシンの設定が上手く行えていなかったのかbootエラーとなっていました。そこで、コマンド又はブラウザから強制終了します。

[root@server hoge]# virsh shutdown compute-vm01

bootディスクを選択して起動

cockpitからbootディスクに"/iso/centos8stream.iso"を指定して起動します。この時、起動順序を

①仮想ハードウェア
②bootディスク

としておけば、OSインストール後の再起動時に仮想ハードディスクから起動してくれます。

OSインストール

cockpitのVNCコンソールから通常のOSインストールと同じように操作出来ます。

centos_install1

以上でセットアップ完了です。SSH通信の設定を行えばターミナルから接続出来るようになります。cockpitは便利ですがセキュリティ的には弱い気がするので、インターネット環境からの接続はFirewallでブロックしておいた方が無難です。私はローカルエリアからの接続のみ許可しています。

「centOS-stream8にKVMをインストールしてVMを作成する」への2件のフィードバック

  1. Typoです。
    [root@localhost mkimura]# firewakk-cmd –reload
    bash: firewakk-cmd: コマンドが見つかりませんでした…
    [root@localhost mkimura]# firewall-cmd –reload

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

11 − ten =