Swap(交换空间)是Ubuntu系统用于扩展虚拟内存的机制,当物理内存(RAM)不足时,系统会将部分不活跃数据临时存储到Swap空间(硬盘上的专用分区或文件),从而释放RAM供活跃进程使用。
Ubuntu支持两种Swap类型:
82),适合固定大小的Swap需求;/swapfile),灵活性更高,适合动态调整大小。Swap文件创建步骤简单,无需修改磁盘分区表,适合大多数场景:
fallocate(快速)或dd(通用)命令。例如创建8GB Swap文件:sudo fallocate -l 8G /swapfile # 推荐(需系统支持fallocate)
# 或
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 # 通用(逐块写入)
sudo chmod 600 /swapfile
mkswap命令写入Swap签名:sudo mkswap /swapfile
sudo swapon /swapfile
/etc/fstab文件,添加以下行(确保系统重启后自动启用):echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
若需固定大小的Swap空间,可通过磁盘分区工具创建:
fdisk(命令行)或GParted(图形化)工具,在未分配空间中创建新分区;
n创建新分区,选择p(主分区)或e(扩展分区),设置分区大小(如+4G表示4GB);t修改分区类型,输入82(Linux Swap类型);w保存并退出。mkswap命令格式化分区(假设分区为/dev/sda2):sudo mkswap /dev/sda2
sudo swapon /dev/sda2
/etc/fstab文件,添加以下行:echo '/dev/sda2 none swap sw 0 0' | sudo tee -a /etc/fstab
sudo swapon --show
free -h
watch -n 1 free -h # 每秒刷新一次
sudo swapoff /swapfile
sudo truncate -s 4G /swapfile # 缩小至4GB(示例)
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapoff /swapfile
sudo fallocate -l 12G /swapfile # 扩大至12GB(示例)
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
GParted等工具扩展分区大小(需后续重新格式化);GParted缩小分区,再重新格式化。sudo swapoff /swapfile # 或 /dev/sdXY(分区)
/etc/fstab文件,删除对应的Swap条目;sudo rm /swapfile # 删除Swap文件
# 或
sudo parted /dev/sdX rm 2 # 删除分区(示例:/dev/sda2)
swappiness控制内核将内存数据交换到Swap的频率,取值范围0-100(默认60):
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10 # 建议值:10-30(内存充足时降低)
/etc/sysctl.conf文件,添加以下行:echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf