当服务器或个人计算机的物理内存不足时,操作系统会使用交换空间(Swap)来模拟物理内存,防止因内存耗尽导致系统崩溃。在 Ubuntu 系统中,除了传统的交换分区,还可以通过创建交换文件(Swapfile)的方式来增加虚拟运行内存。本指南将详细介绍在 Ubuntu 系统中创建、配置和管理交换文件的步骤。
一、检查现有交换空间
在创建新的交换文件之前,建议先检查系统当前的交换空间使用情况。可以使用 free 或 swapon -s 命令进行查看:
使用 free 命令
free 命令可以显示系统内存和交换空间的使用情况,执行以下命令:
free -h
输出结果类似如下:
total used free shared buff/cache available
Mem: 7.7G 2.6G 387M 362M 4.7G 4.8G
Swap: 0B 0B 0B
使用 swapon -s 命令
swapon -s 命令可以列出所有已启用的交换空间:
swapon -s
若输出为空,说明系统当前没有启用交换空间。
二、创建交换文件
1. 确定交换文件大小
交换文件的大小取决于服务器或计算机的使用场景和物理内存大小。一般建议设置为物理内存的 1 - 2 倍。例如,如果物理内存为 2GB,交换文件可以设置为 2GB 到 4GB 之间。
2. 创建交换文件
使用 fallocate 命令创建交换文件。以创建一个 2GB 的交换文件为例,执行以下命令:
sudo fallocate -l 2G /swapfile
fallocate 命令用于在指定位置创建指定大小的文件,-l 参数指定文件大小。
3. 设置文件权限
为了确保系统安全,需要设置交换文件的权限。执行以下命令:
sudo chmod 600 /swapfile
这将确保只有 root 用户可以读写该文件。
4. 标记交换文件
使用 mkswap 命令将文件标记为交换文件:
sudo mkswap /swapfile
输出结果会显示交换文件的 UUID 和类型。
三、启用交换文件
1. 临时启用
使用 swapon 命令临时启用交换文件:
sudo swapon /swapfile
此时,可以再次使用 free -h 或 swapon -s 命令验证交换文件是否已成功启用。
2. 永久启用
为了确保系统重启后交换文件仍然可用,需要将其添加到 /etc/fstab 文件中。使用文本编辑器打开 /etc/fstab 文件:
sudo nano /etc/fstab
在文件末尾添加以下内容:
/swapfile none swap sw 0 0
保存并退出编辑器。
四、优化交换文件性能
1. 调整 swappiness 参数
swappiness 参数的值表示系统将内存数据交换到交换空间(Swap)的倾向程度,取值范围是 0 - 100。值越低,系统越倾向于保留内存数据,值越高,系统越倾向于使用交换空间。可以通过修改 /etc/sysctl.conf 文件来调整 swappiness 参数:
sudo nano /etc/sysctl.conf
在文件末尾添加或修改以下内容:
vm.swappiness = 10
保存并退出编辑器,然后执行以下命令使设置生效:
sudo sysctl -p
2. 启用 zram 压缩交换空间
zram 是一种基于内存的压缩交换空间,可以在有限的物理内存下提供更高的交换性能。可以通过安装 zram-config 包来启用 zram:
sudo apt install zram-config
安装完成后,zram 会自动配置并启用。
五、管理交换文件
1. 禁用交换文件
如果需要禁用交换文件,可以使用 swapoff 命令:
sudo swapoff /swapfile
2. 删除交换文件
在禁用交换文件后,可以删除交换文件。首先从 /etc/fstab 文件中删除交换文件的配置,然后执行以下命令删除文件:
sudo rm /swapfile