Ubuntu 中 Swap 与启动速度的关系与优化要点
一、先判断是否需要 Swap 优化
systemd-analyze blame、systemd-analyze critical-chain。如果耗时集中在“swap”相关单元或挂载阶段,再按下方步骤处理。swapon --show、free -h。若几乎未使用 Swap,通常不是 Swap 导致启动慢。cat /proc/sys/vm/swappiness(默认多为60)。内存充足(如≥16GB)时,可适当降低以减少不必要的交换倾向。grep -n swap /etc/fstabsystemctl list-unit-files | grep swap,可见类似 dev-disk-by\\x2duuid-<UUID>.swap 的单元。/etc/fstab 中的 Swap 条目,否则开机可能因等待挂载失败而变慢。二、常见导致“启动慢”的 Swap 原因与修复
sudo blkid -t TYPE=swap/etc/fstab:将旧的 UUID=... 或 /dev/sdX 改为新的 UUID;或改用 sudo systemctl enable --now dev-disk-by\\x2duuid-<UUID>.swap 方式管理。sudo mount -a(无报错即正常),systemctl status <swap-unit> 查看单元状态。/etc/fstab 中 swap 行未正确注释,导致启动阶段反复尝试挂载失败(常见于虚拟机或克隆镜像)
/etc/fstab 中将 swap 行注释;或在新版本使用 systemctl mask swap.target 彻底屏蔽自动挂载(见下文)。swappiness=60,在内存充足时仍可能触发早期交换,叠加 I/O 抖动影响启动观感
vm.swappiness 调低(见下一节)。三、把 Swap 调优为“不拖慢启动”的配置
sudo sysctl vm.swappiness=10/etc/sysctl.conf 添加 vm.swappiness=10,重启生效。内存较大(≥16GB)且主要交互/开发场景,建议维持在10左右。sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfilesudo mkswap /swapfile && sudo swapon /swapfile/etc/fstab 添加 /swapfile none swap sw 0 0sudo swapoff -asudo systemctl mask swap.target(屏蔽自动挂载);sudo sed -i '/swap/s/^/# /' /etc/fstab 注释 fstab 中的 swap 行。四、验证与回退
systemd-analyze time、systemd-analyze blame(对比优化前后关键阶段耗时)。swapon --show、free -h(确认启用/禁用是否生效)。grep -n swap /etc/fstab、systemctl list-unit-files | grep swap、systemctl status <swap-unit>(确保无报错、无失败依赖)。sudo swapon /swapfile,再在 /etc/fstab 取消注释;sudo systemctl unmask swap.target,或在 /etc/fstab 恢复 swap 行后 sudo systemctl daemon-reload。