Dan*_*Dan 107 filesystem fstab tmpfs
看到后评论通过匿名的问题/ tmp目录如何清理?,我发现在我的系统上实现它是一个好主意,因为我有 16GB 的 RAM 并且我从未使用过它。
我的临时文件永远不会写入磁盘。它们被写入 RAM 磁盘。我确实放入
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0了/etc/fstab。
我的问题是:
我可以为 RAM 使用设置最大值/tmp吗?在这种情况下,如果超过最大数量会发生什么,它会写入硬盘驱动器吗?
我已经阅读了一个解决方案,其中指出:
Run Code Online (Sandbox Code Playgroud)mkdir -p /tmp/ram sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/
但据我所知,这不会是一个永久的解决方案。如果我需要它是永久性的,则必须将其添加到/etc/fstab配置文件中。
如果这是正确的解决方案,我如何将该挂载命令转换为/etc/fstab.
Fuz*_*zyQ 92
你是绝对正确的。相应的 fstab 条目如下所示:
tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M 0 0
Run Code Online (Sandbox Code Playgroud)
请注意:
当tmpfs被填满时,它将通过给出“空间不足”的错误而表现得像任何物理硬盘驱动器。虽然重新启动(从而清空缓存)可以解决这个问题,但当单个操作开始消耗的空间多于 上的空间时,您可能会遇到麻烦tmpfs。在这种情况下,您的计算机将开始从 ram 交换到磁盘,这将使您的系统停止运行,当然,前提是您有一个交换分区。
考虑到这一点,现在 512MB 的大小可能太小了,因为现代机器中存在更多的内存,而且价格也便宜得多。由于您已经拥有 16GB 的内存,因此tmpfs对于几乎所有场景,使用默认值的一半应该已经足够了。要使用默认值,只需省略文件中的size=512M条目/etc/fstab。
另一个注意事项:
您也可以轻松地将其他系统文件夹挂载到 ramdisk 中,例如
/var/cache
/var/games
/var/log/apt(仅在defaults,noatime没有mode=或的情况下使用nosuid)
但要注意:上述规则同样适用,空间不足可能会导致大麻烦。例如,想象一下 /var/log/apt 的空间不足将导致您无法安装任何程序!此外,将/var/log文件夹加载到 ramdisk 将在重新启动时删除所有日志文件,因此如果发生任何意外情况,您将无法调试系统。因此,使用这些设置的风险由您自己承担!
编者按:
我删除了/runin tmpfsmount 选项,因为tmpfs默认情况下该文件夹及其子文件夹已经安装。
小智 51
在使用 的系统上systemd,您可以选择使用 systemd 单元文件而不是 fstab 来实现使用tmpfs挂载的目标tmp。在我的 Ubuntu 16.04 系统上,我运行:
sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mount
sudo systemctl enable tmp.mount
sudo systemctl start tmp.mount
Run Code Online (Sandbox Code Playgroud)
该文件/usr/share/systemd/tmp.mount如下所示:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Temporary Directory
Documentation=man:hier(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymbolicLink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target
[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime
[Install]
WantedBy=local-fs.target
Run Code Online (Sandbox Code Playgroud)
使用 FuzzyQ 的 fstab 方法,systemd 将您的 fstab 条目动态转换为挂载单元。我不认为这两种方法更好。
为了按照要求设置 RAM 的最大限制,需要添加size=512M到Options行中,用逗号分隔。
| 归档时间: |
|
| 查看次数: |
180824 次 |
| 最近记录: |