Swap空间不足的扩容方法
在扩容前,需确认系统当前的Swap使用情况及剩余磁盘空间,常用命令如下:
swapon --show(显示已激活的Swap文件/分区及大小);free -h(以人类可读格式展示内存、Swap的总量、已用及剩余空间);df -h(若通过创建Swap文件扩容,需确保目标磁盘有足够空间)。适用场景:物理磁盘或逻辑卷有足够未分配空间,且不想调整现有分区结构。
操作步骤:
fallocate(更高效)或dd命令生成指定大小的文件(如4GB):sudo fallocate -l 4G /swapfile 或 sudo dd if=/dev/zero of=/swapfile bs=1G count=4(bs为块大小,count为块数量);sudo chmod 600 /swapfile;mkswap命令将文件标记为Swap格式:sudo mkswap /swapfile;sudo swapon /swapfile;/etc/fstab文件,添加以下行确保重启后自动激活:/swapfile none swap sw 0 0(可使用sudo nano /etc/fstab编辑)。适用场景:系统使用传统分区(非LVM),且有未分配的磁盘空间可扩展Swap分区。
操作步骤:
sudo swapoff /dev/sdXN(/dev/sdXN为现有Swap分区,如/dev/sda2);gparted图形工具或parted命令扩展分区(以gparted为例):sudo gparted → 选中目标磁盘 → 右键点击Swap分区 → 选择“Resize/Move” → 拖动滑块扩展大小 → 应用更改;sudo mkswap /dev/sdXN;sudo swapon /dev/sdXN;/etc/fstab,确保原Swap分区条目保留(无需修改)。适用场景:系统使用LVM(逻辑卷管理),且逻辑卷所在卷组(VG)有可用空间。
操作步骤:
sudo lvdisplay(查看LV路径,如/dev/vg_name/lv_swap)、sudo vgdisplay(查看VG剩余空间);sudo lvextend -L +2G /dev/vg_name/lv_swap(-L +2G表示增加2GB,可根据需求调整);sudo mkswap /dev/vg_name/lv_swap;sudo swapon /dev/vg_name/lv_swap;/etc/fstab,确保原LV路径未被修改。sudo sysctl vm.swappiness=10;永久生效:编辑/etc/sysctl.conf,添加vm.swappiness=10。top(查看内存占用)→ 找到高内存进程 → sudo kill -9 <PID>(谨慎操作,避免终止关键进程)。swapon --show)。