有没有理由使用 tmpfs 来代替或者补充 zRAM?

有没有理由使用 tmpfs 来代替或者补充 zRAM?

我正在考虑使用内存在我的服务器上。从我读到的关于 zRam 的内容来看,它似乎可以做所有事情临时文件还可以做更多。

一旦 zRAM 开始工作,还有什么理由保留 tmpfs 吗?tmpfs 能做哪些 zRAM 做不到的事情?有没有理由使用 tmpfs 来代替或补充 zRAM?

答案1

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

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

在我看来,最好的解决方案是安装tmpfs到某个地方并创建zram交换区。它结合了两者的优点,同时最大限度地减少了缺点。

或者当然购买更多内存 ;)

答案2

由于可以进行压缩,因此使用zramfor可获得更好的性能。swap

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

你的内核需要启用CONFIG_ZRAM_LZ4_COMPRESS才能受益lz4压缩

我使用zramfor swap& for /tmp(zram-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)

相关内容