强调个事,就是使用KVM虚拟机空间大小的问题。
LVM2的快照是一个方法,不过个人觉得不太合适。因为LVM的快照是基于LVM原始的系统,如果原始系统有问题,这个快照就用不了了,依赖性太强。
但使用LVM2的快照来做虚拟化的系统是非常的不错,一方面是因为部署的快(一般创建快照也是分分钟的事),另一方面是空间大大小缩小(因为它是使用原始系统的大部分的数据)。
所以在使用时可以衡量一下它的风险。
另外一个就是使用自带的方式,在创建一个虚拟系统文件时,使用的是raw格式。因为我这不需要使用KVM虚拟机快照,所以不使用Qcow2。官方的建议也是尽量不使用,use raw LVs whenever possible. Qcow2 gives overhead. Files on a FS also have overhead。
这里创建完raw格式后,真正占用硬盘空间是随时使用的增加而增加。比如你刚刚创建raw格式的文件为50G,但它真正占用硬盘空间实际为0,但在系统显示的是50G,等你装好系统啊、软件啊什么的也不过10G左右,这个时候显示的还是50G,但真正占用硬盘空间实际为10G左右。这样在最初时可以创建大一些的文件,以后也不用再扩展了。
qemu-img create -f raw base.img 50G 创建50G文件 raw格式
qemu-img info base.img 查看base.img相关信息
如果最初创建的文件是大文件,但在cp这个raw格式文件时,是真正占用空间的。也就是说如果最初创建50G的raw,以后cp这个文件时它实际占用硬盘空间就是50G,无论你使用不使用它。所以如果以最初的系统为模板时,最好是clone,不要使用cp。
virt-clone --connect=qemu:///system -o base.img -n php.img -f /var/lib/libvirt/images/php.img -o表示旧的虚拟机名称,-n表示新的虚拟机名称,-f表示新的虚拟机路径。
这样php.img就会是显示50G,实际用多少就是多少 。
这只是在一台服务器上,如果是在另外一台服务器上,一般大家的想法是直接cp过去。如果这样就像我刚才说的,直接就占用50G空间了,所以还是建议clone一下。很简单,把B挂到A上,在A上clone一个,路径是NFS那个挂载的地。在B上改下虚拟机的配置文件即可。 这个比较实用,就是麻烦一点。