Linux设置虚拟内存
mkdir VM #创建文件夹
cd VM
dd if=/dev/zero of=/disk/VM/swap bs=1M count=16384 #创建大小为16G的swap文件
du -sh /disk/VM/swap #查看文件
mkswap /disk/VM/swap #设置swapfile为分区文件
chmod 600 /disk/VM/swap #设置虚拟内存权限等级
swapon[swapoff] /disk/VM/swap #启动交换区文件
/etc/fstab -> /disk/VM/swap none swap sw 0 0
关闭swapoff swap 注释/etc/fstab 删除文件rm swap
调优
# 临时设置(优先使用物理内存,尽量不换出)
sysctl vm.swappiness=10
# 永久生效
echo 'vm.swappiness=10' >> /etc/sysctl.conf
解释
| 字段 | 值 | 含义 |
|---|---|---|
| 1 | /disk/VM/swap | 设备路径:swap 文件的位置 |
| 2 | none | 挂载点:swap 不需要目录挂载点,用 none 占位 |
| 3 | swap | 文件系统类型:表明这是交换分区/文件 |
| 4 | sw | 挂载选项:sw = 启用 swap 读写权限 |
| 5 | 0 | dump 备份:0 = 不备份(swap 不需要备份) |
| 6 | 0 | fsck 检查:0 = 开机不检查(swap 不需要文件系统检查) |
systemctl 管理程序可以使用 MemorySwapMax=0(*.service) 禁止程序转入swap
高级调优
使用ZRAM
# 1. 安装 ZRAM 配置工具
sudo apt-get update
sudo apt-get install zram-config
# 2. 启用并启动服务(立即生效)
sudo systemctl enable zram-config
sudo systemctl start zram-config
# 3. 验证
zramctl && free -h | grep Swap
验证输出
# zramctl 应显示设备
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo-rle 32G 4K 74B 12K 8 [SWAP]
# free -h 应显示 Swap 不为 0
Swap: 32G 0B 32G
调整大小
# 停用当前 ZRAM
sudo swapoff /dev/zram0
sudo systemctl stop zram-config
# 编辑配置(Ubuntu 22.04+)
sudo nano /etc/default/zramswap
# 修改:
# ALGO=lz4
# DISKSIZE=16G # 改为 16G
# 重启服务
sudo systemctl start zram-config
故障排查
# 理想状态(机械盘 Swap 已关,ZRAM 已启用)
free -h
total used free shared buff/cache available
Mem: 64G 12G 45G 512M 6.8G 51G
Swap: 32G 0B 32G ← ZRAM
# 检查 fstab(确认机械盘 Swap 已注释)
cat /etc/fstab | grep -i swap
# 应无任何输出,或看到 #/swapfile 被注释
Linux设置虚拟内存
https://www.youcats.cn/archives/1714027100126
评论