Linux实战教学笔记54:开源虚拟化KVM(二)管理虚拟存储 (2)

利用dd命令模拟创建一个没有空洞的文件

[root@localhost vm]# dd if=http://www.likecs.com/dev/zero of=flat1.img bs=1024k count=1000 记录了1000+0 的读入 记录了1000+0 的写出 1048576000字节(1.0 GB)已复制,2.2495 秒,466 MB/秒 [root@localhost vm]# qemu-img info flat1.img image: flat1.img file format: raw virtual size: 1.0G (1048576000 bytes) disk size: 1.0G #磁盘占用也是1G,没有空洞 #ext4文件格式是支持空洞文件的创建的,例如dd命令我们也可以实现空洞文件的创建 [root@localhost vm]# dd if=http://www.likecs.com/dev/zero of=flat2.img bs=1024k count=0 seek=1024 记录了0+0 的读入 记录了0+0 的写出 0字节(0 B)已复制,0.000114639 秒,0.0 kB/秒 [root@localhost vm]# qemu-img info flat2.img image: flat2.img file format: raw virtual size: 1.0G (1073741824 bytes) disk size: 0 #实际磁盘占用0

空洞文件被复制以后,那么还是空洞文件吗?

[root@localhost vm]# du -sh flat* 1001M flat1.img 0 flat2.img [root@localhost vm]# cp flat1.img flat1a.img [root@localhost vm]# cp flat2.img flat2a.img [root@localhost vm]# du -sh flat* 1001M flat1a.img #非空洞文件复制后还是非空洞 1001M flat1.img 0 flat2a.img #空洞文件复制后还是空洞文件 0 flat2.img #利用--sparse=always将非空洞文件复制成空洞文件 [root@localhost vm]# cp flat1.img flat1b.img --sparse=always [root@localhost vm]# du -sh flat* 1001M flat1a.img 0 flat1b.img #加了参数的cp复制出来的是空洞文件。 1001M flat1.img 0 flat2a.img 0 flat2.img #利用--sparse=never将空洞文件复制成非空洞文件 [root@localhost vm]# cp flat2.img flat2b.img --sparse=never [root@localhost vm]# du -sh flat* 1001M flat1a.img 0 flat1b.img 1001M flat1.img 0 flat2a.img 1.1G flat2b.img #加了参数的cp复制出来的是非空洞文件 0 flat2.img 5.2.3 检查虚拟磁盘 [root@localhost vm]# du -sh ce* 1.1G centos6.5-2.qcow2 [root@localhost vm]# qemu-img info centos6.5-2.qcow2 image: centos6.5-2.qcow2 file format: qcow2 #文件格式 virtual size: 8.0G (8589934592 bytes) #虚拟磁盘尺寸大小 disk size: 1.0G #磁盘真实占用大小 cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: true [root@localhost vm]# qemu-img check centos6.5-2.qcow2 No errors were found on the image. #检查结果没有错误 131072/131072 = 100.00% allocated, 0.00% fragmented, 0.00% compressed clusters Image end offset: 8591507456 5.2.4 预分配磁盘策略(qcow2)

[x] off

缺省策略,即不使用预分配策略

[x] metadata

分配元数据(metadata),预分配后的虚拟磁盘仍然属于稀疏映像类型(空洞文件)

[x] full

分配所有磁盘空间并置零,预分配后的虚拟磁盘属于非稀疏映像类型

[x] falloc

分配文件的块并标示它们的状态为未初始化,相对full模式来说,创建虚拟磁盘的速度要快很多。

[root@localhost vm]# qemu-img create -f qcow2 test2.qcow2 -o ? Supported options: size Virtual disk size compat Compatibility level (0.10 or 1.1) backing_file File name of a base image backing_fmt Image format of the base image encryption Encrypt the image cluster_size qcow2 cluster size preallocation Preallocation mode (allowed values: off, metadata, falloc, full) #预分配策略 lazy_refcounts Postpone refcount updates #preallocation=off创建磁盘 [root@localhost vm]# qemu-img create -f qcow2 test1.qcow2 1g -o preallocation=off Formatting \'test1.qcow2\', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 preallocation=\'off\' lazy_refcounts=off [root@localhost vm]# qemu-img info test1.qcow2 image: test1.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 196K #我们发现磁盘实际占用196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false #preallocation=metadata创建磁盘 [root@localhost vm]# qemu-img create -f qcow2 test2.qcow2 1g -o preallocation=metadata Formatting \'test2.qcow2\', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 preallocation=\'metadata\' lazy_refcounts=off [root@localhost vm]# qemu-img info test2.qcow2 image: test2.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 328K #我们发现磁盘的实际占用变成了328K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false #preallocation=falloc创建磁盘 [root@localhost vm]# qemu-img create -f qcow2 test3.qcow2 1g -o preallocation=falloc Formatting \'test3.qcow2\', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 preallocation=\'falloc\' lazy_refcounts=off [root@localhost vm]# qemu-img info test3.qcow2 image: test3.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 1.0G #我们发现磁盘真实占用也是1G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false #preallocation=full创建磁盘 [root@localhost vm]# qemu-img create -f qcow2 test4.qcow2 1g -o preallocation=full Formatting \'test4.qcow2\', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 preallocation=\'full\' lazy_refcounts=off [root@localhost vm]# qemu-img info test4.qcow2 image: test4.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 1.0G #我们发现falloc和full创建的磁盘的真实占用都是1G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false #四种预分配策略进行对比 [root@localhost vm]# ll -h test* -rw-r--r-- 1 root root 193K 5月 4 09:45 test1.qcow2 #off -rw-r--r-- 1 root root 1.1G 5月 4 09:49 test2.qcow2 #metadata -rw-r--r-- 1 root root 1.1G 5月 4 09:51 test3.qcow2 #falloc -rw-r--r-- 1 root root 1.1G 5月 4 09:54 test4.qcow2 #full [root@localhost vm]# du -sh test* 196K test1.qcow2 #off 332K test2.qcow2 #metadata 1.1G test3.qcow2 #falloc 1.1G test4.qcow2 #full

通过对比我们发现预分配策略里,off和metadata预分配策略都属于空洞文件,而falloc和full属于非空洞文件。

5.2.5 后备差异虚拟磁盘

[x] 存储与基础镜像(父)磁盘的变化

基础镜像(父)磁盘不会改变

差异磁盘隔离变化

多个差异磁盘可以使用相同的基础镜像(父)磁盘

[x] 优点:标准化基础镜像,节省空间

[x] 缺点:增加了开销,较差的性能

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjxzx.html