3
5
Fork 0
mirror of git://git.savannah.gnu.org/guix.git synced 2023-12-14 03:33:07 +01:00

file-systems: Use cgroups v2.

cgroup v2 is the next generation of the control groups API.  This patch
replaces the cgroup v1 file systems with the unified cgroup v2 file
system.

cgroup v2 allows for things like containerd/podman to run rootless
containers and opens guix system up to running things like Kubernetes.

Thanks to Hilton Chain <hako@ultrarare.space> for suggesting the Docker
service change.

* gnu/system/file-systems.scm (%control-groups): Change to a single
"cgroup2" mount point.
* gnu/services/docker.scm (docker-shepherd-service): Trim 'requirement'
field accordingly.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Sam Lockart 2023-06-24 03:11:26 +00:00 committed by Ludovic Courtès
parent 267e4234ff
commit 969cea6836
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 8 additions and 26 deletions

View file

@ -116,12 +116,7 @@ loop-back communications.")
(requirement '(containerd
dbus-system
elogind
file-system-/sys/fs/cgroup/blkio
file-system-/sys/fs/cgroup/cpu
file-system-/sys/fs/cgroup/cpuset
file-system-/sys/fs/cgroup/devices
file-system-/sys/fs/cgroup/memory
file-system-/sys/fs/cgroup/pids
file-system-/sys/fs/cgroup
networking
udev))
(start #~(make-forkexec-constructor

View file

@ -445,26 +445,13 @@ TARGET in the other system."
(flags '(read-only bind-mount no-atime))))
(define %control-groups
(let ((parent (file-system
(device "cgroup")
(mount-point "/sys/fs/cgroup")
(type "tmpfs")
(check? #f))))
(cons parent
(map (lambda (subsystem)
(file-system
(device "cgroup")
(mount-point (string-append "/sys/fs/cgroup/" subsystem))
(type "cgroup")
(check? #f)
(options subsystem)
(create-mount-point? #t)
;; This must be mounted after, and unmounted before the
;; parent directory.
(dependencies (list parent))))
'("cpuset" "cpu" "cpuacct" "memory" "devices" "freezer"
"blkio" "perf_event" "pids")))))
;; The cgroup2 file system.
(list (file-system
(device "none")
(mount-point "/sys/fs/cgroup")
(type "cgroup2")
(check? #f)
(create-mount-point? #f))))
(define %elogind-file-systems
;; We don't use systemd, but these file systems are needed for elogind,