Incus 存储池管理实战指南:创建、配置、查看与扩容

发布时间:2026/10/10 5:59:34
Incus 存储池管理实战指南:创建、配置、查看与扩容 后端虚拟化容器运行时【免费下载链接】incusPowerful system container and virtual machine manager项目地址https://gitcode.com/gh_mirrors/inc/incus点击查看免费下载本篇指南以 Incus 官方文档doc/howto/storage_pools.md为核心系统讲解存储池storage pool从创建、配置、查看、集群部署到扩容的完整操作流程覆盖dir、btrfs、lvm、zfs、ceph、cephfs、cephobject等多种存储驱动。读完本文你将掌握incus storage命令族的全部常用用法并能结合驱动特性对比为你的实例、镜像与自定义存储卷选择最合适的存储后端。什么是存储池存储池是 Incus 存储体系的核心抽象镜像、实例和自定义存储卷都存放在存储池中。每个存储池绑定一种存储驱动driver驱动决定了数据的存放方式与底层能力。Incus 在初始化incus admin init时就会自动创建一个存储池后续你可以随时在同一台机器上追加使用相同或不同驱动的新存储池。存储池与镜像、实例、卷的关系以及“池 → 卷 → 设备 → 实例”的挂载链路可以参考 存储概念说明。每个驱动的独立参考页见 存储驱动参考。创建存储池命令格式与默认行为创建存储池使用以下命令incus storage create pool_name driver [configuration_options...]其中driver可取dir、btrfs、lvm、zfs、ceph、cephfs、cephobject等[configuration_options...]用于传入额外的配置项例如source/data/incus或size10GiB。默认行为如果没有显式指定sourceIncus 会创建基于 loop 设备的存储池默认大小为可用磁盘空间的 20%下限 5 GiB、上限 30 GiB。不同驱动的可用配置选项清单见 存储驱动参考 中各驱动页面。从命令行实现看cmd/incus/storage.goincus storage create是storage命令族还包括delete、edit、get、info、list、set、show、unset、bucket、volume的子命令之一。它支持两个有用选项--targetcluster_member指定集群成员创建时只把存储池标记为 pending见下文“集群”一节--descriptiontext为存储池附加描述信息。此外该命令支持从标准输入读取 YAML 配置非终端场景下例如incus storage create s1 dir config.yaml这允许把存储池配置以文件形式版本化管理。按驱动创建存储池完整示例下面按驱动分组给出官方文档中的全部创建示例。Directorydir# 创建名为 pool1 的目录池 incus storage create pool1 dir # 使用已有目录 /data/incus incus storage create pool2 dir source/data/incusdir驱动把数据直接存放在普通目录结构中未指定source时位于/var/lib/incus/storage-pools/便于直接查看磁盘上的文件适合测试但所有操作都未经优化参见 dir 驱动参考。Btrfsbtrfs# 创建 loop 支持的池 pool1 incus storage create pool1 btrfs # 使用已有的 Btrfs 文件系统 incus storage create pool2 btrfs source/some/path # 在 /dev/sdX 上创建 incus storage create pool3 btrfs source/dev/sdXLVMlvm# 创建 loop 支持的池 pool1LVM 卷组也叫 pool1 incus storage create pool1 lvm # 使用已有 LVM 卷组 my-pool incus storage create pool2 lvm sourcemy-pool # 使用卷组 my-vg 中已有的 LVM thin pool my-pool incus storage create pool3 lvm sourcemy-vg lvm.thinpool_namemy-pool # 在 /dev/sdX 上创建卷组也叫 pool4 incus storage create pool4 lvm source/dev/sdX # 在 /dev/sdX 上创建并指定卷组名为 my-pool incus storage create pool5 lvm source/dev/sdX lvm.vg_namemy-poolZFSzfs# 创建 loop 支持的池 pool1zpool 也叫 pool1 incus storage create pool1 zfs # 创建 loop 支持的池 pool2zpool 名为 my-tank incus storage create pool2 zfs zfs.pool_namemy-tank # 使用已有 zpool my-tank incus storage create pool3 zfs sourcemy-tank # 使用已有 ZFS dataset my-tank/slice incus storage create pool4 zfs sourcemy-tank/slice # 使用已有 ZFS dataset my-tank/zvol并启用 ZFS 块模式 incus storage create pool5 zfs sourcemy-tank/zvol volume.zfs.block_modeyes # 在 /dev/sdX 上创建zpool 也叫 pool6 incus storage create pool6 zfs source/dev/sdX # 在 /dev/sdX 上创建zpool 名为 my-tank incus storage create pool7 zfs source/dev/sdX zfs.pool_namemy-tank关于 ZFS 驱动更多细节压缩默认开启、自动 trim、dataset 委派、快照恢复限制等见 ZFS 驱动参考。Ceph RBDceph# 在默认 Ceph 集群名为 ceph中创建 OSD 存储池 pool1 incus storage create pool1 ceph # 在 Ceph 集群 my-cluster 中创建 pool2 incus storage create pool2 ceph ceph.cluster_namemy-cluster # 在默认 Ceph 集群中创建 pool3磁盘上名字为 my-osd incus storage create pool3 ceph ceph.osd.pool_namemy-osd # 使用已有的 OSD 存储池 my-already-existing-osd incus storage create pool4 ceph sourcemy-already-existing-osd # 使用已有 OSD 纠删码池 ecpool 与副本池 rpl-pool incus storage create pool5 ceph sourcerpl-pool ceph.osd.data_pool_nameecpoolCephFScephfs注意每个 CephFS 文件系统由两个 OSD 存储池构成一个存放实际数据一个存放文件元数据。# 使用已有 CephFS 文件系统 my-filesystem incus storage create pool1 cephfs sourcemy-filesystem # 使用 my-filesystem 中的子目录 my-directory incus storage create pool2 cephfs sourcemy-filesystem/my-directory # 新建 CephFS 文件系统 my-filesystem数据池 my-data、元数据池 my-metadata incus storage create pool3 cephfs sourcemy-filesystem cephfs.create_missingtrue cephfs.data_poolmy-data cephfs.meta_poolmy-metadataCeph Objectcephobject使用 Ceph Object 驱动前必须已经有一个可用的 Ceph Object Gatewayradosgw地址# 使用已有的 Ceph Object Gateway 创建 pool1 incus storage create pool1 cephobject cephobject.radosgw.endpointhttps://www.example.com/radosgw配置存储池set、edit 与配置键速查配置键的组织规则存储池配置键分两类通用键如source、size位于顶层驱动专属键以驱动名命名空间前缀如zfs.pool_name、lvm.vg_name、ceph.osd.pool_name、cephfs.data_pool。修改配置使用set命令逐项设置incus storage set pool_name keyvalue例如关闭dir池迁移时的压缩incus storage set my-dir-pool rsync.compressionfalse也可以直接编辑整个配置以 YAML 形式在编辑器中修改解析失败会重开编辑器按CtrlC可中止incus storage edit pool_name配套命令还有incus storage get pool_name key读取单键值-p可读取顶层属性字段与incus storage unset pool_name key删除键。edit命令生成的 YAML 模板形如name: default driver: zfs used_by: [] config: size: 61203283968 source: default zfs.pool_name: default这些子命令的完整参数解析与校验逻辑均在 cmd/incus/storage.go 中实现storage edit内部基于 ETag 调用UpdateStoragePool以避免并发覆盖。各驱动常用池级配置项含默认值下表汇总自 配置选项文档 中storage_*_common配置组供创建与调优时参考。驱动关键配置键默认值说明dirsource-已有目录路径dirrsync.bwlimit0不限速使用rsync迁移时的 I/O 上限dirrsync.compressiontrue迁移存储池时是否启用压缩btrfssource/source.wipe-/false已有块设备、loop 文件或子卷路径 / 是否先擦除设备btrfsbtrfs.create_options-创建池时传给mkfs.btrfs的额外参数btrfsbtrfs.mount_optionsuser_subvol_rm_allowed块设备的挂载选项btrfssize自动见上新建 loop 池时的尺寸可调大扩容lvmsource/source.wipe-/false块设备、loop 文件或卷组 / 是否先擦除lvmlvm.vg_name池名要创建的卷组名lvmlvm.thinpool_nameIncusThinPool卷所在 thin pool 名lvmcluster不可用lvmlvm.use_thinpooltrue是否使用 thin poollvmcluster不可用lvmlvm.thinpool_metadata_size0自动thin pool 元数据卷大小lvmlvm.metadata_size0自动物理卷元数据空间大小lvmlvm.vg.force_reusefalse是否强制复用非空卷组lvmsize自动仅lvm池大小可调大扩容zfssource/source.wipe-/false块设备多个用逗号分隔可带 vdev 类型、loop 文件或 dataset/池zfszfs.pool_name池名zpool 名称zfszfs.clone_copytrue用轻量克隆而非完整拷贝设为rebase可按初始镜像为基础拷贝zfszfs.exporttrue卸载时是否禁用 zpool exportzfssize自动见上loop 池尺寸可调大扩容cephceph.cluster_namecephCeph 集群名cephceph.osd.pool_name池名OSD 存储池磁盘名cephceph.osd.data_pool_name-数据 OSD 池配合副本池用于纠删码cephceph.osd.pg_name32OSD 池的 placement group 数量cephceph.user.nameadmin使用的 Ceph 用户cephceph.rbd.backendkrbd内核 RBD 驱动krbd或经qemu-nbd用librbdcephceph.rbd.clone_copytrue用 RBD 轻量克隆而非完整拷贝cephceph.rbd.dutrue对停止的实例用 RBDdu统计磁盘占用cephceph.rbd.featureslayering卷上启用的 RBD 特性列表cephfscephfs.cluster_nameceph含 CephFS 文件系统的集群名cephfscephfs.create_missingfalse是否自动创建缺失的文件系统及数据/元数据池cephfscephfs.data_pool/cephfs.meta_pool-/-新建文件系统时的数据池、元数据池cephfscephfs.path/CephFS 挂载的基路径cephfscephfs.fscachefalse是否启用内核fscache与cachefilesdcephobjectcephobject.radosgw.endpoint-radosgw网关进程的 URLcephobjectcephobject.radosgw.endpoint_cert-与端点通信时信任的 TLS 证书PEM bundlecephobjectcephobject.cluster_nameceph使用的 Ceph 集群cephobjectcephobject.bucket_name_prefix-桶名前缀linstorlinstor.resource_group.nameincus使用的 LINSTOR 资源组linstorlinstor.resource_group.place_count2资源在资源组中的磁盘副本数linstorlinstor.volume.prefixincus-volume-LINSTOR 内部卷名前缀创建后不可改linstordrbd.*见文档DRBD 配额决策、自动 diskful 等策略truenastruenas.host/truenas.api_key-/-TrueNAS 主机地址与 API 密钥truenastruenas.dataset-远端 dataset 名通常由source推断truenastruenas.clone_copytrue用轻量克隆而非完整 dataset 拷贝truenastruenas.allow_insecurefalse是否允许非 TLS 连接 TrueNAS APIZFS 的source还支持多块设备与 vdev 类型例如sourcemirror/dev/sda,/dev/sdb仅支持stripe、mirror、raidz1、raidz2四种 vdev 类型。驱动特性对比如何选型各驱动在优化能力上差异很大官方对比表存储驱动参考摘要如下特性DirectoryBtrfsLVMZFSCeph RBDCephFSCeph ObjectLINSTORTRUENAS优化镜像存储否是是是是n/an/a是是优化实例创建否是是是是n/an/a是是优化快照创建否是是是是是n/a是是优化镜像传输否是否是是n/an/a否否优化卷传输否是否是是n/an/a否否写时复制CoW否是是是是是n/a是是基于块否否是否是否n/a是是瞬时克隆否是是是是是n/a是是可用于容器内是是否是否n/an/a否否可从非最新快照恢复是是是否是是n/a否否存储配额是是是是是是是是是incus admin init可用是是是是是否否否否对象存储是是是是否否是否否几个值得注意的细节优化镜像存储除dir外的驱动都有优化的镜像存储格式。Incus 创建实例时优先克隆预制的镜像卷而非解包镜像 tarball因此首次创建较慢、后续近乎瞬时。优化卷传输Btrfs、ZFS、Ceph RBD 拥有内建的 send/receive 机制。同驱动间迁移时若优化传输更快则优先采用否则容器/文件系统卷用rsync虚拟机与自定义块卷用原始块传输。带周期快照的副本刷新场景下优化传输基于最新快照做增量能显著加速而无快照的刷新如--instance-only反而更慢此时 Incus 自动回退到rsync。官方推荐ZFS 与 Btrfs 是首选功能相近ZFS 更可靠生产环境尽量把整块磁盘或分区专用于存储池loop 支持仅建议测试使用dir因无法瞬时复制/快照、效率最低应视为最后手段。安全注意Linux 内核可能静默忽略已挂载块文件系统的挂载选项导致共享同一块设备的多个池挂载选项不一致例如一个池要acl、另一个不要。因此建议每个存储池使用独占磁盘设备或确保共享设备的所有池使用相同挂载选项。在集群中创建存储池运行 Incus 集群时必须为每个集群成员分别创建存储池因为各成员上的存储位置、池大小等配置可能不同。正确流程是对每个成员执行带--targetcluster_member的incus storage create将池标记为 pending所有成员必须使用相同池名最后不带--target再执行一次创建真正完成设置。官方示例在三个成员上用不同位置、不同大小创建同名池my-poolincus storage create my-pool zfs source/dev/sdX size10GiB --targetvm01 # Storage pool my-pool pending on member vm01 incus storage create my-pool zfs source/dev/sdX size15GiB --targetvm02 # Storage pool my-pool pending on member vm02 incus storage create my-pool zfs source/dev/sdY size10GiB --targetvm03 # Storage pool my-pool pending on member vm03 incus storage create my-pool zfs # Storage pool my-pool created从 cmd/incus/storage.go 的实现可以看到create子命令在指定--target时通过UseTarget()走集群定向 API此时只会在数据库中定义 pending 池而不会真正落地。本地 vs 集中式存储对多数驱动而言存储池仅存在于各成员本地——在一个成员创建的存储卷不会出现在其他成员。Ceph 系驱动ceph、cephfs、cephobject例外池位于中心位置所有成员访问的是同一份池与卷。更完整的集群存储规划见 集群存储配置指南。查看存储池# 列出所有可用存储池 incus storage list结果表格包含初始化时创建的池通常叫default或local以及之后添加的所有池。list支持-c自定义列默认列布局为nDdus名称、驱动、描述、source、used by、状态和-f指定输出格式csv、json、table、yaml、compact、markdown可加,header/,noheader后缀并可配合过滤条件使用见 cmd/incus/storage.go 中parseColumns与prepareStoragePoolsServerFilters的实现。# 查看指定池的详细配置YAML 形式含 used_by 列表 incus storage show pool_name # 查看指定池的资源使用情况 incus storage info pool_nameshow支持--resources只输出可用资源info支持--bytes以字节为单位显示空间占用、--target查看指定集群成员的信息。info输出的 “used by” 部分会解析每个使用者的 URI区分卷、项目与成员位置并跳过快照以避免重复计数。扩容存储池存储空间不足时可以通过调整size配置键来扩大池incus storage set pool_name sizenew_size需要注意两点限制该操作仅对 Incus 管理的 loop 存储池有效只能增大不能缩小。调整池大小只影响池本身若需调整池内自定义存储卷的配额或把卷迁移到其他池可参考 存储卷管理、存储卷备份 与 存储卷迁移。小结存储池是 Incus 实例、镜像与自定义卷的落脚点。掌握incus storage create的驱动参数、source/size等通用键与驱动专属键的组合方式理解各驱动的特性差异与集群环境下的“逐成员 pending → 汇总创建”流程就能在生产环境中按需搭建出可靠、可扩展的存储体系。所有命令的底层实现与配置键校验均可直接阅读 cmd/incus/storage.go 与 配置选项文档 进一步深入。赞分享后端虚拟化容器运行时【免费下载链接】incusPowerful system container and virtual machine manager项目地址https://gitcode.com/gh_mirrors/inc/incus点击查看免费下载相关推荐Incus 集群存储配置实战成员级存储池与存储卷的管理Incus 集群存储配置实战成员级存储池与存储卷的管理 导读 本文面向正在搭建或运维 Incus 集群的开发者系统讲解集群场景下存储池与存储卷的正确配置方式后端虚拟化容器运行时如何创建与管理OpenZFS存储池zpool命令完整教程从创建到在线扩容如何创建与管理OpenZFS存储池zpool命令完整教程从创建到在线扩容 OpenZFS 是一款同时提供文件系统与卷管理功能的高级存储方案支持 Linu操作系统Incus 存储驱动深度指南LVM 与 lvmcluster 的原理、配置与实战Incus 存储驱动深度指南LVM 与 lvmcluster 的原理、配置与实战 导读 本文以 Incus LVM 存储驱动参考文档 https://link后端虚拟化容器运行时上一篇戴森球计划蓝图库3000 产线现成布局省 3 倍时间下一篇res-downloader 完整指南用一个本地代理嗅探并下载 6 个以上平台的视频、音乐和图片创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询