跳到主要内容

存储池管理

存储池管理是管理员专属功能(路由 /storage-pool),用于管理宿主机上的物理硬盘、分区与 LVM 存储卷。存储池决定了虚拟机磁盘文件的落盘位置,是虚拟化基础设施的存储基石。通过合理的存储池规划,可以实现性能优化、容量管理和数据隔离。

访问权限

存储池列表、详情、配置、默认设置、格式化、分区与 LVM 卷操作均需管理员权限;all-isos(全局 ISO 列表)与 vm-targets(创建 VM 可选存储目标)对普通用户开放。格式化、分区、清盘、建卷、删卷为高风险操作,需要二次验证并以异步任务执行。

功能概览

概览统计

统计项数据来源
总容量系统识别的物理硬盘数量
已用空间已挂载并使用的分区数量
可用空间尚未分配或可扩展的存储空间
存储卷LVM 卷组(VG)列表

概览区还提供统一的空间分配条:已用 / 可用 / 未挂载 / 未分配四段展示(使用率超过 70% / 90% 时变色提醒)。页面支持按「全部 / 待初始化 / 使用中 / 存储卷」筛选磁盘卡片。

磁盘分组卡片

磁盘分组以卡片形式展示每块物理硬盘及其分区,提供清晰的层级结构。

物理硬盘信息

字段说明示例
device_path设备路径/dev/sda/dev/nvme0n1
type设备类型disk(物理磁盘)、part(分区)、lvm(逻辑卷)等(loop/rom/ram/zram 设备会被过滤)
model / serial设备型号与序列号Samsung SSD 970 EVO
size设备容量500GB2TB
rota是否机械盘(用于磁盘图标区分 HDD/SSD/NVMe)-

状态标签

标签含义
默认虚拟机创建时的默认存储位置
已启用存储池处于激活状态,可正常使用
待初始化可格式化但尚未配置
系统盘挂载了 //boot/usr/var/home 等系统目录,禁止格式化
LVM / PVLVM 逻辑卷或物理卷引用
只读 / 可移除设备属性
存在数据可格式化设备上检测到已有分区或文件系统,操作前会给出警告

子分区列表

每个物理硬盘下以树形结构展示其子分区和子设备:

展示项说明
设备路径/dev/sda1/dev/nvme0n1p2
文件系统(fstype)ext4xfsbtrfsntfs
挂载点分区挂载的目录路径
使用率进度条空间使用百分比(≥70% 橙色、≥90% 红色)
可用/总容量格式如 120GB / 500GB

VM 占用明细

启用状态的存储池卡片展示 VM 磁盘占用(默认折叠):扫描所有虚拟机的磁盘定义,通过 qemu-img info 读取虚拟大小与实际占用,按挂载点前缀归属到存储池,汇总「共 N 台虚拟机 · 实际占用 / 虚拟总配」,展开可见各 VM 明细。

磁盘操作

配置

配置项说明
显示名称存储池的显示名称,便于识别和管理
启用状态控制存储池是否可用于虚拟机(设备不可用时禁用并提示原因)

设为默认

  • 新创建的虚拟机默认落盘到此存储池
  • 每次操作只能有一个默认存储池,设置新默认会自动取消之前的默认标记
  • 仅「可用于虚拟机」(已启用且有挂载点)的存储池可设为默认

格式化挂载

危险操作

格式化挂载会清空磁盘上所有数据,此操作不可逆。请务必确认数据已备份后再执行。

说明
目标整盘或独立分区/LV(以存储池条目为准)
文件系统ext4(默认)/ xfs / btrfs
挂载目录固定为 /var/lib/kvm-storage/{设备ID}
持久化写入 fstab(UUID=... defaults,nofail 0 2),开机自动挂载;自动创建 vm-disks 子目录并授权 libvirt-qemu

格式化流程:卸载(含占用进程处理)→ wipefs -a 清除签名 → mkfs 格式化 → 读 UUID → 挂载 → 写 fstab → 保存配置。操作以异步任务执行(storage_format)。

创建分区

说明
目标仅整盘(disk 类型)
分区大小GB;填 0 表示使用全部剩余空间
行为无分区表时自动创建 GPT;新分区按 1MiB 对齐追加在末尾(parted mkpart
新分区不会自动格式化

创建分区后需对该分区再执行「格式化挂载」才能用作存储池。操作以异步任务执行(storage_create_partition)。

清除磁盘

清除磁盘(storage_delete_partitions)按目标状态执行不同语义:

目标状态行为
有分区的整盘递归卸载所有分区 → 清理 fstab 与数据库配置 → wipefs -a 清除全部分区与签名
已挂载的整盘/分区卸载并清理 fstab 与数据库配置(「清除磁盘挂载」)

LVM 存储卷

存储池页支持完整的 LVM 存储卷生命周期管理(创建向导 + 删除确认,均为高风险异步任务)。

创建存储卷(两步向导)

步骤配置项说明
1. 选择 PV物理卷磁盘列表从可用整盘/分区中勾选(自动排除系统盘、已挂载、LVM/RAID/ZFS 成员等)
2. 配置 VG/LV卷组名、PE 大小(4M-64M)、逻辑卷名、逻辑卷大小大小支持 10G 或百分比格式(50%VG / 100%FREE
LV 类型linear(线性)/ striped(条带,需指定条带数)/ mirrored(镜像,需指定镜像数)
文件系统ext4 / xfs / btrfs / none(不格式化)
挂载路径、开机自动挂载可选写入 fstab

执行顺序:pvcreatevgcreate(失败回滚 pvremove)→ lvcreate → 格式化(如选择)→ 挂载并可选写 fstab → 创建 vm-disks 目录 → 保存存储池配置(设备 ID 为 VG-LV 归一化结果)。

删除存储卷

确认对话框展示卷组名、总容量、逻辑卷数与物理卷数;执行流程:安全校验(挂载在系统目录的 LV 拒绝删除)→ 强制卸载 LV → 清理 fstab 与数据库配置 → vgchange -anlvremovevgremovepvremove

实现原理

存储池架构

核心机制

组件功能说明
块设备探测lsblk -J 获取硬盘、分区、LVM 层级信息,findmnt/df 补充挂载与容量;运行时始终从系统命令读取,不依赖数据库
配置持久化存储池的 display_name / enabled / is_default / mount_path 等管理配置保存在 host_storage_pools 表(主键为归一化设备 ID),容量等运行时信息不落库
VM 落盘路径每个存储池对应挂载点下的 vm-disks 目录,VM 磁盘直接落盘到该路径;未使用 libvirt storage pool 概念
格式化操作wipefs + mkfs + mount 并写 fstab 持久化
LVM 支持识别 PV/VG/LV 结构并合成展示节点,提供建卷/删卷全流程管理

存储池与虚拟机的关系

创建虚拟机时的存储目标列表(vm-targets)只包含「可用于虚拟机」(已启用、有挂载点、有可用空间)的存储池,按「默认 → 启用 → 名称」排序。

最佳实践

存储池规划建议

场景推荐配置说明
生产环境SSD 存储池 + 独立存储池分离系统盘与数据盘高性能保障业务,隔离降低风险
开发测试单一大容量存储池简化管理,快速分配
混合负载SSD + HDD 双存储池热数据放 SSD,冷数据放 HDD
弹性容量LVM 存储卷支持条带/镜像与后续扩展

容量管理

  • 定期检查存储池使用率(页面使用率进度条与空间分配条),避免空间不足影响虚拟机运行
  • 建议保持至少 20% 的可用空间作为缓冲
  • 待初始化磁盘优先「创建分区」再格式化,便于后续灵活划分;整盘独占场景可直接格式化挂载
  • 存在历史数据的磁盘操作前务必确认备份