CentOS 7: KVMをインストールして仮想マシンを起動する

KVMをインストールして、仮想マシンを起動するところまでを記載します。

1 qemu-kvmとlibvirtのインストール

qemu-kvmとKVM設定用のパッケージをインストールします。

$ sudo yum install -y qemu-kvm libvirt-client virt-install \
virt-manager virt-viewer bridge-utils

2 bridgeインターフェース

外部から仮想マシンへアクセスする場合は、bridgeインターフェースを設定 してください。

3 libvirtグループ

libvirtグループに所属しているとsudoなしでvirt-managerを実行できます。

$ sudo gpasswd libvirt -a <username>

4 isoディレクトリの作成

複数のユーザでisoイメージを共有できるようにisoディレクトリを作成します。ubuntu-16.04-desktop-amd64.isoをisoディレクトリに格納します。

$ sudo mkdir /var/lib/libvirt/iso
$ sudo mv ubuntu-16.04-desktop-amd64.iso /var/lib/libvirt/iso/
$ sudo chown qemu:qemu /var/lib/libvirt/iso/ubuntu-16.04-desktop-amd64.iso

5 VNC用ポートの開放

他のマシンから仮想マシンのディスプレイにアクセスできるようにするために、vnc-server.xmlを利用してVNC用のポートを開放します。

同時に稼働する仮想マシンが多くなると4ポートでは足りなくなるかもしれません。5903の値を大きくしてください。

$ sudo cat /usr/lib/firewalld/services/vnc-server.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Virtual Network Computing Server (VNC)</short>
  <description>A VNC server provides an external accessible X
session. Enable this option if you plan to provide a VNC server with
direct access. The access will be possible for displays :0 to :3. If
you plan to provide access with SSH, do not open this option and use
the via option of the VNC viewer.</description>
  <port protocol="tcp" port="5900-5903"/>
</service>

ポートを開放します。

$ sudo firewall-cmd --add-service=vnc-server --permanent
$ sudo firewall-cmd --reload

6 kvm_intel nestedの有効化

kvm_intel nestedを有効化することで、仮想マシン上でKVMを利用した仮想マシンを作成することができるようになります。

$ sudo su -c \
'echo options kvm_intel nested=1 > /etc/modprobe.d/qemu-system-x86.conf'
$ sudo reboot

7 virt-installで仮想マシンを作成する

qemu-imgでディスクを作成後にvirt-installで仮想マシンを作成します。VNCのパスワードは適時変更してください。

$ sudo qemu-img create -f raw /var/lib/libvirt/images/ubuntu-16.04-vm.raw 80G
$ sudo virt-install --name ubuntu-16.04-vm --memory 1024 --vcpus 1 \
     --cdrom /var/lib/libvirt/iso/ubuntu-16.04-desktop-amd64.iso \
     --network bridge=br0 --os-type linux --os-variant ubuntu14.04 \
     --file /var/lib/libvirt/images/ubuntu-16.04-vm.raw \
     --graphics vnc,listen=0.0.0.0,password=password,keymap=ja

virt-viewerが起動し、仮想マシンの画面が表示されます。

0001_virt-viewer.png

virt-viewerと閉じておくことで、他のマシンからもVNC経由でアクセスできます。

$ open vnc://<server>:<port>