我的 /tmp 文件夹不是分区,但具有固定大小。为什么?

我的 /tmp 文件夹不是分区,但具有固定大小。为什么?

我当时正在同时编译 2 个内核,但编译过程停止了。原因:/tmp 目录已满。我用 df 检查了一下……/tmp 的大小固定为 2GB!(我的 PC 有 4GB 的 RAM)为什么?我甚至没有 /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

答案1

/tmp如果按原样安装,则对大小进行限制tmpfs,以防止 DOS 攻击。如果某个服务受到威胁或某个用户​​恶意,他们只需写入即可,/tmp直到所有交换和内存都被占用。

由于 OOM 条件不适用于文件,因此进程将被终止,直到恶意用户 shell 被终止(由于内存不足,他将无法登录)或受感染的服务被终止。在这个阶段,系统会变得太慢,管理员除了重新启动之外无法做任何事情,这会抹去证据,从而使其成为有效的 DOS 技术。

如果没有/tmp单独挂载,则会发生稍微不同的问题。/分区满了可能会导致系统无法启动,在非常糟糕的情况下(例如 glibc 更新),可能需要更多修复。

虽然这些问题对于多系统来说可能很严重,但对于桌面用户来说,也有理由阻止它。例如,我曾经使用过一个程序,它试图在 512 MiB 是大量 RAM 的情况下写入几 GB 的文件,如果 RAM 是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

PS. 您要在哪里编译内核(在 中/tmp)?通常,您会使用用户权限编译它们并保存结果,以防您需要第三方模块等。gcc 应保留最少的文件,/tmp从而避免整个问题。

一旦在 4GB 系统上使用 4 GB,/tmp您的系统速度就可能会显著下降(尤其是当您使用重量级桌面环境时)。

答案2

默认情况下,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

例如4GB:

tmpfs      /dev/shm      tmpfs   defaults,size=4g   0   0

答案3

如果你不想将 /tmp 挂载在 tmpfs 中,请在 /etc/fstab 中查找类似如下的一行:

tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0

如果存在则删除。

根据发行版的不同,它也可能在 /etc/default/tmpfs 或 /etc/default/rcS 中进行配置。编辑该文件,如果存在以下行,请对其进行注释(前面加上 #):

RAMTMP=yes

相关内容