Liunx创建虚拟内存


1. 检查当前 swap 状态

首先查看系统是否已经配置了 swap:

1
sudo swapon --show

1
free -h

如果输出中没有显示任何 swap 分区或文件,说明当前没有启用虚拟内存。

2. 决定 swap 大小

常见建议:

  • 当物理内存 ≤ 2GB 时,swap 大小可设为内存的 1~2 倍。
  • 示例中我们创建 1GB 的 swap 文件,你可以根据磁盘剩余空间调整。

3. 创建 swap 文件

使用 fallocate 命令快速创建指定大小的文件(推荐):

1
sudo fallocate -l 1G /swapfile

如果 fallocate 不支持,可用 dd 命令替代(速度稍慢):

1
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 status=progress

4. 设置正确的权限

为了安全,swap 文件必须只能由 root 读写:

1
sudo chmod 600 /swapfile

5. 将文件格式化为 swap

1
sudo mkswap /swapfile

输出会显示该文件的 UUID 和大小。

6. 启用 swap 文件

1
sudo swapon /swapfile

再次检查 swap 是否生效:

1
sudo swapon --show

或查看内存使用情况:

1
free -h

7. 开机自动挂载

编辑 /etc/fstab 文件,使系统启动时自动启用 swap:

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

或者手动编辑(用 sudo nano /etc/fstab),在文件末尾添加:

1
/swapfile none swap sw 0 0

8. (可选)调整 swap 使用倾向

Linux 内核参数 swappiness 控制使用 swap 的积极程度(值范围 0~100,默认 60)。
对于内存较小的服务器,可以适当调低以减少磁盘 I/O:

1
2
3
4
5
# 临时修改(重启后失效)
sudo sysctl vm.swappiness=10

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

验证最终配置

重启服务器或执行以下命令确保 swap 正常工作:

1
2
sudo swapon --all   # 重新加载所有 swap(根据 fstab)
sudo swapon --show

注意事项

  • 磁盘空间:确保根分区有足够的剩余空间(df -h)。

  • 性能:swap 位于磁盘,比物理内存慢很多,仅作为内存不足时的补充。

  • 如果已有 swap 分区:上述操作会添加第二个 swap 空间,系统会同时使用它们。