如何增加Ubuntu Swap容量
增加Ubuntu系统的Swap容量可通过创建/调整Swap文件(推荐,适用于大多数场景)或扩展现有Swap分区(适用于传统分区布局)实现。以下是详细步骤及注意事项:
在操作前,需确认系统当前Swap使用情况及磁盘空间是否充足:
sudo swapon --show # 查看已启用的Swap设备及大小
free -h # 查看内存与Swap总容量
df -h # 查看磁盘剩余空间(确保有足够空间创建Swap文件)
Swap文件是动态扩展Swap容量的最常用方式,适用于所有Ubuntu版本(尤其是使用UEFI启动的系统)。
若系统已通过Swap文件提供Swap空间,需先禁用并删除旧文件(可选):
sudo swapoff /swapfile # 禁用Swap文件
sudo rm /swapfile # 删除旧文件(谨慎操作,确保无重要数据)
使用fallocate(快速,推荐)或dd(兼容性好)命令创建指定大小的Swap文件(例如8GB):
sudo fallocate -l 8G /swapfile # 推荐:快速分配8GB空间
# 或
sudo dd if=/dev/zero of=/swapfile bs=1G count=8 # 兼容:逐块写入8GB零数据
Swap文件需限制为仅root可读写,避免安全风险:
sudo chmod 600 /swapfile
将文件转换为Swap格式,使其可被系统识别:
sudo mkswap /swapfile
立即激活新Swap文件,使系统开始使用:
sudo swapon /swapfile
编辑/etc/fstab文件,添加以下行以确保重启后自动启用Swap文件:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
确认Swap容量已增加:
sudo swapon --show # 查看Swap设备及大小
free -h # 查看总Swap容量
若系统使用传统MBR/GPT分区表且已分配Swap分区(而非Swap文件),需通过分区工具调整分区大小。
sudo swapoff /dev/sdXn # 替换为你的Swap分区(如/dev/nvme0n1p3)
使用gparted图形工具(推荐新手)或fdisk命令行工具扩展Swap分区:
图形工具(gparted):
sudo apt install gparted # 安装gparted(若未安装)
sudo gparted # 启动工具
找到Swap分区(通常标记为“linux-swap”),右键选择“Resize/Move”,拖动分区边界扩展大小,点击“Apply”保存更改。
命令行工具(fdisk):
sudo fdisk /dev/sdX # 替换为你的磁盘(如/dev/nvme0n1)
输入d删除旧Swap分区(不会立即删除数据),输入n创建新分区(选择“Linux swap”类型,代码82),调整分区大小(起始扇区与旧分区一致,结束扇区更大),输入w保存并退出。
sudo mkswap /dev/sdXn # 替换为新分区名
sudo swapon /dev/sdXn
/etc/fstab编辑/etc/fstab,将旧分区路径替换为新分区路径(若分区名未变,可跳过):
sudo nano /etc/fstab
将原行(如/dev/sdXm none swap sw 0 0)修改为/dev/sdXn none swap sw 0 0,保存退出。
若系统使用LVM(逻辑卷管理),可通过LVM工具灵活扩展Swap空间,无需调整物理分区。
sudo swapoff -a
假设Swap逻辑卷名为/dev/vgubuntu/swap_1,需扩展2GB:
sudo lvextend -L +2G /dev/vgubuntu/swap_1 # 扩展2GB
# 或扩展至指定大小(如20GB)
sudo lvextend -L 20G /dev/vgubuntu/swap_1
sudo mkswap /dev/vgubuntu/swap_1 # 重置Swap签名
sudo swapon /dev/vgubuntu/swap_1 # 启用
/etc/fstab确保/etc/fstab中仍指向原逻辑卷路径(LVM路径不变,无需修改):
/dev/vgubuntu/swap_1 none swap sw 0 0
Swappiness参数控制内核使用Swap的频率(范围0-100,默认60)。降低该值可减少Swap使用,提升系统响应速度(适合桌面系统):
sudo sysctl vm.swappiness=10 # 临时生效(重启失效)
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf # 永久生效
/etc/fstab后,重启系统确认Swap自动启用:sudo reboot
free -h