kvm虚拟机安装

匿名 (未验证) 提交于 2019-12-03 00:37:01

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完成的。

下图为维基百科上的架构说明

KVM适合于服务端的虚拟化,图形显示能力差,但是CPU的利用效率高;virtualbox图形支持较好,支持2D、3D加速。
注意:KVM与VirtualBox有冲突,二者不能同时使用

KVM可通过libvirt这个通用的虚拟机管理库进行管理,使用libvirt的客户端有:命令行下的virsh和GUI下的virt-manager。

CPU支持硬件虚拟化,有的需要在BIOS中的CPU设置启用虚拟化,在BIOS中的英文通常为virtualization,如果是disabled状态要改成enabled状态。
Linux上查看是否支持虚拟化的方式有:

  1. $ lscpu,输出的文本中带Virtualization: VT-xVirtualization: AMD-V即说明支持硬件虚拟化,否则不支持
  2. $ grep -E "(vmx|svm|0xc0f)" --color=always /proc/cpuinfo,如果没有匹配的内容则说明不支持硬件虚拟化,有匹配的内容说明支持硬件虚拟化

本安装说明以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是否安装成功

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

如果没有报错即是安装成功

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文件

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重启网络

首先运行如下命令,查看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
  • -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 rehel7virt-install --os-variant=list中显示的
  • --accelerate
  • --network=bridge:br0
  • --cdrom

该命令执行后,我们需要使用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图形化窗口中即可完成安装

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}
  7. virsh edit {servername}

  1. virt-clone -o {old_servername} -n {new_servername} -f /path/to/img/file.img

##############################

转自:https://www.cnblogs.com/liangml/p/5969093.html

文章来源: kvm虚拟机安装
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!