LVM swap动态管理核心是将swap建在逻辑卷上,通过swapoff/lvextend/mkswap/swapon组合实现按需调整,而非真正弹性挂载;缩容需谨慎,每次操作均须停用swap并重建头信息。

确认当前 swap 是否基于 LVM
执行 swapon -s 或 free -h,观察 swap 对应设备路径。若显示类似 /dev/centos/swap 或 /dev/vg_name/lv_name,说明它已是 LVM 逻辑卷;若为 /dev/sda2 这类裸分区,则需先迁移至 LV。
已有 LVM swap:直接扩容或缩容
适用于 swap 已建在 LV 上,且卷组(VG)有足够空闲 PE。
- 关闭当前 swap:
swapoff /dev/vg_name/lv_name - 扩展逻辑卷(例如加 2G):
lvextend -L +2G /dev/vg_name/lv_name - 重设 swap 格式:
mkswap /dev/vg_name/lv_name - 重新启用:
swapon /dev/vg_name/lv_name - 验证:
free -h和swapon -s
缩容同理:先 swapoff → lvreduce -L -1G /dev/vg_name/lv_name(注意必须先缩小文件系统?不,swap 无文件系统,但 lvreduce 会提示风险,加 -f 强制)→ mkswap → swapon。
没有 LVM swap:新建一个可调 LV 作为 swap
适合全新配置或替换旧 swap 分区。
- 确保 VG 有空闲空间(
vgdisplay查 Free PE) - 创建新 LV(如 4G):
lvcreate -L 4G -n swap_lv vg_name - 格式化为 swap:
mkswap /dev/vg_name/swap_lv - 启用:
swapon /dev/vg_name/swap_lv - 禁用旧 swap(如有):
swapoff /dev/xxx,并从/etc/fstab中移除对应行 - 将新 swap 写入 fstab:
/dev/vg_name/swap_lv none swap defaults 0 0
扩容前提:卷组必须有剩余空间
若 vgdisplay 显示 Free PE 为 0,需先扩展 VG:
- 新增物理盘或分区(如
/dev/vdf) - 初始化为 PV:
pvcreate /dev/vdf - 加入卷组:
vgextend vg_name /dev/vdf - 再执行 LV 扩展操作
注意事项
LVM swap 的“弹性”体现在容量可调,但每次调整都需临时停用 swap。生产环境建议避开高负载时段操作;缩容前务必确认内存使用率足够低,避免因 swap 不足触发 OOM;mkswap 会清空 LV 内容,所以不能跳过 —— 它不是“扩容文件系统”,而是重建 swap 区头信息。

















