在 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 系统中创建、启用、配置和管理交换文件了。