CentOS7へのKVMのインストール方法
スポンサーリンク
インストール環境は
- CPU: i7-3820
- M/B: ASRock X79 Extreme4-M
と
- CPU: i7-4770T
- M/B: ASUS VANGUARD B85
で,両方ともIntel VT-dに対応
インストール
$ sudo yum -y install qemu-kvm libvirt virt-install bridge-utils $ sudo yum -y install spice-server
モジュールが組み込まれているか確認
数字は環境によって異なる
$ lsmod | grep kvm kvm_intel 148081 0 kvm 461126 1 kvm_intel
カーネルパラメータの設定
GRUB_CMDLINE_LINUX
の最後の"
の前にintel_iommu=on
を追加する
$ sudo vi /etc/default/grub 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="rd.lvm.lv=centos00/swap crashkernel=auto vconsole.keymap=jp106 rd.lvm.lv=centos00/root vconsole.font=latarcyrheb-sun16 rhgb quiet intel_iommu=on" GRUB_DISABLE_RECOVERY="true"
カーネルパラメータの適用
適用方法はBIOSブートかUEFIブートかで異なる(今回はUEFIブート環境で実行)
- BIOSブートの場合
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- UEFIブートの場合
$ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
再起動・変更の確認
$ sudo reboot $ dmesg | grep -e DMAR -e IOMMU [ 0.000000] ACPI: DMAR 00000000bcf1faf8 000EC (v01 A M I OEMDMAR 00000001 INTL 00000001) [ 0.000000] Intel-IOMMU: enabled [ 0.029171] dmar: IOMMU 0: reg_base_addr f4ffe000 ver 1:0 cap d2078c106f0462 ecap f020fe [ 0.029264] IOAPIC id 0 under DRHD base 0xf4ffe000 IOMMU 0 [ 0.029264] IOAPIC id 2 under DRHD base 0xf4ffe000 IOMMU 0 [ 0.488115] IOMMU 0 0xf4ffe000: using Queued invalidation [ 0.488118] IOMMU: Setting RMRR: [ 0.488126] IOMMU: Setting identity map for device 0000:00:1a.0 [0xbd2ec000 - 0xbd316fff] [ 0.488153] IOMMU: Setting identity map for device 0000:00:1d.0 [0xbd2ec000 - 0xbd316fff] [ 0.488166] IOMMU: Prepare 0-16MiB unity mapping for LPC [ 0.488172] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]
サービス起動・スタートアップ
$ sudo systemctl start libvirtd $ sudo systemctl enable libvirtd
ブリッジネットワークの作成
NetworkManagerはブリッジをサポートしていないので停止する
※NetworkManagerでブリッジを作成する方法を最後に追記
$ sudo systemctl stop NetworkManager $ sudo systemctl disable NetworkManager $ sudo systemctl start network $ sudo chkconfig network on
NICの設定
$ cd /etc/sysconfig/network-scripts $ sudo cp ifcfg-enp7s0 ifcfg-br0
ifcfg-enp7s0
の設定
$ sudo vi ifcfg-enp7s0 TYPE=Ethernet DEVICE=enp7s0 UUID=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx HWADDR=xx:xx:xx:xx:xx:xx ONBOOT=yes BRIDGE=br0
ifcfg-br0
の設定
$ sudo vi ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=none IPV6INIT=no ONBOOT=yes DNS1=192.168.11.1 IPADDR=192.168.11.232 PREFIX=24 GATEWAY=192.168.11.1
ネットワーク再起動 (再起動が失敗する場合はシステム自体を再起動してみる)
$ sudo systemctl restart network
仮想ブリッジの削除
$ sudo virsh net-list 名前 状態 自動起動 永続 ----------------------------------------- default 動作中 はい (yes) はい (yes) $ sudo virsh net-autostart default --disable ネットワークdefaultの自動起動設定が解除されました $ sudo virsh net-destroy default ネットワーク default は強制停止されました $ sudo virsh net-list --all 名前 状態 自動起動 永続 ----------------------------------------- default 停止状態 いいえ (no) はい (yes)
ファイウォールの設定
SPICEでリモートアクセスする場合はポートの開放を行う
今回は5930-5932/tcpを開放した
$ sudo firewall-cmd --permanent --add-port=ポート番号/tcp $ sudo systemctl restart firewalld $ sudo firewall-cmd --list-ports 5930/tcp 5931/tcp 5932/tcp
GUIクライアントのインストール
以下のコマンドでvirt-managerをインストールできる
Fedora
$ sudo dnf -y install virt-manger openssh-askpass $ sudo dnf -y install spice-gtk-python
Ubuntu
$ sudo apt-get -y install virt-manager $ sudo apt-get -y install python-spice-client-gtk
追記1: NetworkManagerでブリッジを作成する
ブリッジデバイスを作成する
$ nmcli con add type bridge ifname br0 con-name bridge-br0 $ nmcli con mod bridge-br0 bridge.stp no $ nmcli con mod bridge-br0 ipv4.method manual ipv4.address "192.168.1.17/24" ipv4.gateway "192.168.1.1" $ nmcli con mod bridge-br0 ipv4.dns "192.168.1.1" $ nmcli con down bridge-br0 $ nmcli con up bridge-br0
ブリッジに物理デバイスを接続する
$ nmcli con add type bridge-slave ifname enp0s31f6 master bridge-br0