2025年4月,Incus团队正式发布了其容器与虚拟机管理器Incus 6.12版本,这一版本带来了众多令人兴奋的功能更新和性能优化。作为LXC/LXD的 fork 项目,Incus以其统一管理容器和虚拟机的能力迅速赢得了开发者和系统管理员的青睐。6.12版本通过引入虚拟机动态内存扩展、增强的网络访问控制列表(ACL)、全新的日志架构以及更智能的命令行工具,为用户提供了更灵活、更高效的管理体验。

Incus官网
https://linuxcontainers.org/incus
发布公告
https://discuss.linuxcontainers.org/t/incus-6-12-has-been-released/23556/1
完整变更日志
https://github.com/lxc/incus/releases/tag/v6.12.0
Incus 6.12的发布聚焦于解决用户长期以来的痛点,同时通过性能优化和用户体验改进进一步提升了其竞争力。
以下是本次更新的五大核心亮点:
「虚拟机动态内存扩展」:虚拟机现支持在线增加内存分配,无需重启即可满足峰值负载需求。「增强的网络ACL」:引入address-set抽象,简化IP地址管理,并支持桥接转发的SNAT功能。「全新日志架构」:从单一日志输出升级为支持多目标的插件化架构,允许更精细的事件分类和日志路由。「命令行工具优化」:新增服务器端过滤功能,显著减少网络流量和数据库负载。「性能提升」:针对快照密集型环境和ZFS用户进行了优化,提升了启动和列表操作的效率。接下来,我们将逐一深入探讨这些特性,并提供相关的Incus命令示例,帮助用户快速上手。
二、虚拟机动态内存扩展:无缝应对负载峰值在之前的Incus版本中,虚拟机的内存管理存在一定的局限性。虽然支持内存“缩减”(ballooning down),但无法动态增加内存分配。这意味着,当虚拟机面临峰值负载时,管理员往往需要重启虚拟机以调整内存配置,这不仅中断了服务,还增加了运维复杂性。
Incus 6.12通过引入「内存热插拔」(memory hot-plug)彻底解决了这一问题。现在,管理员只需调整虚拟机的limits.memory配置,虚拟机即可立即感知到新增的内存,无需任何重启操作。这一功能使虚拟机的内存管理行为与容器保持一致,极大地提升了灵活性和可用性。
使用命令实现动态内存扩展要为运行中的虚拟机增加内存,管理员可以使用以下命令:
incus config set <instance-name> limits.memory <new-memory-size>例如,为名为vm-webserver的虚拟机将内存从4GB增加到8GB:
incus config set vm-webserver limits.memory 8GB执行后,虚拟机将立即获得额外的4GB内存,运行中的服务不会受到任何影响。要验证内存变化,可以进入虚拟机内部使用free -h命令查看:
incus exec vm-webserver -- free -h这一功能的实现依赖于Incus对QEMU的深度整合,允许在虚拟机运行时动态调整内存分配。对于需要快速响应的生产环境(如Web服务器或数据库集群),这一特性无疑是一大福音。

网络安全和灵活性一直是Incus的核心优势之一。6.12版本通过引入address-set抽象和桥接转发SNAT功能,进一步提升了网络ACL的易用性和功能性。
1. Address-Set:简化IP地址管理在之前的版本中,ACL规则需要直接引用具体的IPv4或IPv6地址,这在管理复杂网络环境时显得繁琐。例如,如果需要为多个服务配置相同的IP白名单,管理员需要在每个ACL规则中重复输入IP地址,维护成本高且容易出错。
address-set功能允许用户将一组IPv4或IPv6地址归类为一个项目范围的标签(label),然后在ACL规则中直接引用该标签。这不仅提高了规则的可读性,还简化了维护工作。
创建和使用Address-Set要创建一个address-set,可以使用以下命令:
incus network acl address-set create <project-name> <address-set-name> <address-list>例如,创建一个名为cloudflare-dns的地址集,包含Cloudflare的DNS服务器IP:
incus network acl address-set create default cloudflare-dns 1.1.1.1,1.0.0.1,2606:4700:4700::1111,2606:4700:4700::1001随后,可以在ACL规则中引用该地址集。例如,允许cloudflare-dns访问实例的DNS端口:
incus network acl rule add default allow-dns ingress source=@cloudflare-dns destination-port=53 protocol=udp action=allow要查看已创建的地址集:
incus network acl address-set list default如果需要更新地址集,可以使用:
incus network acl address-set set default cloudflare-dns <new-address-list>2. 桥接转发SNAT:优化外部服务访问对于通过桥接转发(bridged forward)将外部端口(如80/443)映射到内部服务的场景,Incus 6.12新增了对出站流量的源地址转换(SNAT)支持。这意味着,实例发出的出站数据包可以被转换为与公共地址和端口一致的地址,从而避免了NAT配置中的不一致性。
配置桥接转发SNAT假设需要将外部80端口转发到实例webserver的8080端口,并启用SNAT,可以使用以下命令:
incus network forward create default <public-ip> target-address=<instance-ip> ports=80 target-ports=8080incus network forward set default <public-ip> snat=true通过启用snat=true,出站数据包的源地址将被重写为<public-ip>,确保外部客户端看到一致的地址。
这些网络功能的增强使得Incus在管理复杂网络环境(如多租户云或微服务架构)时更加得心应手。
四、全新日志架构:灵活监控与精细管理Incus 6.12对日志系统进行了彻底重构,摒弃了之前单一的syslog或Loki端点选择,引入了支持多目标的「插件化日志架构」。这一变化允许管理员根据需求将不同类型的事件(如生命周期事件、ACL命中、通用日志)路由到不同的日志目标,并为每个目标设置特定的严重性级别。
新日志架构的优势「多目标支持」:可以同时将日志发送到多个Loki实例、syslog服务器或其他支持的日志系统。「事件分类」:支持按事件类型(如lifecycle、acl、log)进行过滤。「严重性控制」:允许为每个目标设置最低日志级别(如debug、warning、error)。例如,在大型部署中,管理员可以将高频的调试日志发送到Loki集群进行分析,同时将警告及以上级别的日志保留到本地syslog以便快速响应。
配置多目标日志要配置一个Loki日志目标,可以使用以下命令:
incus config set core.loki.url=https://loki.example.com:3100incus config set core.loki.types=lifecycle,acl severity=debug要添加一个syslog目标,并限制只记录警告及以上级别的事件:
incus config set core.syslog.address=syslog.example.com:514incus config set core.syslog.types=log severity=warning要查看当前的日志配置:
incus config show这一架构的灵活性使得Incus能够适应从小型开发环境到大规模生产集群的各种日志需求。
五、命令行工具优化:服务器端过滤提效Incus 6.12对命令行客户端进行了重大升级,引入了「服务器端过滤」功能,显著减少了网络流量和客户端的处理负担。在之前的版本中,客户端需要从服务器拉取完整的实例、镜像、体积或配置文件列表,然后在本地进行过滤。对于拥有数百个实例或快照的大型集群,这种方式会导致明显的性能瓶颈。
现在,Incus客户端可以将过滤条件直接传递给服务器,由服务器端的守护进程完成过滤操作,仅返回匹配的结果。这不仅降低了网络开销,还减少了SQLite数据库的查询压力。
使用服务器端过滤以下是一些常见的过滤命令示例:
列出所有状态为Running的实例:incus list --filter "status=Running"查找特定镜像的实例:incus list --filter "image=ubuntu/24.04"列出特定项目的配置文件:incus profile list <project-name> --filter "name=default"查找大于某个大小的自定义存储卷:incus storage volume list <pool-name> --filter "size>10GB"这些命令通过将过滤逻辑转移到服务器端,使得大型集群的管理更加高效。
六、性能优化:快照与ZFS的提速Incus 6.12在性能方面也取得了显著进展,特别是针对快照密集型环境和ZFS存储后端的优化。虽然官方公告未提供具体的性能数据,但明确指出快照相关的操作(如创建、列出和启动)变得更加高效。
快照管理命令要创建快照:
incus snapshot create <instance-name> <snapshot-name>列出所有快照:
incus snapshot list <instance-name>恢复快照:
incus snapshot restore <instance-name> <snapshot-name>对于ZFS用户,这些优化意味着更快的快照创建和恢复速度,特别适合开发测试环境或需要频繁回滚的场景。
七、Web管理界面:更直观的操作体验Incus 6.12的Web管理界面也得到了改进,提供了更直观的实例管理、网络配置和日志查看功能。虽然官方公告未详细说明Web界面的具体变化,但结合新功能的命令行支持,可以推测界面现已集成对address-set、动态内存调整和多目标日志配置的支持。
用户可以通过访问Incus在线平台(https://linuxcontainers.org/incus/try-it/)体验最新版本的Web界面,快速上手新功能。





Incus 6.12的发布标志着其在容器与虚拟机管理领域的又一次飞跃。动态内存扩展解决了虚拟机管理中的关键痛点,增强的网络ACL和全新日志架构为复杂环境的网络安全和监控提供了强大支持,而命令行工具的优化和性能提升则进一步提高了大规模部署的效率。
对于开发者和系统管理员来说,Incus 6.12不仅是一个功能更丰富的管理工具,更是一个能够显著提升工作效率的平台。无论是运行开发测试环境、构建多租户云平台,还是管理生产级虚拟化集群,Incus 6.12都展现出了无与伦比的灵活性和性能。