内存永远是紧俏的资源,尤其是对于老式的树莓派来说,这篇文章详细记录了如何在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时遇到了任何问题,欢迎在下面留言。