目录
一、KVM概述
1.1 KVM工具栈
1.2 libvirt架构概述
1.3 KVM磁盘格式介绍
1.4 KVM磁盘操作常见语法
1.5 qemu-img命令简介
1.6 libguestfs安装
二、虚拟机磁盘管理
2.1 查看虚拟机磁盘
2.2 创建虚拟机磁盘
2.3 扩容磁盘容量
2.4 查看虚拟机存储状态
2.5 快照
2.6 虚拟磁盘格式转化
一、KVM概述
1.1 KVM工具栈
上图所示主要描述了kvm的主要工具栈,从大的类别可以分为libvirt和qemu这两大类,其中libvirt中分virtual machine manager 和 virsh。virtual machine manager中的virt-manager是基于图形界面的管理,其他都是可以在命令行直接使用命令来管理虚拟机。
virsh是基于终端命令行管理。两者都是通过libvirt连接至libvirtd进行管理,对于qemu来说,它管理虚拟机上直接调用kvm内核中模块的API进行管理;
1.2 libvirt架构概述
libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统一的管理接口。
libvirtd该后台进程主要实现以下功能:
(1)远程代理所有remote client发送来的命令,由该进程监测执行;
(2)本地环境初始化libvirt服务的启停,用户connection的响应等;
(3)根据环境注册各种Driver(qemu, xen, storage…)的实现
查看libvirtd服务状态
systemctl status libvirtd
如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。
查看配置文件
虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中
[root@kvm ~]# ll /etc/libvirt/qemu
total 12
drwxr-xr-x. 2 root root 25 Aug 7 10:08 autostart
drwx------. 3 root root 42 Apr 28 2021 networks
-rw-------. 1 root root 3826 Aug 3 20:03 study01.xml
-rw-------. 1 root root 4737 Aug 7 10:08 study02.xml
1.3 KVM磁盘格式介绍
- raw:⽼牌格式,指定多⼤空间就创建多⼤空间,直接占⽤指定⼤⼩的空间(分50G占⽤ 50G),性能上来说的话还是不错的,不⽀持快照功能。
- cow:曾经qemu的写时拷⻉的镜像格式,⽬前由于历史遗留原因不⽀持窗⼝模式。从某种意义上来说是个弃子,还没得它成熟就胎死腹中,后来被qcow格式所取代。
- qcow:⼀代的qemu的cow格式,刚刚出现的时候有⽐较好的特性,但其性能和raw格式对⽐还是有很⼤的差距,⽬前已经被新版本的qcow2取代。
- qcow2:是openstack默认也是⽐较推荐的格式,⽂件⽐较⼩⽽且做快照也⽐较⼩,空间是动态增⻓,是⽬前⽐较主流的⼀种虚拟化镜像格式,经过优化,⽬前qcow2的性能上接近raw裸格式的性能。
常用镜像类型
特点/类型 | raw | qcow2 |
KVM 默认 | 否 | 是 |
IO效率 | 高 | 较高 |
占用空间 | 大 | 小 |
压缩 | 不支持 | 支持 |
后端盘复用 | 不支持 | 支持 |
快照 | 不支持 | 支持 |
1.4 KVM磁盘操作常见语法
# 磁盘基本信息
virsh domblklist --details 虚拟磁盘名称
# 磁盘容量调整
qemu-img resize 虚拟磁盘名称 +5G
# 挂载磁盘
virsh attach-disk <虚拟机名称> --source <新磁盘名> --target <磁盘类型名> --persistent
注意:
磁盘类型名一般是 sda~ 或者 vda~,这里的 vda 不一定是磁盘内部的信息,而是kvm管理的名称
# 卸载磁盘
virsh detach-disk <虚拟机名称> <磁盘类型名>
1.5 qemu-img命令简介
qemu-img是一个功能强大磁盘镜像管理工具,qemu-img --help 包括以下功能:
- check:检查完整性
- create:创建镜像
- commit:提交更改
- compare:比较
- convert:转换
- info:获取信息
- map:映射
- snapshot:快照管理
- rebase:在已有的的基础上创建新的镜像
- resize:调整大小
- amend:修订镜像格式选项
1.6 libguestfs安装
libguestfs是一组使用于硬件虚拟化中旨在用于访问及修改磁盘映像的C语言库和配套工具。此工具可查看并编辑由libvirt所管理的虚拟机及其内部文件、为虚拟机撰写脚本、创建虚拟机等。
libguestfs几乎可访问任意类型的文件系统,包括:所有已知类型的Linux文件系统(ext2/3/4、XFS、btrfs等等)、任意类型的Windows 文件系统(VFAT及NTFS)、任意类型的macOS及BSD文件系统、LVM2卷宗管理、MBR及GPT磁盘分区、未格式化的硬盘、qcow2、VirtualBox VDI、VMWare VMDK、Hyper-V VHD/VHDX、文件、本地设备、CD/DVD ISO、SD卡或通过FTP、HTTP、SSH、iSCSI、NBD、GlusterFS、Ceph、Sheepdog等程序远程管理。
yum -y install libguestfs-tools-c
yum -y install libguestfs-tools
二、虚拟机磁盘管理
2.1 查看虚拟机磁盘
virsh list --all
virsh domblklist centos7.0
qemu-img info /kvm/virtual/centos7.qcow2
2.2 创建虚拟机磁盘
创建一块大小为10G的qcow2格式的虚拟磁盘:
qemu-img create -f qcow2 /kvm/virtual/centos7-test01.qcow2 10G
2.3 扩容磁盘容量
qcow2格式的磁盘只能加不能减,raw格式的盘可以减。我们给"centos7.0"虚拟机增加 10G 也就是总共40G的存储。
磁盘扩容
qemu-img resize /kvm/virtual/centos7.qcow2 +10G
如下图可以看到扩容成功
扩容完成操作参考:
【Linux】Wmware Esxi磁盘扩容_esxi 磁盘扩容-CSDN博客
2.4 查看虚拟机存储状态
virt-df -h centos7.0
2.5 快照
# 给centos7.qcow2创建名为 centos7-snap-qcow2 快照
qemu-img snapshot -c centos7-snap-qcow2 /kvm/virtual/centos7.qcow2
# 查看快照
qemu-img snapshot -l /kvm/virtual/centos7.qcow2
# 删除
qemu-img snapshot -d centos7-snap-qcow2 /kvm/virtual/centos7.qcow2
2.6 虚拟磁盘格式转化
convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename
将fmt格式的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件。它支持不同格式的镜像文件之间的转换,比如可以用VMware用的vmdk格式文件转换为qcow2文件,这对从其他虚拟化方案转移到KVM上的用户非常有用。一般来说,输入文件格式fmt由qemu-img工具自动检测到,而输出文件格式output_fmt根据自己需要来指定,默认会被转换为与raw文件格式(且默认使用稀疏文件的方式存储以节省存储空间)。
示例如下 :
# -f指定将raw格式,转化为-O,qcow2格式, 后面跟着两个要转化的文件
qemu-img convert -f raw -O qcow2 study01.img study01.qcow2
# 将VMware的vmdk格式镜像转换为KVM可以使用的qcow2镜像
qemu-img convert my-vmware.vmdk my-kvm.img
# 将一个raw镜像文件转化为qcow2格式的镜像。
qemu-img convert -O qcow2 rhel6u3.img rhel6u3-a.img
study02.qcow2 虚拟机磁盘格式为:qcow2
格式转换完成
第 21 章 使用离线工具进行客户机虚拟机磁盘访问 | Red Hat Product Documentation