前言

什么是Swap

Linux 系统中的 Swap ,又名交换空间。是类似于 Windows 系统的虚拟内存 (pagefile.sys),当内存不够用的时候会把一部分硬盘空间虚拟成内存,用来存储内存中暂时不使用的数据。

安装

  1. 查看

    1
    free -m
    1
    2
    3
    4
                 total       used       free     shared    buffers     cached
    Mem: 3952 2035 1916 9 217 1392
    -/+ buffers/cache: 425 3526
    Swap: 0 0 0

    可以看到 Swap 没有开启,下面我们来将其增加到内存大小 (4G)。

  2. 创建 Swap 文件

    1
    2
    3
    4
    5
    6
    7
    8
    mkdir swap

    cd swap

    sudo dd if=/dev/zero of=swapfile bs=1024 count=4M # bs 表示块大小 count 表示块数目 1024 * 4M = 4G
    # 4194304+0 records in
    # 4194304+0 records out
    # 4294967296 bytes (4.3 GB) copied, 88.3999 s, 48.6 MB/s

    把文件转换成 Swap 文件

    1
    2
    3
    sudo mkswap -f  swapfile 
    # Setting up swapspace version 1, size = 4194300 KiB
    # no label, UUID=bebbcbad-dda2-49f9-9aab-4b24b1d62d87
  3. 激活 Swap

    1
    sudo swapon swapfile

    查看激活情况

    1
    free -m
    1
    2
    3
    4
                 total       used       free     shared    buffers     cached
    Mem: 3952 3842 109 9 1 3369
    -/+ buffers/cache: 470 3481
    Swap: 4095 0 4095
  4. 配置

    • 修改swappiness
      swappiness 为 0 - 100的数值,数值越大表示越积极的去使用 Swap。

      • 暂时修改

        1
        sudo sysctl vm.swappiness=40
      • 永久修改

        1
        2
        3
        sudo vim /etc/sysctl.conf
        # 增加一行
        vm.swappiness = 40
    • 修改权限
      设置成只有 root 用户具有读写权限

      1
      2
      sudo chown root:root /swap/swapfile
      sudo chmod 0600 /swap/swapfile
  5. 开机启动

    1
    sudo vim /etc/fstab

    在文件最后面添加

    1
    /swap/swapfile       none    swap    sw      0       0