Incus 0.5.1 已发布¶
2024年1月29日
简介¶
Incus 团队很高兴地宣布发布 Incus 0.5.1!
这是一个不寻常的版本,因为我们通常不会在每月功能版本的基础上发布点版本。但我们认为这次需要发布,因为有一些非常重要的错误修复和一个次要的功能添加,以适应那些运行 CentOS/Alma/Rocky 虚拟机的用户。
大多数更改都在服务器端,因此如果您只使用命令行客户端,则没有充分的理由从 0.5 升级到 0.5.1。
照例,您可以自己在线试用:https://linuxcontainers.cn/incus/try-it/
尽情享受!
亮点¶
获取虚拟机代理的替代方法¶
在 Incus 0.5 中,Incus 虚拟机代理的分布机制发生了一些变化。
过去,我们有一个名为 config
的共享,它包含实例特定的代理配置和 incus-agent
二进制文件。
这有点浪费,需要为每个虚拟机复制一个 15-20MB 大小的 incus-agent
,但仍然可以管理。此共享也作为 9p
和 virtiofs
公开。导致每个 Incus 虚拟机的宿主系统上运行两个进程。
随着对多个代理二进制文件的支持,为每个虚拟机复制它们确实不再是一种选择,因此引入了单独的共享仅用于二进制文件。因为我们真的不想最终在每个虚拟机的宿主系统上运行另外两个进程,所以我们决定只让那些内部共享通过 9p
提供。
在各种镜像上进行测试,包括 CentOS 7,表明这将是可以的。
9p
的性能低于 virtiofs
,但由于这些共享仅在每个虚拟机启动时使用几秒钟,因此这并不是问题。用户定义的共享仍将通过 virtiofs
公开,因此它们仍将获得高性能选项。
我们没有注意到的是,由于某种原因,CentOS 8-Stream、CentOS 9-Stream 和其他 RHEL 8/9 派生发行版根本不附带 9p
内核驱动程序……
这意味着这些实例不再有办法获取代理,导致 incus exec
和 incus file
出现故障。
我们仍然不希望为每个 Incus 虚拟机运行 4 个宿主进程,仅仅是为了让这些少数镜像正常工作。相反,我们在 Incus 0.5.1 中引入了一个新的代理驱动器,实际上是一个可以附加到这些特定虚拟机的额外磁盘,通过类似于 CD-ROM 驱动器的方式提供这些文件,而不是通过网络文件系统检索。
因此,要运行 CentOS 9-Stream,现在需要执行以下操作
incus create images:centos/9-Stream centos --vm incus config device add centos agent disk source=agent:config incus start centos
如果您运行许多此类虚拟机,更好的选择可能是为此创建一个配置文件
incus profile create vm-agent incus profile device add vm-agent agent disk source=agent:config
此时,您可以执行以下操作
incus launch images:centos/9-Stream centos --vm -p default -p vm-agent
这显然不是理想的,并且在为这些发行版创建虚拟机时增加了几个步骤,但这种新机制现在提供了一种方法,可以在几乎任何环境中启动和运行代理。
注意:我们不考虑始终提供该额外设备,因为它需要一些资源来生成 cdrom 设备并在宿主上使用一些额外的磁盘。因此,最好仅在需要时添加。
修复了疏散期间停止实例的处理¶
Incus 0.5 引入的一个错误导致停止的实例在疏散期间被重新定位到其他系统,即使该实例配置为保持在原位。
此问题现已得到纠正,使用 stopped
、force-stop
或 stateful-stop
的实例现在保证保留在其当前服务器上。
数据库性能修复¶
Incus 0.5 中的数据库改进意外地导致在为大量实例获取网络信息详细信息时发生一些嵌套数据库事务。
这只有在使用 Incus 集群(也提供 DNS 区域并由 Prometheus 提取其指标)时才会真正可见。这种组合会导致每 15 秒左右 API 请求出现大幅峰值,然后开始触发超时和重试,最终导致其他 API 请求堆积并超时。
逻辑现已更改为删除此类嵌套事务,并且还进行了进一步的优化以在非常常见的 API 交互(例如执行实例实例的命令)期间节省一些数据库交互。
完整变更日志¶
以下是此版本中所有更改的完整列表
完整提交列表
- 使用 Weblate(德语)翻译
- 使用 Weblate(荷兰语)翻译
- incus/action: 修复恢复
- 使用 Weblate(日语)翻译
- 使用 Weblate(日语)翻译
- 使用 Weblate(日语)翻译
- doc: 删除 net_prio
- incusd/cgroup: 完全删除 net_prio
- incusd/warningtype: 删除 net_prio
- incusd/cgroup: 在根目录查找完整的 cgroup 控制器列表
- incusd/dns: 序列化 DNS 查询
- incusd/network: 优化 UsedByInstanceDevices
- incusd/backups: 简化缺少备份错误
- tests: 更新当前备份错误
- incusd/cluster: 优化 ConnectIfInstanceIsRemote
- incusd/instance/qemu/agent-loader: 修复以与 busybox 协同工作
- doc/installing.md: 在 Gentoo 部分添加一个 gentoo-wiki 链接
- 使用 Weblate(法语)翻译
- 使用 Weblate(荷兰语)翻译
- incusd/device/disk: 更好地清理 cloud-init ISO
- incusd/instance/qemu/qmp: 添加弹出命令
- incusd/instance/qemu/qmp: 处理弹出请求
- api: agent_config_drive
- doc/devices/disk: 添加代理:配置驱动器
- incusd/device/disk: 添加代理配置驱动器
- incusd/project: 添加对代理配置驱动器的支持
- incusd/instance/qemu/agent-loader: 处理代理驱动器
- incusd/db/warningtype: gofmt
- incusd/loki: 对生命周期上下文键进行排序
- incusd/instance/qemu/agent-loader: 不要硬编码路径
- incusd/cluster: 修复停止实例的疏散
文档¶
Incus 文档可以在以下位置找到
https://linuxcontainers.cn/incus/docs/main/
软件包¶
没有官方的 Incus 软件包,因为 Incus 上游仅发布常规的发布版 tarball。以下是启动和运行 Incus 的一些可用选项。
在 Linux 上安装 Incus 服务器¶
Incus 可用于大多数常见的 Linux 发行版。您将在我们的文档中找到详细的安装说明。
https://linuxcontainers.cn/incus/docs/main/installing/
Incus 客户端的 Homebrew 软件包¶
客户端工具可通过 HomeBrew 在 Linux 和 MacOS 上使用。
https://formulae.brew.sh.cn/formula/incus
Incus 客户端的 Chocolatey 软件包¶
客户端工具可通过 Chocolatey 供 Windows 用户使用。
https://community.chocolatey.org/packages/incus/0.5.1
Incus 客户端的 Winget 软件包¶
客户端工具也可通过 Winget 供 Windows 用户使用。
https://winstall.app/apps/LinuxContainers.Incus
支持¶
在这个早期阶段,每个 Incus 版本仅支持到下一个版本发布为止。这将在几个月内发生变化,因为我们计划在 LXC 和 LXCFS 的 LTS 版本发布时发布 LTS 版本。
社区支持提供于:https://discuss.linuxcontainers.org
商业支持可通过以下方式获得:https://zabbly.com/incus
错误可以在以下位置报告:https://github.com/lxc/incus/issues