libvirt 存储池是什么
libvirt 存储池把目录、LVM 卷组、NFS、iSCSI 等不同后端抽象成统一的资源池:池内创建卷,再把卷分配给虚机。好处是容量盘点与生命周期管理集中化——虚机迁移或重建时,磁盘来源清清楚楚。
基本信息
| 支持类型 | dir、fs、netfs、logical、iscsi、disk 等 |
|---|---|
| 模型 | pool → volume → 挂到 domain |
| 常用命令 | pool-list、pool-define-as、pool-build、vol-create-as |
| 默认位置 | /var/lib/libvirt/images |
| 自动启动 | 需要 pool-autostart 才能在宿主重启后自动激活 |
| 权限 | 定义与启动池通常需要 root |
典型使用场景
- 把虚机磁盘集中放到独立数据盘目录上
- 用 logical 池把磁盘建在 LVM 上以获得块设备性能
- 用 netfs 池挂载 NFS 共享给多台宿主
- 批量创建同规格的虚机磁盘
- 盘点各池的剩余容量与卷数量
定义并启用一个目录池
定义并启用一个目录池
sudo virsh pool-define-as diskpool dir --target /data/vmpool # 定义目录池
sudo virsh pool-build diskpool # 创建目录结构
sudo virsh pool-start diskpool # 激活池
sudo virsh pool-autostart diskpool # 宿主重启后自动激活
virsh pool-list --all # 查看池状态
sudo virsh vol-create-as diskpool vm1.qcow2 40G --format qcow2 # 在池内建卷
virsh vol-list diskpool # 列出卷与其路径池类型与适用
| 类型 | 后端 | 适用场景 |
|---|---|---|
| dir | 本地目录 | 开发与单机环境 |
| logical | LVM 卷组 | 需要块设备性能的宿主 |
| netfs | NFS 等网络文件系统 | 共享存储场景 |
| iscsi | iSCSI 目标 | 集中式块存储 |
| fs | 已挂载的文件系统 | 复用现有挂载点 |
池内创建的卷由 libvirt 记录:绕过 virsh 直接往池目录塞文件不会出现在 vol-list 里。排障时遇到“账实不符”,先想到这一点。定期用 vol-list 与文件系统实际占用对账,能提前发现手工留下的孤儿文件。
池没有设置 autostart 时,宿主重启后池处于未激活状态,依赖它的虚机会因为找不到磁盘启动失败,而报错通常只说文件不存在,容易查错方向。