温馨提示×

如何扩大Ubuntu Swap容量

小樊
36
2025-11-02 11:42:56
栏目: 智能运维

如何扩大Ubuntu Swap容量

扩大Ubuntu系统的Swap容量可通过创建/扩展Swap文件(适用于大多数场景,推荐)或调整Swap分区(适用于传统分区布局)实现。以下是详细步骤:

一、前置准备:检查当前Swap状态

在操作前,需确认系统当前Swap使用情况及剩余磁盘空间:

sudo swapon --show      # 查看已启用的Swap设备及大小
free -h                 # 查看内存与Swap总容量(人类可读格式)
df -h                   # 查看磁盘剩余空间(确保有足够空间扩展)

二、方法一:创建新的Swap文件(推荐,无需修改分区)

适用于未使用LVM或希望快速扩展的场景,步骤如下:

1. 创建Swap文件

使用fallocate(高效,推荐)或dd(兼容性好)命令创建指定大小的文件(以4GB为例):

sudo fallocate -l 4G /swapfile    # 推荐:快速分配4GB文件
# 或
sudo dd if=/dev/zero of=/swapfile bs=1G count=4  # 兼容:逐块写入4GB(耗时较长)

2. 设置文件权限

Swap文件需仅root可读写,防止未经授权访问:

sudo chmod 600 /swapfile

3. 格式化为Swap空间

将文件转换为Swap格式:

sudo mkswap /swapfile

4. 启用Swap文件

立即激活新的Swap空间:

sudo swapon /swapfile

5. 验证扩展结果

确认Swap容量已增加:

sudo swapon --show      # 应显示新Swap文件及总大小
free -h                 # 查看SwapTotal是否增加

6. 设置开机自动挂载

编辑/etc/fstab文件,添加以下行(确保重启后自动启用):

sudo nano /etc/fstab

在文件末尾添加:

/swapfile none swap sw 0 0

保存并退出(Ctrl+OEnterCtrl+X)。

三、方法二:扩展现有Swap分区(适用于传统分区布局)

若系统使用传统分区(非LVM),需通过gparted工具调整分区大小,步骤如下:

1. 关闭现有Swap分区

sudo swapoff /dev/sdXn  # 替换为你的Swap分区(如/dev/sda2)

2. 扩展分区大小

使用gparted图形工具(或growpart命令行工具)调整分区:

  • 打开gparted→选中Swap分区→右键选择Resize/Move→拖动滑块扩大分区→点击Apply
  • 或使用命令行(假设分区为/dev/sda2):
    sudo growpart /dev/sda 2  # 扩展/dev/sda2分区
    

3. 重新格式化为Swap

sudo mkswap /dev/sdXn  # 重新格式化分区

4. 启用Swap分区

sudo swapon /dev/sdXn

5. 验证结果

同方法一的验证步骤。

四、方法三:扩展LVM逻辑卷中的Swap(适用于LVM管理)

若系统使用LVM(逻辑卷管理),可通过扩展逻辑卷实现动态扩容,步骤如下:

1. 关闭Swap

sudo swapoff /dev/mapper/vgname-swapname  # 替换为你的Swap逻辑卷(如/dev/mapper/ubuntu--vg-swap_1)

2. 扩展逻辑卷

使用lvextend命令增加逻辑卷大小(以**+2GB**为例):

sudo lvextend -L +2G /dev/mapper/vgname-swapname  # 扩展2GB
# 或扩展至指定大小(如20GB)
# sudo lvextend -L 20G /dev/mapper/vgname-swapname

3. 调整Swap大小

sudo mkswap /dev/mapper/vgname-swapname  # 重新格式化(会清除原有数据)

4. 启用Swap

sudo swapon /dev/mapper/vgname-swapname

5. 验证结果

同方法一的验证步骤。

五、优化建议:调整Swappiness参数

Swappiness控制系统使用Swap的倾向(默认值60,范围0-100)。降低该值可减少Swap使用,提升性能(尤其内存充足时):

# 查看当前值
cat /proc/sys/vm/swappiness
# 临时修改(立即生效)
sudo sysctl vm.swappiness=10
# 永久修改(重启生效)
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

注意事项

  • 备份重要数据:操作分区或文件系统前,务必备份关键数据。
  • 性能权衡:Swap文件性能低于物理内存,建议内存不足时优先增加物理内存。
  • 权限安全:确保Swap文件/分区的权限为600,防止未授权访问。

通过以上方法,可根据系统配置灵活扩大Ubuntu的Swap容量,提升系统内存管理能力。

0