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 杀进程。
参考来源:
项目地址:
官网地址:
参考地址:
延伸阅读:
推荐一键清理CentOS系统磁盘空间,清理内存,清理缓存,清理磁盘,清理垃圾,清理硬盘,一键清理系统缓存,日记,不必要的内容,容器日记缓存,等系统缓存日记
推荐一键清理CentOS系统磁盘空间,清理内存,清理缓存,清理磁盘,清理垃圾,清理硬盘,一键清理系统缓存,日记,不必要的…

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

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

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

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





评论(0):