CentOS设置虚拟内存,虚拟内存设置,CentOS 7.9怎么设置虚拟内存2G,CentOS内存不足死机优化教程,虚拟内存压缩设置

CentOS设置虚拟内存,虚拟内存设置,CentOS 7.9怎么设置虚拟内存2G,CentOS内存不足死机优化教程,虚拟内存压缩设置

系统:CentOS Stream,CentOS 9,CentOS 8,CentOS 10,CentOS 7

软件:虚拟内存Swap

功能:CentOS虚拟内存设置


下载地址一:



需要开机启动配置,重启虚拟内存压缩就失效了


在不增加物理内存的情况下,使用 zram(内存压缩技术)是一个非常高效的优化方案。它的原理是在物理内存中划分出一块区域作为压缩虚拟内存盘,将冷数据压缩后存放,从而在不频繁读写硬盘(Swap)的前提下,变相将物理内存的容量扩大数倍。


以下是在 CentOS 7.9 系统上安装、配置和使用 zram 的详细教材:


第一步:检查系统内核与 zram 支持

大多数现代 Linux 内核(包括 CentOS 7 的较新内核或 ELRepo 内核)都已经内置了 zram 模块。


1. 检查 zram 模块是否存在

执行以下命令:


modinfo zram


如果输出模块信息,说明内核支持 zram,可以直接进行下一步。


如果提示 modinfo: ERROR: Module zram not found,则需要先安装或升级支持 zram 的内核,或者通过 EPEL 源安装相关工具。


第二步:安装 zram-generator 或使用脚本管理

在 CentOS 7 中,最简便且现代的管理方式是使用 zram-generator 或者手写一个 systemd 服务脚本来初始化 zram。这里推荐编写一个通用的 systemd 服务脚本,不依赖额外的复杂包,兼容性最好。


1. 创建 zram 初始化脚本

使用文本编辑器创建一个脚本文件,例如 /usr/local/bin/zram-init.sh:


sudo vi /usr/local/bin/zram-init.sh


在文件中粘贴以下内容:


保存并退出(在 vi 中按 Esc,输入 :wq 回车)。


2. 赋予脚本执行权限


sudo chmod +x /usr/local/bin/zram-init.sh


---------------------------------------------------


#!/bin/bash


# 1. 加载 zram 模块

modprobe zram


# 2. 获取系统的总物理内存大小(KB)

total_mem=$(awk '/MemTotal/ {print $2}' /proc/meminfo)


# 3. 设置 zram 大小为物理内存的一半(你可以根据需要修改比例,比如设置为物理内存大小:* 1024)

# 这里以设置为物理内存的 50% 为例

zram_size=$(( total_mem * 1024 )) # 单位是 Byte (MemTotal 是 KB,* 1024 / 2 = * 512)


# 4. 设置压缩算法为 lzo lz4 或 zstd (zstd 压缩率更高,lzo lz4 速度更快)

echo lz4 > /sys/block/zram0/comp_algorithm


# 5. 设置 zram0 的大小

echo $zram_size > /sys/block/zram0/disksize


# 6. 格式化为 swap 分区

mkswap /dev/zram0


# 7. 启用 swap,并赋予较高的优先级(比普通硬盘 swap 优先使用)

swapon -p 100 /dev/zram0


--------------------------------------------------


编辑/etc/sysctl.conf文件:



如果你希望 内存不足时优先使用虚拟内存(Swap),需要调整 Linux 的 vm.swappiness 参数。这个参数控制内核在物理内存不足时,使用 Swap 的积极程度。


vm.swappiness = 100



建议值


10–20:尽量少用 Swap,优先用物理内存(适合内存充足的服务器)。


60(默认):平衡使用。


80–100:更积极使用 Swap(适合内存紧张的环境)。


这样设置后,当物理内存不足时,系统会更快地把数据换到 Swap,从而避免进程直接被 OOM 杀掉。



运行生效。


sysctl -p


--------------------------------------------------


第三步:配置 Systemd 服务实现开机自启

为了让 zram 在系统启动时自动加载并生效,我们需要创建一个 systemd 服务。


1. 创建服务配置文件


sudo vi /etc/systemd/system/zram.service


在文件中粘贴以下内容:


Ini, TOML



[Unit]

Description=Compress RAM with zram

After=swap-target.target


[Service]

Type=oneshot

ExecStart=/usr/local/bin/zram-init.sh

ExecStop=/usr/bin/swapoff /dev/zram0

RemainAfterExit=yes


[Install]

WantedBy=multi-user.target


:wq保存并退出。


2. 重载 systemd 并启用服务


# 重新加载 systemd 管理器


sudo systemctl daemon-reload


# 启动 zram 服务


sudo systemctl start zram.service


# 设置开机自启


sudo systemctl enable zram.service


第四步:验证 zram 是否配置成功

配置完成后,可以通过以下命令检查 zram 的运行状态:


1. 检查 Swap 设备的优先级和大小


swapon --show


期望结果:你应该能看到 /dev/zram0 出现在列表中,并且带有你设置的大小和高优先级(Priority)。


2. 检查内存及 zram 压缩情况


zramctl


期望结果:会列出 zram0 的实时状态,包括它的原始大小(DISKSIZE)、实际占用的物理内存大小(DATA)以及压缩率(COMPR)。你会发现原本需要很大空间的进程数据被压缩得很小,从而节省了大量内存。


进阶优化建议

调整 Swap 优先级:

如果你的系统同时存在“硬盘 Swap(/swapfile)”和“zram”,建议把 zram 的优先级(Priority)设得比硬盘高(例如 zram 设为 100,硬盘设为 10)。这样系统会优先把冷数据压进内存里的 zram,只有当 zram 也塞满时,才会写入速度较慢的硬盘 Swap,极大提升系统响应速度。


算法选择:

脚本中使用了 zstd 算法,平衡了压缩率和 CPU 消耗。如果你的 CPU 性能非常弱(单核低配小鸡),可以将算法改为速度更快的 lzo 或 lz4:


echo lz4 > /sys/block/zram0/comp_algorithm



如何验证它是否真的在正常工作?

虽然看到这行提示说明脚本里的 mkswap 执行成功了,但为了确保它已经顺利挂载并投入使用,建议在终端运行以下两个命令检查一下:


1. 检查 Swap 激活状态


swapon --show


正常现象:输出结果中应该能看到 /dev/zram0,并且带有对应的内存大小和优先级(Priority)。


2. 查看 zram 实时运行情况


zramctl


正常现象:会列出 zram0 的当前状态、算法(如 zstd)以及压缩使用情况。


只要这两条命令有正确的输出,就代表你的 zram 已经完美配置并正式生效了!以后系统再遇到内存紧张时,就会自动把数据压缩存放到这个区域,避免直接触发 OOM 杀进程。




参考来源:

项目地址:

官网地址:

参考地址:


admin

暂无介绍....

评论(0):

发表评论:

延伸阅读:

推荐一键清理CentOS系统磁盘空间,清理内存,清理缓存,清理磁盘,清理垃圾,清理硬盘,一键清理系统缓存,日记,不必要的内容,容器日记缓存,等系统缓存日记

推荐一键清理CentOS系统磁盘空间,清理内存,清理缓存,清理磁盘,清理垃圾,清理硬盘,一键清理系统缓存,日记,不必要的…

admin
2026-11-14

一键清理CentOS系统磁盘空间,清理缓存,清理磁盘,清理垃圾,清理内存,清理硬盘,一键清理系统缓存,日记,不必要的内容,容器日记缓存,等系统缓存日记

一键清理CentOS系统磁盘空间,清理缓存,清理磁盘,清理垃圾,清理内存,清理硬盘,一键清理系统缓存,日记,不必要的内容…

admin
2026-11-13

CentOS设置虚拟内存,虚拟内存设置,CentOS 7.9怎么设置虚拟内存2G

CentOS设置虚拟内存,虚拟内存设置,,CentOS 7.9怎么设置虚拟内存2G系统:CentOS Stream,Ce…

admin
2026-11-11

CentOS关闭虚拟内存,虚拟内存,在 CentOS 7.9 中,删除或关闭虚拟内存(Swap)主要分为两步:临时关闭(立即生效)和永久删除(防止重启后恢复)

CentOS关闭虚拟内存,虚拟内存,在 CentOS 7.9 中,删除或关闭虚拟内存(Swap)主要分为两步:临时关闭(…

admin
2026-11-10

nginx,nginx反向代理,nginx端口映射,nginx端口转发,nginx中转,nginx代理,nginx转发,nginx编译版本端口转发,nginx安装

nginx,nginx反向代理,nginx端口映射,nginx端口转发,nginx中转,nginx代理,nginx转发,…

admin
2026-11-07