Swap介绍

  • SWaP是指Linux系统中的交换分区。

  • Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用Swap分区来提升系统运行效率。

  • 交换分区,英文的说法是swap,意思是“交换”、“实物交易”。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。

  • SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用。

  • 它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。

  • 需要注意的是,虽然这个SWAP分区能够作为"虚拟"的内存,但它的速度比物理内存可是慢多了,因此如果需要更快的速度的话,并不能寄厚望于SWAP,最好的办法仍然是加大物理内存。SWAP分区只是临时的解决办法。

  • 一种流行的、以讹传讹的说法是,安装Linux系统时,交换分区swap的大小应该是内存的两倍。也就是说,如果内存是2G,那么就应该分出4G的硬盘空间作为交换空间。其实这是严重的浪费。真实的情况是:可以根据你系统内存的大小,以及所使用的程序,自行决定交换分区的大小,甚至可以完全不用交换分区!

设置教程

  • 演示以在群晖NAS系统上设置为例

  • 其他Linux系统基本通用

查看现有虚拟内存

  • 打开群晖的SSH功能,使用终端软件进行连接,并切换到root状态下。

  • 查看现有设备的虚拟内存占用情况

    free -h
  • 我这里物理黑群晖安装的是8GB内存,目前只占用了782MB。

创建存储虚拟内存文件的文件夹

  1. 打开群晖控制面板--共享文件夹--新增--新增

  2. 对照下图创建一个共享文件夹
    名称:swap
    所在位置:选择你的固态硬盘存储空间(勿在默认的Docker共享文件夹中创建,操作不了。)
    勾选下面两个因此选项,取消勾选回收站。
    然后点击下一步

  3. 下一步

  4. 下一步

  5. 下一步

  6. 点击应用

  7. 创建完成

  8. 打开File Station,选择创建的虚拟内存共享文件夹,右键查看文件夹路径。

设置虚拟内存

  1. 在终端软件内执行下面的命令创建虚拟内存文件

    #执行时终端会停顿几秒
    # if是文件格式,of是虚拟内存文件路径和名字,bs是容量单位,count是容量大小,1G=1024M,演示设置的是增加4096mb(4GB内存),根据自己的硬盘可用空间和自己的需求设置。
    #将需要创建的虚拟内存文件路径换成你自己实际的
    
    dd if=/dev/zero of=/volume1/swap/swapfile bs=1M count=4096
  2. 创建成功

  3. 设置虚拟内存文件权限,确保只有root用户可以读写。

    #将后面的路径换成你自己实际的
    
    chmod 600 /volume1/swap/swapfile
  4. 格式化虚拟内存文件

    mkswap /volume1/swap/swapfile
    
    #演示结果
    root@nas:/# mkswap /volume1/swap/swapfile
    Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
    no label, UUID=f2d16141-4e38-4872-ac39-1ac1fd7e4c90
    root@nas:/#
    
  5. 开启虚拟内存

    swapon /volume1/swap/swapfile

设置虚拟内存开机自启

  1. 打开群晖控制面板--任务计划--新增--触发的任务--用户定义的脚本

  2. 常规
    任务名称:随意,自己分的清就行
    用户账户:root
    事件:开机

  3. 任务设置--运行命令,复制下面的粘贴进去后点击确定。

    #将/volume/swap/swapfile换成你自己实际的虚拟内存文件路径
    
    swapon -p 1 /volume/swap/swapfile


  4. 点击确定

  5. 输入你的群晖NAS的密码后点击提交

  6. 添加任务成功

检查虚拟内存

  1. 执行命令,再查看虚拟内存大小。

    free -h
  2. 可以看到虚拟内存大小已经更改成功

参考资料

  • 网络资料:https://mp.weixin.qq.com/s/lNt2nhDk7DQ2rvEP4n87Dw

功德+1(狗子).gif

👇👇👇