温馨提示×

Linux Swap空间不足时如何扩容

小樊
46
2025-10-11 18:31:25
栏目: 云计算

Linux Swap空间不足时的扩容方法

当Linux系统物理内存不足,且Swap空间不足以支撑系统运行时,可通过以下三种方式扩容Swap空间。其中,扩展现有逻辑卷(LVM)中的Swap分区是最推荐的方法(尤其适用于使用LVM的系统),因其灵活性高、对系统影响小;新建Swap文件操作简单,适合临时或无LVM的环境;新建Swap分区适用于未使用LVM且有未分配磁盘空间的场景。

一、扩展现有逻辑卷(LVM)中的Swap分区(推荐)

若系统使用LVM管理磁盘,且Swap分区位于逻辑卷(LV)中,此方法可直接扩展逻辑卷的Swap空间,无需重新创建分区或文件。

操作步骤

  1. 关闭现有Swap分区
    禁用当前Swap分区,释放其占用的磁盘空间:

    sudo swapoff -v /dev/mapper/centos-swap  # 替换为实际的Swap逻辑卷路径(可通过`lsblk`或`fdisk -l`查看)
    
  2. 扩展逻辑卷大小
    使用lvresize命令增加逻辑卷的容量(示例中扩展2GB,可根据需求调整+2G为所需大小):

    sudo lvresize /dev/mapper/centos-swap -L +2G  # 增加2GB
    # 或指定绝对大小(如扩展到8GB):sudo lvresize /dev/mapper/centos-swap -L 8G
    
  3. 重新格式化为Swap空间
    扩展后的逻辑卷需重新格式化为Swap格式:

    sudo mkswap /dev/mapper/centos-swap
    
  4. 启用扩展后的Swap分区
    启用新的Swap空间:

    sudo swapon -va  # 启用所有Swap空间并验证
    
  5. 持久化配置(可选)
    若原Swap分区已在/etc/fstab中配置(通常为/dev/mapper/centos-swap swap swap defaults 0 0),无需修改,重启后会自动启用。若未配置,需添加对应条目。

二、新建Swap文件(灵活便捷)

若系统未使用LVM或需要快速扩容,可通过创建Swap文件实现。此方法无需修改磁盘分区表,适合临时增加Swap空间。

操作步骤

  1. 创建空文件
    使用dd命令创建指定大小的空文件(示例中创建2GB Swap文件,bs=1G表示块大小为1GB,count=2表示2个块):

    sudo dd if=/dev/zero of=/swapfile bs=1G count=2  # 替换`/swapfile`为目标路径(如`/data/swapfile`)
    
  2. 设置文件权限
    为Swap文件设置严格的权限(仅root可读写),防止安全风险:

    sudo chmod 600 /swapfile
    
  3. 格式化为Swap空间
    将文件转换为Swap格式:

    sudo mkswap /swapfile
    
  4. 启用Swap文件
    立即启用新创建的Swap文件:

    sudo swapon /swapfile
    
  5. 持久化配置
    编辑/etc/fstab文件,添加以下行,确保系统重启后自动启用Swap文件:

    echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
    
  6. 验证结果
    使用free -hswapon --show命令查看Swap空间是否增加:

    free -h
    

三、新建Swap分区(传统方法)

若系统未使用LVM且有未分配的磁盘空间,可通过新建磁盘分区并将其格式化为Swap分区实现扩容。

操作步骤

  1. 创建新分区
    使用fdiskparted工具在未分配的磁盘上创建新分区(示例中使用fdisk操作/dev/sdb磁盘):

    sudo fdisk /dev/sdb
    
    • 输入n创建新分区,选择分区类型(主分区/逻辑分区),设置分区大小;
    • 输入t修改分区类型,将其设置为82(Linux Swap类型);
    • 输入w将分区表写入磁盘(此操作会重启分区表,需谨慎)。
  2. 格式化分区为Swap空间
    使用mkswap命令格式化新分区(假设新分区为/dev/sdb2,可通过lsblk查看):

    sudo mkswap /dev/sdb2
    
  3. 启用新Swap分区
    启用新创建的Swap分区:

    sudo swapon /dev/sdb2
    
  4. 持久化配置
    编辑/etc/fstab文件,添加以下行,确保系统重启后自动启用新Swap分区:

    echo '/dev/sdb2 swap swap defaults 0 0' | sudo tee -a /etc/fstab
    
  5. 验证结果
    使用free -hswapon --show命令确认Swap空间已增加。

注意事项

  • Swap空间大小建议:根据物理内存大小调整,一般推荐Swap空间为物理内存的1-2倍(物理内存≤4GB时,Swap≥4GB;4GB<物理内存≤16GB时,Swap≥8GB;16GB<物理内存≤64GB时,Swap≥16GB;64GB<物理内存≤256GB时,Swap≥32GB)。
  • 操作前备份:修改分区表或逻辑卷前,建议备份重要数据,避免误操作导致数据丢失。
  • 性能影响:Swap空间位于硬盘,访问速度远慢于物理内存,过度依赖Swap会导致系统性能下降。若频繁使用Swap,建议升级物理内存而非单纯增加Swap空间。
  • swappiness参数:可通过调整vm.swappiness(范围0-100)控制系统使用Swap的积极性(0表示尽量不用Swap,100表示积极使用)。临时修改:sudo sysctl vm.swappiness=60;永久修改:编辑/etc/sysctl.conf,添加vm.swappiness=60

0