无法挂载内存cgroup

问题描述 投票:0回答:2

我正在尝试使用以下命令挂载内存 cgroup:

sudo mount -t cgroup none /sys/fs/cgroup/memory -o memory

我得到错误:

mount: /sys/fs/cgroup/memory: wrong fs type, bad option, bad superblock on none, missing codepage or helper program, or other error.

我启用了所有 cgroup 内核配置选项,并且可以毫无问题地挂载 cpu、cpuset 和设备 cgroups。

我错过了什么?

操作系统: Raspberry Pi OS Lite(64 位)

内核版本: 5.10.95

linux raspberry-pi mount cgroups
2个回答
3
投票

使用

cgroup_enable=memory systemd.unified_cgroup_hierarchy=0
在内核命令行文件中启用内存 cgroups 和禁用 cgroupv2 解决了这个问题。


0
投票

Jaese 的回答的一些额外细节使我走上了解决我在 docker 中遇到的类似 cgroup 问题的轨道。

您需要添加以下内核命令行选项:

cgroup_enable=memory 
systemd.unified_cgroup_hierarchy=0

在干净的 Debian 11(靶心)安装中,

cgroup_enable=memory
选项已经设置。

要在实践中做到这一点,您需要修改引导加载程序配置。执行此操作的步骤可能会有所不同,具体取决于您的 Linux 发行版和所使用的引导加载程序。特别要检查您的系统是否使用 GRUB2(Ubuntu、Debian、Centos、Fedora 等)或

systemd-boot
(Arch Linux、Fedora 和 Clear Linux):

对于 Debian 上的 GRUB2,请执行以下操作:

  1. 编辑文件
    /etc/default/grub
    并找到以
    GRUB_CMDLINE_LINUX
    开头的行。将以下选项添加到行尾的引号内:
    cgroup_enable=memory systemd.unified_cgroup_hierarchy=0
    。 它应该是这样的:
GRUB_CMDLINE_LINUX="... cgroup_enable=memory systemd.unified_cgroup_hierarchy=0"
  1. 更新 GRUB 配置:
sudo update-grub
  1. 重启系统使更改生效。

请注意,这也解决了以下错误:

  • Missing file or directory
    在 cgroup 树中(例如
    /sys/fs/cgroup/memory/
    /sys/fs/cgroup/cpuacct/
    ),或
  • Failed to reset control group /sys/fs/cgroup/memory/...: Device or resource busy
    .
© www.soinside.com 2019 - 2024. All rights reserved.