针对 Linux 系统将 Swap 迁移至新磁盘的完整操作指南,结合性能优化与安全实践
AI-摘要
切换
KunKunYu GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
前言
今天早上突然发现我的VPS虚拟内存也快要爆满了,突然想到我的硬盘空间很大,何不把Swap迁移到磁盘中以解燃眉之急。
这种做法虽然不明智,但出于自己捉襟见肘,也只能出此下策。最佳解决方案是升级你的VPS配置
以下是针对 Linux 系统虚拟内存(Swap)快爆满迁移到磁盘的最佳解决方案,按优先级排序
紧急释放内存(立即生效)
终止高内存进程
top # 按 M 按内存占用排序,记录占用超 1GB 的 PID
kill -9 <PID> # 结束非关键进程(如异常 Java/Python 进程)
清空缓存页
sync; echo 3 > /proc/sys/vm/drop_caches # 释放 PageCache/dentries/inodes
🔧 迁移前准备
确认磁盘空间
df -h # 确认目标磁盘(如 /mnt/ssd)剩余空间 ≥ 所需 Swap 大小
备份关键数据
sudo cp /etc/fstab /etc/fstab.bak # 备份配置文件防止操作失误
⚙️ 创建新 Swap 文件/分区
▸ 方案A:Swap 文件(推荐 SSD)
sudo fallocate -l 8G /mnt/ssd/swapfile # 在 SSD 创建 8GB 文件(比 dd 更快)
sudo chmod 600 /mnt/ssd/swapfile # 设置权限防篡改
sudo mkswap /mnt/ssd/swapfile # 格式化为 Swap 分区
▸ 方案B:独立 Swap 分区(需未分配空间)
sudo fdisk /dev/sdb # 对新磁盘分区(如 sdb)
# 创建新分区 → 类型改为 "Linux Swap"
sudo mkswap /dev/sdb1 # 格式化新分区
⚡ 迁移并激活新 Swap
停用旧 Swap
sudo swapoff -a # 关闭所有 Swap 空间(确保内存充足时操作)
启用新 Swap
sudo swapon /mnt/ssd/swapfile # 激活文件方式
# 或
sudo swapon /dev/sdb1 # 激活分区方式
验证状态
sudo swapon --show # 检查新 Swap 是否生效
free -h # 确认总 Swap 容量更新
🔄 永久生效配置
更新 /etc/fstab
echo '/mnt/ssd/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 文件方式
# 或
echo '/dev/sdb1 none swap sw 0 0' | sudo tee -a /etc/fstab # 分区方式
删除旧 Swap 项
手动编辑 /etc/fstab
,注释或删除原 Swap 行(如 /dev/sda2 相关条目)
⚠️ 迁移后优化与注意事项
调整 Swappiness
sudo sysctl vm.swappiness=10 # 降低 Swap 使用倾向(物理内存充足时)
# 永久生效:在 /etc/sysctl.conf 添加 vm.swappiness=10
释放磁盘与内存资源
清理大文件与日志
sudo du -sh /* | sort -rh | head -n 10 # 查找占用 >1GB 的目录
sudo journalctl --vacuum-size=200M # 清理 systemd 日志(保留 200MB)
禁用非必要服务
systemctl list-unit-files | grep enabled # 列出启用的服务
sudo systemctl disable <service> # 停用内存占用高的服务(如 docker/mysql 测试实例)
进阶调优(长效防护)
启用内存压缩(KSM)
sudo echo 1 > /sys/kernel/mm/ksm/run # 合并相同内存页,减少 Swap 压力
限制进程内存
systemd-run --scope -p MemoryMax=2G ./your_app # 强制进程内存不超过 2GB
物理内存扩容
若 free -m 显示物理内存持续 >80% 使用率,需增加内存条1
虚拟机用户:通过 Hypervisor 扩展虚拟内存(VMware/VirtualBox 支持在线扩容)
恶意进程检测
ps aux --sort=-%mem | head -n 5 # 检查内存占用 Top5 进程名是否可疑
性能关键点
优先选 SSD:机械硬盘上的 Swap 会严重拖慢系统
独立分区 > 文件:直接访问磁盘比经文件系统层更快
安全提示
操作前确保系统无高负载任务,避免 swapoff 时内存溢出崩溃
虚拟机用户:可在 Hypervisor 层直接扩展虚拟磁盘后再操作
Swap 禁用风险:仅推荐物理内存 >64GB 且无内存泄漏的系统,普通服务器禁用 Swap 可能导致 OOM 崩溃5
完成迁移后,定期用 htop 或 vmstat 2 监控 Swap 使用趋势。若物理内存长期 >80%,仍需考虑扩容内存条。
通过以上优化,Swap 使用率可显著降低。长期建议每月检查 journalctl 日志及 /var/log 目录,预防存储泄漏问题。高并发场景需结合网络参数调优(如 TCP 缓冲区设置)
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果