Linux KVM のインストール

Linux 標準の仮想化機能 KVM のインストール手順を説明します。Fedora 22 で動作確認しました。

KVM とは

KVM とは Kernel-based Virtual Machine の略で Linux に標準で用意されている仮想化機能です。KVM をインストールするとことにより、Linux ホスト内に仮想マシンを簡単に作成することができます。KVM をインストールするとデフォルトで NAT 構成の仮想ネットワーク(192.168.122.0/24) が Linux 内に作成されます。仮想マシンを作成すると、この仮想ネットワークに接続され、DHCP 機能によって、ゲスト OS に対して IPアドレスが自動的に付与されます。例えば 192.168.122.111 といった IP アドレスになります。仮想マシンが外部とネットワーク通信をする際には、仮想ゲートウェイ 192.168.122.1 を介して通信します。このゲートウェイの IP アドレスは Linux ホスト自身に割り当てられた IP アドレスでもあるため、ゲスト OS から Linux ホストに ssh 接続したいときは、宛先 IP アドレスに 192.168.122.1 を指定することにより接続できます。

NAT 構成の仮想ネットワークでは Linux ホストはルータとして機能するので、仮想マシンから受け取ったパケットを仮想ゲートウェイ 192.168.122.1 から受け取り、Linux ホストの物理 NIC を通して外部に転送します。また外部から戻ってきたレスポンスは物理 NIC で受け取った後は、仮想ゲートウェイを通して仮想マシンにルーティングします。このようにゲスト PC は外部から隠蔽されています。そのため、ゲスト PC に Web サーバーをインストールしても、そのままでは外部のネットワークに公開することはできません。これをするには、別途 Bridge ネットワークを作成する必要がありますが、今回の説明では省略します。

仮想ネットワーク(192.168.122.0/24) は、環境によっては異るネットワークアドレスに設定されます。例えば、筆者の環境では VMware Workstation もインストールしているためか、ネットワークアドレスは 192.168.124.0/24 に設定されています。

なお、KVM を利用するには、Linux の 64-bit OS が必要です。また、CPU は仮想化支援機能が必要となります。

Linux KVM のインストール

KVM をインストールするにはパッケージグループ virtualization をインストールします。パッケージグループ virtualization が存在するかどうかは、つぎのコマンドで確認できます。

# dnf grouplist hidden -v

パッケージグループ virtualization の内容を確認するには、つぎのコマンドで確認できます。

# dnf groupinfo virtualization

Group: Virtualization
 Description: These packages provide a virtualization environment.
 Mandatory Packages:
   virt-install
 Default Packages:
   libvirt-daemon-config-network
   libvirt-daemon-kvm
   qemu-kvm
   virt-manager
   virt-viewer
 Optional Packages:
   guestfs-browser
   libguestfs-tools
   python-libguestfs
   virt-top

必須(Mandatory)、デフォルト(Default)、オプション(Optional)でインストールされるパッケージの一覧が表示されます。特に問題なさそうなのでオプションも含めてすべてをインストールします。

# dnf -y group install virtualization --setopt=group_package_types=mandatory,default,optional

インストールしたら、いったんリブートします。

# reboot

以上で Linux KVM のインストールは完了です。

仮想マシンの作成

仮想マシンの作成や仮想ネットワークの作成などは、Virtual Machine Manager (virt-manager) という GUI アプリケーションを操作して作成できます。仮想マシンを作成すると、仮想マシンの定義ファイルと仮想マシンのイメージファイルが作成されます。仮想マシンの定義ファイルは「/etc/libvirt/qemu/」ディレクトリ以下に配置されます。仮想マシンのイメージファイルは「/var/lib/libvirt/images/」ディレクトリ以下に配置されます。

仮想マシンの OS インストール時に使用するインストールメディアは、ISO イメージファイルの形で「/var/lib/libvirt/images/」ディレクトリ以下にコピーしておくと便利です。

仮想マシンの作成には virt-manager を利用する他に、virt-install コマンドを使うこともできます。たとえば、CentOS 7.1 の仮想マシンを作成するには、以下のように入力します。メモリーは MB 単位で指定し、ディスクは GB 単位で指定します。

# cp CentOS-7-x86_64-DVD-1503-01.iso /var/lib/libvirt/images/

# virt-install \
--name c71 \
--memory 1024 \
--disk path=/var/lib/libvirt/images/c71.img,size=10 \
--network network:default \
--vnc \
--cdrom /var/lib/libvirt/images/CentOS-7-x86_64-DVD-1503-01.iso

virt-install コマンドが開始されると、すぐにインストーラの GUI 画面が表示されるので、通常の OS インストール手順と同様に操作を進めてインストールを完了させます。

virt-manager 起動時の root パスワード入力の省略

virt-manager を一般ユーザーから起動しようとすると、そのままでは SELinux の機能により root ユーザーのパスワード入力が求められます。wheel グループに所属しているユーザーの場合、root ユーザーのパスワード入力を省略するには、「/etc/polkit-1/rules.d/」ディレクトリ以下にルールを作成します。

# cat << "EOF" > /etc/polkit-1/rules.d/80-libvirt-manage.rules
//
// wheel user can execute virt-manager
//

polkit.addRule(function(action, subject) {
  if (action.id == "org.libvirt.unix.manage" && subject.local && subject.active && subject.isInGroup("wheel")) {
      return polkit.Result.YES;
  }
});
EOF

上記のルール設定は、action.id が “org.libvirt.unix.manage” のときは、それを許可するといった意味になります。この action.id を調べるには、つぎのコマンドで確認できます。

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0 --no-page | grep action

仮想マシンの画面解像度の設定

Fedora 22 の KVM 仮想マシンを作成した場合、仮想マシンの画面の解像度がホスト PC の画面と同じになるようです。これを変更するには、つぎの手順でおこないます。仮想マシンにて xrandr コマンドで仮想マシンに接続されているモニターの名前(Virtual-0)とサポートされている解像度を確認します。

$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
Virtual-0 connected primary 1920x1200+0+0 0mm x 0mm
   1920x1200     59.88* 
   1920x1080     59.96  
   1600x1200     59.87  
   1680x1050     59.95  
   1400x1050     59.98  
   1280x1024     59.89  
   1440x900      59.89  
   1280x960      59.94  
   1280x854      59.89  
   1280x800      59.81  
   1280x720      59.86  
   1152x768      59.78  
   1024x768      59.92  
   800x600       59.86  
   848x480       59.66  
   720x480       59.71  
   640x480       59.38  
Virtual-1 disconnected
Virtual-2 disconnected
Virtual-3 disconnected

xrandr コマンドで仮想マシンの解像度を変更します。

$ xrandr --output Virtual-0 --mode 1024x768

仮想マシンの解像度をリブート後も設定を有効にするには、以下の設定を追加します。

# cat << "EOF" > /etc/X11/xorg.conf.d/40-monitor.conf
Section "Monitor"
  Identifier  "Virtual-0"
  Option      "PreferredMode" "1024x768"
EndSection
EOF

Boxes の利用

一度仮想マシンを作成したら、仮想マシンの操作は virt-manager の他に Boxes というアプリを利用して操作することもできます。Boxes を利用するには、最初に起動したときに、

1) [New] ボタンをクリックします。
2) Source Selection 画面が表示されます。
3) Enter URL を選択し、「qemu:///system」を入力します。
4) [Continue] ボタンをクリックします。
5) [Create] ボタンをクリックします。

以上で既存のゲスト VM の一覧が表示されるので、アイコンをクリックすると起動されます。