ヘルプ:仮想マシン構築(KVM)(CentOS8)

提供:あわ自由帳

メインページ > ヘルプ:目次 > ヘルプ:自宅サーバー構築(CentOS8)  > 仮想マシン構築(KVM)(CentOS8)

  • KVM ( Kernel-based Virtual Machine ) + QEMU の仮想化です。
  • 搭載している CPU が仮想化機構 ( Intel VT, AMD-V 等 ) を備えている必要があります。

KVM使用可否確認

[root@host3 ~]# grep -E 'svm|vmx' /proc/cpuinfo > /dev/null &&  echo OK ← CPUの完全仮想化対応確認
OK ← OKと表示されれば完全仮想化対応CPU

[root@host3 ~]# grep flags /proc/cpuinfo|grep lm > /dev/null && echo OK ← CPUの64ビット確認
OK ← OKと表示されれば64ビットCPU

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

必要なパッケージをインストール

[root@host3 ~]# dnf -y install qemu-kvm libvirt virt-install

モジュールが読み込まれているか確認

[root@host3 ~]# lsmod | grep kvm
kvm_intel             290816  0
kvm                   753664  1 kvm_intel
irqbypass              16384  1 kvm

仮想マシン制御

仮想マシン制御起動

[root@host3 ~]# systemctl enable --now libvirtd

仮想マシン制御起動確認

[root@host3 ~]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor pr>
   Active: active (running) since Tue 2020-03-24 13:02:32 JST; 32s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 28976 (libvirtd)
    Tasks: 18 (limit: 32768)
   Memory: 59.4M
   CGroup: /system.slice/libvirtd.service
           tq28976 /usr/sbin/libvirtd
           mq29027 /usr/sbin/iptables -w --table nat --insert POSTROUTING --sou>

仮想化設定

  • ゲスト OS がブリッジ接続できるようにブリッジネットワークを構成しておきます。

ネットワーク構成を確認

[root@host3 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 9c:8e:99:01:57:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global noprefixroute ens1
       valid_lft forever preferred_lft forever
    inet6 2001:a453:61e1:9000:3d60:b782:2a65:42d8/64 scope global dynamic noprefixroute
       valid_lft 13392sec preferred_lft 11592sec
    inet6 fe80::b4d:68a5:a851:38a0/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:b7:2d:7c brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:b7:2d:7c brd ff:ff:ff:ff:ff:ff
  • 既存のインターフェース名を[ens1]メモする。

ブリッジネットワークを構成

  • ゲスト OS がブリッジ接続できるようにブリッジネットワークを構成しておきます。
  • [ens1] のインターフェース名の部分は環境によって異なるため、自身の環境に読み替えてください。

ブリッジ [br0] を追加

[root@host3 ~]# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0
接続 'br0' (7f2c03fc-1ff5-4d60-b4e2-a7b615974533) が正常に追加されました。

[br0] の IPアドレス設定

  • 一時的に使用するIPアドレスを設定する。
[root@host3 ~]# nmcli connection modify br0 ipv4.addresses 192.168.1.10/24 ipv4.method manual

[br0] の ゲートウェイ設定

[root@host3 ~]# nmcli connection modify br0 ipv4.gateway 192.168.1.1

[br0] の DNS 設定

[root@host3 ~]# nmcli connection modify br0 ipv4.dns 192.168.1.2

ブリッジインターフェースbr0の設定を反映

[root@host3 ~]# nmcli con up br0
接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/7)

既存のインターフェースは一旦削除

[root@host3 ~]# nmcli connection del ens1
接続 'ens1' (31c461e4-a7a9-44fa-8edc-fc469393bf92) が正常に削除されました。
  • SSHで設定対象ホストにリモート接続している場合、このタイミングで既存のIPアドレスが無効化されて接続が切断されるので注意してください。
  • 再接続するときは、ブリッジインターフェースbr0に設定した一時的に使用するIPアドレスをSSHの接続先に指定します。

[br0] のメンバーとして再度追加

[root@host3 ~]# nmcli connection add type bridge-slave autoconnect yes con-name ens1 ifname ens1 master br0

サーバーのIPアドレスを [br0] に設定

  • 一時的に使用するIPアドレスにリモート接続。
  • サーバーが使っていた、IPアドレスを設定する。
  • 以後、設定したIPアドレスをSSHの接続先に指定します。
[root@host3 ~]# nmcli connection modify br0 ipv4.addresses 192.168.1.3/24 ipv4.method manual

再起動

[root@host3 ~]# reboot

ブリッジネットワーク構成を確認

[root@host3 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 9c:8e:99:01:57:38 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 9c:8e:99:01:57:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global noprefixroute br0
       valid_lft forever preferred_lft forever
    inet6 2001:a453:61e1:9000:ae73:bc53:5199:20c7/64 scope global dynamic noprefixroute
       valid_lft 13742sec preferred_lft 11942sec
    inet6 fe80::c26e:1b68:d062:e977/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:b7:2d:7c brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:b7:2d:7c brd ff:ff:ff:ff:ff:ff