关于zram的,这样算正常么?

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

enabledY即为开启。你可以往这个文件里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啥的。
另外别的压缩算法也不是不能用啦。