温馨提示×

CentOS Swap升级方法介绍

小樊
48
2025-10-25 21:11:09
栏目: 智能运维

CentOS Swap升级方法详解
Swap(交换空间)是CentOS系统扩展虚拟内存的关键机制,用于缓解物理内存不足的问题。升级Swap空间主要分为增加新Swap空间(文件/分区/逻辑卷)、调整现有Swap大小优化Swap使用效率三类场景,以下是具体操作步骤及注意事项。

一、增加新Swap空间

1. 增加Swap文件(推荐:无需磁盘分区,操作简单)

  • 创建Swap文件:使用fallocate命令快速分配指定大小的文件(如4GB),或用dd命令(更底层,适用于所有场景)。
    sudo fallocate -l 4G /swapfile  # 推荐:快速创建
    # 或
    sudo dd if=/dev/zero of=/swapfile bs=1M count=4096  # dd方式:逐块写入
    
  • 设置权限:Swap文件需限制为root专属读写,防止普通用户篡改。
    sudo chmod 600 /swapfile
    
  • 格式化为Swap空间:使用mkswap命令将文件标记为交换空间。
    sudo mkswap /swapfile
    
  • 启用Swap文件:立即激活新增的交换空间。
    sudo swapon /swapfile
    
  • 持久化配置:编辑/etc/fstab文件,添加以下行,确保系统重启后自动挂载。
    echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab
    
  • 验证结果:通过free -hswapon --show命令确认Swap空间已增加。

2. 增加Swap分区(传统方式:需磁盘分区操作)

  • 创建分区:使用fdiskparted工具在未分配的磁盘空间上创建新分区(如/dev/sdb1),并将分区类型设置为Linux swap(类型代码为82)。
    sudo fdisk /dev/sdb  # 进入fdisk交互界面
    # 按提示创建分区(n→p→设置大小→t→82→w保存退出)
    
  • 格式化分区:将新分区格式化为Swap空间。
    sudo mkswap /dev/sdb1
    
  • 启用分区:激活新增的交换分区。
    sudo swapon /dev/sdb1
    
  • 持久化配置:编辑/etc/fstab文件,添加以下行。
    echo "/dev/sdb1 swap swap defaults 0 0" | sudo tee -a /etc/fstab
    

3. 增加LVM逻辑卷Swap(动态扩展:适合LVM环境)

若系统使用LVM管理磁盘,可通过扩展逻辑卷(LV)快速调整Swap大小:

  • 扩展逻辑卷:向Swap逻辑卷(如/dev/vg_name/swap_lv)添加1GB空间。
    sudo lvextend -L +1G /dev/vg_name/swap_lv
    
  • 重新格式化:更新Swap空间格式。
    sudo mkswap /dev/vg_name/swap_lv
    
  • 启用扩展后的Swap
    sudo swapon -a  # 自动启用/etc/fstab中的所有Swap
    

二、调整现有Swap空间大小

1. 扩大现有Swap空间

  • 缩小物理内存使用:确保系统有足够可用内存(避免Swap扩大后内存不足导致崩溃)。
  • 禁用现有Swap
    sudo swapoff /swapfile  # 若为文件
    # 或
    sudo swapoff /dev/sdb1  # 若为分区
    
  • 扩大文件/分区
    • 文件:用fallocate重新分配更大空间(如从4GB扩至8GB)。
      sudo fallocate -l 8G /swapfile
      
    • 分区:使用fdisk/parted删除原分区并创建更大分区(注意:需重新设置分区类型为swap)。
  • 重新格式化与启用
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
  • 更新/etc/fstab:修改对应行(如将/swapfile的大小注释移除或更新)。

2. 缩小现有Swap空间

  • 禁用Swap
    sudo swapoff /swapfile
    
  • 缩小文件/分区
    • 文件:用truncatedd截断文件(如从8GB缩至4GB)。
      sudo truncate -s 4G /swapfile
      
    • 分区:使用fdisk/parted删除原分区并创建更小分区(需重新格式化)。
  • 重新格式化与启用:同扩大步骤。

三、优化Swap使用效率

1. 调整Swappiness参数

Swappiness控制内核使用Swap的倾向(默认值30,范围0-100)。值越低,系统越倾向于保留数据在物理内存中,减少Swap使用。

  • 查看当前值
    cat /proc/sys/vm/swappiness
    
  • 临时调整(重启失效):
    sudo sysctl vm.swappiness=10  # 推荐:10-20(平衡性能与内存利用率)
    
  • 永久生效:编辑/etc/sysctl.conf文件,添加以下行。
    vm.swappiness=10
    sudo sysctl -p  # 使配置生效
    

2. 监控Swap使用情况

定期使用以下命令监控Swap状态,及时发现内存瓶颈:

free -h  # 查看内存与Swap总量及使用率
swapon --show  # 查看当前启用的Swap设备及大小
top/htop  # 实时查看进程内存占用(按M排序)
vmstat 1  # 查看虚拟内存统计信息(每秒刷新)

注意事项

  • 备份数据:调整分区或逻辑卷前,务必备份重要数据(避免操作失误导致数据丢失)。
  • 系统兼容性:CentOS 8及以上版本推荐使用dnf替代yum,但Swap操作命令基本一致。
  • 性能权衡:Swap空间过大可能导致系统频繁读写磁盘(I/O瓶颈),过小则无法缓解内存不足问题,需根据实际内存使用情况调整(如物理内存<8GB时,Swap建议为内存的1-2倍;物理内存>16GB时,Swap建议为内存的0.5-1倍)。

通过以上方法,可有效升级CentOS系统的Swap空间,提升多任务处理能力及系统稳定性。

0