[KVM] ①KVM環境の構築

概要

[KVM] 序章: KVMの概念

構築環境

root@kvm:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"

 

前提条件確認

CPUが仮想環境に(Intel-VTに)対応しているか確認。
vmxがあるので大丈夫そう

root@kvm:~# cat /proc/cpuinfo  | grep flags | grep vmx
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority dtherm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority dtherm

 

とりあえずやっておく

■ update
user@kvm:~$ sudo su - 
root@kvm:~# apt-get update 
root@kvm:~# apt-get upgrade -y

■ 運用で利用するパッケージのインストール
root@kvm:~# apt install vim curl ethtool sysstat -y 

 
 

QEMU/KVMの インストール

■必要なパッケージのインストール
root@kvm:~# apt-get -y install qemu-kvm libvirt-bin virtinst bridge-utils

 

braidgインターフェースを作成する

仮想マシンはブリッジにタップデバイスを接続して外部との通信を行う事になる。
このようなイメージである

root@kvm:~# ifconfig
enp2s0    Link encap:イーサネット  ハードウェアアドレス 00:24:8c:8a:02:84
          inetアドレス:172.31.1.132  ブロードキャスト:172.31.1.255  マスク:255.255.255.0
          inet6アドレス: fe80::224:8cff:fe8a:284/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:251990 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:133602 エラー:0 損失:0 オーバラン:0 キャリア:2
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:336755544 (336.7 MB)  TXバイト:10410185 (10.4 MB)

lo        Link encap:ローカルループバック
          inetアドレス:127.0.0.1  マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
          RXパケット:160 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:160 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1
          RXバイト:11840 (11.8 KB)  TXバイト:11840 (11.8 KB)

virbr0    Link encap:イーサネット  ハードウェアアドレス 52:54:00:69:dc:38
          inetアドレス:192.168.122.1  ブロードキャスト:192.168.122.255  マスク:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

■変更
root@kvm:~# cp -p  /etc/network/interfaces{,.orig}
root@kvm:~# vim /etc/network/interfaces
root@kvm:~# diff -u  /etc/network/interfaces{.orig,}
--- /etc/network/interfaces.orig        2017-04-10 20:37:19.233649004 +0900
+++ /etc/network/interfaces     2018-03-07 21:10:31.896421011 +0900
@@ -8,5 +8,12 @@
 iface lo inet loopback

 # The primary network interface
-auto enp2s0
-iface enp2s0 inet dhcp
+#auto enp2s0
+#iface enp2s0 inet dhcp
+iface br0 inet static
+address 172.31.1.132
+netmask 255.255.255.0
+gateway 172.31.1.1
+bridge_ports enp2s0
+bridge_stp off
+auto br0

■reboot
root@kvm:~# shutdown -r now

■ネットワーク変更確認
root@kvm:~# ifconfig
br0       Link encap:イーサネット  ハードウェアアドレス 00:24:8c:8a:02:84
          inetアドレス:172.31.1.132  ブロードキャスト:172.31.1.255  マスク:255.255.255.0
          inet6アドレス: fe80::224:8cff:fe8a:284/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:925 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:188 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:79419 (79.4 KB)  TXバイト:35678 (35.6 KB)

enp2s0    Link encap:イーサネット  ハードウェアアドレス 00:24:8c:8a:02:84
          inet6アドレス: fe80::224:8cff:fe8a:284/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:922 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:199 エラー:0 損失:0 オーバラン:0 キャリア:2
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:92266 (92.2 KB)  TXバイト:36518 (36.5 KB)

lo        Link encap:ローカルループバック
          inetアドレス:127.0.0.1  マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
          RXパケット:1004 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:1004 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1
          RXバイト:74260 (74.2 KB)  TXバイト:74260 (74.2 KB)

virbr0    Link encap:イーサネット  ハードウェアアドレス 52:54:00:69:dc:38
          inetアドレス:192.168.122.1  ブロードキャスト:192.168.122.255  マスク:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

デフォルトのネットワークを削除

root@kvm:~# virsh net-list
 名前               状態     自動起動  永続
----------------------------------------------------------
 default              動作中  はい (yes)  はい (yes)

■強制停止
root@kvm:~# virsh net-destroy default
root@kvm:~# virsh net-autostart --disable default


■確認
br0       Link encap:イーサネット  ハードウェアアドレス 00:24:8c:8a:02:84
          inetアドレス:172.31.1.132  ブロードキャスト:172.31.1.255  マスク:255.255.255.0
          inet6アドレス: fe80::224:8cff:fe8a:284/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:13510 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:977 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:1308906 (1.3 MB)  TXバイト:253853 (253.8 KB)

enp2s0    Link encap:イーサネット  ハードウェアアドレス 00:24:8c:8a:02:84
          inet6アドレス: fe80::224:8cff:fe8a:284/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:13510 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:1009 エラー:0 損失:0 オーバラン:0 キャリア:2
          衝突(Collisions):0 TXキュー長:1000
          RXバイト:1498153 (1.4 MB)  TXバイト:257681 (257.6 KB)

lo        Link encap:ローカルループバック
          inetアドレス:127.0.0.1  マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
          RXパケット:21044 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:21044 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1
          RXバイト:1589892 (1.5 MB)  TXバイト:1589892 (1.5 MB)
※ virbr0  が消えていることを確認

vhost(virtio)の有効化

詳細は省きますが、
virtioは、qemuとゲストOS間で共有メモリを用意し、一定のデータを溜めるVMMに制御を移し処理を行なうことで、オーバーヘッドを削減します。
vhostではゲストOSとホストのカーネル間で共有メモリを用いることで、qemuを介さず処理を行なうことで、virtioに比べ更なる実行速度の改善します。

今回はより高速な vhost を利用する

root@kvm:~# ps ax | grep vhost
 1444 pts/0    S+     0:00 grep --color=auto vhost
root@kvm:~# lsmod | grep vhost
root@kvm:~# modprobe vhost_net
root@kvm:~# lsmod | grep vhost
vhost_net              20480  0
vhost                  32768  1 vhost_net
macvtap                20480  1 vhost_net
root@kvm:~# echo vhost_net >> /etc/modules
root@kvm:~#

1 Comment

Add a Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

備忘録の覚書 © 2017 Frontier Theme