如何调整“/run”目录的大小?

如何调整“/run”目录的大小?

Nix 自定义映像构建在 Ubuntu 18.04.4 LTS 上不断失败并显示消息No space left on device,并且能够 watch -n -1 "df -h" 在运行构建时使用它来跟踪它。罪魁祸首最终是 /run挂载点(更具体地说是/run/user/1000),以及间接的交换空间。

这是以前的样子:

Filesystem                   Size  Used Avail Use% Mounted on
...
tmpfs                        785M   28K  785M   1% /run/user/1000
...

答案1

1.调整/run挂载点大小

根据 tmpfs文档 ,”tmpfs具有三种尺寸安装选项”在哪里 尺寸

为此 tmpfs 实例分配的字节数限制。默认情况下是物理 RAM 的一半,没有交换。如果您的 tmpfs 实例过大,机器将死锁,因为 OOM 处理程序将无法释放该内存。

也就是说,它可以设置为任意大的大小,但**请确保有足够的RAM或交换空间(或其组合),因此如果需要,请调整后者(参见下面的4.)。

就我而言,我将其设置为 15 GB 作为初学者,这已经足够了。

sudo mount -o remount,size=15G,noatime /run/user/1000

2.调整交换空间

2.1 暂时

用过的这个 Askubuntu 答案通过以下方式:

检查当前交换:

$ free -th
              total        used        free      shared  buff/cache   available
Mem:           7.7G        4.6G        253M        985M        2.8G        1.8G
Swap:          975M          0B        975M
Total:         8.6G        4.6G        1.2G

$ sudo swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-2                               partition       999420  3840    -2

设置交换文件并将其打开:

$ sudo touch /temp_swap_15G.img
$ sudo fallocate -l 15G /temp_swap_15G.img
$ sudo mkswap /temp_swap_15G.img

# `-p` is the priority; the default is -2 and anything
# higher will be used first
$ sudo swapon -p 27 /temp_swap_15G.img

检查结果:

$ sudo swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-2                               partition       999420  4352    -2
/temp_swap_15G.img                      file            15728636        0       27

2.2 永久

StackExchange 答案(快照可在archive.org上找到):

这是针对 LVM 的故障排除:


笔记:在 NixOS 上,该过程将非常简单,而不是上述步骤

  1. 编辑 services.logind.extraConfig 属性/etc/nixos/configuration.nix
  services.logind.extraConfig = ''
    RuntimeDirectorySize=12G
    HandleLidSwitchDocked=ignore
  '';
  1. 重建配置(例如,使用sudo nixos-rebuild switch)。

更多信息:


什么是/run

是权威答案,但是 这个 Quora 答案 总结:

/run是相当于 的“早起鸟” /var/run,因为它意味着很早启动的系统守护进程(例如 systemdudev)来存储临时运行时文件,如 PID 文件和通信套接字端点,而 /var/run 将由较晚启动的守护进程使用(例如sshd 和阿帕奇)。

传统的 /var/run是磁盘上的实际目录,这意味着底层文件系统可能尚未安装, systemd而其他人需要将内容写入其中。制作/run tmpfs(即基于 RAM)文件系统巧妙地解决了这个问题,并且无需在下次启动时清理它。

当然,拥有两个运行时临时目录对很多人来说有点太多了,所以在许多现代 Linux 发行版中, /var/run 只是一个到 /run.

什么是 tmpfs

kernel.org/doc/Documentation/filesystems/tmpfs.txt

tmpfs 中的所有内容都是临时的,因为不会在硬盘上创建任何文件。如果卸载 tmpfs 实例,其中存储的所有内容都会丢失。

tmpfs 将所有内容放入内核内部缓存中,并进行增长和收缩以容纳其包含的文件,并且能够将不需要的页面交换到交换空间。它有最大尺寸限制,可以通过以下方式动态调整mount -o remount ...

还, ”tmpfs 完全存在于页面缓存和交换中”。

相关内容