pep*_*nas 4 memory linux partitioning
我一次编译了 2 个内核,但编译过程停止了。原因:/tmp 目录已满。我检查了 df 并且... /tmp 的固定大小为 2GB!(我的电脑有 4GB 的内存)为什么?我什至没有 /tmp 分区...我该如何更改?
File system 1K-blocks Usati Disponib. Uso% Montato su
/dev/sda5 35431432 13651652 19973276 41% /
dev 1989592 0 1989592 0% /dev
run 1992432 976 1991456 1% /run
tmpfs 1992432 280 1992152 1% /dev/shm
tmpfs 1992432 0 1992432 0% /sys/fs/cgroup
tmpfs 1992432 1436412 556020 73% /tmp
Run Code Online (Sandbox Code Playgroud)
/tmp如果按原样安装,tmpfs则限制大小以防止 DOS 攻击。如果一项服务遭到破坏或一名用户恶意,他们可以简单地写入,/tmp直到所有交换和内存都被占用。
由于 OOM 条件不适用于文件,因此进程将被杀死,直到恶意用户 shell 被杀死(并且由于内存不足他将无法登录)或受感染的服务将被杀死。在这个阶段,系统会太慢,管理员无法实际执行任何操作,然后重新启动,这将清除证据,从而使其成为有效的 DOS 技术。
如果没有/tmp单独的安装,则会发生略有不同的问题。使/分区已满可能会使系统无法启动,并且在非常糟糕的情况下(例如 glibc 更新),它可能需要更多的修复。
虽然这些问题对于多系统来说可能很重要,但对于桌面用户来说,也有理由阻止它。例如,我曾经使用过一个程序,当 512 MiB 是大量 RAM 时,该程序试图写入几 GB 的文件,如果没有限制,这将使系统无法使用tmpfs。以这种方式,它只会给程序本身和其他试图写入/tmp.
tmpfs 的 50% 的 RAM 允许将 50% 的 RAM 用于其他事情,例如运行程序,从而防止大交换。由于通常假设保留的信息量最少(我的系统上为 41M),但需要快速访问它是首先使用 tmpfs 的原因(无需在重新启动时保留它即可启用它)。因此,50% 是“合理的”,既可以在高峰/tmp使用发生的情况下同时防止系统变慢。
正如abdelsaid所提到的,您可以更改以下设置/etc/fstab:
none /tmp tmpfs size=2G 0 0 # Change the size= parameter to whatever you want
Run Code Online (Sandbox Code Playgroud)
附注。你想在哪里编译内核(在/tmp)?通常你用用户权限编译它们并保存结果,以防你需要 3rd 方模块等。gcc 应该保持最少的文件数量,/tmp从而避免整个问题。
一旦您/tmp在 4GB 系统上使用 4GB,您的系统可能会显着变慢(尤其是当您使用重量级桌面环境时)。
默认情况下,RHEL 和大多数 Linux 发行版将 tmpfs(基于 RAM 的临时文件系统)挂载到 /dev/shm 目录,这个临时文件系统大小始终设置为已安装内存的一半。
来源:http : //www.walkernews.net/2010/05/04/how-to-resize-devshm-filesystem-in-linux/
您可以通过在 /etc/fstab 中指定 size=... 来更改它:
例如 2GB:
tmpfs /dev/shm tmpfs defaults,size=2g 0 0
Run Code Online (Sandbox Code Playgroud)
例如 4GB:
tmpfs /dev/shm tmpfs defaults,size=4g 0 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30235 次 |
| 最近记录: |