是否有理由使用tmpfs而不是zRAM?

我正在考虑在我的服务器上使用zRam 。 从我读到的关于zRam的内容来看,显然tmpfs可以做更多的事情。

一旦zRAM工作,是否有任何理由保持tmpfs? 有没有什么tmpfs zRAM不能做? 是否有理由使用tmpfs而不是zRAM?

只要有足够的内存空间,写入tmpfs数据就会保存在内存中。 一旦系统受到内存压力,它会尝试将数据从tmpfs (以及其他任何地方,如普通进程内存)移动到它可以find的任何swap (包括zram swap )。 你也可以通过简单的mount -o remount来更改tmpfs的参数,特别是文件系统的大小或者inode的数量。

使用zram作为临时文件系统的后盾有一个缺点,那就是写入的所有数据需要立即压缩(并在使用时解压)。 你也需要在上面放置一个文件系统,即使没有存储实际的文件,也需要存储结构。 你也得到了限制,如最大数量的inode,你不能轻易改变它的大小等。

恕我直言,最好的解决scheme是安装tmpfs地方使用和创build一个zram交换。 它通过最大限度地减less缺点来结合两者的优点。

或者购买更多的内存;)

由于可能的压缩,您将从使用zram进行swap获得更好的性能。

zram-init使zram易于使用。 请记住阅读说明 。

您的内核需要使用CONFIG_ZRAM_LZ4_COMPRESS启用,才能从lz4压缩中受益。

我使用zram作为swap &for /tmpzram-init/tmp使用合理的默认挂载选项 ):

 root@alpine [~]# cat /proc/swaps Filename Type Size Used Priority /dev/vda7 partition 1045500 0 -1 /dev/zram0 partition 1048572 0 16383 root@alpine [~]# mount|grep zram /dev/zram1 on /tmp type ext4 (rw,nosuid,nodev,noexec,discard) 

仍然有用例使用tmpfs 。 我使用这些绑定安装卷与安全装载选项到lxc容器:

 root@http [~]# mount|grep tmpfs tmpfs on /var/www/domain.com/bin type tmpfs (ro,nosuid,nodev,relatime,size=200k) tmpfs on /var/www/domain.comm/dev type tmpfs (rw,nosuid,relatime,size=4k,mode=755)