温馨提示×

如何调整Ubuntu Swapper的大小

小樊
35
2025-12-27 18:03:39
栏目: 智能运维

Ubuntu 调整交换空间 Swapper 大小

术语说明与准备

  • 在 Linux 中,大家常说的“Swapper”通常指的是系统的交换空间(Swap),可以是交换分区交换文件
  • 操作前先查看当前交换空间:
    • 查看大小与使用:free -h
    • 查看已启用的交换项:swapon --show
  • 建议在执行分区类操作前备份重要数据,并确保有未分配磁盘空间可用(用于扩容分区或放置交换文件)。

方法一 使用交换文件调整大小(推荐,灵活且风险低)

  • 步骤概览:创建/调整文件 → 设置权限 → 格式化为交换 → 启用 → 写入 fstab 持久化。
  • 示例一(直接创建新文件,例如新增8GB):
    1. 创建文件:sudo fallocate -l 8G /swapfile(如 fallocate 不可用,可用 sudo dd if=/dev/zero of=/swapfile bs=1M count=8192
    2. 安全权限:sudo chmod 600 /swapfile
    3. 格式化:sudo mkswap /swapfile
    4. 启用:sudo swapon /swapfile
    5. 持久化:将 /swapfile none swap sw 0 0 写入 /etc/fstab
    6. 验证:free -hswapon --show
  • 示例二(把现有交换文件从1GB调整到16GB):
    1. 关闭交换:sudo swapoff /swapfile
    2. 调整大小(两种等效方式):
      • sudo fallocate -l 16G /swapfile
      • sudo dd if=/dev/zero of=/swapfile bs=1M count=16384
    3. 权限:sudo chmod 600 /swapfile
    4. 重新格式化:sudo mkswap -f /swapfile
    5. 启用:sudo swapon /swapfile
    6. 验证:free -h
  • 如需移除旧交换文件,先 sudo swapoff /swapfile,再删除文件并从 /etc/fstab 移除对应行。

方法二 调整交换分区大小(适合已有交换分区)

  • 基本流程:禁用交换 → 用 GParted 或 fdisk 调整分区大小 → 重新格式化交换分区 → 启用交换 → 验证。
  • 详细步骤:
    1. 禁用交换:sudo swapoff /dev/sdXY(将 /dev/sdXY 替换为实际交换分区,如 /dev/sda2
    2. 调整分区大小:
      • 图形化:安装并使用 GParted,在目标磁盘上右键交换分区选择 Resize/Move,拖动边界或输入新大小,点击 Apply
      • 命令行:使用 fdisk /dev/sdX,记录交换分区号,删除后按原起始扇区重建更大的分区,并将类型设为 Linux swap(82),保存退出。
    3. 重新格式化:sudo mkswap /dev/sdXY
    4. 启用交换:sudo swapon /dev/sdXY
    5. 验证:free -hswapon --show
  • 提示:若没有相邻未分配空间,需先挪动/收缩其他分区,操作更复杂,风险更高;新手更推荐用交换文件方案。

使用 LVM 时的更优做法

  • 如果系统使用 LVM,可直接扩展逻辑卷,再格式化为交换,无需搬移分区:
    1. 扩展逻辑卷(示例):sudo lvextend -L +8G /dev/vg0/swap
    2. 重新格式化:sudo mkswap /dev/vg0/swap
    3. 启用:sudo swapon /dev/vg0/swap
    4. 验证:free -h
  • 这种方式对分区布局影响最小,适合需要频繁调整的场景。

性能与行为优化建议

  • 调整交换倾向(swappiness):范围 0–100,默认通常为 60。数值越大越倾向使用交换;数值越小越倾向使用物理内存。
    • 临时调整:sudo sysctl vm.swappiness=10
    • 永久生效:在 /etc/sysctl.conf 添加 vm.swappiness=10 后重启或 sudo sysctl -p
  • 多交换项优先级:可用 swapon --show 查看 PRIO,必要时在 /etc/fstab 中使用 pri= 指定优先级(数值越大优先级越高),例如:/swapfile none swap sw,pri=10 0 0
  • 其他:交换位于 SSD 上通常性能更好;若内存充足且希望减少磁盘交换,可适当降低 swappiness;服务器场景常设为 10 左右以兼顾性能与稳定性。

0