博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kvm虚拟机安装
阅读量:5305 次
发布时间:2019-06-14

本文共 6808 字,大约阅读时间需要 22 分钟。

KVM虚拟化技术介绍

概述

KVM是基于内核的虚拟化技术(Kernel-based Virtual Machine),于2007年的Linux 2.6.20被合并进Linux内核。KVM要求CPU支持硬件虚拟化技术,即Intel的VT-x或AMD的AMD-V。

KVM相对裸机有以内的性能损耗,XEN相对裸机有的性能损耗。由于XEN需要修改Linux内核,而KVM是集成到每个Linux内核的、KVM相对XEN更加易用等原因,。
KVM只能完成CPU的虚拟化,而完整的硬件环境还需要网络、硬盘、键盘、鼠标等IO环境,这些硬件环境的模拟是通过QEMU-KVM完成的。

架构说明

下图为上的架构说明

KVM与virtualbox等的区别

KVM适合于服务端的虚拟化,图形显示能力差,但是CPU的利用效率高;virtualbox图形支持较好,支持2D、3D加速。

操作接口

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,如果没有匹配的内容则说明不支持硬件虚拟化,有匹配的内容说明支持硬件虚拟化

安装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是否安装成功

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

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

 

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

你可能感兴趣的文章
201521123044 《Java程序设计》第1周学习总结
查看>>
MIT Scheme 的基本使用
查看>>
程序员的“机械同感”
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
c++回调函数
查看>>
linux下Rtree的安装
查看>>
【Java】 剑指offer(53-2) 0到n-1中缺失的数字
查看>>
Delphi中ListView类的用法
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>
asp.net 调用前台JS调用后台,后台掉前台JS
查看>>
Attribute(特性)与AOP
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>
ubuntu 安装后的配置
查看>>
web前端之路,js的一些好书(摘自聂微东 )
查看>>
【模板】对拍程序
查看>>
【转】redo与undo
查看>>