Linux 创建并启用交换文件

6 阅读3分钟

在 Linux 系统中,当物理内存(RAM)不足时,交换空间(Swap Space)可以作为虚拟内存来使用。虽然通常建议使用独立的交换分区,但在很多情况下,创建一个交换文件更加灵活和方便,尤其是在不重新分区的情况下增加交换空间。

本文将介绍如何在 Linux 系统中创建并启用一个交换文件。

为什么需要交换文件?

  • 扩展可用内存:当物理内存耗尽时,系统可以将不常用的内存页移动到交换空间,从而为活跃进程腾出物理内存;
  • 支持休眠(Hibernation):休眠功能通常需要将内存内容保存到磁盘,交换空间(尤其是交换分区)常用于此目的;
  • 应对内存峰值:某些应用程序可能会在短时间内消耗大量内存,交换空间可以作为缓冲。

创建并启用交换文件的步骤

以下步骤以创建一个 2GB 的交换文件为例。请确保您有足够的磁盘空间。

检查现有交换空间

首先,检查系统是否已有交换空间以及其使用情况。

sudo swapon --show
# 或者
free -h

如果没有输出或显示的交换空间为 0,则说明当前没有启用交换。

创建交换文件

使用 fallocate 命令快速创建一个指定大小的文件。这里我们创建一个 2GB 的文件,命名为 /swapfile

sudo fallocate -l 2G /swapfile

如果 fallocate 不可用,可以使用 dd 命令,但速度会慢一些:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

设置正确的权限

为了安全起见,交换文件应该只有 root 用户才能读写。

sudo chmod 600 /swapfile

将文件标记为交换空间

使用 mkswap 命令将创建的文件设置为交换区域。

sudo mkswap /swapfile

启用交换文件

使用 swapon 命令立即启用交换文件。

sudo swapon /swapfile

验证交换文件是否启用

再次使用 swapon 或 free 命令来确认交换文件已经成功启用。

sudo swapon --show
# 或者
free -h

您应该能看到 /swapfile 出现在列表中,并且总交换空间增加了 2GB。

设置开机自动挂载

为了让交换文件在系统重启后依然有效,需要将其添加到 /etc/fstab 文件中。

首先,备份 /etc/fstab 文件(这是一个好习惯):

sudo cp /etc/fstab /etc/fstab.bak

然后,将以下行添加到 /etc/fstab 文件的末尾:

/swapfile none swap sw 0 0

您可以使用文本编辑器(如 nano 或 vim)来完成:

sudo nano /etc/fstab
# 在文件末尾添加 /swapfile none swap sw 0 0
# 然后保存并退出 (在 nano 中是 Ctrl+O, Enter, Ctrl+X)

调整交换倾向性(可选)

Linux 内核有一个参数 vm.swappiness,它决定了系统使用交换空间的倾向性。其值范围是 0 到 100。

  • 值越低:系统会尽量避免使用交换空间,倾向于保留数据在物理内存中。这对于桌面系统或内存充足的情况可能更合适。
  • 值越高:系统会更积极地使用交换空间。这对于服务器或内存紧张的情况可能更合适。

查看当前的交换倾向性:

cat /proc/sys/vm/swappiness

默认值通常是 60。

要临时更改它(例如设置为 10):

sudo sysctl vm.swappiness=10

要永久更改,需要编辑 /etc/sysctl.conf 文件:

sudo nano /etc/sysctl.conf

添加或修改以下行:

vm.swappiness=10

然后保存并退出。

删除交换文件(如果需要)

如果您不再需要这个交换文件,可以按照以下步骤删除:

1.禁用交换文件:

sudo swapoff /swapfile

2.从 /etc/fstab 中移除条目:

使用文本编辑器打开 /etc/fstab 并删除之前添加的 /swapfile 行。

3.删除文件:

sudo rm /swapfile

通过以上步骤,您就可以成功地在 Linux 系统中创建、启用、配置和管理交换文件了。