KVM (仮想化環境) のインストール

CentOSでKVMによる仮想化環境を構築します。

想定環境

OSCentOS 7
qemu-kvm1.5.3
libvirt2.0.0

動作環境の確認

KVMによる仮想化が動作する環境かどうか、CPUの仮想化拡張機能 (Intel VT-x または AMD-V) を確認します。

grep -E 'svm|vmx' /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon
 pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 fma 
cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm
 ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase smep

grepコマンドを実行しても何も表示されない場合は、KVMが動作しませんので別な環境で試して下さい。

KVM関連パッケージのインストール

yumコマンドでKVMに必要なパッケージをインストールします。後ほど仮想マシンを作成するためvirt-installもインストールしておきます。

yum install qemu-kvm qemu-img libvirt virt-install

libvirtdの起動

仮想化環境を管理するためのデーモンlibvirtdを起動します。

systemctl start libvirtd

virshコマンドでリストが取得できるか確認します。

virsh list
 Id    Name                           State
----------------------------------------------------

まだ、仮想マシンを作成していないので空の一覧が表示されます。

ちなみに、libvirtdが起動していない場合は次の様なエラーメッセージが表示されます。

virsh list
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory

CentOS 7のISOファイル取得

仮想マシンを作成する際のインストールメディアとしてISOファイルをダウンロードします。ここでは、Minimalインストール用のISOファイルを理化学研究所のミラーサイトからダウンロードしています。

cd /usr/local/src/
wget http://ftp.riken.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso

virt-installによる仮想マシンの作成

KVMの仮想マシンを作成する方法はいくつもありますが、ここではvirt-installコマンドを利用して、CentOS 7の仮想マシンを作成します。シリアルコンソール経由のテキストインストールで作成してみます。グラフィカルなインストールではないので、VNCクライアントやSPICEクライアントが必要なく、ターミナルだけでインストールが実行できます。

仮想マシン設定情報

以下の設定内容の仮想マシンを作成します。実際に利用される環境に合わせてスペックを変更して下さい。

仮想マシン名centos
ホスト名centos7.local
仮想CPU1個
メモリ1024MB
ディスクイメージ容量5GB
ディスクイメージ形式qcow2
インストールメディア/usr/local/src/CentOS-7-x86_64-Minimal-1611.iso

virt-installコマンドの実行

仮想マシンの各種設定を引数に設定してvirt-installコマンドを実行します。

virt-install \
--name=centos \
--location=/usr/local/src/CentOS-7-x86_64-Minimal-1611.iso \
--disk path=/var/lib/libvirt/images/centos.qcow2,size=5,format=qcow2 \
--vcpus=1 --ram=1024 \
--graphics none \
--extra-args="console=tty0 console=ttyS0,115200n8"

コマンドを実行すると仮想マシンのシリアルコンソールへ自動でアタッチされて、CentOS 7のテキストインストールが開始されます。

Starting installer, one moment...
anaconda 21.48.22.93-1 for CentOS Linux 7 started.
 * installation log files are stored in /tmp during the installation
 * shell is available on TTY2
 * when reporting a bug add logs from /tmp as separate text/plain attachments
03:28:43 Not asking for VNC because we don't have a network
================================================================================
================================================================================
Installation

 1) [x] Language settings                 2) [!] Time settings
        (English (United States))                (Timezone is not set.)
 3) [!] Installation source               4) [!] Software selection
        (Processing...)                          (Processing...)
 5) [!] Installation Destination          6) [x] Kdump
        (No disks selected)                      (Kdump is enabled)
 7) [ ] Network configuration             8) [!] Root password
        (Not connected)                          (Password is not set.)
 9) [!] User creation
        (No user will be created)
  Please make your choice from above ['q' to quit | 'b' to begin installation |
  'r' to refresh]:

タイムゾーンの設定

メニュー2番のタイムゾーンの設定をします。タイムゾーンとしてAsia/Tokyoを設定します。

2を入力します。

以下、番号や文字列を入力してインストールを進めていきます。

: 2
Time settings

Timezone: not set

NTP servers:not configured

 1)  Set timezone
 2)  Configure NTP servers
: 1
 Timezone settings

Available regions
 1)  Africa                 6)  Atlantic              10)  Pacific
 2)  America                7)  Australia             11)  US
 3)  Antarctica             8)  Europe                12)  Etc
 4)  Arctic                 9)  Indian
 5)  Asia
Please select the timezone.
: 5
(省略)
17)  Choibalsan            44)  Magadan               70)  Tokyo
18)  Colombo               45)  Makassar              71)  Tomsk
19)  Damascus              46)  Manila                72)  Ulaanbaatar
20)  Dhaka                 47)  Muscat                73)  Urumqi
21)  Dili                  48)  Nicosia               74)  Ust-Nera
22)  Dubai                 49)  Novokuznetsk          75)  Vientiane
Press ENTER to continue (ENTER入力)
23)  Dushanbe              50)  Novosibirsk           76)  Vladivostok
24)  Gaza                  51)  Omsk                  77)  Yakutsk
25)  Hebron                52)  Oral                  78)  Yangon
26)  Ho_Chi_Minh           53)  Phnom_Penh            79)  Yekaterinburg
27)  Hong_Kong
Please select the timezone.
: 70

メニューに戻ります

インストール先ディスクのパーティション設定

メニューの5番にあるインストール先の設定をします。5を入力します。

: 5
Probing storage...
Installation Destination

[x] 1) : 5120 MiB (vda)

1 disk selected; 5120 MiB capacity; 992.5 KiB free ...

すでにディスクが選択されているので、cを入力して先へ進みます

: c
Autopartitioning Options

[ ] 1) Replace Existing Linux system(s)

[x] 2) Use All Space

[ ] 3) Use Free Space

Installation requires partitioning of your hard drive. Select what space to use
for the install target.
: c
Partition Scheme Options

[ ] 1) Standard Partition

[ ] 2) Btrfs

[x] 3) LVM

[ ] 4) LVM Thin Provisioning

Select a partition scheme configuration.
: 1

ここではLVMではなくStandard Partitionを選択することにします。

Partition Scheme Options

[x] 1) Standard Partition

[ ] 2) Btrfs

[ ] 3) LVM

[ ] 4) LVM Thin Provisioning

Select a partition scheme configuration.
: c

メニューに戻ります。

ネットワークの設定

メニューの7番でネットワークの設定を行います。

デフォルトではマシン起動時にネットワークインターフェイスが有効にならないので、有効にしておきます。

: 7
Network configuration

Wired (eth0) disconnected

Host name: localhost.localdomain

Current host name: localhost.localdomain

 1)  Set host name
 2)  Configure device eth0

ホスト名centos7.localを設定します。

: 1
Enter new value for 'Host name' and press enter
centos7.local
Network configuration

Wired (eth0) disconnected

Host name: centos7.local

Current host name: localhost.localdomain

 1)  Set host name
 2)  Configure device eth0
: 2
 1) IPv4 address or "dhcp" for DHCP
    dhcp
 2) IPv4 netmask
 3) IPv4 gateway
 4) IPv6 address[/prefix] or "auto" for automatic, "dhcp" for DHCP, "ignore" to
    turn off
    auto
 5) IPv6 default gateway
 6) Nameservers (comma separated)
 7) [ ] Connect automatically after reboot
 8) [ ] Apply configuration in installer

7(起動時有効)と8(インストール時に設定適用)を有効にします。

:7
:8
Device configuration

 1) IPv4 address or "dhcp" for DHCP
    dhcp
 2) IPv4 netmask
 3) IPv4 gateway
 4) IPv6 address[/prefix] or "auto" for automatic, "dhcp" for DHCP, "ignore" to
    turn off
    auto
 5) IPv6 default gateway
 6) Nameservers (comma separated)
 7) [x] Connect automatically after reboot
 8) [x] Apply configuration in installer
Configuring device eth0.
:c
:c

メニューに戻ります。

rootのパスワード設定

メニューの8番でrootのパスワードを設定します。

Please select new root password. You will have to type it twice.

Password:
Password (confirm):

パスワードとして強度が弱い文字列を入力した場合は、確認画面が表示されます。yesと入力すればインストールを進めることはできますが、弱いrootパスワードを使用していることを認識して利用しましょう。

Question

                    The password you have provided is weak.
                    Would you like to use it anyway?

Please respond 'yes' or 'no':

メニューに戻ります。

インストールの開始

OSをインストールする準備が完了しましたので、実際にインストールを行います。

Installation

 1) [x] Language settings                 2) [x] Time settings
        (English (United States))                (Asia/Tokyo timezone)
 3) [x] Installation source               4) [x] Software selection
        (Local media)                            (Minimal Install)
 5) [x] Installation Destination          6) [x] Kdump
        (Automatic partitioning                  (Kdump is enabled)
        selected)                         8) [x] Root password
 7) [x] Network configuration                    (Password is set.)
        (Wired (eth0) connected)
 9) [ ] User creation
        (No user will be created)
  Please make your choice from above ['q' to quit | 'b' to begin installation |
  'r' to refresh]:
: b

インストールの過程が表示されます。

Progress
Setting up the installation environment
.
Creating disklabel on /dev/vda
.
Creating swap on /dev/vda2
.
Creating xfs on /dev/vda3
.
Creating xfs on /dev/vda1

(省略)

Running post-installation scripts
.
        Use of this product is subject to the license agreement found at /usr/share/centos-release/EULA

        Installation complete.  Press return to quit

インストールが完了したらENTERキーを入力して仮想マシンを再起動します。

ログインプロンプトが表示されたら先ほど設定したrootのパスワードでログイン出来るか確認してみます。

CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64

localhost login: root
Password:
[root@centos7 ~]# pwd
/root
[root@localhost ~]# logout

CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64

centos7 login:

仮想マシンのコンソールにアタッチした状態のままですので、ctrl+]でデタッチします。

仮想マシン一覧の確認

最後に、virshコマンドで仮想マシンが登録されたか確認します。

virsh list
 Id    Name                           State
----------------------------------------------------
 2     centos                         running

CentOSでKVMによる仮想化環境を構築します。

想定環境

OSCentOS 7
qemu-kvm1.5.3
libvirt2.0.0

動作環境の確認

KVMによる仮想化が動作する環境かどうか、CPUの仮想化拡張機能 (Intel VT-x または AMD-V) を確認します。

grep -E 'svm|vmx' /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon
 pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 fma 
cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm
 ida arat epb pln pts dtherm tpr_shadow vnmi ept vpid fsgsbase smep

grepコマンドを実行しても何も表示されない場合は、KVMが動作しませんので別な環境で試して下さい。

KVM関連パッケージのインストール

yumコマンドでKVMに必要なパッケージをインストールします。後ほど仮想マシンを作成するためvirt-installもインストールしておきます。

yum install qemu-kvm qemu-img libvirt virt-install

libvirtdの起動

仮想化環境を管理するためのデーモンlibvirtdを起動します。

systemctl start libvirtd

virshコマンドでリストが取得できるか確認します。

virsh list
 Id    Name                           State
----------------------------------------------------

まだ、仮想マシンを作成していないので空の一覧が表示されます。

ちなみに、libvirtdが起動していない場合は次の様なエラーメッセージが表示されます。

virsh list
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory

CentOS 7のISOファイル取得

仮想マシンを作成する際のインストールメディアとしてISOファイルをダウンロードします。ここでは、Minimalインストール用のISOファイルを理化学研究所のミラーサイトからダウンロードしています。

cd /usr/local/src/
wget http://ftp.riken.jp/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso

virt-installによる仮想マシンの作成

KVMの仮想マシンを作成する方法はいくつもありますが、ここではvirt-installコマンドを利用して、CentOS 7の仮想マシンを作成します。シリアルコンソール経由のテキストインストールで作成してみます。グラフィカルなインストールではないので、VNCクライアントやSPICEクライアントが必要なく、ターミナルだけでインストールが実行できます。

仮想マシン設定情報

以下の設定内容の仮想マシンを作成します。実際に利用される環境に合わせてスペックを変更して下さい。

仮想マシン名centos
ホスト名centos7.local
仮想CPU1個
メモリ1024MB
ディスクイメージ容量5GB
ディスクイメージ形式qcow2
インストールメディア/usr/local/src/CentOS-7-x86_64-Minimal-1611.iso

virt-installコマンドの実行

仮想マシンの各種設定を引数に設定してvirt-installコマンドを実行します。

virt-install \
--name=centos \
--location=/usr/local/src/CentOS-7-x86_64-Minimal-1611.iso \
--disk path=/var/lib/libvirt/images/centos.qcow2,size=5,format=qcow2 \
--vcpus=1 --ram=1024 \
--graphics none \
--extra-args="console=tty0 console=ttyS0,115200n8"

コマンドを実行すると仮想マシンのシリアルコンソールへ自動でアタッチされて、CentOS 7のテキストインストールが開始されます。

Starting installer, one moment...
anaconda 21.48.22.93-1 for CentOS Linux 7 started.
 * installation log files are stored in /tmp during the installation
 * shell is available on TTY2
 * when reporting a bug add logs from /tmp as separate text/plain attachments
03:28:43 Not asking for VNC because we don't have a network
================================================================================
================================================================================
Installation

 1) [x] Language settings                 2) [!] Time settings
        (English (United States))                (Timezone is not set.)
 3) [!] Installation source               4) [!] Software selection
        (Processing...)                          (Processing...)
 5) [!] Installation Destination          6) [x] Kdump
        (No disks selected)                      (Kdump is enabled)
 7) [ ] Network configuration             8) [!] Root password
        (Not connected)                          (Password is not set.)
 9) [!] User creation
        (No user will be created)
  Please make your choice from above ['q' to quit | 'b' to begin installation |
  'r' to refresh]:

タイムゾーンの設定

メニュー2番のタイムゾーンの設定をします。タイムゾーンとしてAsia/Tokyoを設定します。

2を入力します。

以下、番号や文字列を入力してインストールを進めていきます。

: 2
Time settings

Timezone: not set

NTP servers:not configured

 1)  Set timezone
 2)  Configure NTP servers
: 1
 Timezone settings

Available regions
 1)  Africa                 6)  Atlantic              10)  Pacific
 2)  America                7)  Australia             11)  US
 3)  Antarctica             8)  Europe                12)  Etc
 4)  Arctic                 9)  Indian
 5)  Asia
Please select the timezone.
: 5
(省略)
17)  Choibalsan            44)  Magadan               70)  Tokyo
18)  Colombo               45)  Makassar              71)  Tomsk
19)  Damascus              46)  Manila                72)  Ulaanbaatar
20)  Dhaka                 47)  Muscat                73)  Urumqi
21)  Dili                  48)  Nicosia               74)  Ust-Nera
22)  Dubai                 49)  Novokuznetsk          75)  Vientiane
Press ENTER to continue (ENTER入力)
23)  Dushanbe              50)  Novosibirsk           76)  Vladivostok
24)  Gaza                  51)  Omsk                  77)  Yakutsk
25)  Hebron                52)  Oral                  78)  Yangon
26)  Ho_Chi_Minh           53)  Phnom_Penh            79)  Yekaterinburg
27)  Hong_Kong
Please select the timezone.
: 70

メニューに戻ります

インストール先ディスクのパーティション設定

メニューの5番にあるインストール先の設定をします。5を入力します。

: 5
Probing storage...
Installation Destination

[x] 1) : 5120 MiB (vda)

1 disk selected; 5120 MiB capacity; 992.5 KiB free ...

すでにディスクが選択されているので、cを入力して先へ進みます

: c
Autopartitioning Options

[ ] 1) Replace Existing Linux system(s)

[x] 2) Use All Space

[ ] 3) Use Free Space

Installation requires partitioning of your hard drive. Select what space to use
for the install target.
: c
Partition Scheme Options

[ ] 1) Standard Partition

[ ] 2) Btrfs

[x] 3) LVM

[ ] 4) LVM Thin Provisioning

Select a partition scheme configuration.
: 1

ここではLVMではなくStandard Partitionを選択することにします。

Partition Scheme Options

[x] 1) Standard Partition

[ ] 2) Btrfs

[ ] 3) LVM

[ ] 4) LVM Thin Provisioning

Select a partition scheme configuration.
: c

メニューに戻ります。

ネットワークの設定

メニューの7番でネットワークの設定を行います。

デフォルトではマシン起動時にネットワークインターフェイスが有効にならないので、有効にしておきます。

: 7
Network configuration

Wired (eth0) disconnected

Host name: localhost.localdomain

Current host name: localhost.localdomain

 1)  Set host name
 2)  Configure device eth0

ホスト名centos7.localを設定します。

: 1
Enter new value for 'Host name' and press enter
centos7.local
Network configuration

Wired (eth0) disconnected

Host name: centos7.local

Current host name: localhost.localdomain

 1)  Set host name
 2)  Configure device eth0
: 2
 1) IPv4 address or "dhcp" for DHCP
    dhcp
 2) IPv4 netmask
 3) IPv4 gateway
 4) IPv6 address[/prefix] or "auto" for automatic, "dhcp" for DHCP, "ignore" to
    turn off
    auto
 5) IPv6 default gateway
 6) Nameservers (comma separated)
 7) [ ] Connect automatically after reboot
 8) [ ] Apply configuration in installer

7(起動時有効)と8(インストール時に設定適用)を有効にします。

:7
:8
Device configuration

 1) IPv4 address or "dhcp" for DHCP
    dhcp
 2) IPv4 netmask
 3) IPv4 gateway
 4) IPv6 address[/prefix] or "auto" for automatic, "dhcp" for DHCP, "ignore" to
    turn off
    auto
 5) IPv6 default gateway
 6) Nameservers (comma separated)
 7) [x] Connect automatically after reboot
 8) [x] Apply configuration in installer
Configuring device eth0.
:c
:c

メニューに戻ります。

rootのパスワード設定

メニューの8番でrootのパスワードを設定します。

Please select new root password. You will have to type it twice.

Password:
Password (confirm):

パスワードとして強度が弱い文字列を入力した場合は、確認画面が表示されます。yesと入力すればインストールを進めることはできますが、弱いrootパスワードを使用していることを認識して利用しましょう。

Question

                    The password you have provided is weak.
                    Would you like to use it anyway?

Please respond 'yes' or 'no':

メニューに戻ります。

インストールの開始

OSをインストールする準備が完了しましたので、実際にインストールを行います。

Installation

 1) [x] Language settings                 2) [x] Time settings
        (English (United States))                (Asia/Tokyo timezone)
 3) [x] Installation source               4) [x] Software selection
        (Local media)                            (Minimal Install)
 5) [x] Installation Destination          6) [x] Kdump
        (Automatic partitioning                  (Kdump is enabled)
        selected)                         8) [x] Root password
 7) [x] Network configuration                    (Password is set.)
        (Wired (eth0) connected)
 9) [ ] User creation
        (No user will be created)
  Please make your choice from above ['q' to quit | 'b' to begin installation |
  'r' to refresh]:
: b

インストールの過程が表示されます。

Progress
Setting up the installation environment
.
Creating disklabel on /dev/vda
.
Creating swap on /dev/vda2
.
Creating xfs on /dev/vda3
.
Creating xfs on /dev/vda1

(省略)

Running post-installation scripts
.
        Use of this product is subject to the license agreement found at /usr/share/centos-release/EULA

        Installation complete.  Press return to quit

インストールが完了したらENTERキーを入力して仮想マシンを再起動します。

ログインプロンプトが表示されたら先ほど設定したrootのパスワードでログイン出来るか確認してみます。

CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64

localhost login: root
Password:
[root@centos7 ~]# pwd
/root
[root@localhost ~]# logout

CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64

centos7 login:

仮想マシンのコンソールにアタッチした状態のままですので、ctrl+]でデタッチします。

仮想マシン一覧の確認

最後に、virshコマンドで仮想マシンが登録されたか確認します。

virsh list
 Id    Name                           State
----------------------------------------------------
 2     centos                         running
KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド
KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド
平 初 森若 和雄 鶴野 龍一郎 まえだ こうへい