最近很多小伙伴都在问三种方式在CentOS7搭建KVM虚拟化平台和centos7安装kvm虚拟化这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展CentOS6.5安装KVM虚拟化、
最近很多小伙伴都在问三种方式在CentOS 7搭建KVM虚拟化平台和centos7安装kvm虚拟化这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展CentOS 6.5安装KVM虚拟化、CentOS 6.5搭建KVM服务器平台、CentOS 7 kvm虚拟化管理平台WebVirtMgr部署、CentOS 7 KVM虚拟机实战等相关知识,下面开始了哦!
本文目录一览:- 三种方式在CentOS 7搭建KVM虚拟化平台(centos7安装kvm虚拟化)
- CentOS 6.5安装KVM虚拟化
- CentOS 6.5搭建KVM服务器平台
- CentOS 7 kvm虚拟化管理平台WebVirtMgr部署
- CentOS 7 KVM虚拟机实战
三种方式在CentOS 7搭建KVM虚拟化平台(centos7安装kvm虚拟化)
KVM的整体结构:
从GUI到Linux内核,包括以下五个组件:
1) virt-manager
一个用来管理VM的GUI/CUI用户接口;它使用libvirt api 调用VM的各种功能。
2) libvirt
一个工具及接口,作为较通用的服务器虚拟化软件,它支持Xen,VMware ESXi/GSX,当然,还有QEMU/KVM。
3) QEMU
一个和KVM内核模块交互的模拟器,处理多种客户机系统请求如I/O;一个QEMU进程对应一个客户机系统。
4) KVM内核模块
从狭义上来说,KVM是一个Linux内核模块,处理客户机系统的VM Exits和执行VM Entry指令。
5) Linux内核
既然QEMU作为一个普通的用户进程运行,相应客户机系统的调度就由Linux内核自己来处理。
所有的组件都是开放源码软件(OSS)。
KVM的安装:
环境要求:
1、如果是物理服务器,需要在BIOS中打开虚拟化功能(Virtualization Technology),一般的服务器默认是打开这个功能的。
2、如果是用VMware Workstation做实验,建立的虚拟机的cpu要勾选虚拟化功能,这样虚拟机才会支持KVM虚拟化
安装方式:
最简单的安装方法就是在安装系统的时候,安装上虚拟化功能,这里以CentOS7.3为例,选择安装包的时候,如下图选择即可,选择“带GUI的服务器”,并勾选“虚拟化客户端”,“虚拟化Hypervisor”,“虚拟化工具”
如果你的系统是最小化安装的,那你应该安装以下所需软件:
# yum groupinstall "GNOME 桌面" //安装GNOME桌面环境
查看cpu是否支持
# grep -E 'svm|vmx' /proc/cpuinfo
- vmx is for Intel processors
- svm is for AMD processors
安装虚拟化软件
# yum install epel-rpm-macros.noarch //安装epel源
# yum install qemu qemu-img qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
# yum install virt-manager virt-viewer //安装图形化工具
# systemctl enable libvirtd
# systemctl start libvirtd
检查KVM模块是否安装
[[email protected] ~]# lsmod |grep kvm
kvm_intel 174250 0
kvm 570658 1 kvm_intel
irqbypass 13503 1 kvm
一、使用图形化界面创建虚拟机
1、创建虚拟机之前的准备工作:
(1)操作系统安装介质:ISO文件, 将系统镜像文件复制到/kvm/iso目录下
[[email protected] ~]# mkdir /kvm/iso -p
[[email protected] ~]# umount /dev/sr0
[[email protected] ~]# cp /dev/sr0 /kvm/iso/Centos7.iso
(2)磁盘空间准备:
添加新磁盘
创建LVM
创建文件系统及挂载点,并设置开机自动挂载
pvcreate /dev/sdb
vgcreate kvm_vg /dev/sdb
lvcreate -n kvm_lv -L 100G kvm_vg
mkdir /kvm/vfs
mount /dev/kvm_vg/kvm-lv /kvm/vfs
(3)使用virt-manager图形界面创建
virt-manager是基于libvirt的图形化虚拟机管理软件。在命令行中以root身份输入virt-manager命令,出现virt-manager管理界面
创建一个镜像存储池,命名为iso,目录为/kvm/iso即可,用于放置以后KVM虚拟机使用的iso光盘镜像文件
创建一个存储池,命名为vfs,目录为/kvm/vfs,并创建存储卷,其实就是KVM虚拟机的硬盘文件
在虚拟系统管理器中选择“新建虚拟机”,选择“本地安装介质”
选择ISO镜像文件
选择内存大小、cpu数量
选择虚拟机磁盘文件
给虚拟机命名,单击完成
单击完成后,虚拟机就开始创建,然后按照操作系统即可
二、使用命令行模式创建虚拟机
1、使用qemu-img命令可以创建磁盘文件
创建一个raw格式的磁盘文件
[[email protected] ~]# qemu-img create /kvm/vfs/vm1.raw 20G
转换磁盘格式为qcow2
[[email protected] ~]# qemu-img convert -f raw -O qcow2 /kvm/vfs/vm1.raw /kvm/vfs/vm1.qcow2
直接创建一个qcow2格式的磁盘文件
[[email protected] ~]# qemu-img create -f qcow2 /kvm/vfs/vm1.qcow2 20G
2、使用virt-install命令创建虚拟机
通用选项:
-n NAME,--name=NAME 虚拟机名称
-r MEMORY,--ram=MEMORY 以MB为单位为客户端事件分配的内存
--vcpus=VcpuS 配置虚拟机的虚拟cpu(vcpu)数量,如:
--vcpus 5
--vcpus 5,maxcpus=10
--vcpus socket=2,cores=4,threads=2
--cpuset=cpuSET Set which physical cpus domain can use.
--cpu=cpu cpu型号及功能,如:--cpu coreduo,+x2apic
--description=DESCRIPTION 在生成的XML中保存的可读VM描述。
--security=Security 设定域安全驱动器配置。
--numatune=NUMATUNE 为域进程调整NUMA策略。
安装方法选项:
-c CDROM,--cdrom=CDROM 光驱安装介质
-l LOCATION,--location=LOCATION
安装源(例如:nfs:host:/path、http://host/path、ftp://host/path)
--pxe 使用 PXE 协议从网络引导
--import 在磁盘映像中构建客户机
--livecd 将光驱介质视为 Live CD
-x EXTRA,--extra-args=EXTRA
附加到使用--location引导的内核的参数
--os-type=disTRO_TYPE
操作系统类型,'linux'、'unix'、'windows'
--os-variant=disTRO_VARIANT
操作系统版本,如: 'fedora6','rhel5','solaris10','win2k'
--boot=BOOTOPTS 自选配置后安装引导顺序、菜单、永久kernel引导,等等。
存储配置:
--disk=disKOPTS 用各种选项指定存储。 Ex.
--disk path=/my/existing/disk
--disk path=/my/new/disk,format=qcow2,size=5,sparse (单位GB)
--disk vol=poolname:volname,device=cdrom,bus=scsi,...
--nodisks 不要为该客户端设置任何磁盘。
--filesystem=FILESYstemS
将主机目录传递给虚拟机。例如:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
联网配置:
-w NETWORK,--network=NETWORK
配置客户网络接口。 Ex:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--nonetworks 不要为该客体创建网络接口。
图形配置:
--graphics=GRAPHICS
配置虚拟机显示设置。例如:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--noautoconsole 不要自动尝试连接到客户端控制台
设备选项:
--serial=SERIALS 配置虚拟机串口设备
--parallel=ParaLLELS 配置虚拟机并口设备
--channel=CHANNELS 配置虚拟机沟通频道
--console=CONSOLES 配置虚拟机与主机之间的文本控制台连接
--host-device=HOSTDEVS 配置与客户相连的物理主机设备
--soundhw=SOUNDHW 配置客户声音设备仿真
--watchdog=WATCHDOG 配置虚拟机 watchdog 设备
--video=VIDEO 配置虚拟机视频硬件。
--smartcard=SMARTCARD 配置虚拟机智能卡设备。
例如:--smartcard mode=passthrough
--redirdev=REDIRDEV Configure a guest redirection device.
例如:--redirdev usb,type=tcp,server=192.168.1.1:4000
虚拟化平台选项:
-v,--hvm 客户端应该是一个全虚拟客户端
-p,--paravirt 这个客户端是一个半虚拟客户端
--container This guest should be a container guest
--virt-type=HV_TYPE 要使用的管理程序名称(kvm、qemu、xen)
--arch=ARCH 模拟的 cpu 构架
--machine=MACHINE The machine type to emulate
--noacpi 为全虚拟客户端禁用 ACPI(在 os-type/os-variant db 中覆盖数值)
-u UUID,--uuid=UUID 客户端 UUID。
其它选项:
--autostart 引导主机时自动启动域。
--print-xml 输出所生成域的XML,而不是定义虚拟机。
--print-step=XMLSTEP 输出具体安装步骤
--noreboot 完成安装后不要引导虚拟机。
--wait=WAIT 要等待的时间(以分钟为单位)
--dry-run 完成安装步骤,但不要创建设备或者定义虚拟机。
--force 对任意应用程序提示强制回答‘yes’,终止其它提示
-q,--quiet 禁止无错误输出
--prompt 要求用户为模糊情况或者需要的选项输入
-d,--debug 输入故障排除信息
3、使用纯命令行安装虚拟机
[[email protected] ~]# qemu-img create -f qcow2 /kvm/vfs/vm2.qcow2 20G
[[email protected] ~]# virt-install -n vm2 \ 定义虚拟机名
> -r 1024 \ 内存大小
> --vcpus 1 \ cpu数量
> -l /kvm/iso/Centos7.iso \ ISO位置
> --disk path=/kvm/vfs/vm2.qcow2,format=qcow2 \ 磁盘文件位置及格式
> --nographics \ 不用图形化安装
> -x console=ttyS0 允许使用console终端登录虚拟机
执行命令,进行操作系统的安装,根据需要调整以下的配置参数
4、使用VNC方式创建虚拟机系统
[[email protected] ~]# qemu-img create -f qcow2 /kvm/vfs/vm3.qcow2 20G
[[email protected] ~]# virt-install -n vm3 \ 定义虚拟机名
> -r 1024 \ 内存大小
> --vcpus 1 \ cpu数量
> -l /kvm/iso/Centos7.iso \ ISO位置
> --disk path=/kvm/vfs/vm3.qcow2,format=qcow2 \ 磁盘文件位置及格式
> --graphics vnc,listen=0.0.0.0,port=5924, \ vnc安装,使用5924端口
> --noautoconsole \ 不要自动尝试连接到客户端控制台
> --accelerate \ 提速安装
> --autostart 引导主机时自动启动域
[[email protected] ~]# firewall-cmd --add-port=5924/tcp 允许vnc连接
使用vnc客户端软件连接安装
CentOS 6.5安装KVM虚拟化
一、KVM简介
KVM(Kernel-basedVirtual Machine)即基于内核的虚拟机,是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上。
KVM在具备Intel VT或AMD-V功能的x86平台上运行。它也被移植到S/390,PowerPC与IA-64平台上。在Linux内核3.9版中,加入ARM架构的支持。
关于KVM:
KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。
它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。
KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。
KVM 内存管理
KVM 继承了 Linux 系统管理内存的诸多特性,比如,分配给虚拟使用的内存可以被交换至交换空间、能够使用大内存页以实现更好的性能,以及对 NUMA 的支持能够让虚拟机高效访问更大的内存空间等。
KVM 基于 Intel 的 EPT ( ExtendedPage Table )或 AMD 的 RVI ( Rapid Virtualization Indexing )技术可以支持更新的内存虚拟功能,这可以降低 cpu 的占用率,并提供较好的吞吐量。
此外, KVM 还借助于 KSM ( Kernel Same-pageMerging )这个内核特性实现了内存页面共享 。 KSM 通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各相关虚拟机共享的单独页面。在某虚拟机试图修改此页面中的数据时, KSM 会重新为其提供一个新的页面副本。实践中,运行于同一台物理主机上的具有相同 GuestOS 的虚拟机之间出现相同内存页面的概率是很的,比如共享库、内核或其它内存对象等都有可能表现为相同的内存页,因此, KSM 技术可以降低内存占用进而提高整体性能。
KVM组件
KVM主要两类组件组成:
◇/dev/kvm:管理虚拟机的设备节点,用户空间的程序可通过其ioctl()系统调用集来完成虚拟机的创建启动等管理工作;它是一个字符设备;其主要完成的操作包括:
1
2
3
4
5
|
创建虚拟机;
为虚拟机分配内存;
读、写Vcpu的寄存器;
向Vcpu注入中断;
运行Vcpu;
|
◇qemu进程:工作于用户空间的组件,用于仿真PC机的I/O类硬件设备;
qemu全称Quick Emulator。是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kqemu是该软件的加速软件。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。
半虚拟化virtio组件
virtio半虚拟化驱动的方式,可以获得很好的I/O性能,其性能几乎可以达到和native(即:非虚拟化环境中的原生系统)差不多的I/O性能。所以,在使用KVM之时,如果宿主机内核和客户机都支持virtio的情况下,一般推荐使用virtio达到更好的性能。当然,virtio的也是有缺点的,它必须要客户机安装特定的Virtio驱动使其知道是运行在虚拟化环境中,且按照Virtio的规定格式进行数据传输,不过客户机中可能有一些老的Linux系统不支持virtio和主流的Windows系统需要安装特定的驱动才支持Virtio。不过,较新的一些Linux发行版(如RHEL 6.3、Fedora 17等)默认都将virtio相关驱动编译为模块,可直接作为客户机使用virtio,而且对于主流Windows系统都有对应的virtio驱动程序可供下载使用。
virtio是对半虚拟化hypervisor中的一组通用模拟设备的抽象.该设置还允许hypervisor导出一组通用的模拟设备,并通过一个通用的应用程序接口(API)让它们变得可用.有了半虚拟化hypervisor之后,来宾操作系统能够实现一组通用的接口,在一组后端驱动程序之后采用特定的设备模拟.后端驱动程序不需要是通用的,因为它们只实现前端所需的行为。
KVM工具栈
二、KVM虚拟化平台构建
1、安装准备
查看你的硬件是否支持虚拟化。命令:
1
|
egrep
'(vmx|svm)'
/proc/cpuinfo
|
注意:
要有vmx或svm的标识才行。总的说来,AMD在虚拟化方面作得更好一些。
我用的是VMware Workstation 10 ,并在虚拟机的设置中打开了cpu设置中的虚拟化引擎,选择了 Intel VT-x/EPT 或 AMD-V/RVI(V) 这个选项;具体设置如下图:
2、安装KVM
由于Linux内核已经将KVM收录了,在安装系统时已经加入了KVM,我们只需要在命令行模式下启用 KVM 即可,其实这里不操作也没有问题,我们在安装qemu-kvm的时候就会自动加载。
1
2
3
4
|
[root@node1~]
#modprobekvm_intel
[root@node1~]
#lsmod|grepkvm
kvm_intel542850
kvm3331721kvm_intel
|
3、KVM虚拟机创建和管理所依赖的组件介绍
KVM 虚拟机的创建依赖qemu-kvm :
虽然 kvm 的技术已经相当成熟而且可以对很多东西进行隔离,但是在某些方面还是无法虚拟出真实的机器。比如对网卡的虚拟,那这个时候就需要另外的技术来做补充,而 qemu-kvm 则是这样一种技术。它补充了 kvm 技术的不足,而且在性能上对 kvm 进行了优化。
我们还可以使用 virt-manager , virt-viewer 来管理虚拟机;
我们在创建和管理 KVM 虚拟机时还需要 libvirt 这个重要的组件:
它是一系列提供出来的库函数,用以其他技术调用,来管理机器上的虚拟机。包括各种虚拟机技术, kvm 、 xen 与 lxc 等,都可以调用 libvirt 提供的 api 对虚拟机进行管理。有这么多的虚拟机技术,它为何能提供这么多的管理功能那。是因为它的设计理念,它是面向驱动的架构设计。对任何一种虚拟机技术都开发设计相对于该技术的驱动。这样不同虚拟机技术就可以使用不同驱动,而且相互直接不会影响,方便扩展。而且 libvirt 提供了多种语言的编程接口,可以直接通过编程,调用 libvirt 提供的对外接口实现对虚拟机的操作。如今流行的云计算中的 IaaS 是与该库联系相当密切的。通过下图可以看出它的架构设计思想。
从该图可以看出,在 libvirtapi 之上会有很多个 driver ,对于每一种虚拟机技术都会有一种 driver ,用来充当该虚拟机技术与 libvirt 之间的包装接口。如此设计就可以避免 libvirt 需要设计各种针对不同虚拟机技术的接口,它主要关注底层的实现,提供对外接口调用,而不同的虚拟机技术通过调用 libvirt 提供的接口来完成自己所需要的功能。
4、安装KVM所需组件
1
|
yum
install
-yqemu-kvmlibvirtvirt-manager
|
安装完成后启动 libvirtd 服务:
1
|
servicelibvirtdstart
|
会自动启动一个桥设备,这相当于VMware Workstation中的host-only仅主机的网络设备;
使用网桥管理命令查看:
1
2
3
|
#brctlshow
bridgenamebridge
id
STPenabledinterfaces
virbr08000.5254006d26bb
yes
virbr0-nic
|
像 VMware Workstation 中我们需要创建物理桥接设备,可以使用 virsh 创建桥设备关联网卡到桥接设备上:
需要将 NetworkManager 服务关闭,开机启动也关闭,然后在创建桥接设备及关联网卡到桥接设备上:
1
|
virshiface-bridgeeth0br0
|
查看桥接设备及其他网络设备运行情况:
至此,我们的虚拟化平台就构建完毕,下面就开始在 KVM 虚拟化平台上创建和管理虚拟机,我们先使用 qemu-kvm 来创建和管理虚拟机。
三、使用qemu-kvm管理KVM虚拟机
1、Qemu-kvm介绍
Qemu 是一个广泛使用的开源计算机仿真器和虚拟机。当作为仿真器时,可以在一种架构(如 PC 机)下运行另一种架构(如 ARM)下的操作系统和程序。而通过动态转化,其可以获得很高的运行效率。当作为一个虚拟机时,qemu可以通过直接使用真机的系统资源,让虚拟系统能够获得接近于物理机的性能表现。qemu支持xen或者kvm模式下的虚拟化。当用kvm时, qemu可以虚拟x86、服务器和嵌入式 powerpc ,以及s390的系统。
QEMU当运行与主机架构相同的目标架构时可以使用KVM。例如,当在一个 x86 兼容处理器上运行 qemu-system-x86时,可以利用KVM加速�D�D为宿主机和客户机提供更好的性能。
Qemu 有如下几个部分组成:
处理器模拟器(x86、PowerPC和Sparc);
仿真设备(显卡、网卡、硬盘、鼠标等);
用于将仿真设备连接至主机设备(真实设备)的通用设备;
模拟机的描述信息;
调试器;
与模拟器交互的用户接口;
基于libvirt的工具如virt-manager和virt-install提供了非常便捷的虚拟机管理接口,但它们事实上上经二次开发后又封装了qemu-kvm的工具。因此,直接使用qemu-kvm命令也能够完成此前的任务。
2、Qemu-kvm的使用帮助
在RHEL6/CentOS6 上,qemu-kvm位于/usr/libexec目录中。由于此目录不属于PATH环境变量,故无法直接使用,这样也阻止了可以直接使用qemu作为创建并管理虚拟机。如若想使用qemu虚拟机,可以通过将/usr/libexec/qemu-kvm链接为/usr/bin/qemu-kvm实现。
1
|
ln
-sv
/usr/libexec/qemu-kvm
/usr/bin/qemu-kvm
|
qemu-kvm命令使用格式为“qemu-kvm [options] [disk_image]”,其选项非常多,不过,大致可分为如下几类。
1
2
3
4
5
6
7
8
9
10
11
|
标准选项;
USB选项;
显示选项;
i386平台专用选项;
网络选项;
字符设备选项;
蓝牙相关选项;
Linux系统引导专用选项;
调试/专家模式选项;
PowerPC专用选项;
Sparc32专用选项;
|
qemu-kvm的标准选项
qemu-kvm的标准选项主要涉及指定主机类型、cpu模式、NUMA、软驱设备、光驱设备及硬件设备等。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-namename:设定虚拟机名称;
-Mmachine:指定要模拟的主机类型,如StandardPC、ISA-onlyPC或Intel-Mac等,可以使用“qemu-kvm-M?”获取所支持的所有类型;
-mmegs:设定虚拟机的RAM大小;
-cpumodel:设定cpu模型,如coreduo、qemu64等,可以使用“qemu-kvm-cpu?”获取所支持的所有模型;
-smpn[,cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus]:设定模拟的SMP架构中cpu的个数等、每个cpu的核心数及cpu的socket数目等;PC机上最多可以模拟255颗cpu;maxcpus用于指定热插入的cpu个数上限;
-numaopts:指定模拟多节点的numa设备;
-fda
file
-fdb
file
:使用指定文件(
file
)作为软盘镜像,
file
为
/dev/fd0
表示使用物理软驱;
-hda
file
-hdb
file
-hdc
file
-hdd
file
:使用指定
file
作为硬盘镜像;
-cdrom
file
:使用指定
file
作为CD-ROM镜像,需要注意的是-cdrom和-hdc不能同时使用;将
file
指定为
/dev/cdrom
可以直接使用物理光驱;
-driveoption[,option[,...]]]:定义一个硬盘设备;可用子选项有很多。
file
=
/path/to/somefile
:硬件映像文件路径;
if
=interface:指定硬盘设备所连接的接口类型,即控制器类型,如ide、scsi、sd、mtd、floppy、pflash及virtio等;
index=index:设定同一种控制器类型中不同设备的索引号,即标识号;
media=media:定义介质类型为硬盘(disk)还是光盘(cdrom);
snapshot=snapshot:指定当前硬盘设备是否支持快照功能:on或off;
cache=cache:定义如何使用物理机缓存来访问块数据,其可用值有none、writeback、unsafe和writethrough四个;
format
=
format
:指定映像文件的格式,具体格式可参见qemu-img命令;
-boot[order=drives][,once=drives][,menu=on|off]:定义启动设备的引导次序,每种设备使用一个字符表示;不同的架构所支持的设备及其表示字符不尽相同,在x86PC架构上,a、b表示软驱、c表示第一块硬盘,d表示第一个光驱设备,n-p表示网络适配器;默认为硬盘设备;
-bootorder=
dc
,once=d
|
qemu-kvm的显示选项
显示选项用于定义虚拟机启动后的显示接口相关类型及属性等。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
-nographic:默认情况下,qemu使用SDL来显示VGA输出;而此选项用于禁止图形接口,此时,qemu类似一个简单的命令行程序,其仿真串口设备将被重定向到控制台;
-curses:禁止图形接口,并使用curses
/ncurses
作为交互接口;
-alt-grab:使用Ctrl+Alt+Shift组合键释放鼠标;
-ctrl-grab:使用右Ctrl键释放鼠标;
-sdl:启用SDL;
-spiceoption[,...]]:启用spice远程桌面协议;其有许多子选项,具体请参照qemu-kvm的手册;
-vga
type
:指定要仿真的VGA接口类型,常见类型有:
cirrus:CirrusLogicGD5446显示卡;
std:带有BochsVBI扩展的标准VGA显示卡;
vmware:VMWareSVGA-II兼容的显示适配器;
qxl:QXL半虚拟化显示卡;与VGA兼容;在Guest中安装qxl驱动后能以很好的方式工作,在使用spice协议时推荐使用此类型;
none:禁用VGA卡;
-vncdisplay[,...]]]:默认情况下,qemu使用SDL显示VGA输出;使用-vnc选项,可以让qemu监听在VNC上,并将VGA输出重定向至VNC会话;使用此选项时,必须使用-k选项指定键盘布局类型;其有许多子选项,具体请参照qemu-kvm的手册;
|
i386平台专用选项
1
2
3
|
-no-acpi:禁用ACPI功能,GuestOS与ACPI出现兼容问题时使用此选项;
-balloonnone:禁用balloon设备;
-balloonvirtio[,addr=addr]:启用virtioballoon设备;
|
网络属性相关选项
网络属性相关选项用于定义网络设备接口类型及其相关的各属性等信息。这里只介绍nic、tap和user三种类型网络接口的属性,其它类型请参照qemu-kvm手册。
1
2
3
4
5
6
7
8
9
10
11
|
-netnic[,vlan=n][,macaddr=mac][,model=
type
][,name=name][,addr=addr][,vectors=
v
]:创建一个新的网卡设备并连接至vlann中;PC架构上默认的NIC为e1000,macaddr用于为其指定MAC地址,name用于指定一个在监控时显示的网上设备名称;emu可以模拟多个类型的网卡设备,如virtio、i82551、i82557b、i82559er、ne2k_isa、pcnet、rtl8139、e1000、smc91c111、lance及mcf_fec等;不过,不同平台架构上,其支持的类型可能只包含前述列表的一部分,可以使用“qemu-kvm-netnic,model=?”来获取当前平台支持的类型;
-nettap[,fd=h][,ifname=name][,script=
file
][,downscript=dfile]:通过物理机的TAP网络接口连接至vlann中,使用script=
file
指定的脚本(默认为
/etc/qemu-ifup
)来配置当前网络接口,并使用downscript=
file
指定的脚本(默认为
/etc/qemu-ifdown
)来撤消接口配置;使用script=no和downscript=no可分别用来禁止执行脚本;
-netuser[,option][,...]:在用户模式配置网络栈,其不依赖于管理权限;有效选项有:
vlan=n:连接至vlann,默认n=0;
name=name:指定接口的显示名称,常用于监控模式中;
net=addr[
/mask
]:设定GuestOS可见的IP网络,掩码可选,默认为10.0.2.0
/8
;
host=addr:指定GuestOS中看到的物理机的IP地址,默认为指定网络中的第二个,即x.x.x.2;
dhcpstart=addr:指定DHCP服务地址池中16个地址的起始IP,默认为第16个至第31个,即x.x.x.16-x.x.x.31;
dns=addr:指定GuestOS可见的DNS服务器地址;默认为GuestOS网络中的第三个地址,即x.x.x.3;
tftp=
dir
:激活内置的tftp服务器,并使用指定的
dir
作为tftp服务器的默认根目录;
bootfile=
file
:BOOTP文件名称,用于实现网络引导GuestOS;如:qemu-hdalinux.img-bootn-netuser,tftp=
/tftpserver/pub
,bootfile=
/pxelinux
.0
|
四、使用qemu-kvm安装虚拟机Guest OS
测试安装centos6
1、创建虚拟机的磁盘文件
1
|
qemu-imgcreate-fqcow2-opreallocation=Metadata
/images/centos6
.qcow220G
|
2、安装vnc和图形界面库
1
|
yum
install
xorg-x11-xauthtigervnc-y
|
3、安装虚拟机
创建一个名为centos6的虚拟机,其RAM大小为1024MB ,有一颗cpu的SMP架构,默认引导设备是硬盘,有一个光驱设备和硬盘设备,首先创建一个网卡启动桥接的脚本,以便于虚拟机通过物理网卡联网。
1
|
cat
/etc/qemu-ifup
|
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/bash
#
bridge=br0
if
[-n
"$1"
];
then
iplink
set
$1up
sleep
1
brctladdif$bridge$1
[$?-
eq
0]&&
exit
0||
exit
1
else
echo
"Error:nointerfacespecified."
exit
1
fi
|
1
|
chmod
+x
/etc/qemu-ifup
|
通过qemu-kvm创建虚拟机
1
2
3
4
5
6
|
qemu-kvm-namecentos6-smp1-m512\
-drive
file
=
/images/centos6
.qcow2,
if
=virtio,media=disk,index=0,
format
=qcow2\
-drive
file
=
/tmp/CentOS-6
.5-x86_64-minimal.iso,index=1,media=cdrom\
-netnic,model=virtio\
-nettap,ifname=vnet0,script=
/etc/qemu-ifup
,downscript=no\
-vgacirrus-balloonvirtio
|
可以看到VNC监听在了5900端口上面,我们用Xshell再打开一个窗口,输入“vncviewer :5900”即可看到打开的终端界面,如果内存给大点就可以直接图形化界面安装了。
可以看到宿主机上面多了一个vnet0,虚拟机正常启动已经可以连接外网了。
4、Qemu监视器的使用
我们可以通过 Qemu 监视器来监测虚拟机的运行情况;
1)、Qemu 监视器打开的方式:
图形窗口模式的打开方式:
CTRL+ALT+2 :通过输入快捷键就能打开 Qemu 的监视器;
CTRL+ALT+1 :输入快捷键即可返回虚拟化机界面;
文本窗口模式的打开方式:
CTRL+a c :这组快捷键可以实现虚拟机界面和 Qemu 监视器之间的切换;
注意:如果需要让虚拟机运行在文本窗口模式,我们需要在创建和启动虚拟机时键入“-nographic”选项。
2)、打开虚拟机的Qemu监视器
按 CRTL+ALT+2 组合键即可打开Qemu监视器;
如图所示:
3)、Qemu监视器下的常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
help:显示帮助
info:显示一些虚拟机系统信息的
如:infocpus,infotlb
savevm,loadvm,delvm:保存、装载、删除虚拟机快照
commit:提交虚拟机修改部分
change:改变虚拟机配置
如:changevncpassword
device_add&device_del:实现动态添加和移除设备
usb_add&usb_del:添加和移除usb设备
migrate,migrate_cancel:迁移和取消迁移指令
cpu:设定默认cpu
log&logfile:记录日志和将日志记录到日志文件中
sendkey:向虚拟机发送指令
system_powerdown:向客户端发送关闭电源通知
system_reset:重启虚拟机
system_wakeup:唤醒虚拟机
qorquit:退出qemu监视器,qemu进程会终止;
|
关于命令的详细演示我这里不做过多介绍。
五、使用virt-install创建虚拟机并安装GuestOS
1、virt-install使用帮助
virt-install是一个命令行工具,它能够为KVM、Xen或其它支持libvrit API的hypervisor创建虚拟机并完成GuestOS安装;此外,它能够基于串行控制台、VNC或SDL支持文本或图形安装界面。安装过程可以使用本地的安装介质如CDROM,也可以通过网络方式如NFS、HTTP或FTP服务实现。对于通过网络安装的方式,virt-install可以自动加载必要的文件以启动安装过程而无须额外提供引导工具。当然,virt-install也支持PXE方式的安装过程,也能够直接使用现有的磁盘映像直接启动安装过程。
virt-install命令有许多选项,这些选项大体可分为下面几大类,同时对每类中的常用选项也做出简单说明。
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
|
◇一般选项:指定虚拟机的名称、内存大小、Vcpu个数及特性等;
-nNAME,--name=NAME:虚拟机名称,需全局惟一;
-rMEMORY,--
ram
=MEMORY:虚拟机内在大小,单位为MB;
--vcpus=VcpuS[,maxvcpus=MAX][,sockets=
#][,cores=#][,threads=#]:Vcpu个数及相关配置;
--cpu=cpu:cpu模式及特性,如coreduo等;可以使用qemu-kvm-cpu?来获取支持的cpu模式;
◇安装方法:指定安装方法、GuestOS类型等;
-cCDROM,--cdrom=CDROM:光盘安装介质;
-lLOCATION,--location=LOCATION:安装源URL,支持FTP、HTTP及NFS等,如
ftp
:
//172
.16.0.1
/pub
;
--pxe:基于PXE完成安装;
--livecd:把光盘当作LiveCD;
--os-
type
=disTRO_TYPE:操作系统类型,如linux、unix或windows等;
--os-variant=disTRO_VARIANT:某类型操作系统的变体,如rhel5、fedora8等;
-xEXTRA,--extra-args=EXTRA:根据--location指定的方式安装GuestOS时,用于传递给内核的额外选项,例如指定kickstart文件的位置,--extra-args
"ks=http://172.16.0.1/class.cfg"
--boot=BOOTOPTS:指定安装过程完成后的配置选项,如指定引导设备次序、使用指定的而非安装的kernel
/initrd
来引导系统启动等;例如:
--bootcdrom,hd,network:指定引导次序;
--bootkernel=KERNEL,initrd=INITRD,kernel_args=”console=
/dev/ttyS0
”:指定启动系统的内核及initrd文件;
◇存储配置:指定存储类型、位置及属性等;
--disk=disKOPTS:指定存储设备及其属性;格式为--disk
/some/storage/path
,opt1=val1,opt2=val2等;常用的选项有:
device:设备类型,如cdrom、disk或floppy等,默认为disk;
bus:磁盘总结类型,其值可以为ide、scsi、usb、virtio或xen;
perms:访问权限,如rw、ro或sh(共享的可读写),默认为rw;
size:新建磁盘映像的大小,单位为GB;
cache:缓存模型,其值有none、writethrouth(缓存读)及writeback(缓存读写);
format
:磁盘映像格式,如raw、qcow2、vmdk等;
sparse:磁盘映像使用稀疏格式,即不立即分配指定大小的空间;
--nodisks:不使用本地磁盘,在LiveCD模式中常用;
◇网络配置:指定网络接口的网络类型及接口属性如MAC地址、驱动模式等;
-wNETWORK,--network=NETWORK,opt1=val1,opt2=val2:将虚拟机连入宿主机的网络中,其中NETWORK可以为:
bridge=BRIDGE:连接至名为“BRIDEG”的桥设备;
network=NAME:连接至名为“NAME”的网络;
其它常用的选项还有:
model:GuestOS中看到的网络设备型号,如e1000、rtl8139或virtio等;
mac:固定的MAC地址;省略此选项时将使用随机地址,但无论何种方式,对于KVM来说,其前三段必须为52:54:00;
--nonetworks:虚拟机不使用网络功能;
◇图形配置:定义虚拟机显示功能相关的配置,如VNC相关配置;
--graphicsTYPE,opt2=val2:指定图形显示相关的配置,此选项不会配置任何显示硬件(如显卡),而是仅指定虚拟机启动后对其进行访问的接口;
TYPE:指定显示类型,可以为vnc、sdl、spice或none等,默认为vnc;
port:TYPE为vnc或spice时其监听的端口;
listen:TYPE为vnc或spice时所监听的IP地址,默认为127.0.0.1,可以通过修改
/etc/libvirt/qemu
.conf定义新的默认值;
password:TYPE为vnc或spice时,为远程访问监听的服务进指定认证密码;
--noautoconsole:禁止自动连接至虚拟机的控制台;
◇设备选项:指定文本控制台、声音设备、串行接口、并行接口、显示接口等;
--serial=CHAROPTS:附加一个串行设备至当前虚拟机,根据设备类型的不同,可以使用不同的选项,格式为“--serial
type
,opt2=val2,...”,例如:
--serialpty:创建伪终端;
--serialdev,path=HOSTPATH:附加主机设备至此虚拟机;
--video=VIDEO:指定显卡设备模型,可用取值为cirrus、vga、qxl或vmvga;
◇虚拟化平台:虚拟化模型(hvm或paravirt)、模拟的cpu平台类型、模拟的主机类型、hypervisor类型(如kvm、xen或qemu等)以及当前虚拟机的UUID等;
-
v
,--hvm:当物理机同时支持完全虚拟化和半虚拟化时,指定使用完全虚拟化;
-p,--paravirt:指定使用半虚拟化;
--virt-
type
:使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用’virshcapabilities’命令获取;
◇其它:
--autostart:指定虚拟机是否在物理启动后自动启动;
--print-xml:如果虚拟机不需要安装过程(--
import
、--boot),则显示生成的XML而不是创建此虚拟机;默认情况下,此选项仍会创建磁盘映像;
--force:禁止命令进入交互式模式,如果有需要回答
yes
或no选项,则自动回答为
yes
;
--dry-run:执行创建虚拟机的整个过程,但不真正创建虚拟机、改变主机上的设备配置信息及将其创建的需求通知给libvirt;
-d,--debug:显示debug信息;
|
尽管virt-install命令有着类似上述的众多选项,但实际使用中,其必须提供的选项仅包括--name、--ram、--disk(也可是--nodisks)及安装过程相关的选项。此外,有时还需要使用括--connect=CONNCT选项来指定连接至一个非默认的hypervisor。
2、virt-install创建虚拟机
下面的示例将创建一个名为centos6的虚拟机,磁盘映像文件为稀疏模式的格式为qcow2且总线类型为virtio,安装过程不启动图形界面(--nographics),但会启动一个串行终端将安装过程以字符形式显示在当前文本模式下,虚拟机显卡类型为cirrus,这里的centos6.qcow2镜像文件会自动创建,不需要收动进行创建,每个虚拟机创建后,其配置信息保存在/etc/libvirt/qemu目录中,文件名与虚拟机相同,格式为XML。
1
2
3
4
5
6
7
8
9
10
11
12
|
virt-
install
\
--connectqemu:
///system
\
--virt-
type
kvm\
--namecentos6\
--vcpus2,maxvcpus=4\
--
ram
1024\
--diskpath=
/images/centos6
.qcow2,size=20,bus=virtio,sparse\
--cdrom
/tmp/CentOS-6
.5-x86_64-minimal.iso\
--networkbridge=br0,model=virtio\
--nographics\
--force\
--video=cirrus
|
我这里使用的“--nographics”字符界面安装,可是走到一个地方一直卡着,后面我还是去掉这个参数使用图形化界面安装,需要安装“yum install virt-viewer”图形控制界面。
下面是真正的图形界面,如果提示已经存在,我们可以先停掉虚拟机“virsh destroy centos6”,然后删掉虚拟机配置文件/etc/libvirt/qemu/centos6.xml或者“virsh undefine centos6”。
六、使用virt-manager创建虚拟机
这个是图形化的安装,非常简单,这里不再过多介绍,按理请查看我的Xen虚拟机创建过程的文档。
查看virt-manager创建过程请点击
七、virsh命令简介
1、virsh的使用方法
基本语法
virsh的基本用法如下: virsh [COMMAND] [ARGS...]
另外需要注意的是,virsh提供两种执行模式:”直接模式(Direct Mode)”与”互动模式(Interactive Mode)”。在直接模式里,你必须在Shell中以参数、自变量的方式来执行virsh,如果在互动模式中,则virsh会提供一个提示字符串,你可以在该提示字符串后,输入要执行的命令。如果执行virsh没有指定任何参数或自变量则默认就是进入互动模式。 与xm一样,COMMAND也是 virsh提供的命令,常用的命令如下表所示。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
命令说明
help显示该命令的说明
quit结束virsh,回到Shell
connect连接到指定的虚拟机服务器
create启动一个新的虚拟机
destroy删除一个虚拟机
start开启(已定义的)非启动的虚拟机
define从XML定义一个虚拟机
undefine取消定义的虚拟机
dumpxml转储虚拟机的设置值
list列出虚拟机
reboot重新启动虚拟机
save存储虚拟机的状态
restore回复虚拟机的状态
suspend暂停虚拟机的执行
resume继续执行该虚拟机
dump将虚拟机的内核转储到指定的文件,以便进行分析与排错
shutdown
关闭虚拟机
setmem修改内存的大小
setmaxmem设置内存的最大值
setvcpus修改虚拟处理器的数量
|
而virsh命令语法的ARGS则是COMMAND搭配的参数。不同的COMMAND可能需搭配不同的参数,至于什么COMMAND可以搭配哪些参数,我将会在对各功能的介绍中提到。总地来说,如果ARGS需指定虚拟机,你可以使用下列的格式指定是哪一个虚拟机器,虚拟机的名称,虚拟机启动后的标识符,虚拟机的 UUID。 以下就是使用 virsh 的示范。
[root@linux~]
#virsh?①
[help]以取得命令的求助画面
[quit]离开
virsh
#list
IdNameState
----------------------------------------------------
14centos6running
virsh
#quit②
[root@linux~]
#virshlist③
IdNameState
----------------------------------------------------
14centos6running
由于virsh与xm的部分功能相同,因此,本节仅介绍virsh与xm的不同之处。查看Domain信息virsh 可以查看虚拟机的相关信息,你只需在执行virsh时配合如表中的命令。
查看Domain信息执行的命令
1
2
3
4
5
6
|
命令说明
domid查看虚拟机的标识符
domname查看虚拟机的名称
domuuid查看虚拟机的UUID
domstate查看虚拟机目前的状态
dominfo查看虚拟机的信息
|
执行上述的每一个命令时,你都必须指定虚拟机的名称、标识符和UUID。以下是我使用virsh查看虚拟机信息的示范。
2、转储区域配置
除了上述的功能外,virsh也允许把某一个虚拟机目前的设置值存储下来。virsh把设置值存储下来的动作,称为”转储(Dump)”。
转储虚拟机设置值有什么好处?
好处很多,我至少想到两个。首先,转储虚拟机的设置值可以让你把某一个虚拟机的设置备份下来,以供日后恢复该设置配置。其次,如果要用 virsh 来启动一个虚拟机,你必须指定该虚拟机的配置文件。因此,如果你希望用virsh 来管理所有的虚拟机,
那么请务必把每一个虚拟机的设置值转储下来后妥善保存。
如果要转储虚拟机的设置值,你可以执行:
1
|
virshdumpxmlDOMAIN
|
其中的DOMAIN就是要转储的虚拟机。你可以使用虚拟机的名称、标识符或是UUID来指定要转储到哪一个虚拟机。
CentOS 6.5搭建KVM服务器平台
1.什么是虚拟化
通过虚拟化技术将一台计算机虚拟成多台逻辑上的计算机。每个逻辑上的计算机可以安装不同的操作系统,这些系统之间互相独立并且互不干扰
2.什么虚拟机
一个软件平台,如同一个物理机上面运行操作系统和应用程序
3.目前主流的虚拟化产品
VMware
Micosoft
Citrix
RedHat
4.KVM网络设置
NAT模式(默认)
KVM虚拟机网卡选择NAT,网关指向HOST主机的内网192.168.1.1,它就可以直接访问外网。
路由模式(HOST开启路由转发功能)
HOST主机充当路由器,Guest主机网关指向HOST主机相连接网卡的ip,可以把数据包发送至外网,但是外网主机如果回应数据包,它必须有到达Guest主机网络的路由才行
隔离模式
连接在隔离模式交换机上的所有主机可以互相通信,但是无法访问外界网络
桥接模式
Guest主机和HOST主机连接在相同的交换机上,只要ip地址在同一网段,那么Guest主机和HOST主机所在网络的所有主机都能直接通信
实验(一)
实验目的:基于CentOS 6.5构建KVM服务器平台
实验环境:
KVM虚拟化服务器,真机或高配虚拟机(内存>4G)
主机名:fxhlj
分区示例:
/boot 200MB、SWAP 8GB、/ 100GB、
/data 30GB (逻辑卷 /data/vg_data/lv_data)
操作系统:CentOS 6.5 ==> 关闭 iptables 防火墙、关闭SELinux机制,进图形桌面
==> 关闭 NetworkManager 服务
实验安装KVM虚拟化条件:
首先cpu要支持虚拟化(Intel是vmx,AMD是svm)
Intel(R) Virtualization Tech [Enabled]
安装 KVM 虚拟化相关软件、启用服务
1.查看YUM是否可用
2.查看软件包组(修改语言为英文)
3.安装软件包组
4.启动服务
5.调用图形界面
在真实机上操作(输入此命令后会出现以下界面)
@H_301_88@
实验(二)
实验目的:HOST网络及存储的配置
添加virbr1隔离接口
1."虚拟系统管理器" --> "编辑" --> "Connection Details"
。。。。 单击"+"号。。。。network1。。。。 192.168.4.0/24
不要启用KVM自带的DHCP
!!!! 避免VMware Workstation的虚拟网卡的冲突
出现以下界面(点击虚拟 网络)点击下面 的+号
点击前进
添加网络名称network1按前进
选择虚拟网络为1网段的,主要和你的PXE环境在一个网段,如果不在一个网段是无法安装的,按前进。
默认不要开启DHCP功能避免VMware Workstation的虚拟网卡的冲
按前进创建一个隔离的网络
点击完成。
查看创建 的网络信息。
2.确认新添加的虚拟网卡
3.建立桥接网卡 br0(默认桥接是没有,需要自己手动去建立)
4.准备虚拟机磁盘 (为虚拟机准备存储空间)。
要求:1.在KVM服务器上新建一个28GB的分区
2.将其格式化,并挂载为/data
3.使用dd创建一个10GB的虚拟磁盘文件
查看磁盘分区的情况
为磁盘分区
创建 逻辑分区为28G
创建 /data目录,把逻辑分区挂载到该目录下,随开机而自动挂载。
在/data/下创建一个目录为images,用来存放虚拟机,并且在images目录下创建一个文件为10G用来存放第一个虚拟机。
实验(三)
实验目的:为虚拟机安装操作系统,通过PXE安装操作系统。
打开虚拟系统管理器
新建虚拟机
由于我用的虚拟机只有1G的内存,所以选择512M内存。
选择隔离的网络,点击 完成。
安装PXE系统时出现的错误,解决方案(DHCP获取不到IP地址),从新启动DHCP服务。
显示错误加载不到tftp文件,更改网络为虚拟隔离网络,调整KS文件的内容,比如分区等信息,就可以解决。
最后出现自己编辑的菜单就可以直接安装系统。
选择安装系统后加载启动文件和内核文件(如下图所示)。
进入安装PXE环境后,系统会自动检查所需要的内核文件和引导文件。
备注:(1.要注意查看自己的KS文件的内容,尤其是硬盘是否和你给虚拟机的硬盘是否一致,如果不一致更改KS文件的硬盘大小和你自己给的虚拟机的硬盘要一致。2要检查/var/lib/tftpboot/pxelinux.cfg/default文件内容KS文件是否是你所需的KS文件)。
实验(四)
实验目的:在Host OS ssh Guest OS不需要输入密码
管理机(私钥) --> KVM服务器(公钥)
1. 在物理机上创建SSH秘钥对,并部署公钥文件
2. 把生成的公钥上传到虚拟机里面去192.168.1.30为虚拟机
3.测试
在物理机上做一个别名goa="ssh -X root@192.168.1.30"
直接物理机上用goa直接可以进入虚拟机
CentOS 7 kvm虚拟化管理平台WebVirtMgr部署
安装工具
环境:centos7
搭建:Nginx Supervisor libvirtd WebVirtMgr
说明:纯环境可以直接按照步骤走
安装以下工具
关闭防火墙与selinux
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config
配置网络源
curl -o /etc/yum.repos.d/CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo yum -y install epel-release vim wget net-tools unzip zip gcc gcc-c++
kvm安装
yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils libguestfs-tools
安装 WebVirtMgr
GITHUB 下载地址:github.com/retspen/webvirtmgr.git (如:git 下载速度慢可以上github上传至服务器即可)
在 /var/www/目录下 安装 WebVirtMgr
git clone git://github.com/retspen/webvirtmgr.git cd webvirtmgr pip install -r requirements.txt
配置 Django 环境
./manage.py syncdb ./manage.py collectstatic ./manage.py createsuperuser
配置 Nginx
- yum安装Nginx
yum install -y Nginx
- 在 /etc/Nginx/conf.d/ 目录下添加
webvirtmgr.conf
vi /etc/Nginx/conf.d
/webvirtmgr.conf
server { listen 80 default_server; server_name $hostname; #access_log /var/log/Nginx/webvirtmgr_access_log; location /static/ { root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var expires max; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; client_max_body_size 1024M; # Set higher depending on your needs } }
- 修改默认配置
/etc/Nginx/Nginx.conf
vi /etc/Nginx/Nginx.conf
# For more information on configuration, see: # * Official English Documentation: http://Nginx.org/en/docs/ # * Official Russian Documentation: http://Nginx.org/ru/docs/ user root; # 如果不是公有云,将 user 改为 root,否则需要花费大量时间解决权限问题。 worker_processes auto; error_log /var/log/Nginx/error.log; pid /run/Nginx.pid; # Load dynamic modules. See /usr/share/Nginx/README.dynamic. include /usr/share/Nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/Nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/Nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/Nginx/conf.d directory. # See http://Nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/Nginx/conf.d/*.conf; # 注释掉该文件中的所有 server 配置,注意不要误将最后一个 } 注释掉了 # server { # listen 80 default_server; # listen [::]:80 default_server; # server_name _; # root /usr/share/Nginx/html; # # # Load configuration files for the default server block. # include /etc/Nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/Nginx/html; # # ssl_certificate "/etc/pki/Nginx/server.crt"; # ssl_certificate_key "/etc/pki/Nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/Nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
-
重启 Nginx 并设置开启启动:
systemctl restart Nginx && systemctl enable Nginx
-
修改 SElinux policy:
/usr/sbin/setsebool httpd_can_network_connect true
配置 Supervisor
安装Supervisor
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python easy_install supervisor
- 将
/var/www/webvirtmgr
拥有者指定为 root:chown -R root:root /var/www/webvirtmgr
[root@localhost www]# ls -l total 4 drwxr-xr-x 21 root root 4096 Jul 18 07:01 webvirtmgr
将 user 指为 root 是为了方便权限设置,否则需要花费大量时间调试权限带来的问题,公有云不要讲 user 指为 root,否则会带来安全风险。
- 添加文件
/etc/supervisord.d/webvirtmgr.ini
vi /etc/supervisord.d/webvirtmgr.ini
[program:webvirtmgr] command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py directory=/var/www/webvirtmgr autostart=true autorestart=true logfile=/var/log/supervisor/webvirtmgr.log log_stderr=true user=root [program:webvirtmgr-console] command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console directory=/var/www/webvirtmgr autostart=true autorestart=true stdout_logfile=/var/log/supervisor/webvirtmgr-console.log redirect_stderr=true user=root
- 在防火墙上开启 80(Web 访问端口) 和 6080(控制台 vnc 端口)
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=6080/tcp --permanent firewall-cmd --reload [root@localhost www]# firewall-cmd --zone=public --list-ports 80/tcp 6080/tcp
- 重启 supervisor 并设置开机启动:
systemctl restart supervisord && systemctl enbale supervisord
配置 SSH Authorization
-
登录 root 账号:
su root
-
生成 SSL key:
ssh-keygen
-
修改 SSH 配置文件
touch ~/.ssh/config && echo -e "StrictHostKeyChecking=no\nUserKNownHostsFile=/dev/null" >> ~/.ssh/config chmod 0600 ~/.ssh/config
-
从 WebVirtMgr 服务器上复制 public key 到 KVM 服务器上,如果装在同一台设备上,就写设备自己的 IP 地址:
ssh-copy-id -P 22 root@kvm-host
-
添加文件
/etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[Remote libvirt SSH access] Identity=unix-user:root Action=org.libvirt.unix.manage ResultAny=yes ResultInactive=yes ResultActive=yes
- 重启 libvirtd:
systemctl restart libvirtd
CentOS 7 KVM虚拟机实战
uname -a
3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
检查硬件是否支持虚拟化:
egrep "vmx|svm" /proc/cpuinfo #vmx:Intel svm:AMD
安装KVM和相关工具:
yum install -y qemu-kvm bridge-utils libvirt virt-install
lsmof | grep kvm #验证安装结果
systemctl start libvirtd #启动libvirtd服务
systemctl status libvirtd #查看libvirtd服务启动状态
systemctl is-enabled libvirtd #查看libvirtd服务是否开机自动运行
systemctl enadble libvirtd #设置libvirtd服务开机自动运行
配置网桥:
1、创建网桥ifcfg-br0:
TYPE=Bridge
BOOTPROTO=static
IPV4_FAILURE_FATAL=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.0.16
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=119.29.29.29
DNS2=223.5.5.5
2、配置绑定的物理网卡ifcfg-eth0:
TYPE=Ethernet
BOOTPROTO=none
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=fe2685ec-266a-4bc8-a003-52198570a913
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
3、重启网络服务:
systemctl restart network.service
4、验证结果:
ip addr show
创建虚拟机:
1、创建系统安装ISO文件目录和虚拟机镜像IMG文件目录,并把系统安装文件放入iso目录
mkdir -p /home/iso /opt/image
2、配置防火墙,开放VNC连接端口
firewall-cmd --zone=public --add-port=5900/tcp --permanent
firewall-cmd --reload
3、创建虚拟机:
qemu-img create -f qcow2 /opt/image/win2008.img 100g #创建IMG文件
virt-install -n win2008 --disk /opt/image/win2008.img --network bridge=br0 \
--os-variant=win2k8r2 --cdrom /home/iso/cn_windows_server_2008_r2.iso \
--vnc --vncport=5900 --vnclisten=0.0.0.0 --vcpu=24 --ram 49152
4、通过RealVNC远程连接虚拟机,完成虚拟机系统的安装
虚拟机管理:
1、查看安装的虚拟机列表:
virsh list
2、修改虚拟机配置文件,使之生效的方法:
方法1、virsh shutdown <虚拟机名称> #关闭虚拟机
virsh edit <虚拟机名称> #编辑配置文件
virsh start <虚拟机名称> #启动虚拟机
方法2、virsh destroy <虚拟机名称> #强制关闭虚拟机,相当于拨电源线
virsh edit <虚拟机名称> #编辑配置文件
virsh define /etc/libvirt/qemu/<虚拟机名称>.xml #重新加载虚拟机XML配置文件
virsh start <虚拟机名称> #虚拟机开机
3、重启虚拟机:
virsh reboot <虚拟机名称>
4、虚拟机克隆:
virsh shutdown <源虚拟机名称>
virt-clone -o <源虚拟机名称> -n <目标虚拟机名称> -f /opt/img/<目标虚拟机名称>.img
virsh start <目标虚拟机名称> #启动目标虚拟机,修改hostname、IP信息后重启
5、虚拟机迁移:
1、将:
/opt/img/<源虚拟机名称>.img
/etc/libvirt/qemu/<源虚拟机名称>.xml
复制到目标服务器相应目录下。以下操作在目标服务器上执行。
2、编辑/etc/libvirt/qemu/<虚拟机名称>.xml,修改
<name>win2008</name>
<uuid>5284e097-373e-4e6e-85db-ef5635240023</uuid>
检查:
<disk type=‘file‘ device=‘disk‘>
<driver name=‘qemu‘ type=‘qcow2‘/>
<source file=‘/opt/image/win2008.img‘/>
<target dev=‘hda‘ bus=‘ide‘/>
<address type=‘drive‘ controller=‘0‘ bus=‘0‘ target=‘0‘ unit=‘0‘/>
</disk>
3、重新定义虚拟机
virsh define /etc/libvirt/qemu/<虚拟机名称>.xml
4、开机,修改hostname、ip信息后重启
virsh start <虚拟机名称>
6、虚拟机运行Linux系统时,配置从宿主机上直接进入虚拟机控制台:
1、进入虚拟机,修改/etc/default/grub:
GRUB_disTRIBUTOR="$(sed ‘s,release .*$,g‘ /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_disABLE_SUBMENU=true
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb"
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200"
GRUB_disABLE_RECOVERY="true"</pre>
2、更新启动文件,然后重启 grub2-mkconfig -o /boot/grub2/grub.cfg 3、在宿主机上登录虚拟机,退出登录:Ctrl+] virsh console think8848-kvmbase
7、宿主机进入系统自动运行虚拟机virsh autostart <虚拟机名称>
关于三种方式在CentOS 7搭建KVM虚拟化平台和centos7安装kvm虚拟化的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于CentOS 6.5安装KVM虚拟化、CentOS 6.5搭建KVM服务器平台、CentOS 7 kvm虚拟化管理平台WebVirtMgr部署、CentOS 7 KVM虚拟机实战等相关内容,可以在本站寻找。
本文标签: