文章目录
参考:
1.虚拟机磁盘与qemu-img、存储池、存储卷 - 作者:IDYS • 元帅
1. libvirt
1.1 定义
是目前使用最为广泛的 KVM - 虚拟机管理工具
1.2 组成:
- API库
- 守护程序(libvirtd)
- 命令行工具(
virsh
)
1.3 主要支持功能
- 虚拟机管理:包括不同的领域生命周期操作。如:启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔,比如:磁盘、网卡、内存和CPU。
- 远程机器支持:只要机器上运行了libvirt daemon,包括远程机器,所有的libvirt功能就都可以访问和使用。支持多种网络远程传输,使用最简单的SSH。
- 存储管理:任何运行了libvirt daemon的主机都可以用来管理不同类型的存储:创建不同格式的文件镜像(qcow2、vmdk、raw等)、挂接NFS共享、列出现有的LVM卷组、创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享等。
- 网络接口管理:任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。
- 虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。
1.4 virsh使用
针对虚拟机的操作
virsh list --all #查看创建的所有虚拟机
virsh start VM_Name # 启动名称为 VM_Name 的虚拟机
virsh suspend VM_Name #挂起虚拟机
virsh shutdown VM_Name #关闭虚拟机
virsh destroy VM_Name # 强制关闭虚拟机
virsh reboot VM_Name #重启虚拟机
virsh reset VM_Name #强制重启虚拟机
2. KVM
关于KVM -
2.1KVM存储模式
- 基于文件系统的存储
- 基于设备的存储
- 通过
存储池
来简化 存储 的管理
2.2虚拟磁盘类型
-
固定:Fixed
在配置时,指定磁盘大小
不管在虚拟磁盘上实际存储多少数据,都将占用相同大小主机磁盘空间 -
动态:增长到最大容量,但是只根据需求使用更多的空间
-
差异
因为创建是差异磁盘,所以只保存变更的数据
例如:将操作系统安装在复盘,然后创建差异化磁盘来执行进一步配置
2.3 KVM支持的磁盘类型
- raw
- cow
- qcow
- qcow2
- vmdk
- vhd \ vhdx
- vdi
- …
4. 存储池
- libvirt 可以 以
存储池
的形式对存储进行统一管理、简化操作 - 存储池 和 卷 不是必需的
- 支持以下存储池
dir - Filesystem Directory
disk - Physical Disk Device
fs - Pre-Formatted Block Device
gluster - Gluster Filesystem
iscsi - iSCSI Target
logical
mpath
netfs
rbd
scsi
sheepdog
4.1 配置文件
/etc/libvirt/storage/ #存储 存储池 的配置文件~们
4.2 基于目录的存储池
- 准备目录:设置目录权限
针对存储池的操作
virsh pool-list pool_name
virsh pool-info pool_name
virsh pool-autostart pool_name
virsh pool-build #建立池
virsh pool-create-as #从一组变量中创建一个池
virsh pool-create #从一个 XML 文件中创建一个池
virsh pool-define-as #在一组变量中定义池
virsh pool-delete pool_name
virsh pool-destroy pool_name
virsh pool-refresh pool_name
virsh pool-edit pool_name #编辑存储池XML配置
5.存储卷
存储池被分割为存储卷(storage volume
)
存储卷组成
- 文件
- 块设备(如物理分区、LVM逻辑卷)
存储卷操作
- 创建
- 克隆
- 删除
- 移动
- 修改大小
virsh vol-list pool_name #列举存储池中的存储卷
virsh vol-clone
virsh vol-create-as pool_name vol_name 2G --format qcow2 #在存储池中创建存储卷
virsh vol-create
virsh delete
virsh vol-download
virsh vol-dumpxml #XML 中的卷信息
virsh vol-info vol_name #存储卷信息
virsh vol-list #列出卷
virsh vol-name #为给定密钥或者路径返回卷名
virsh vol-path
virsh vol-pool
virsh vol-resize #重新定义卷大小
virsh vol-upload #将文件内容上传到卷中
virsh vol-wipe #擦除卷