小さい企業や自宅での簡易サーバを立てたりしている場合、仮想化は本当に便利だ. ネットで安い仮想化機構を備えたCPU入りのPCを買えば、開発環境や運用環境を何台も構築できる.
そんなわけで会社で使うための調査としてKVMをインストールした.
NICは3枚.仮想マシンはホスト込みで4台で構築する.(予定)
また、ホストにはGUI環境を導入した. (KVMマネージャが便利なので)
ハマっちゃうのでSELinuxはとりあえず無効で.
SELinux無効化
# getenforce ← SELinux状態確認 Enforcing ← SELinux有効 # setenforce 0 ← SELinux無効化 # getenforce ← SELinux状態確認 Permissive ← SELinux無効 # vi /etc/sysconfig/selinux ← SELinux設定ファイル編集 SELINUX=enforcing ↓ SELINUX=disabled ← システム起動時にSELinuxを無効化
KVMインストール
$ sudo yum -y install qemu-kvm libvirt virt-install bridge-utils virt-manager
モジュールが入ってるか確認
lsmod | grep kvm kvm_intel 138567 0 kvm 441119 1 kvm_intel
ユーザへのグループの追加(ここではkvmuser)
# sudo usermod -a -G libvirt kvmuser
libvirtの設定 /etc/libvirt/libvirtd.confを開き、書き換え前の下記行を見つけ、すべてコメントを外してください。 (変更前)
#unix_sock_group = "libvirt" #unix_sock_ro_perms = "0777" #unix_sock_rw_perms = "0770" #auth_unix_rw = "none" #auth_unix_ro = "none"
実行
$ sudo systemctl start libvirtd
起動時のスタートアップに登録
$ sudo systemctl enable libvirtd
ネットワーク設定
現状のデバイス状況の把握
[kvmuser@localhost ~]$ nmcli dev デバイス タイプ 状態 接続 virbr0 bridge 接続済み virbr0 enp3s0 ethernet 接続済み enp3s0 virbr0-nic tap 接続済み virbr0-nic enp0s20u2 ethernet 利用不可 -- enp2s0 ethernet 利用不可 -- lo loopback 管理無し -- [kvmuser@localhost ~]$ nmcli con 名前 UUID タイプ デバイス enp3s0 7ae41de2-5fb0-40c1-8953-c3c1c2364812 802-3-ethernet enp3s0 virbr0-nic a7440c90-0983-487c-b83f-0dcce190808f generic virbr0-nic virbr0 5ebb680a-98f1-4a0c-acd5-b6775a1f705a bridge virbr0 有線接続 1 f05233b4-9893-4a89-9460-931e55391bd4 802-3-ethernet --
利用中のデバイスコネクションを一度削除する
[kvmuser@localhost ~]# nmcli con delete enp3s0
仮想ブリッジを作成
[kvmuser@localhost ~]# nmcli c add type bridge autoconnect yes con-name br0 ifname br0
仮想ブリッジのスパニングツリー設定を解除
[kvmuser@localhost ~]# nmcli c modify br0 bridge.stp no
仮想ブリッジにIPを設定
[kvmuser@localhost ~]# nmcli c modify br0 ipv4.method manual ipv4.addresses "【仮想ブリッジのIP】/【ネットマスク】(192.168.20.xx/24とか)" ipv4.dns 【DNSのIP】ipv4.gateway 【デフォルトゲートウェイのIP】
作成した仮想ブリッジのSlaveとして仮想のインターフェースコネクションを作る
[kvmuser@localhost ~]# nmcli c add type bridge-slave autoconnect yes con-name enp3s- ifname enp3s0 master br0
br1向けの仮想ブリッジとアダプタも同様に作成
[kvmuser@localhost ~]# nmcli c add type bridge autoconnect yes con-name br1 ifname br1 [kvmuser@localhost ~]# nmcli c modify br1 bridge.stp no [kvmuser@localhost ~]# nmcli c modify br1 ipv4.method manual ipv4.addresses "【仮想ブリッジのIP】/【ネットマスク】" ipv4.dns 【DNSのIP】 ipv4.gateway 【デフォルトゲートウェイのIP】 [kvmuser@localhost ~]# nmcli c add type bridge-slave autoconnect yes con-name enp2s- ifname enp2s0 master br1
br2向けの仮想ブリッジとアダプタも同様に作成
[kvmuser@localhost ~]# nmcli c add type bridge autoconnect yes con-name br2 ifname br2 [kvmuser@localhost ~]# nmcli c modify br2 bridge.stp no [kvmuser@localhost ~]# nmcli c modify br2 ipv4.method manual ipv4.addresses "【仮想ブリッジのIP】/【ネットマスク】" ipv4.dns 【DNSのIP】 ipv4.gateway ipv4.gateway 【デフォルトゲートウェイのIP】 [kvmuser@localhost ~]# nmcli c add type bridge-slave autoconnect yes con-name enp0s- ifname enp0s20u2 master br2
仮想ブリッジを追加したのでファイヤーウォール設定をやり直す(繋がらなかったからやったけど、他が原因だったかも)
$ firewall-cmd --permanent --zone=public --add-service=vnc-server $ firewall-cmd --reload $ firewall-cmd --list-all
とりあえず上記まででネットワークはうまく行った.
あとはインストールした各仮想マシン毎に、仮想マシンマネージャから上記で設定したブリッジをNICとして選択してやればよい.
ホストは設定した仮想ブリッジ経由で繋がるっぽい.
仮想マシンのインストール方法などは別記事で書く.