Ⅰqemu-img
首先来看一下功能
check 检查虚拟磁盘完整性
create 创建一个磁盘镜像
commit 向后备磁盘提交当前的变化
compare 比较两个img占用disk
convert 转换
info 信息
map 映射
snapshot 快照管理
resize 调整大小
amend 修订镜像格式选项
首先创建一个镜像 1.img,指定1G
通过info查看信息发现disk size:0,说明实际这个镜像并没有占了1G
的大小
从/vm这里也可以看到好几个镜像才用了2.1G
这里就要学习稀疏文件的概念,和稀疏矩阵一样,如果文件里有很多0,为了节省
空间,可以不存储0。稀疏文件以元数据表示空数据块,只有非空的数据会按原样
写入磁盘。
通过du命令显示文件或目录占用磁盘的空间
通过刚才的create发现默认格式是raw,如果是创建raw格式,只能指定大小
但如果用qcow2,就有更多操作空间,-o可以选择
常用options
backing_file 用于指定后端镜像
backing_fmt 后端镜像的格式
enryption 加密
cluster_size 镜像簇大小,默认64k
preallocation 预分配
这里用dd做一下实验
dd用于读取,转换,输出数据,这里拿来填充一个1G的文件
基本参数就是:
if=输入
of=输出
bs:设置输入/输出块的大小为bytes个字节
count:blocks 拷贝多少个块
seek:blocks 从输出文件开头跳过blocks个块后再开始复制
这里的/dev/zero是特殊的“零”设备,
可以无限的提供空字符(0x00,ASCII代码NULL)
常用来生成一个特定大小的文件。这时候再用info看一下,发现果然填满了1G
再弄一个flat2.img,不写内容,但是要占1G
通过对比,就理解了稀疏文件,再看一下复制稀疏文件
cp flat1.img copyflat1.img
cp flat2.img copyflat2.img
预分配策略
off 缺省策略,即不使用预分配策略
metadata 分配元数据,仍然是稀疏映像
full(厚置备置零) 分配所有空间并置零,预分配以后属于非稀疏
falloc(厚置备延迟置零) 分配空间但不进行初始化
创建一个预分配off(default)的镜像,可以看到disk size只有196k的元数据
换策略,metadata变成了328K
换成falloc
full
后备差异镜像
backing_file是设定好的一块基础镜像,以它为后备镜像的镜像只需要在自己身上记录改动,可以减少占用空间,但也增加了负荷。后备镜像可以是raw或qcow2,但新镜像只能是qcow2。
cp centos7.qcow2 base-centos7.qcow2 //cp一个当做后备镜像
新建两块,以base-centos7.qcow2为后备
qemu-img create -f qcow2 -o backing_file=base-centos7.qcow2 oa-disk0.qcow2
qemu-img create -f qcow2 -o backing_file=base-centos7.qcow2 erp-disk0.qcow2
这样的镜像显示后备镜像是哪块
安装oa和erp,使用已有镜像的方法
下面试试如果base改动会怎么样
先关了oa和erp
把base移到别的位置,oa就打不开了,
再移回来,又可以正常运行oa
convert转换
如果有这种应用场景,原先的实验场景运行再EXSi上,现在想把环境迁移到KVM下,这时候可以通过convert命令进行格式的转换。
先从vmware里导出这个虚拟机,一个OVF文件,两个VMDK文件。将两个vmdk格式的文件上传到KVM服务器里。
进行格式转换
qemu-img convert -O qcow2 传进来的文件.vmdk 起个名字.qcow2
注意-O是大写的O
根据OVF文件(XML)中的配置,再KVM创建新的虚拟机(vcpu,ram,网卡,硬盘等)
virt-install安装
resize虚拟磁盘大小
qemu-img resize centos7.qcow2 +2G
qcow2不支持缩小镜像的操作
其他格式再缩小镜像前,要确保文件系统里有空余空间,否则会丢失数据。
然后进入oa的bash
fdisk /dev/sda,创主分区,后面跟前面扩展硬盘容量一样了。
Ⅱ 快照
快照大概可以分这么几类
磁盘快照
对磁盘上的数据进行快照,用于虚拟机备份等场景
内存快照
对虚拟机的内存进行保存,像操作系统要中断时保存先现场,一般用于休眠恢复,迁移等
检查点快照
同时保存磁盘快照和内存快照,通过这个快照,可以将虚拟机恢复到某个时间点,可以保持数据的一致性。
磁盘快照分类
按快照信息保存分为:
内置快照:快照数据和base磁盘放在一个qcow2文件中
外置快照:快照数据单独的qcow2文件存放
按虚拟机状态可以分为:
关机态快照:数据可以保证一致性
运行态快照:数据无法保证一致性,类似与系统crash后的磁盘数据
按磁盘数量可以分为:
单盘:单盘快照不涉及原子性
多盘:涉及原子性。主要依赖qemu的transaction实现
1、所有盘快照点相同
2、要么所有盘快照成功,要么都快照失败。
语法
-a 应用一个快照
-c 创建一个快照
-d 删除一个快照
-l 列出所有快照
实验
启动起来centos7.0,拷贝一个文件,关机。
回到KVM1,创建一个快照,列出。
打开centos7,再新增一个file2文件,假如有一个误操作删除了刚才复制的file1。
关掉centos7,到KVM1
qemu-img snapshot -a snapshot1 centos7.qcow2
启动centos7,发现file1回来了,file2丢失了
这种情况该怎么处理才能保留file2?暂留