backgroundbackground
存储不够?内存来凑!

存储不够?内存来凑!

Linux / ramdisk / Zram

教程

2025-03-25 03:46

前言

假如你的电脑内存比较多,根本用不完,又或者你想要更快的硬盘做高速读写,但是担心损耗固态硬盘的寿命,那么你可以试试本文的方法

本文会介绍两种方法,教你如何将内存当存储用

注:仅限Linux系统,本文以Debian系发行版作为示例

方案一:直接挂载

这个方法比较简单,一行命令即可

sudo mount -t tmpfs -o size=1g none target
  • -t tmpfs指定文件系统类型为tmpfs,即内存文件系统
  • -o size=1g指定大小为1g,注意这里只有在实际占用的时候才会消耗内存
  • none指定挂载点为空,这里无需挂载点
  • target指定挂载目标,可自定义你想挂载的目录

然后你在target目录下存放的文件,将会直接放入内存中

不用的话umount即可,注意unount后数据将清空!

方案二:使用Zram

Zram即内存压缩技术,通过即时压缩数据获得更高的内存利用率,具体可以参考我的另一篇文章:Zram简明教程

1、获取zram设备

这里我们需要用到zramctl这个命令,在Debian中,这个命令在util-linux包内,一般默认安装,或使用命令sudo apt install util-linux安装

首先我们需要获取一个zram设备,使用命令 sudo zramctl -f

假如输出 /dev/zram1 ,这就是我们将要操作的zram设备

2、配置zram设备

然后用下面的命令配置该zram设备:

sudo zramctl -a zstd -s 2GiB /dev/zram1
  • -a zstd指定压缩算法,可以用cat /sys/block/zram0/comp_algorithm命令查看支持的压缩算法
    • 在压缩率上,一般zstd > lzo > lz4,在压缩速度上一般lz4 > lzo > zstd
  • -s 2GiB指定原始空间大小,即未压缩的空间大小,实际压缩后占用的内存会比这小
  • /dev/zram1是我们刚才选中的zram设备

然后使用 sudo zramctl 命令查看是否配置成功,如果有/dev/zram1条目即成功

3、使用zram

当配置好后,zram设备就可以当一个普通的块设备使用了,我们先给它格式化一下:

# 格式化为 Btrfs
sudo mkfs.btrfs /dev/zram1

这里使用Btrfs格式化,你也可以换成你想要的文件系统

接下来就可以像挂载普通磁盘那样挂载它了:

# 将 zram 挂载到 target 目录
sudo mount /dev/zram1 target

这样,存放在target目录中的文件将会被透明压缩并最终存放在内存中,因为有压缩,实际占用内存会比原始数据小很多,能更高效率的利用你的内存

4、回收zram

回收之前请对重要数据做好备份

使用下面的命令回收zram

# 取消挂载zram设备
sudo umount target

# 释放zram设备
sudo zramctl -r /dev/zram1

警告

内存盘断电会丢失数据!!!
请及时备份重要文件!!!