在 Linux 系统中,创建 swap 文件(swapfile)是扩展系统虚拟内存的常用方法。以下是生成和启用 swap 文件的完整步骤:
- 创建一个空文件作为 swap 文件
使用dd命令创建指定大小的文件(示例创建 4GB 的 swap 文件):
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
-
if=/dev/zero:输入源(提供空数据) -
of=/swapfile:输出文件路径 -
bs=1G:每次写入 1GB 数据块 -
count=4:写入 4 个数据块(总大小 4GB)
- 设置正确的文件权限
限制 swap 文件的访问权限,仅允许 root 操作:
sudo chmod 600 /swapfile
- 将文件格式化为 swap 分区
使用mkswap命令初始化 swap 文件:
sudo mkswap /swapfile
- 启用 swap 文件
立即激活该 swap 文件:
sudo swapon /swapfile
- 设置开机自动挂载
编辑/etc/fstab文件,添加以下行以确保系统启动时自动启用:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
- 验证 swap 是否生效
使用以下命令检查 swap 状态:
sudo swapon --show # 查看已启用的 swap
free -h # 查看内存和 swap 使用情况
如果需要调整 swap 文件大小,可先禁用现有 swap 文件再重新创建:
sudo swapoff /swapfile
# 然后重复步骤 1-4 创建新的 swap 文件
注意:swap 文件的性能略低于独立的 swap 分区,但对于临时扩展虚拟内存非常实用。建议 swap 大小不超过物理内存的 2 倍(视实际需求而定)。除了 dd 命令,还可以使用 fallocate 命令来创建 swap 文件,这种方式更高效(直接分配磁盘空间而非逐块写入零值),速度更快,尤其适合创建大文件。
使用 fallocate 创建 swap 文件的步骤如下:
- 创建指定大小的文件
例如创建 4GB 的 swap 文件:
sudo fallocate -l 4G /swapfile
-l 4G表示指定文件大小为 4GB(支持 K、M、G 等单位)
- 设置权限(同前)
sudo chmod 600 /swapfile
- 格式化并启用 swap
sudo mkswap /swapfile
sudo swapon /swapfile
- 设置开机自动挂载(同前)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
注意:fallocate 并非在所有文件系统上都可用(例如不支持某些网络文件系统),但在主流的 ext4、xfs 等本地文件系统上表现良好。如果遇到 fallocate 无法使用的情况,再 fallback 到 dd 即可。