Swap空间不足时的扩容方法
当Linux系统Swap空间不足时,可通过创建Swap文件(最常用)、扩展现有Swap分区(适用于LVM或传统分区)等方式扩展。以下是详细步骤及注意事项:
在扩容前,需确认系统现有Swap空间的使用情况,包括总大小、已用空间及剩余空间。常用命令:
sudo swapon --show # 显示当前激活的Swap文件/分区
free -h # 以易读格式(GB/MB)显示内存与Swap使用情况
此方法无需修改磁盘分区表,操作简单且可动态调整,适用于无LVM或不想改动现有分区的系统。
使用fallocate(更高效)或dd命令创建指定大小的Swap文件(如4GB):
sudo fallocate -l 4G /swapfile # 推荐:快速分配空间
# 或
sudo dd if=/dev/zero of=/swapfile bs=1G count=4 # 传统方式:逐块写入零
为保证系统安全,Swap文件仅允许root用户读写:
sudo chmod 600 /swapfile
使用mkswap命令将文件初始化为Swap格式:
sudo mkswap /swapfile
立即激活新增的Swap空间:
sudo swapon /swapfile
编辑/etc/fstab文件,添加以下行:
sudo nano /etc/fstab
在文件末尾添加:
/swapfile none swap sw 0 0
保存并退出(Ctrl+O→Enter→Ctrl+X)。
sudo swapon --show # 确认新增Swap文件已激活
free -h # 检查Swap总大小是否增加
若系统使用LVM或已有Swap分区,可通过扩展分区大小来增加Swap空间。
sudo swapoff -a
sudo vgs
vg_name-lv_swap为Swap逻辑卷,增加2GB):sudo lvextend -L +2G /dev/mapper/vg_name-lv_swap
sudo mkswap /dev/mapper/vg_name-lv_swap
sudo swapon /dev/mapper/vg_name-lv_swap
gparted图形工具(推荐新手):
gparted:sudo apt install gparted(Debian/Ubuntu)或sudo yum install gparted(CentOS/RHEL)。gparted:sudo gparted。linux-swap),右键选择“Resize/Move”,拖动滑块扩大分区大小。fdisk命令行工具(需手动操作):
sudo fdisk /dev/sdX # 替换为Swap分区所在磁盘(如/dev/sda)
输入d删除分区,选择Swap分区编号。n新建分区,选择“Primary”或“Logical”,设置起始扇区(与原分区一致),结束扇区(扩大后的大小)。
输入t修改分区类型,选择82(Linux swap)。
输入w保存并退出。sudo mkswap /dev/sdXN # 替换为新分区名(如/dev/sda3)
sudo swapon /dev/sdXN
编辑/etc/fstab,更新Swap分区条目(若分区名变化,需修改为新的设备名):
/dev/mapper/vg_name-lv_swap none swap sw 0 0 # LVM逻辑卷
/dev/sdXN none swap sw 0 0 # 传统分区
若暂时无法扩容硬件,可通过调整系统参数减少Swap使用:
swappiness参数控制内核使用Swap的倾向(默认值60,范围0-100)。值越低,系统越倾向于保留数据在物理内存中。
sudo sysctl vm.swappiness=10
/etc/sysctl.conf,添加:vm.swappiness=10
若Swap中有大量未使用的数据,可手动清理:
sudo swapoff -a && sudo swapon -a
df -h检查)。fdisk删除分区会清除数据,需提前备份重要文件。通过以上方法,可根据系统配置和需求选择合适的扩容方式,解决Swap空间不足的问题。