前面部署EVE-NG的时候(1分钟时间快速学习一下使用ISO镜像部署EVE-NG),因为自己创建镜像(没想到啊,竟然万物皆可EVE-NG!),搜索了很多方法,这中间就发现了EVE-NG的底层竟然是KVM(Kernel-based Virtual Machine)的虚拟化。
那我们能不能自己安装一台KVM虚拟化服务器呢?
当然可以,我们首先要安装一台CentOS 7.9-2009的虚拟机。
正常来讲,KVM虚拟化是需要对虚拟机开启硬件虚拟化、IOMMU和性能计数器这些的,我们第一次部署先不开启,看看有什么异常。
主机配置如下:
在安装操作系统时,我们不再使用最小化安装了,而是选择“带GUI的服务器”,环境中勾选“虚拟化客户端”、“虚拟化Hypervisor”和“虚拟化工具”。
其他保持正常,直至完成安装(CentOS操作系统最小化安装部署)。
然后我们看一下CPU是否支持虚拟化,一般Intel平台为VMX(virtual machine extension),AMD平台为SVM(Secure Virtual Machine extension)。我是Intel的服务器,所以使用如下命令:
cat /proc/cpuinfo | grep vmx
可以看到是没有回显的。然后我们把虚拟机关机,打开硬件虚拟化、IOMMU和性能计数器,再重新开机。
再次查看CPU是否支持虚拟化,发现回显中已经带有vmx了。
当然,如果是AMD的虚拟化平台,就要使用命令cat /proc/cpuinfo | grep svm了。
看一下虚拟化组件libvirt的服务器状态。
systemctl status libvirtd
可以看到,服务运行正常,并且已经是开机自启状态。
使用lsmod命令查看Linux内核中kvm模块的加载情况。
lsmod | grep kvm
查看主机网卡信息。
可以看到,除了主机的正常网卡ens192,还多了一个virbr0的虚拟网卡,这个网卡就类似Vmware的虚拟交换机,供KVM创建的虚拟机上网用的。
然后我们在“应用程序”中找到“虚拟系统管理器VMM”。
在“编辑”→“连接详情”中,点击“虚拟网络”,就能看到virbr0所对应的虚拟网络了。
同样,点击“存储”,我们可以看到当前的存储路径为/var/lib/libvirt/images/,可用空间为66.71 GB,已用空间为4.25 GB。
和主机根目录的磁盘使用情况一致。
但是概述页面的CPU使用率和内存使用率却和系统监视器里面的数据存在不小差异,单拿内存来说,大小都是31.3 GB,但是VMM中却显示为0 MB已使用。
最后看一下“编辑”→“首选项”下面的“新建虚拟机”页面,系统默认的存储格式为qcow2,是不是很熟悉?是不是和EVE-NG中的一样?
前面我们安装了KVM主机(KVM部署初体验),接下来肯定是要简单操作一下,体验体验如何使用。
上次我们是在主机的桌面环境中打开的“虚拟系统管理器VMM”,如果要再虚拟机里创建虚拟,可能需要通过远程桌面来操作,可以参考(如何给最小化安装的主机装个远程桌面?)。
当然,我们还可以在通过SSH登录到主机之后,使用virt-manager命令远程打开“虚拟系统管理器VMM”。
我们今天就从这个页面中,在CentOS系统中再嵌套安装一台CentOS系统。
直接点击左上角图标“创建新虚拟机”,第一步选择默认的“本地介质安装”。
接下来点击“浏览”选择要使用的ISO镜像文件。
可以看到,我们现在整个存储空间都是空空的,所以先创建一个“存储池”。
记下下图中这个存储路径/var/lib/libvirt/images/ISOPool,当然也可以自定义路径,之后点击“完成”。
然后我们使用MobaXterm向这个路径中上传一个安装镜像,上传完成后,点击存储卷中的刷新按钮,就能看到上传的镜像文件了。(显示的镜像大小可能不准确,请以命令行中显示的为准)
然后我们选中镜像文件,并点击“选择卷”,返回到之前的界面继续安装。
配置虚拟机的CPU和内存。
分配了一个30 GB的硬盘,但是没有看到有精简置备的选项。
最后设置虚拟机名称,并选择网络。这里我勾选了“在安装前自定义配置”,看看还有什么可以更改的配置。
在“引导选项”这里,可以看到“引导设备顺序”并没有配置,我们先试试能不能正常引导。
点击左上角“开始安装”之后,直接进入到了安装页面。
中间竟然也出现了鼠标无法从监视器移出的问题,和VMWare一样,按Ctrl+Alt就可以了。
后面的安装过程就基本上没有差别了,不过安装过程中我们可以看看这个控制台页面。
第一个图标是“显示图形控制台”,也就是显示当前这个页面;第二个图标是“显示虚拟硬件详情”,也就是前面修改硬件设置的那个页面;后面的几个图标都是对虚拟的操作,分别是启动、挂起、关机,下拉菜单中还有重启、关机、强制重启、强制关机和保存等设置;最后一个图标是“管理虚拟机快照”,可以执行创建快照、恢复快照、删除快照等操作。
在VMM中,通过设置“查看”的内容,可以直观查看CPU使用率、内存使用率、磁盘I/O和网络I/O等信息。
创建完成后,我们看一下虚拟机的磁盘使用情况。
可以看到,直接一次性分配了30 GB的磁盘空间,使得磁盘使用率直接达到了55 %。那我们还能不能创建新的虚拟机了?再试一下。
在创建新的虚拟机时,仍然显示有66.7 GB的磁盘空间可用,但是从命令行看到的是只有33 GB可用,我们直接分配一个40 GB的硬盘。
NICE,报错了!继续创建时就提示需要的40 GB空间大于实际可用的33 GB空间了。
不是KVM不支持精简置备的磁盘,而是VMM
接上文(不会吧!KVM竟然不支持磁盘的精简置备!?),我们已经掌握了通过“虚拟系统管理器VMM”创建虚拟机的基本方法,但是遗留了一个问题,那就是通过页面创建没有“精简置备”磁盘的选项,导致磁盘空间占用非常高,无法创建足够数量的虚拟机。
简单回顾一下,这是我们虚拟机的虚拟磁盘,存储大小为30 GB,存储格式为qcow2,其他为默认选项,没有“精简置备”的选项。
从命令行查看文件,大小同样为30 GB。
我想在网上搜一下解决方案,没想到竟然直接搜到了我提出的问题,这也太尴尬了!
没办法,再翻翻其他的。
结合广大同学的建议,基本上都指向了一个改进方向,那就是命令行操作。但是Libvirt不能直接使用精简置备的卷来作为存储池,即创建逻辑卷时,没有精简置备的选项。
如果要将精简卷与libvirt一起使用,有两种可能的操作:
1、手动创建所需的精简卷,再将其挂载到虚拟机上;
2、创建一个大型精简卷,使用XFS对其进行格式化,挂载它并使用libvirt创建一个基于目录的存储池(将VM磁盘映像创建为XFS文件系统上的纯文件)。
主要操作命令是qemu-img,命令的介绍和用法请参考(qemu-img命令手册)。
使用qemu-img命令手册查看磁盘镜像文件信息。
可以看到,文件格式为qcow2,磁盘大小为30 GB,但是实际已使用空间为31 GB,估计是计算方法不一样导致的。
“compat”值为1.1,表示需要匹配QEMU版本为1.1或更新版本,才能支持镜像格式扩展。“lazy_refcounts”值为true,表示引用计数更新将被推迟,目的是避免元数据I/O并提高性能。
但是并没有精简置备相关的说明。
qemu-img命令手册中提到,“qcow”和“qcow2”格式支持压缩-c,我们测试一下。
qemu-img convert -c -O qcow2 centos7.0.qcow2 thin.qcow2
压缩之后的文件大小仅有800多兆,查看一下文件信息。
看一看到,“lazy_refcounts”的值发生了变化,变成了false,同时,磁盘使用大小变成了797 MB,锐减至只有之前的2.6 %。难道和这个属性相关?
我们把之前的硬盘移除,然后挂载这个新的硬盘看看能不能用。
可以看到,磁盘信息和之前没有差别。启动虚拟机试一下。
OK,可以使用。
也就是说,我们前面提到的第一种方法,手动创建所需的精简卷,再将其挂载到虚拟机上,这种方式是可行的。
然后看一下磁盘的大小变化。
上面是虚拟机开机的情况,下面是虚拟机关机的情况,可以看到,qemu-img命令读到的实际磁盘大小差别不大。但是在开机状态下,使用du命令读到的估计文件空间使用情况稍大,大概多300M左右,可能和虚拟内存相关。
当然,我们也可以在创建虚拟机之前手工创建磁盘文件,命令如下:
qemu-img create -f qcow2 test.qcow2 30G
lazy refcounts的值同样为false,我们试着创建一个值为true的镜像。
qemu-img create -f qcow2 -o compat=1.1 -o lazy_refcounts=on test2.qcow2 30G
OK,确认了,不是lazy refcounts属性的问题。
综合来看,确实是VMM或者说是Libvirt的问题,它不能直接创建精简置备的卷来作为存储池,而是需要先手动创建所需的精简卷,再将其挂载到虚拟机上。
总结,其实精简磁盘,性能应该是没有厚置备的好。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/6492.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~