宿主机:本次实验采用VMware创建的CentOS系统作为宿主机使用
也可以实际物理机作为宿主机
Host system requirements
1核心
2G内存
6G硬盘
KVM安装Linux虚拟机如CentOS 7,那么宿主机可用硬盘至少6G,如果还需要尝试安装Windows虚拟机,那可用硬盘需要20G。总之,在允许的条件下内存和硬盘越大越好。
KVM hypervisor requirements
[root@localhost ~]# lscpu
通过lscpu查看是否支持虚拟化,出现VT-x(或AMD -V)表示支持。如果未出现,宿主机为实际计算机,则需要进入bios修改;宿主机为VMware创建的虚拟机,则需要在虚拟机设置中按下图勾选虚拟化选项
[root@localhost ~]# egrep 'svm|vmx' /proc/cpuinfo
出现"flags: "的内容,且说明中包含vmx/smx则表示支持,两核则有两个flags
[root@localhost ~]# lsmod | grep kvm
[root@localhost ~]# yum grouplist
在未安装虚拟化软件组之前,可以看到在可用环境分组里面有一个虚拟化主机(Virtulization Host),提供kvm虚拟机支持,包括libvirtd服务等,除此之外,还有"Virtualization Client" "Virtualization Platform"等
[root@localhost ~]# yum -y groupinstall "Virtualization Host"
中文下可用yum -y groupinstall “虚拟化*”
[root@localhost ~]#systemctl restart libvirtd
[root@localhost ~]#systemctl status libvirtd
[root@localhost ~]#lsmod | grep kvm
如果kvm模块没有加载,可以使用“modprobe kvm”手动加载
在设置之前,可以用 firewall-cmd --list-all 查看防火墙设置,一般活动域是public,其中有一项为masquerade为关闭状态,需要通过以下命令将其打开
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-masquerade
[root@localhost ~]# firewall-cmd –reload
[root@localhost ~]#ip address show
将看到多出一张网卡virbr0,virbr0-nic是它的网络接口
至此,前期准备完成
补充知识:NAT,Bridge、virbr0、masquerade
以一台宿主机和若干虚拟机为背景假设,KVM有两种网络模型,分别是nat网络模式和bridge网络模式
nat网络模式:虚拟机就像一台独立的计算机,可以访问网内的任意计算机。虚拟机网卡和物理网卡的ip地址处于同一网段,有相同的子网掩码、网关、DNS参数等。原理是将虚拟网卡桥接到宿主机物理网卡上,物理网卡设置为混杂模式,可以监听多个ip地址。这种模式下,虚拟机和宿主机在网络关系上是平等的
bridge网络模式:虚拟机将宿主机作为路由器进行上网。虚拟机通过NAT(网络地址转换)功能,依赖于宿主机的网络进行上网,不需要配置掩码等
virbr0:virbr0是一种虚拟网卡。当启用libvirtd服务后宿主机上会生成一个virtual network swith(virbr0)。宿主机上的所有虚拟机都需要通过virbr0连接起来实现上网功能。virbr0默认使用nat模式,采用ip masquerade
masquerade:是snat的特例,实现自动化的snat。snat是指源地址目标转换,它将源地址替换成路由器的ip地址。在nat模式下,虚拟机经过masquerade转换为宿主机(路由器)的ip地址上网
virt-manager使用libvirtd的接口,从而管理kvm-qemu,进而管理虚拟机
virsh与virt-manager类似,但virt-manager是图形化界面安装,更容易上手,virsh是命令行安装,更常用
补充知识:虚拟化驱动IDE和virtio
virtio:虚拟化I/O,用于实现设备半虚拟化,能够提高设备访问性能。它运行在虚拟机中的部分称为前端驱动,负责对虚拟机提供统一的接口,运行在宿主机中的部分称为后端驱动,负责适配不同的物理硬件设备。支持热插拔(在系统运行过程中,运行增加内存等设备)。
IDE:全虚拟化驱动。不支持热插拔
virtio的“半虚拟化”省去了“全虚拟化”中异常捕获的环节,在IO性能上有所提升,使用的前提是客户机支持virtio驱动。
CentOS是默认集成了virtio,但window默认是IDE。后者性能差一些
经过前面的部署,宿主机已经具备了kvm虚拟化条件,下面将以kvm-qemu方式在宿主机上部署虚拟机
如果没有安装virt-manager工具,需要先安装一下
yum install -y virt-manager
然后打开virt-manager图形化工具界面
virt-manager
注意,如果需要使用virt-manager,那么宿主机应当具备图形化功能。以VMware安装的Centos 7作为宿主机为例,该宿主机在安装时应选择Gnome Desktop。纯字符界面(命令行)操作系统打开virt-manager时会报错或无反应。纯字符界面可以通过virsh安装虚拟机
前提条件:
宿主机上事先下载好CentOS 7的iso镜像
虚拟机所需内存2G
虚拟机所需磁盘6G
安装方式分别为:a. 本地安装介质(ISO映像或光驱);b. 网络安装,可为HTTP、FTP或者NFS;
c. 网络引导(PXE);d. 导入现有磁盘映像:云主机是导入现有磁盘映像
点击“Browse…”选择事先下载好的iso镜像
这里的设置可以随意点,后面安装虚拟机前有一个自定义界面,在那里进行确认和修改
点击Finish进入自定义界面
内存(Memory)
:可设置最大内存,增加灵活性。按自己需求设置
引导选项(Boot Option):不改动。如果安装时不小心勾选了“启动引导菜单”致使进不去系统,可以尝试关闭虚拟机中止安装,并勾选“启动引导菜单”和“IDE COROM 1”选项,并在安装完成重启时去掉这两个选项
VirtIO磁盘1(VirtIO Disk 1)
:虚拟磁盘的路径,默认在/lib/var/libvirt/images/xxxx-qcow2,qcow2表示qemu管理的设备。在这里可以选择半虚拟化驱动或全虚拟化驱动(高级选项),CentOS默认半虚拟化驱动virtio,不用修改
IDE CDROM 1:光盘,这里的磁盘总线“IDE”不要改动
NIC
:虚拟网络接口,连接到virbr0网卡。网络源:Virtual network ‘default’:NAT。设备型号,e1000和rtl8139都是全虚拟化驱动,这里选择默认的半虚拟化驱动virtio
Tablet:数位板。
Display Spice(显示协议Spice)
:Spice服务器为VNC服务器
,端口默认从5900开始分配,即勾选“自动
”。最好不设置密码。VNC服务器是远程控制服务器。键映射选择en-us
标红部分为需要特别注意,或者需要修改的部分
前提条件:
宿主机上事先下载好windows的iso镜像,本次实验使用Windows_Server_2008_R2_VL_x64_CN_2018.04.iso
虚拟机所需内存推荐8G,本次实验采用4G
虚拟机所需磁盘推荐40G,本次实验采用20G
Linux默认为半虚拟化安装,Windows则默认为全虚拟化安装,后者性能更低
Windows要实现半虚拟化安装,需要额外安装驱动程序
鉴于步骤繁多,于是单独用另一篇博客记录了如何安装半虚拟化驱动下的Windows虚拟机,详见:
https://blog.csdn.net/widsoor/article/details/126613628
这里补充一个更换磁盘镜像安装地点的方式,如果目的文件夹存储够,可以不用更换
所创建的磁盘镜像默认安装在 /var/lib/libvirt/images 目录下,如果该目录存储不够,而其他目录例如/home目录下存储较大,那么可以更改虚拟机的磁盘安装位置
先创建好要存储的目录,如mkdir /home/windowsimages
,然后以安装windows虚拟机为例,当达到创建虚拟机的第四步,设置磁盘镜像时