作者:TimZhong
前言
威联通的系统功能相对比较多,所以占用的内存也很大。很多内存只有512M或者1G的威联通NAS在更新之后非常卡顿,其实很有可能是交换分区惹的祸。在本系列第二篇文章中,我多次提到威联通TS-212P3的内存非常吃紧,而且系统在内存剩余较多的时候频繁进行swap,导致整台机器卡的没法用 。
因此解决威联通小内存机器卡顿,应该从交换分区上下手。
swap是什么
NAS和普通电脑一样,都有CPU和内存,当电脑上运行软件的时候,软件被操作系统从硬盘加载到内存中,只有在内存中的代码才能被CPU直接执行。当运行太多软件时,内存空间会不足 ,这时就无法打开更多软件,已经在运行的软件也可能因为无法申请更多内存而出现异常。为了解决内存不足的问题,虚拟内存诞生了。
虚拟内存就是把硬盘的一部分容量当作内存使用,当一个程序(进程)空闲的时候,操作系统可以将这个程序(进程)从内存搬到硬盘上,把内存让给那些需要进行运算的程序(进程)。当一个唤醒信号(中断)到来时,比如按了一下继续,操作系统会把这个程序(进程)从硬盘中搬回内存,然后再开始执行。这个换来换去的过程就叫做交换(swap) 。
当一台电脑内存不足的时候,有些程序就会被搬来搬去,每次搬运都要等待硬盘写入和读取,速度相当慢 。同时,swap还会影响cpu性能,cpu本来应该负责计算,但是却消耗了绝大部分性能在搬运程序(进程),导致没多少时间用来计算。这时,威联通TS-212P3就不堪重负,会出现网页控制台打不开,或者操作一下等半分钟的情况,最坏情况下会直接死机
。
如何减少交换
1. 最根本的解决方案就是加大内存,只要内存够大,操作系统就不会想着把内存数据搬到硬盘上。但是TS-212P3是一台入门NAS,不支持更换内存,所以这条路行不通。
2. 让操作系统不要轻易进行swap,只需要修改系统中的一些配置
3. 直接关闭swap,就不会进行swap了(有内存占满的风险)
准备工作
首先需要开启SSH。
打开控制台,点击Telnet / SSH
勾选上允许SSH连接
如果你使用的账号不是admin,需要点击下方编辑访问权限,然后勾选自己的账号。
最后保存应用即可。
接下来在windows中连接威联通。右键左下角的windows徽标,点击Windows Powershell,如果显示CMD也一样。
输入ssh 用户名@威联通的ip
接着输入yes,然后输入密码,输入密码过程中是不会显示出密码的,只需要输完然后按回车。
接着输入Q回车,退出这个交互模式。
再输入Y确认进入命令行
这个时候已经成功进入nas的命令行页面
方法一、修改系统配置,缓解激进的交换策略
输入命令 cat /proc/sys/vm/swappiness
可以看到默认值是60,这个swappiness值的含义是内存剩余空间小于多少时进行交换。60这个值是linux的默认值,代表了剩余空间小于60%时启用虚拟内存交换。但是对于512M或者1G内存的机器来说,这个值设定的太高了,就算是刚开机,内存剩余空间可能都没有60% 。
经过观察,我这台1G的nas在不开container station的时候,内存大概会占用830M,剩余的内存大约有15%,我们只需要让操作系统在内存剩余小于15%的时候用虚拟内存,来保证日常使用不被虚拟内存困扰。
修改这个配置的方法也很简单,只需要执行 echo 15 > /proc/sys/vm/swappiness
修改以后可能不会马上有感觉,用一段时间以后会发现虚拟内存的占用下降,物理内存的占用上升。这时候整体响应速度也会快一些。
方法二、关闭swap
关闭swap是一个一劳永逸的方法,关闭了swap以后我感觉整台机器都变了样,几乎所有程序都能秒开,不会经常转圈圈。但是需要注意的是 ,1G内存的机器如果关了swap就基本等于放弃了Container Station
Qumagie也无法使用,因为docker和lxc容器都非常占内存,开了多媒体中心的情况下再开容器,内存占用很有可能超过1G。
关闭swap以后,如果内存占用超过1G,容易引发死机 ,因此关闭swap之前要仔细考量自己要使用哪些app。
我目前启动了Download Station,HybridMount,多媒体中心,Music Station,myQnapCloud,Photo Station,Text Editor以及一些默认开启的应用,此时内存占用70%。在app使用过程中,内存始终在80%以内,还算比较安全。
关闭swap之前先看看开启了哪些swap,执行cat /proc/swaps
我的nas默认情况下有三个swap,/dev/md256和/dev/md322是分布在hdd上的两个分区,对应资源监控的HDD。/share/CACHEDEV1_DATA/.swap/qnap_swap是一个分布在卷上的文件,对应资源监控的卷。
关闭swap之前先记下这几个swap的名字,如果后悔了可以开回来。
关闭所有swap只需要执行swapoff -a
如果内存占用比较多,可能要等一段时间,不要担心,机器并没有死机。
这个方法只是临时关闭swap,如果后悔了,可以执行swapon /dev/md256,swapon /dev/md322,swapon /share/CACHEDEV1_DATA/.swap/qnap_swap这三条命令把交换分区再次启用。
要是机器真的内存满了导致死机也不用慌,重启时swap分区又会被重新启用 。
总结
我一开始直接关闭swap,放弃docker容器的功能,整台机器的体验上了一个台阶,毕竟这是a53四核心处理器搭配DDR4内存的NAS,打开两三个软件响应速度和运行在服务器上的黑威联通和黑群晖体验几乎相同,彻底告别了打开应用转圈转半天的问题。但是在写到总结这里时,测试了一下一次同时打开很多软件时,结果web服务崩溃了,1G内存同时开这么多软件就是小牛拉大车。
最终还是选择了方案一。启动md256,并且把swappiness设置成15。现在swap占用大幅度减小,在遇到需要使用大量内存的场景也不会导致崩溃。
选购指南
最近体验了下威联通的入门机器,感觉内存容量对于威联通十分重要。
如果你想低成本接触威联通,或者轻度nas用户,买212p3这种小内存入门机器,或者收二手威联通NAS,然后调整swap参数体验就相当不错。机器成本可以控制在700元以内。
如果想用更多功能,在1000-2000价位可以购买上一代的产品,比如TS 551这种支持更换内存的NAS。
如果你有虚拟机,容器的需求,又或者需要管理大量照片,对威联通的ai识别种草。212p3非常不适合,因为这些应用需要大量的内存和cpu资源。这个价位的NAS到手后最好直接升级到最大容量内存,官方给的内存也太少了。这些NAS需要2500元以上。
如果这篇文章对你有帮助欢迎点赞 收藏 加关注
阅读更多精彩内容,可前往什么值得买查看
什么值得买APP 全网实时购物好价优惠
