CentOS 8 のテスト環境を構築(KVM)

実現する機能

KVM(Kernel-based Virtual Machine) (ケーブイエム) は仮想化ソフトです。自宅サーバーはCentOS 8 ですが、新しいOSのため、ソフトを追加する場合動かないことが多いので、自宅サーバーと同じ環境をKVMで構築し、追加しようとしているソフトが問題なく動くかをテストしています。

KVMを導入するためには、パソコンのプロセッサが「Intel VT」か「AMD-V」のどちらかでないと動作しません。

事前準備(下記サイトで確認のこと)

KVMの導入手順

GNOME端末でviコマンドを使う方法を理解しておくこと。以下の記述ではGNOME端末で表示された内容を表示しています。紫色はキーボードから入力するコマンド(コピペした方が楽ですが、コマンドは覚えられません)、緑はコマンドや処理内容の説明、白は自動表示する部分、赤は注意書きです。

(1)自宅サーバーが仮想化できるか確認

#自宅サーバーがKVMで仮想化できるPCか調べる
[root@ufuso ~]# grep -E ‘svm|vmx’ /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb bpext ptsc cpb hw_pstate ssbd vmmcall fsgsbase bmi1 xsaveopt arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold overflow_recov
 ← svm(Intelならvmx)とあるのでOK。

(2)KVMのインストール

#kvmとlibvirt をインストール
[root@ufuso ~]# dnf -y install qemu-kvm libvirt virt-install
インストール済み:
libvirt-4.5.0-35.1.module_el8.1.0+258+1d2a1d58.x86_64
virt-install-2.2.1-2.el8.noarch
autogen-libopts-5.18.12-7.el8.x86_64
gnutls-dane-3.6.8-8.el8.x86_64
gnutls-utils-3.6.8-8.el8.x86_64
libvirt-bash-completion-4.5.0-35.1.module_el8.1.0+258+1d2a1d58.x86_64
libvirt-client-4.5.0-35.1.module_el8.1.0+258+1d2a1d58.x86_64
libvirt-daemon-config-nwfilter-4.5.0-35.1.module_el8.1.0+258+1d2a1d58.x86_64
python3-argcomplete-1.9.3-6.el8.noarch
python3-libvirt-4.5.0-2.module_el8.1.0+248+298dec18.x86_64
virt-manager-common-2.2.1-2.el8.noarch

 

完了しました!

#モジュールが組み込まれたか確認。表示があればOK
[root@ufuso ~]# lsmod | grep kvm
kvm_amd 110592 0
ccp 98304 1 kvm_amd
kvm 761856 1 kvm_amd
irqbypass 16384 1 kvm

#libvirtdの起動&自動起動設定
[root@ufuso ~]# systemctl enable –now libvirtd

(3)ゲストOSがブリッジ接続できるようにブリッジネットワークを構成

#network-scriptsフォルダへ移動
[root@ufuso ~]# cd /etc/sysconfig/network-scripts

 

#フォルダ内を一覧
[root@ufuso network-scripts]# ll
合計 8
-rw-r–r–. 1 root root 402 3月 20 21:36 ifcfg-enp4s0

#enp4s0をbr0にコピー
[root@ufuso network-scripts]# cp ifcfg-enp4s0 ifcfg-br0

#br0ファイルの編集
[root@ufuso network-scripts]# vi ifcfg-br0
TYPE=Bridge ← 「Bridge」に変更
#PROXY_METHOD=none
#BROWSER_ONLY=no
BOOTPROTO=none
#DEFROUTE=yes
#IPV4_FAILURE_FATAL=no
#IPV6INIT=yes
#IPV6_AUTOCONF=yes
#IPV6_DEFROUTE=yes
#IPV6_FAILURE_FATAL=no
#IPV6_ADDR_GEN_MODE=stable-privacy
#NAME=br0
#UUID=e8411551-0ea3-4457-819d-f51998e10713
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.24.240
PREFIX=24
GATEWAY=192.168.24.1
DNS1=192.168.24.1
#CONNECTION_METERED=no
DELAY=0 ← 追記。ブリッジがトラフィックを監視し、ホストの位置を学習し、フィルタリング機能の基になる MAC アドレス表を構築する間に、ブリッジが待機することを回避

#enp4s0ファイルの編集
[root@ufuso network-scripts]# vi ifcfg-enp4s0
TYPE=Ethernet
#PROXY_METHOD=none
#BROWSER_ONLY=no
BOOTPROTO=none
#DEFROUTE=yes
#IPV4_FAILURE_FATAL=no
#IPV6INIT=yes
#IPV6_AUTOCONF=yes
#IPV6_DEFROUTE=yes
#IPV6_FAILURE_FATAL=no
#IPV6_ADDR_GEN_MODE=stable-privacy
#NAME=enp4s0
#UUID=e8411551-0ea3-4457-819d-f51998e10713
DEVICE=enp4s0
ONBOOT=yes
#IPADDR=192.168.24.240
#PREFIX=24
#GATEWAY=192.168.24.1
#DNS1=192.168.24.1
#CONNECTION_METERED=no
BRIDGE=br0 ← ブリッジ名「br0」を明記

#コンピュータを再起動
[root@ufuso network-scripts]# reboot

#br0がIPアドレスを取得できているか確認
[root@ufuso ~]# ifconfig
br0: flags=4163<up,broadcast,running,multicast> mtu 1500
inet 192.168.24.240 netmask 255.255.255.0 broadcast 192.168.24.255 ← 取得できている
inet6 2400:2652:95a0:6100:d250:99ff:fe3c:25a3 prefixlen 64 scopeid 0x0
inet6 fe80::d250:99ff:fe3c:25a3 prefixlen 64 scopeid 0x20

ether d0:50:99:3c:25:a3 txqueuelen 1000 (Ethernet)
RX packets 409943 bytes 127087299 (121.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 303940 bytes 1114322980 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</up,broadcast,running,multicast>

enp4s0: flags=4163<up,broadcast,running,multicast> mtu 1500
ether d0:50:99:3c:25:a3 txqueuelen 1000 (Ethernet)
RX packets 1140626 bytes 1014994714 (967.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1100957 bytes 1184975914 (1.1 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19 </up,broadcast,running,multicast>

lo: flags=73<up,loopback,running> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 42297 bytes 2119527 (2.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 42297 bytes 2119527 (2.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</up,loopback,running>

virbr0: flags=4099<up,broadcast,multicast> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:51:f4:5b txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</up,broadcast,multicast>

vmnet1: flags=4163<up,broadcast,running,multicast> mtu 1500
inet 172.16.130.1 netmask 255.255.255.0 broadcast 172.16.130.255
inet6 fe80::250:56ff:fec0:1 prefixlen 64 scopeid 0x20

ether 00:50:56:c0:00:01 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 120 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</up,broadcast,running,multicast>

vmnet8: flags=4163<up,broadcast,running,multicast> mtu 1500
inet 192.168.138.1 netmask 255.255.255.0 broadcast 192.168.138.255
inet6 fe80::250:56ff:fec0:8 prefixlen 64 scopeid 0x20

ether 00:50:56:c0:00:08 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 121 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</up,broadcast,running,multicast>

vnet0: flags=4163<up,broadcast,running,multicast> mtu 1500
inet6 fe80::fc54:ff:fe32:213b prefixlen 64 scopeid 0x20

ether fe:54:00:32:21:3b txqueuelen 1000 (Ethernet)
RX packets 153646 bytes 28341621 (27.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 718783 bytes 879650949 (838.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0</up,broadcast,running,multicast>

(4)KVMを起動してCentOS 8 をInstall

※CentOS 8 はダウンロード済みであること

A.赤枠1の「アプリケーション」をクリックして、表示される一覧から赤枠2の「システムツール」をクリックし、さらに表示される一覧から赤枠3の「仮想マシンマネージャー」をクリック

B.この画面が表示される場合には、赤枠1にユーザーパスワードを入力して、赤枠2の「認証」をクリック

C.赤枠のアイコンをクリック

D.赤枠1にチェックを入れ、赤枠2の「進む」をクリック

E.赤枠の「参照」をクリック

F.表示される下図の赤枠「ローカルを参照」をクリック

G.表示される下図の赤枠2の「ダウンロード」をクリックして、表示される一覧から赤枠3の「CentOS 8…」をクリック

H.赤枠1に「g」を入力して、表示されるされる一覧の最後にある「Generic default」をクリックし、赤枠2の「進む」をクリック

I.赤枠1に割り当てるメモリーとCPUの量を入力。OSによって必要なメモリー量が異なるので確認のこと。私はPCスペックの半分を割り当てた

J.赤枠1にチェックを入力して、赤枠2にディスク容量を入力し、赤枠3の「進む」をクリック

K.空き容量が足りませんと出る場合には、赤枠の「OK」をクリックして空き容量まで減にする
kvm10
L.赤枠1の名前を「CentOS 8」に変更し、赤枠2の「…カスタマイズする」にチェックを入れ、赤枠3の「完了」をクリック

M.カスタマイズ画面が表示されるので、赤枠1の「NIC:…」をクリックし、赤枠2の一覧から「共有デバイス名を指定」を選択し、赤枠3にブリッジ名(例示では「br0」)を入力してから、画面左上の「インストールの開始」をクリック

N.あとは画面の指示に従ってインストールのこと

以上

コメントする

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