一、详解
1、虚拟化产品对比表
2、KVM简介
KVM全称Kernel-based Virtual Machine,翻译过来是基于内核的虚拟机,实际它是Linux内核的一个模块。该模块将Linux变为一个Hypervisor,由Quramnet开发,支持x86、s390、Powerpc等CPU。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
3、kvm架构
从GUI到Linux内核,包括以下5个组件:
1)virt-manager
用来管理VM的GUI/CUI用户接口;它使用libvirt API调用VM的各项功能
2)libvirt
工具集及接口,作为较通用的服务器虚拟化软件,支持xen、vmware vSpher,qemu/KVM。
3)qemu
qemu是KVM内核模块交互的模拟器,处理多种客户机系统请求的I/O;一个qemu进程对应一个客户机系统
4)KVM模块
用于处理VM Exits和VM Entry指令
5)Linux内核
处理客户机系统调度
二、操作
1、安装准备工作
1)如果在workstation上做实验,应当将处理的虚拟化功能打开
如果真实生产环境应当修改BIOS,开启虚拟化
2)你的KVM需要有足够的内存和磁盘空间
当然具体情况具体对待,磁盘和内存根据你的KVM上运行的虚拟机数量有关,我这里只是作实验
3)开机后,执行如下命令可以查看cpu是否支持虚拟化
2、部署&在kvm安装虚拟机
通过vnc连接装机界面
1)libguestfs-tools包
libguestfs -tools是一组Linux下的C语言的API,用来访问虚拟机的磁盘映像文件。该工具包内包含的工具有virt-cat、virt-df、virt-list、virt-copy-in、virt-copy-out、virt-edit、guestfs、guestmount、virt-list-filesystems、virt-list-partitions等工具。该工具可以在不启动KVM guest主机的情况下,直接查看guest主机内的文内容,也可以直接向img镜像中写入文件和复制文件到外面的物理机,也可以将guest的镜像文件挂载,功能相当强大。
2)libvirt包
libvirt是用于管理虚拟化平台的开源的API(libvirt API),后台程序(libvirtd进程)和管理工具(virsh工具集)。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。这些API在云计算的解决方案中广泛使用。libvirtd进程主要实现远程代理、本地环境初始化、根据环境注册各种Driver(qemu、xen、storage)的实现。virsh工具集主要用于管理、操作虚拟主机。
3)virt-install包
这个包主要安装了virt-install、virt-clone和virt-xml命令,分别用于安装虚拟机系统、克隆虚拟机和编辑虚拟机的xml配置文件。
3、virsh工具使用
4、虚拟机的克隆和快照
虚拟机通过以上命令可以克隆,但是不建议这样做。
我们可以先创建一个虚拟机的磁盘文件,然后找到/etc/libvirt/qemu,将其中已经存在的虚拟机配置文件(xml结尾)复制一份出来,然后编译复制出来的文件,将虚拟机名、虚拟机磁盘文件位置、uuid、mac地址修改一下,最后通过define命令定义虚拟机,完成复制
5、kvm磁盘管理(qemu-img的使用)
1)kvm支持的磁盘类型
raw:这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像;它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案,然而也正因为它不存储元数据,因此不能支持某些高级特性,比如快照和压缩等。格式简单,容易转换为其他格式;需要文件系统的支持才能支持sparse file。
qcow2:相对于raw来讲,性能较低。但是特点就是支持压缩、快照、克隆。
2)qcow2盘的支持的磁盘类型
稀疏盘:与实盘相反
差异盘:允许以一个虚拟机磁盘为底盘,可节省空间,当相应的,I/O性能下降
实盘:分配所有磁盘空间并置零,预分配后的虚拟磁盘属于厚盘
3)操作
4)通过差异盘创建虚拟机
(和上面的一样,需要修改复制的xml文件)
6、kvm文件管理
该部分是通过不开启虚拟机的情况下,通过libguestfs-tools对虚拟机的文件进行操作