kvm虛擬機安裝

KVM虛擬化技術介紹

概述

KVM是基於內核的虛擬化技術(Kernel-based Virtual Machine),於2007年的Linux 2.6.20被合併進Linux內核。KVM要求CPU支持硬件虛擬化技術,即Intel的VT-x或AMD的AMD-V。
KVM相對裸機有2%之內的性能損耗,XEN相對裸機有2.5%的性能損耗。因爲XEN須要修改Linux內核,而KVM是集成到每一個Linux內核的、KVM相對XEN更加易用等緣由,KVM已經成爲大多數Linux系統的推薦默認虛擬化機制
KVM只能完成CPU的虛擬化,而完整的硬件環境還須要網絡、硬盤、鍵盤、鼠標等IO環境,這些硬件環境的模擬是經過QEMU-KVM完成的。php

架構說明

下圖爲維基百科上的架構說明
linux

KVM與virtualbox等的區別

KVM適合於服務端的虛擬化,圖形顯示能力差,可是CPU的利用效率高;virtualbox圖形支持較好,支持2D、3D加速。
注意:KVM與VirtualBox有衝突,兩者不能同時使用ubuntu

操做接口

KVM可經過libvirt這個通用的虛擬機管理庫進行管理,使用libvirt的客戶端有:命令行下的virsh和GUI下的virt-manager。windows

安裝說明

系統要求

CPU支持硬件虛擬化,有的須要在BIOS中的CPU設置啓用虛擬化,在BIOS中的英文一般爲virtualization,若是是disabled狀態要改爲enabled狀態。
Linux上查看是否支持虛擬化的方式有:centos

  1. $ lscpu,輸出的文本中帶Virtualization: VT-xVirtualization: AMD-V即說明支持硬件虛擬化,不然不支持
  2. $ grep -E "(vmx|svm|0xc0f)" --color=always /proc/cpuinfo,若是沒有匹配的內容則說明不支持硬件虛擬化,有匹配的內容說明支持硬件虛擬化

安裝KVM

本安裝說明以CentOS 7爲例
假定CentOS 7 ISO安裝文件已下載,並存儲於路徑/home/kvm/iso/CentOS-7.0-1406-x86_64-Minimal.iso安全

1
2
3
4
5
6
[root@localhost ~]# yum -y install qemu-kvm libvirt virt-install bridge-utils
[root@localhost ~]# lsmod | grep kvm # make sure modules are loaded
kvm_intel 138567 0
kvm 441119 1 kvm_intel
[root@localhost ~]# systemctl start libvirtd # 啓動libvirt服務
[root@localhost ~]# systemctl enable libvirtd # 啓用libvirt服務

 

安裝完後,運行virsh -c qemu:///system list,用於檢查KVM是否安裝成功bash

1
2
3
[root@localhost ~]# virsh -c qemu:///system list
Id Name State
----------------------------------

 

若是沒有報錯便是安裝成功網絡

關閉SELINUX防火牆

1
[root@localhost ~]# sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

網絡配置

安裝完後,libvirt 會建立一個名爲virbr0的 NAT 網絡。咱們測試時一般須要虛擬機具備單獨的IP,而KVM只提供了NAT,橋接兩種網絡鏈接方式,故爲了實現單獨IP咱們須要使用橋接網絡。架構

配置橋接網絡

注意,一般橋接網絡的配置指的是在有線網卡上進行的配置,無線網卡鑑於安全因素不建議配置橋接網絡,無線網卡的橋接配置也比較複雜,遠沒達到實用階段。
假設宿主機上的有線網卡爲enps30(可經過ip addr show命令查看網卡的名稱),則須要把enp3s0網卡的配置改爲以下內容,並添加ifcfg-br0文件dom

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# bash -c 'cat > ifcfg-enp3s0 << EOF
DEVICE=enp3s0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
EOF'
[root@localhost network-scripts]# bash -c 'cat > ifcfg-br0 << EOF
TYPE=Bridge
BOOTPROTO=none
DEVICE=br0
ONBOOT=yes
IPADDR0=192.168.71.47
PREFIX0=24
GATEWAY0=192.168.71.1
EOF'

 

IPADDR0和GATEWAY0須要根據實際狀況調整
配置完成後,須要運行systemctl restart network重啓網絡

安裝guest虛擬機

首先運行以下命令,查看kvm支持的guest虛擬機

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
[root@localhost ~]# virt-install --os-variant=list
win7 : Microsoft Windows 7
vista : Microsoft Windows Vista
winxp64 : Microsoft Windows XP (x86_64)
winxp : Microsoft Windows XP
win2k : Microsoft Windows 2000
win2k8 : Microsoft Windows Server 2008
win2k3 : Microsoft Windows Server 2003
openbsd4 : OpenBSD 4.x
freebsd8 : FreeBSD 8.x
freebsd7 : FreeBSD 7.x
freebsd6 : FreeBSD 6.x
solaris9 : Sun Solaris 9
solaris10 : Sun Solaris 10
opensolaris : Sun OpenSolaris
netware6 : Novell Netware 6
netware5 : Novell Netware 5
netware4 : Novell Netware 4
msdos : MS-DOS
generic : Generic
debianwheezy : Debian Wheezy
debiansqueeze : Debian Squeeze
debianlenny : Debian Lenny
debianetch : Debian Etch
fedora19 : Fedora 19
fedora18 : Fedora 18
fedora17 : Fedora 17
fedora16 : Fedora 16
fedora15 : Fedora 15
fedora14 : Fedora 14
fedora13 : Fedora 13
fedora12 : Fedora 12
fedora11 : Fedora 11
fedora10 : Fedora 10
fedora9 : Fedora 9
fedora8 : Fedora 8
fedora7 : Fedora 7
fedora6 : Fedora Core 6
fedora5 : Fedora Core 5
mageia1 : Mageia 1 and later
mes5.1 : Mandriva Enterprise Server 5.1 and later
mes5 : Mandriva Enterprise Server 5.0
mandriva2010 : Mandriva Linux 2010 and later
mandriva2009 : Mandriva Linux 2009 and earlier
rhel7 : Red Hat Enterprise Linux 7
rhel6 : Red Hat Enterprise Linux 6
rhel5.4 : Red Hat Enterprise Linux 5.4 or later
rhel5 : Red Hat Enterprise Linux 5
rhel4 : Red Hat Enterprise Linux 4
rhel3 : Red Hat Enterprise Linux 3
rhel2.1 : Red Hat Enterprise Linux 2.1
sles11 : Suse Linux Enterprise Server 11
sles10 : Suse Linux Enterprise Server
opensuse12 : openSuse 12
opensuse11 : openSuse 11
ubuntusaucy : Ubuntu 13.10 (Saucy Salamander)
ubunturaring : Ubuntu 13.04 (Raring Ringtail)
ubuntuquantal : Ubuntu 12.10 (Quantal Quetzal)
ubuntuprecise : Ubuntu 12.04 LTS (Precise Pangolin)
ubuntuoneiric : Ubuntu 11.10 (Oneiric Ocelot)
ubuntunatty : Ubuntu 11.04 (Natty Narwhal)
ubuntumaverick : Ubuntu 10.10 (Maverick Meerkat)
ubuntulucid : Ubuntu 10.04 LTS (Lucid Lynx)
ubuntukarmic : Ubuntu 9.10 (Karmic Koala)
ubuntujaunty : Ubuntu 9.04 (Jaunty Jackalope)
ubuntuintrepid : Ubuntu 8.10 (Intrepid Ibex)
ubuntuhardy : Ubuntu 8.04 LTS (Hardy Heron)
virtio26 : Generic 2.6.25 or later kernel with virtio
generic26 : Generic 2.6.x kernel
generic24 : Generic 2.4.x kernel

 

guest OS 以CentOS 7的安裝,列表中沒有centos7,用其上游發行版rhel7代替
運行以下命令安裝

1
2
3
4
5
[root@localhost kvm]# virt-install --connect qemu:///system -n centos7_demo \
-r 512 --vcpus=4 --disk path=/home/kvm/images/centos7_demo.img,size=15 \
--graphics vnc,listen=0.0.0.0 --noautoconsole --os-type linux \
--os-variant rhel7 --accelerate --network=bridge:br0 --hvm \
--cdrom /home/kvm/iso/CentOS-7.0-1406-x86_64-Minimal.iso

 

參數說明:

  • --connect qemu:///system 鏈接到本地系統上的KVM,也能夠鏈接到其餘主機上的KVM
  • -n centos7_demo 虛擬機的名稱,這個例子中叫 centos7_demo
  • -r 512 分配給虛擬機的內存,此處爲512M
  • -vcpus=4 虛擬CPU個數:2
  • --disk path=/home/kvm/images/centos7_demo.img,size=15 虛擬機磁盤鏡像文件存儲路徑,存儲目錄必須是已經存在的目錄,文件大小爲10GB
  • --graphics vnc,listen=0.0.0.0 圖形化訪問虛擬機的方式:經過VNC協議。也可使用效率更高的spice協議,spice協議支持音頻和USB設備,不過配置較爲複雜
  • --noautoconsole 不自動鏈接到控制檯
  • --os-type linux 操做系統類型,若是是Windows操做系統,則是windows
  • --os-variant rehel7 guest操做系統類型,即上面virt-install --os-variant=list中顯示的
  • --accelerate 使用硬件加速
  • --network=bridge:br0 使用類型爲橋接的br0網卡
  • –hvm 全虛擬化
  • --cdrom /home/kvm/iso/CentOS-7.0-1406-x86_64-Minimal.iso ISO安裝文件的存儲路徑

該命令執行後,咱們須要使用VNC客戶端鏈接到安裝控制檯上
查看本地的VNC鏈接地址

1
2
[root@localhost ~]# virsh vncdisplay centos7_demo
:0

 

:0表明第一個屏幕,VNC的默認鏈接端口爲5900,:0即端口5900,若是是:1則端口是5901,:2端口是5902,以此類推。支持VNC的客戶端有TightVNC,TigerVNC,realvnc等。本文使用的是tigervnc。

開放防火牆訪問vnc端口

1
2
[root@localhost ~]# firewall-cmd --zone=public --add-port=5900/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

 

從另外一臺支持圖形化界面的主機鏈接到guest虛擬機

1
joelhy@arminix: ~ $ vncviewer 192.168.71.47::5900

 

其中,192.168.71.47爲KVM宿主機的IP地址,5900是根據上面vncdisplay結果獲得的端口,也能夠用vncviewer 192.168.71.47:0訪問。192.168.71.47須要改爲實際使用的IP。

運行vncviewer命令後會打開以下圖形化窗口
VNC客戶端
在此VNC圖形化窗口中便可完成安裝

虛擬機管理命令

virsh 命令提供了操做虛擬機的一系列命令:

  1. virsh list —all 獲取虛擬機列表
  2. virsh dominfo {servername} 獲取虛擬機信息
  3. virsh shutdown {servername} 關閉虛擬機
  4. virsh reboot {servername} 重啓虛擬機
  5. virsh start {servername} 啓動虛擬機
  6. virsh undefine {servername} 刪除虛擬機定義文件,即刪除/etc/libvirt/qemu目錄下相應的xml文件,注意_這個命令並不會刪除磁盤img文件,磁盤img文件須要手動刪除
  7. virsh edit {servername} 編輯虛擬機配置文件,即修改虛擬機的內存、CPU以及VNC鏈接端口等配置
  8. virt-clone -o {old_servername} -n {new_servername} -f /path/to/img/file.img 複製虛擬機,複製完成後須要登陸進虛擬機更改IP地址、hostname
相關文章
相關標籤/搜索