虚拟机镜像管理
学习目标:
能够了解KVM虚拟机支持的镜像格式
能够使用qemu-img实现镜像创建
能够使用qemu-img实现镜像查看
能够使用qemu-img实现镜像格式转换
能够了解后备镜像的作用
能够了解差量镜像的作用
能够基于后备镜像制作差量镜像
能够使用差量镜像创建KVM虚拟机
能够使用guestfish实现镜像管理
1、qemu支持的镜像格式:
qemu-img -h
Supported formats:vmdk、vdi、ssh等等。
vmdk VMware镜像格式
vdi VirtualBox镜像格式
raw 简单的二进制镜像文件,一次性占用分配的磁盘空间,支持稀疏文件。
qcow2 copy on write 写时复制技术 第二代的QEMU写时复制格式,QEMU推荐的镜像格式,支持稀疏文件,支持AES加密,支持基于zlib的压缩,支持snapshot,支持后备镜像。
稀疏文件就是在文件中留有很多空余空间,留备将来插入数据使用。如果这些空余空间被ASCII码的NULL字符占据,并且这些空间相当大,那么,这个文件就被称为稀疏文件,而且,并不分配相应的磁盘块。 这样,会产生一个问题,文件已被创建了,但相应的磁盘空间并未被分配,只有在有真正的数据插入进来时,才会被分配磁盘块,如果这时文件系统被占满了,那么对该文件的写操作就会失败。为防止这种情况,有两种办法:不产生稀疏文件或为稀疏文件留够空间。 在计算机科学方面,稀疏文件是文件系统中的一种文件存储方式,在创建一个文件的时候,就预先分配了文件需要的连续存储空间,其空间内部大多都还未被数据填充现在有很多文件系统都支持稀疏文件,包括大部分的Unix和NTFS 。 稀疏文件被普遍用来磁盘镜像,数据库快照,日志文件,还有其他科学运用上。
[root@vm1 ~]# dd if=/dev/zero of=/home/disk01.img bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 5.65007 s, 186 MB/s
后备镜像
前端镜像:qcow2,云平台大部分都是这个。
2、创建磁盘:
[root@localhost ~]#qemu-img create disk1.raw 10G #raw格式
[root@localhost ~]#qemu-img create disk2.qcow2 -f qcow2 10G #qcow2格式
raw是一个普通的二进制的文件格式,支持稀疏格式。一般我们不用这种格式。
vmdk:linux系统支持这种vmware软件,支持这种文件格式。
qcow2:支持更多的功能:加密功能,有集群功能和懒惰模式。
3、查看磁盘镜像:
[root@localhost ~]#qemu-img info disk1.raw
[root@localhost ~]#qemu-img info disk2.qcow2
4、磁盘镜像格式转换:
[root@localhost ~]#qemu-img info disk1.raw
[root@localhost ~]#qemu-img convert -p -f raw -O qcow2 disk1.raw disknew1.qcow2
说明:通过这种方法进行转换之后,数据是不会丢失的。
-p选项:是打印信息的内容。
qemu-img info disk1.img
qemu-img convert -p f raw -O qcow2 disk1.img disk1uqcow2.img
qemu-img info disk1uqcow2.img
转换的结果是复制了一份。
基于后备镜像转换为差量镜像:
多个虚拟机使用的差量镜像(前端镜像)都指向同一个后备镜像,默认从后备镜像读,写则到自己的差量镜像,后备镜像可以是raw或者qcow2,差量镜像只能是qcow2。
十台虚拟机,只要创建一台虚拟机,然后其他虚拟机通过克隆创建。想办法解决克隆、传输、占有磁盘空间、安装频繁的问题。后端镜像镜像模板,基于后备镜像,创建九个前端镜像。后端镜像有20G,前端镜像只有200M。启动虚拟机就使用前端镜像。前端镜像也称为差量镜像。多个前端镜像使用一个后备镜像。
使用差量镜像的优势:
1)节省磁盘空间;
2)瞬间快速创建虚拟机;
基于前端镜像创建虚拟机:
qemu-img create -f qcow2 -b centos7u6.qcow2 centos7u6-100.qcow2
qemu-img info centos7u6-100.qcow2
可以看到disk size只有196k,backing file(后备镜像文件): centos7u6.qcow2
使用virt-manager,生成新虚拟机,然后“导入现有磁盘镜像(E)”。
基于后备镜像,创建前端镜像生成虚拟机。
如何来管理镜像:
guestfish磁盘镜像管理:
在没有开机的情况下修改某些文件的内容。
# 安装guestfish工具
yum install -y libguestfs-tools # linux
yum install -y libguestfs-windowsupport # windows
virt-inspector centos7u6-test.img
virt-ls -a cents7u6-test.img /root
virt-cat -a centos7u6-test.img /home/test.index
virt-edit -a centos7u6-test.img /home/test.index
使用virt-edit 可以修改虚拟机中的内容,那么云主机安全么?是安全的,云主机官方是不会让你使用这个命令进行修改的。
另外还有virt-copy-in、virt-copy-out两个命令进行操作。
virt-copy-in /etc/hosts -a centos7u6-test.qcow2 /etc
虚拟机在关机的情况下,是可以拷贝文件进来的。