lsmod | grep zram
zram 61440 1
lz4hc_compress 20480 1 zram
lz4_compress 24576 1 zram
cat /sys/block/zram0/disksize
4294967296
cat /sys/block/zram0/comp_algorithm
[lz4] lz4hc zstd deflate
zramswap.service - Linux zramswap setup
Loaded: loaded (/usr/lib/systemd/system/zramswap.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Sun 2026-05-31 07:53:20 CST; 41min ago
Invocation: a1f1ce3e65ec466bba165c2eb57127d6
Docs: man:zramswap(8)
Process: 1179 ExecStart=/usr/sbin/zramswap start (code=exited, status=1/FAILURE)
Main PID: 1179 (code=exited, status=1/FAILURE)
Mem peak: 2.7M
CPU: 17ms
5月 31 07:53:20 debian zramswap[1179]: /usr/sbin/zramswap: 第 53 行:echo: 写入错误: 设备或资源忙
5月 31 07:53:20 debian root[1238]: setting compression algo to lz4
5月 31 07:53:20 debian zramswap[1238]: <13>May 31 07:53:20 root: setting compression algo to lz4
5月 31 07:53:20 debian zramswap[1179]: /usr/sbin/zramswap: 第 54 行:echo: 写入错误: 设备或资源忙
5月 31 07:53:20 debian zramswap[1247]: mkswap: error: /dev/zram0 is mounted; will not make swapspace
5月 31 07:53:20 debian root[1249]: Error: initialising swap device
5月 31 07:53:20 debian zramswap[1249]: <13>May 31 07:53:20 root: Error: initialising swap device
5月 31 07:53:20 debian systemd[1]: zramswap.service: Main process exited, code=exited, status=1/FAILURE
5月 31 07:53:20 debian systemd[1]: zramswap.service: Failed with result 'exit-code'.
5月 31 07:53:20 debian systemd[1]: Failed to start zramswap.service - Linux zramswap setup.
用新立德装的,之后一切默认,设置啥的都没有修改
5月 31 07:53:20 debian zramswap[1179]: /usr/sbin/zramswap: 第 53 行:echo: 写入错误: 设备或资源忙
...
5月 31 07:53:20 debian zramswap[1179]: /usr/sbin/zramswap: 第 54 行:echo: 写入错误: 设备或资源忙
...
5月 31 07:53:20 debian systemd[1]: zramswap.service: Failed with result 'exit-code'.
5月 31 07:53:20 debian systemd[1]: Failed to start zramswap.service - Linux zramswap setup.
日志看起来启动失败了。
zram的设备手动也卸载不了,现在不清楚运行和使用正不正常
在系统盘之外的硬盘上有个独立的交换分区
lsblk -o+FSTYPE,FSSIZE,PARTLABEL,LABEL,UUID,PARTTYPENAME看看?
另外我推荐使用zswap代替swap on zram。
命令运行的结果
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS FSTYPE FSSIZE PARTLABEL LABEL UUID PARTTYPENAME
zram0 254:0 0 4G 0 disk [SWAP] swap zram0 0bd49ed4-f92b-48ac-8e31-ea7fb2c42140
貌似正常
zswap和zram的区别是什么?
不知道你这是什么情况,但看起来用上了。用swapon可以列出当前的swap设备。
zswap又称frontswap,它是在swap的时候动态决定是否要改成压缩在内存里、而不是写到硬盘上。目前有个缺点是需要你有swap设备。
zram是在内存里的、带压缩的块设备。你可以在zram上建swap,也可以建别的文件系统。对于swap系统来说,zram和硬盘没有使用方式上的区别。你不需要额外的swap设备,但是zram也不会因为压不动而拒绝swap、只能就那么存着。
另见
swapon
NAME TYPE SIZE USED PRIO
/dev/zram0 partition 4G 36K 100
/dev/sda1 partition 29.8G 0B -1
看来是用上了
要是我想关掉或者删掉zram转为zswap的话,该如何操作呢,怎样永久配置zswap
用是用上了,但是是一种糟糕的用法:zram + 硬盘上的swap设置——这种配置会造成优先级反转:当你把zram用完之后还需要更多的swap空间时,你的比较活跃的内存页面会被swap到硬盘上,而zram里会被老旧不用的页面塞满。
你把zram的配置都删掉。zswap大概是默认开启的。检查:
grep -R . /sys/module/zswap/parameters
enabled为Y即为开启。你可以往这个文件里echo一个Y来开启(N则禁用)。compressor推荐zstd(比较新的内核应当是默认值)。shrinker_enabled决定是否把zswap里已压缩但是很少用的页面主动写回硬盘上的swap设备。你可以自行决定要不要开启。
我通常使用htop来看zswap的使用状况:
![]()
「Mem」行灰色的部分是zswap占用的内存空间,「Swp」行灰色的部分是有多少内存数据被压进了zswap(也就是压缩前的大小)。
grep -R . /sys/module/zswap/parameters
/sys/module/zswap/parameters/enabled:N
/sys/module/zswap/parameters/shrinker_enabled:N
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:lzo
/sys/module/zswap/parameters/accept_threshold_percent:90
默认并没有开启,我也从来没有设置过
我的机器
OS: Debian GNU/Linux forky/sid (forky) x86_64
Kernel: Linux 7.0.9+deb14-amd64
那我把zram的包删掉,再启用zswap是否可以?
因为你用了zram吧,虽然我不清楚具体机制,但是这两个东西显然不应该同时开启。
可以。
感谢解答!
晚点会试试看的,谢谢
抱歉再次打扰了
我删掉zram之后重启再启用zswap,compressor设为zstd,但是重启后提示内核没有还是不支持zstd的compressor,只有lzo的,这是漏装什么包还是什么原因,apt源改成bfsu的,安装的包都是上面的,也没装其他源的包或者第三方的啥
不知道Debian有没有/proc/config.gz,试试zgrep ZSWAP /proc/config.gz。或者去别的地方找找看config。
lzo也能用,压缩率没zstd好而已——话说你之前zram用的什么算法啊?
gzip: /proc/config.gz: No such file or directory
之前zram是默认的lz4
哦看来Debian没有config.gz。不过在/boot应该有你的内核的config文件,你自己找一下。
应该就是你的内核包没编译zswap的zstd支持。你可以研究一下提个feature request啥的。
另外别的压缩算法也不是不能用啦。