Centos 或者 Ubuntu 的交换分区 swap,类似于 Windows 系统的虚拟内存,能够在系统内存不足时,利用一部分硬盘空间虚拟出内存空间,解决内存不足的问题。下面分别给出如何为 Centos 和 Ubuntu 增加交换分区。所有命令以 root 用户运行。

Centos 添加交换分区

1
2
3
4
5
6
7
8
dd if=/dev/zero of=/swapfile count=2048 bs=1MiB
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
echo 'vm.swappiness=10' >> /etc/sysctl.conf
echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf

这里 count=2048,表示 2G 的交换分区。

Ubuntu 添加交换分区

1
2
3
4
5
6
7
8
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
echo 'vm.swappiness=10' >> /etc/sysctl.conf
echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf

这里的 2G 表示分配交换分区的硬盘大小为 2G。

查看交换分区情况

1
2
free -h
htop

以上两个命令都可以查看是否成功创建了交换分区。

增减 swap 分区的大小

以 Centos 为例,将 swap 分区从 2G 减小到 1G。一般 swap 分区的大小适合设置为内存 memory 的 2 倍。下面分步骤给出运行代码演示,以 root 用户操作。

  1. 停用 swap
1
swapoff /swapfile
  1. 删除旧 swapfile,并重新创建一个新的,这里 count 设置为你需要的大小,以 M 为单位
1
rm -f /swapfile && dd if=/dev/zero of=/swapfile count=1024 bs=1MiB
  1. 安装 swap
1
mkswap /swapfile
  1. 激活swap
1
swapon /swapfile
  1. 最好将 swapfile 的访问权限设置为 root 私享
1
chmod 600 /swapfile

通过以上步骤设置完后,就可以使用命令 free -h 查看交换分区的大小了。