使用tmpfs +一个非常大的交换分区为/ tmp而不是常规的文件系统?

我有Linux服务器,我有一个备用的500GB磁盘分区。 我想格式化它并将其用于/ tmp。 服务器偶尔会运行一些大型的数据处理任务,所以可能会发生/ tmp会保存GB的临时数据。

然后我得到一个想法,相反,我可以将其添加为交换分区,而将/ tmp挂载到tmpfs。 这个想法是否合理?

服务器有6GB的RAM,所以在大多数情况下,/ tmp上的数据只会在RAM中,具有明显的速度优势。 问题是,如果在/ tmp上会有10-20GB的数据,系统将如何执行? 与简单地将/ tmp挂载到ext4分区相比,性能如何? 感谢帮助。

编辑:很明显,当tmpfs的使用达到RAM限制时,系统将开始交换内存。 但是,Linux是否足够智能,可以交换出tmpfs数据,并在RAM中保存“常规”数据? 如果是的话,那么我认为它可以合理的行事。 否则,整个系统将受到严重影响。

这不是一个好主意TM

你可以用大的/tmp分区,像这样挂载(从你的/etc/fstab

 tmpfs /dev/tmp tmpfs defaults,nosuid,nodev,noexec,noatime,nodiratime,size=6000M 0 0 

你可以添加你的外置硬盘作为一个巨大的交换分区

 /dev/sdb1 swap swap defaults 0 0 

当达到极限时,机器将开始将页面从RAM交换到磁盘 – 此时,加载平均值将通过屋顶,机器将停止工作。

以任何方式依赖SWAP是一个糟糕的主意,你最好卖掉你的500GB硬盘,而只是购买更多的RAM – 它便宜。

综上所述

如果你真的想要使用你的500GB磁盘,你可以将你的500GB磁盘安装在/tmp ,并且禁用一个非日志文件系统(例如ext2 )。 这比处理SWAP要快得多

这可能是一个合理的想法。

把一个实际的文件系统放在/ tmp上会产生开销,因为文件系统经过很长时间才能确保系统发生故障时磁盘上的数据没有被破坏。 对于在启动时清理的/ tmp,这显然只是开销。 使用tmpfs可以避免这种开销。

另一方面,文件系统还确保文件以优化访问时间的方式组织在磁盘上,即避免碎片化。 典型的顺序文件访问将(主要)导致顺序磁盘访问,这比随机访问更有效。 旋转硬盘的效果比SSD更显着。 swap + tmpfs组合不能轻易做到这一点,因为swap不知道哪个内存属于哪个文件,而tmpfs不知道页面如何映射到物理内存或磁盘。 但是,对于大文件,它应该可以正常工作,因为在这种情况下,tmpfs和swap都会保持连续性。 至less,只要交换空间有很大的空间(否则就会出现碎片),而且写入的速度足够慢,以至于有机会被交换出去。

所以底线是:这取决于,你应该尝试两种select,看看哪一个效果最好。

在安装tmpfs时,请记得明确设置大小。 默认是物理RAM的一半,所以只有3GB。