是否有理由使用 tmpfs 代替 zRAM 或除 zRAM 之外使用?

Dav*_*ary 5 swap tmpfs

我正在考虑在我的服务器上使用zRam。从我对 zRam 的了解来看,它显然可以完成tmpfs所做的一切,甚至更多。

一旦 zRAM 工作,是否有任何理由保留 tmpfs?tmpfs 有什么是 zRAM 不能做的吗?是否有理由使用 tmpfs 代替 zRAM 或除 zRAM 之外使用?

小智 5

tmpfs只要有足够的内存可用,写入 a 的数据将保持在内存中未压缩。一旦系统面临内存压力,它会尝试将数据从tmpfs(以及从任何其他位置,如正常进程内存)移动到它可以找到的任何swap(包括swapon zram)。您也可以tmpfs通过执行简单的操作来更改 a的参数mount -o remount,尤其是文件系统的大小或 inode 的数量。

使用zram作为临时文件系统中的背衬的缺点,即写入的所有数据存在需要immediatelly压缩(并且其使用时解压)。您还需要在顶部放置一个文件系统,即使没有存储实际文件,也需要存储这些结构。此外,您还会受到诸如最大 inode 数之类的限制,您无法轻松更改其大小等。

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

或者买更多的 ram ;)


Stu*_*all 0

由于可以进行压缩,您将通过使用zramfor获得更好的性能。swap

zram-init使zram使用变得简单。请记住阅读说明

您的内核需要在CONFIG_ZRAM_LZ4_COMPRESS启用的情况下构建才能从lz4压缩中受益。

我使用zramfor swap& for /tmpzram-init使用合理的默认安装选项for /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)
Run Code Online (Sandbox Code Playgroud)

仍然有使用的用例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)
Run Code Online (Sandbox Code Playgroud)