Ubuntu与Debian创建和验证swap文件
swap可在内存紧张时提供交换空间,但磁盘速度和RAM不同,不能代替足够的物理内存。先排查持续增长的进程与业务需求,再决定是否添加。这里创建1GiB独立文件;若当前产品或虚拟化不允许启用swap,不能靠命令绕过限制。
先确认已有交换与磁盘空间
free -h
swapon --show
findmnt -T /
df -h /
ls -l /swapfile.baole
确认根文件系统类型、剩余容量以及是否已有swap。1GiB文件之外还要为系统、日志和业务增长留出空间。示例只适用于普通ext4;目标文件已经存在时先查用途,不重新初始化。Btrfs、稀疏文件、写时复制和部分网络文件系统有额外要求,不能机械套用。
创建并初始化专用文件
sudo sh -c 'set -eu
if [ -e /swapfile.baole ]; then
echo "目标已存在,停止创建" >&2
exit 1
fi
umask 077
dd if=/dev/zero of=/swapfile.baole bs=1M count=1024 status=progress
chmod 600 /swapfile.baole
mkswap /swapfile.baole'
这段命令在目标已存在时停止,不覆盖已有文件。dd在指定文件中实际写入1GiB零数据,可能产生一段时间的磁盘写入,应避开业务高峰。只有命令块完整成功后才能继续;空间不足或写入失败时先处理原因,不对一个不完整或用途未知的文件继续mkswap。
启用并查看实际结果
sudo swapon /swapfile.baole
swapon --show
free -h
swapon成功后,列表应出现这个绝对路径与预期大小,free的Swap总量相应增加。使用量为0可能只是当前没有交换需求;出现不支持、Operation not permitted或holes错误时,按实际文件系统与虚拟化限制处理,不反复强制启用。
确认正常后配置持久化
先保存/etc/fstab原副本,再编辑并添加唯一的一行;已有相同行就不要重复追加:
/swapfile.baole none swap sw 0 0
sudo findmnt --verify --verbose
swapon --show
fstab语法校验不代替swapon的实际启用检查。不要为了验证持久化立刻重启生产实例;在安排好的维护窗口再检查重启后的状态。交换变得频繁时,应观察进程、内存压力与磁盘等待,不能仅因为没有触发OOM就认定性能正常。
需要撤销时
先确认内存和其他交换空间足以接回当前页面,再在维护窗口对这个明确路径执行 sudo swapoff /swapfile.baole。只有停用成功、swapon列表中不再有它,才移除对应fstab行并按计划清理该文件;停用失败时不删除文件。不要使用swapoff -a影响其他正在使用的交换空间。