qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。
qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,可以用其创建两种格式(raw和qcow2)的虚拟机磁盘。
我们kvm 和openstack 中常用得镜像格式就是raw 或者qcow2 格式得镜像, 一般通常用qcow2
为什么选择qcow2 镜像?
"raw" 镜像格式是最最简单的,并且是被 KVM 和 Xen 原生支持的格式,raw唯一的缺点在于,看起来很大,在scp的时候,这会消耗很多的网络IO,而压缩这么大的文件,也是很耗时间和cpu
qcow2 (QEMU 写时复制版本2)格式通常是KVM使用,使用稀疏文件呈现方式,镜像尺寸小,支持快照。
举个例子: raw 格式就像你邮寄一箱子,这个箱子可以存放十斤得重量得物品,我得箱子里存放了两斤得重量得东西,我在邮寄使用这个箱子都时按照十斤大小去计费。他不会管你实际用了多少,你这个箱子有多大,那我按照你这个最大得来计算。
qocw2 格式,我这个箱子可以存放十斤得重量得物品,但是我只放了两斤,我在邮寄使用就是算这两斤重量,他是按照你实际使用得大小来计算得
raw 格式镜像你看到时多大就是多大
qcow2 格式镜像,随着你对镜像得操作他会动态得增长, 但是他不是无限置得增长。我们镜像都有一个virtual size 这个就是我们镜像得大小得限制
查看镜像大小与格式
qemu-img info 镜像名
qemu-img 转换镜像格式
qemu-img convert -f raw -O qcow2 ubuntu-14.04.6-server-amd64.iso (初始镜像) ubuntu-14.04.6-server-amd64.qcow2(转换格式后得镜像命名)
扩容镜像大小
qemu-img resize 镜像名 +20G
缩减镜像大小 (不建议使用,这样可以减少空间但是对系统有损害,可能导致系统直接进入维护模式或者镜像拉不起虚机)
qemu-img resize 镜像名 -20G
实例
查看镜像得大小和格式
[root@ var]# qemu-img info ubuntu-14.04.6-server-amd64.iso
image: ubuntu-14.04.6-server-amd64.iso
file format: raw
virtual size: 632M (662700032 bytes)
disk size: 632M
将镜像有raw 格式转为qcow2 格式
[root@ var]# qemu-img convert -f raw -O qcow2 ubuntu-14.04.6-server-amd64.iso ubuntu-14.04.6-server-amd64.qcow2
检查镜像大小格式
[root@ var]# qemu-img info ubuntu-14.04.6-server-amd64.qcow2
image: ubuntu-14.04.6-server-amd64.qcow2
file format: qcow2
virtual size: 632M (662700032 bytes) -------镜像总得大小
disk size: 631M ------镜像使用得实际大小
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
扩展qcow2 大小
root@cic-0-1:~# qemu-img resize ubuntu-14.04.6-server-amd64.qcow2 +20G
Image resized.
root@cic-0-1:~# qemu-img info ubuntu-14.04.6-server-amd64.qcow2
image: ubuntu-14.04.6-server-amd64.qcow2
file format: qcow2
virtual size: 21G (22137536512 bytes)
disk size: 631M
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
扩容后lsblk 查看节点新扩容的节点得信息是有显示的。 但是需要将扩容的空间加到我们需要用的分区里
growpart /dev/vda1 将新扩容的空间添加我们需要的分区,但是我们df -TH 检查会发现,分区挂载的目录大小并没有变化,lsblk 查看分区是扩容空间后的大小,检查没有问题
resize2fs /dev/vda1 在线调整分区大小(df TH 是会发现分区挂载的目录大小是增大了)