介绍
什么是虚拟化?
通过虚拟化工具,将真实的硬件资源模拟划分成更少的虚拟硬件资源。
虚拟话技术分为软件模拟、虚拟化层翻译、容器虚拟化。
虚拟化层翻译分为
软件模拟出所有的硬件设备又称软件全虚拟化,例如:qemu
改造系统内核加以虚拟化层翻译,又叫半虚拟化,例如:Xen
硬件支持虚拟化层翻译,通过VMM(虚拟机监视器)将硬件分配和管理,又称硬件全虚拟化。
半虚拟化/全虚拟化
半虚拟化(para virtualization):半虚拟化宿主机(虚拟机承载主机/母机)和客户机(虚拟机/子机)都需要修改操作系统的内核,客户机知道宿主机的存在,两者之间需要协同合作,优化I/O协议使客户机操作系统可以和VMM紧密结合,近似于物理机的速度,因此性能高于全虚拟化。例如:Xen
全虚拟化(full virtualization):全虚拟化为客户机提供完整的虚拟硬件资源,宿主机与客户机都不需要修改系统内核,也不需要知道宿主机的存在。例如:KVM、VMware
KVM简介
KVM全称kernel virtual machine 是针对包含虚拟化扩展(Intel VT或AMD-V)的x86硬件上的完全原生的虚拟化解决方案。
是以色列Qumranet开发,基于Linux内核。2008年9月4日被RedHat收购。
rhel5/centos5默认是Xen,rhel6/centos6之后版本KVM代替Xen。
KVM架构
KVM驱动:作为Linux内核的一个模块,主要负责虚拟机的创建、虚拟内存分配、VCPU寄存器的读写以及运行。
Qemu:模拟虚拟机用户空间组件。
Libvirt/virsh:解决qemu效率不高,RedHat为KVM开发的辅助工具,例如virsh、libguestfs.
Virt-manager:是一套由Python开发编写的虚拟机管理图形界面,用户可以通过它操作不同虚拟机,利用libvirt的API实现。
qemu官网:http://www.qemu.org/
kvm官网:https://www.linux-kvm.org
KVM Server 部署
实验环境
系统版本:CentOS Linux release 7.2.1511 (Core)
系统位数:x86_64
硬件支持:CPU开启虚拟化支持
查看虚拟化支持
[root@kvm ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo
注意:信息有输出表示支持虚拟化,否则就不支持虚拟化,无法安装KVM。
关闭防火墙
[root@kvm ~]# systemctl stop firewalld.service
[root@kvm ~]# systemctl disable firewalld.service
关闭SELinux
[root@kvm ~]# setenforce 0 #临时关闭
[root@kvm ~]# sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config #永久
安装KVM Server
[root@kvm ~]# yum install -y virt-* libvirt bridge-utils qemu-img libvirt-client
说明:
libvirt-client #libvirt的客户端,宿主机关机通知虚拟机关机,避免强制关机造成数据丢失。
gpxe-roms-qemu #虚拟机IPXE启动固件,支持虚拟机的网络启动
libvirt-python #为python提供API
python-virtinst #一套python虚拟机安装工具
qemu-kvm #KVM在用户空间运行程序
virt-manager #基于libvirt的图形化虚拟机管理软件
libvirt #用于管理虚拟机,提供一套虚拟机管理API
virt-viewer #显示虚拟机的控制台console
virt-top #类似top,查看资源使用情况
virt-what #虚拟机内部执行,查看虚拟机的虚拟化平台
qemu-img #用于操作虚拟机硬盘景象的创建、查看、格式转化
检查KVM模块
[root@kvm ~]# lsmod |grep kvm
kvm_intel 170181 0
kvm 554609 1 kvm_intel
irqbypass 13503 1 kvm
创建软连接
[root@kvm ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
启动服务
[root@kvm ~]# systemctl start libvirtd
查看版本
[root@kvm ~]# virsh --version
2.0.0
[root@kvm ~]# virt-install --version
1.4.0
[root@kvm ~]# qemu-kvm --version
QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-126.el7_3.5)...
创建第一台虚拟机
创建虚拟机磁盘
[root@kvm ~]# qemu-img create /data/pool/windows_2k3 -f qcow2 -opreallocation=metadata 30G
创建虚拟主机
[root@kvm ~]# virt-install -n windows2k3 -r 1024 -vcpus=1 -c /data/iso/windows_server_2003.iso --disk path=/data/pool/windows_2k3,format=qcow2,size=30,bus=ide --hvm --os-type=windows --vnc --vncport 5901 --network network=default --force --autostart
说明:
-n:定义虚拟机在名称;
-r:设置分配1G内存大小;
-vcpus:设置分配1个CPU;
-c:指定系统安装镜像位置;
--disk path:指定虚拟机存储设备及其属性;
format:指定磁盘映像格式,如raw、qcow2、vmdk;
size:指定磁盘大小;
bus:指定磁盘类型,如ide、scsi、virtio;
--hvm:当物理机同时支持全虚拟化和半虚拟化时,指定使用全虚拟化;
--os-type=windows:指定系统类型,如Windows、linux;
--vnc :指定使用VNC服务;
--vncport :指定VNC端口;
--network network:指定网络类型为默认(NAT);
--force:禁止交互模式,自动回答yes;
--autostart:指定虚拟机随物理启动后自动启动;
注意:Windows类系统需要设置为ide,否则安装时提示找不到硬盘。
连接VNC
根据Windows server 2003系统安装步骤,进行系统安装。不做过多介绍。
虚拟机网络配置
检查网络
注意:还需要在虚拟机承载主机上配置相应的防火墙规则,才能实现访问网络,网上有很多教程,我就不再啰嗦了。
FQA
Q:如何开启虚拟化支持?
A:在BIOS中设置虚拟机开启。
Q:VMware如何开启虚拟化支持?
A:虚拟机设置--处理器--勾选虚拟化(虚拟机关机状态操作)。
Q:KVM 安装后无法查看到模块。
A:检查安装是否正确,或重启系统在查看模块。
Q:创建linux虚拟机时提示,无法找到硬盘。
A:原因可能是创建虚拟机磁盘格式为ide,重新创建格式为scsi格式的虚拟机磁盘。