跳过正文
  1. 系列/
  2. VPS 实战系列/

任务 2:分配虚拟内存 (Swap)

其雁过无痕
作者
其雁过无痕
目录

Linux 服务器运维笔记:分配虚拟内存 (Swap) 避坑与实操
#

0. 背景与目标
#

在小内存(如 1GB RAM)的云服务器上运行 Java、MySQL 或进行前端构建时,物理内存极易耗尽导致进程被系统杀掉(OOM)。Swap(交换空间) 充当了“虚拟内存”的角色,是服务器在高负载下的“救命支撑”。

本次任务目标:

  • 处理系统预设的 Swap 环境。
  • 手动分配 2GiB 的 Swap 空间。
  • 实现开机自动挂载与内核参数优化。

1. 环境预处理:清理旧空间
#

由于某些供应商(如 RackNerd)预装镜像自带了 1GiB 的 Swap,为了扩容并统一管理,先将其关闭:

# 查看当前内存与 Swap 状态
free -h

# 关闭所有当前的 Swap 空间
sudo swapoff -a

2. 核心操作步骤
#

第一步:分配空间
#

在根目录下创建一个 2GiB 的空文件。建议使用 fallocate,它比传统的 dd 命令更快。

sudo fallocate -l 2G /swapfile

:若提示不支持 fallocate,可改用以下命令: sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

第二步:安全权限加固
#

Swap 文件涉及内存数据,必须限制仅 root 用户可读写,防止敏感信息泄露。

sudo chmod 600 /swapfile

第三步:格式化与激活
#

将该文件转化为 Swap 格式并通知系统立即启用。

sudo mkswap /swapfile
sudo swapon /swapfile

第四步:持久化配置(开机自启)
#

编辑 /etc/fstab 文件,确保服务器重启后 Swap 依然有效。

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

3. 极客优化:Swappiness 调优
#

swappiness 参数(0-100)控制系统使用 Swap 的积极程度。

  • 默认值60(对于小内存 VPS 来说太频繁,会导致磁盘 I/O 过高)。
  • 建议值10(尽可能使用物理内存,物理内存不足时才使用 Swap)。
# 临时生效
sudo sysctl vm.swappiness=10

# 永久生效
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

4. 验证结果
#

最后通过以下命令确认成果:

free -h

预期输出Swap 栏位的 total 应显示为 2.0Gi

相关文章