在 Alpine Linux 中创建虚拟机时 Cgroup 挂在失败的现象

现象:

在 Alpine Linux 中部署 LXD或者incus 服务后,创建 容器或者虚拟机时提示 实例启动失败、退出代码为1:

查询启动日志后,发现是 cgroup 挂载失败导致了 container 拉起失败。

原因分析:

从启动日志上看,是 cgroup 挂载失败导致了 container setup 失败。

此时查看发现目标实例创建成功了、只是 start 失败。

这是便可以排除 image 的可用性和有效性问题了,应该是 host-OS 中的 cgroup 驱动与 guest-OS中cgroup 驱动的冲突或者不兼容。

已知本次使用的 image版本是 Debian-12,kernel 是 6 系列的 LTS,默认应该直接启用了 cgroup-V2。

可以考虑直接查看 host-OS中的 cgroup驱动状况:

通过上文输出可知,host-OS中安装的也是 cgroup-V2 。

此时应该考虑是不是 host-OS中的 cgroup 配置了 混合 模式:

从以上输出中看,可知 host-OS中的 cgroup 是支持 混合模式配置的,且注销了直接启用 cgroup-V2 。

此时尝试通过手工卸载 cgroup 的 systemd 挂载点后、重新拉起一个 实例:

验证发现的确是 cgroup 不兼容导致的 实例 拉起失败。

解决办法:

host-OS启动时先卸载 cgroup 默认挂载的 systemd ,由 LXC 创建实例时自动选择所需挂载的cgroup驱动版本:

相关推荐
理智的煎蛋17 小时前
MySQL高可用架构:MHA
linux·数据库·mysql·架构·可用性测试
zz-zjx18 小时前
进程与线程详解, IPC通信与RPC通信对比,Linux前台与后台作业
linux·网络协议·rpc
大筒木老辈子19 小时前
Linux笔记---计算机网络概述
linux·笔记·计算机网络
keep__go20 小时前
postgresql9.2.4 跨版本升级14.6
linux·运维·数据库·postgresql
深思慎考20 小时前
LinuxC++项目开发日志——高并发内存池(1-定长内存池)
linux·c++
川石课堂软件测试21 小时前
Oracle 数据库如何查询列
linux·数据库·sql·功能测试·oracle·grafana·prometheus
光电的一只菜鸡1 天前
ubuntu之坑(十九)——VMware虚拟机扩容磁盘
linux·数据库·ubuntu
岚天start1 天前
网络计算工具ipcalc详解
linux·运维·网络·网关·广播地址·掩码·ipcalc
deeper_wind1 天前
Jenkins主机中安装ansible部署lnmp论坛(小白的”升级打怪“成长之路)
linux·ansible·jenkins
格林威1 天前
Linux使用-Linux系统管理
linux·运维·服务器·深度学习·ubuntu·计算机视觉