内存永远是紧俏的资源,尤其是对于老式的树莓派来说,这篇文章详细记录了如何在Raspberry Pi上使用zram来压缩数据,用时间换空间增加内存。

zram是一个Linux内核模块,被设计用来在RAM中创建一个压缩块,可以作为交换内存或临时磁盘使用。

插入到这部分内存中的数据会被自动压缩。这种压缩可以让更多的数据放入内存中。

Swap内存构成了Linux虚拟内存系统的一部分,用来防止内存溢出的错误。

通常情况下,交换内存会单纯存在于Raspberry Pi的SD卡等存储设备上,效率很低。

在这种时候,zram磁盘作为交换内存的一个附加部分,这个分区保留传统RAM的IO优势,但有压缩的好处。

这种压缩不是无消耗的,而是以额外的CPU使用为代价。每次在zram内访问内存时,都需要使用CPU来压缩或解压数据。

设备清单

以下是我在设置Raspberry Pi与zram交换文件时使用的设备列表。

建议

  • 树莓派
  • 高速SD卡
  • 网络连接

可选

  • 树莓派外壳
  • USB键盘
  • USB鼠标

本教程是在Raspberry Pi 400上测试的,运行的是Raspberry Pi OS的最新版本。

准备Raspberry Pi来安装zram

在Raspberry Pi上设置ZRAM的过程相对简单,原因如下:

首先,zram是Linux内核的一部分,它是作为Raspberry Pi操作系统的基础。

其次,有一个脚本将为我们处理所有的东西,计算出ZRAM磁盘的大概尺寸应该是多少。

1. 第一个任务是确保Raspberry Pi运行的是最新版本的操作系统。

运行以下两个命令进行全面更新。

sudo apt update
sudo apt full-upgrade

2. 现在,安装依赖包,以便在设备上设置zram。

只需要使用git来克隆将使用的脚本到Raspberry Pi。

sudo apt install git

3. 由于zram是一个内核模块,所以应该在运行完整的升级后重新启动树莓派。

这是因为已经更新了内核,希望减少出现问题的可能。

使用以下命令重新启动Raspberry Pi。

sudo reboot

4. Raspberry Pi完成重启,就可以下载将用来设置zram磁盘的脚本。

现在使用的脚本是由GitHub的foundObjects编写的。

这个脚本通过使用空闲内存的数量,乘以压缩因子和专用于zram的内存百分比来计算zram的大小。

在Raspberry Pi上运行以下命令,从GitHub仓库中克隆zram-swap脚本。

git clone https://github.com/foundObjects/zram-swap

在Raspberry Pi上设置zram

现在已经更新了操作系统,并将zram交换脚本下载到Raspberry Pi上,可以对它进行设置。

由于正在使用的脚本,设置过程可以通过几个简单的步骤来完成。

1. CD到包含刚才克隆的脚本的目录。

cd zram-swap

2. 现在已经在正确的目录下,可以运行zram-swap脚本来安装。

这个安装脚本将设置在启动时创建zram磁盘的服务。

该脚本还将对其进行设置,以便操作系统将该zram磁盘作为交换内存的一部分。

sudo ./install.sh

默认情况下,这个脚本会用zram磁盘替换一半的内存,并使用LZ4压缩算法压缩数据。

lz4压缩算法是性能和压缩率之间的最佳折衷方案,特别是对于树莓派这样的低功耗设备来说。

验证Raspberry Pi的zram

现在已经运行了安装脚本,应该验证Raspberry Pi现在是否可以访问zram swap。

操作系统有几个内置功能,可以快速检查交换内存状态 。

1. 查看Raspberry Pi的zram交换状态很容易。

需要做的就是运行以下命令来返回”/proc/swaps “文件的内容。

这个文件包含了交换文件的信息,包括它们的类型、大小和优先级。

sudo cat /proc/swaps

2. 使用前面的命令,应该会看到下面的东西。

有两个交换文件。一个是默认的,存在于文件系统中。

第二个是创建的zram盘,它存在于Raspberry Pi的RAM中。

Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 4899744 0 5

可以看到名为”/dev/zram0 “的zram磁盘,大小以千字节为单位显示,根据Raspberry Pi的情况会有所不同。

还应该注意到,它的优先级比基于磁盘的交换高。这确保了操作系统在求助于较慢的基于磁盘的交换之前使用zram磁盘。

结论

到这里,你应该已经用zram给Raspberry Pi设置了一个交换分区。

这个被压缩的zram可以让你在你的Pi的RAM中容纳更多的数据。这种增加是以CPU的使用为代价的。

使用zram对于从设备中挤出更多的内存是非常有用的。它可以延长老式树莓派的寿命,让它能挤出更多的内存。

如果你在为你的Raspberry Pi设置zram时遇到了任何问题,欢迎在下面留言。