Published on

给服务器添加SWAP交换区

Authors
  • avatar
    Name
    老麦

朋友问起关于服务器内存的事宜,他和我都是使用阿里云 99 元 223 这个配置的云服务器。虽然使用场景不一样,但他也给我提了个醒,查看一下服务器当前的使用情况。

查看系统内存当前的使用情况

free -h

               total        used        free      shared  buff/cache   available
Mem:           1.7Gi       1.5Gi        82Mi        47Mi       336Mi       203Mi
Swap:             0B          0B          0B
  • total:系统总内存的大小。
  • used:已使用的内存量。
  • free:当前空闲的内存量。
  • shared:被共享的内存量。
  • buffers:用于缓冲区的内存量。
  • cached:用于文件缓存的内存量。
  • available:当前可用的内存量。

当前物理内存的空闲已经相当的低了,可用内存量也只有 200M 了。为了缓解一下这个情况,决定给系统添加一个交换区(Swap)。

Linux Swap 指的是 Linux 交换分区,是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是两者的组合;Swap 类似于 Windows 的虚拟内存,就是当内存不足时,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。

创建交换目录

mkdir /swap

进入目录

cd /swap

创建一个交换文件,bs 不能超过实际内存大小,可以用 count 来叠加

dd if=/dev/zero of=swapfile bs=1MB count=3000

3000+0 records in
3000+0 records out
3000000000 bytes (3.0 GB, 2.8 GiB) copied, 27.6441 s, 109 MB/s

设置并建立交换区

mkswap ./swapfile

mkswap: ./swapfile: insecure permissions 0644, fix with: chmod 0600 ./swapfile
Setting up swapspace version 1, size = 2.8 GiB (2999992320 bytes)
no label, UUID=78ca0a4e-f137-46e9-8264-e4039190e72d

根据提示给文件赋予安全权限

chmod 0600 ./swapfile

启用交换区

swapon ./swapfile

将交换区设置为开机后自动挂载

echo "/swap/swapfile swap swap defaults 0 0" >> /etc/fstab

重启

reboot

查看内存使用情况

free -h

               total        used        free      shared  buff/cache   available
Mem:           1.7Gi       1.1Gi        84Mi        20Mi       686Mi       581Mi
Swap:          2.8Gi          0B       2.8Gi