Month: November 2019

设置NAS的那些二三事

设置NAS的那些二三事

1. 前言 从小到大经历了不知道多少次的数据灾难,从中学的时候踩坏了爱国者的卡片式U盘的接口,到大学时候摔坏了带电运转的移动硬盘和丢失了一台MBP,这么多年丢失的数据应该也得有大概1.5-2TB了。这些数据当中有很多都比较有意义,尤其是当初早期并没有iCloud的我把所有照片都备份到了MBP上以至于我丢失了2013-2017年几乎一切的照片。 作为惊弓之鸟,我现在经常性使用OneDrive进行文件的备份。但是这样会占用大量上传带宽,而现在家里的网络被Spectrum垄断,上传只有35Mbit/s的小水管(下载倒是近千兆),在上传音游手元视频或者RAW格式照片的时候显得十分力不从心。同时为了解决本地文件容量不足的问题,我决定出手一个老的1TB 970 Pro换成2TB的960 Evo Plus,但Alienware电脑上3TB的容量仍显得捉襟见肘。为了能够不再经历令人恼火的数据灾难,也为了给自己的数据安个家,我决定使用NAS。 在经过了各种搜索和挑选之后,我决定选择Synology的DS918+。选择其的原因是其有良好的评价并且是我可以负担得起的价格;其功能也满足了我的需要。硬盘方面,我选择了4块4TB的WD Red红盘,也因为我能够接受其价格。尤其是两者使用Chase亚马逊卡可以拿到15%的返现,于是选择了下手。 2. 配置和预期简介 拿到货之后,就开始了折腾之旅。首先先把硬盘安装到了NAS里,然后开始进行初始化设置。Synology的设置非常简单,以至于他们直接提供了一个网址就可以让我在内网中查询到我的NAS并且连接到上面。在这中间可以设置硬盘的RAID类型。由于有4块盘,我选择了RAID5作为我NAS的RAID类型,以便在数据完整性和可用容量之间取得一个均衡。这样的话,可用空间是12TB,并且有4TB作为parity check. 同时,为了能够保证高速的传输速度,我开启了路由器和NAS带的链路聚合功能(Link Aggregation),这样可以让两个千兆网口聚合变成一个两千兆的接口,使得路由器和NAS之间的速度增加到两千兆。我的路由器是ASUS ROG AX-11000,支持802.11ax和160MHz宽度的无限网络,加上我的客户机Alienware Area-51M使用了Killer 1650ax网卡,支持2×2和160Mhz的802.11ax网络传输,所以网络应该不会出现太大瓶颈。如果是2.4Gbps的无线网,那么理论速度应该是300MBps。但是实际应用中我相信无法达到这个情况,毕竟无线网络存在一定干扰,而且也存在信号衰减的问题,在人口稠密,户数极多的纽约这个问题更显突出——在家里经常能搜到三十多个不同的无线网。更由于NAS本身只支持2x1Gbps的链路聚合,导致最高传输速度进一步下降到2000/8 = 250MBps。在考虑到各种干扰和路由器的性能之后,我的预期速度大概是这个速度的一半,也就是125MBps。 无论如何,NAS一切设置好之后,我测试了一下速度,感觉并不是很令人满意。这其中有部分原因是因为系统在进行parity check,但是不是主要原因。第一个想法就是卡在了网络传输上。 3. 排错 首先,使用了网卡给的Killer网络工具,我发现了一个问题——我虽然设置了我的路由器为使用40/80/160MHz频段宽度,但是实际上只有80,完全没有达到预期的160MHz的频段宽度,这样导致了802.11ax的优势没有完全发挥出来。 折腾了一圈儿之后,我强制我的路由器使用指定的频段(而不是自动设置频段)——64和100频段,因为这两个频段并不会有很多路由器会用。保存设置之后路由器重启,在我重新搜索了无线网络后,我发现64频段和100频段并没有什么人使用。尤其是100频段完全是处于5GHz两个传统频段中间的空白地带。64频段也没有人使用,虽然其左边的所有频段已经充满了无线网络。总之,只有在指定了两个空白频段之后,路由器才会真正开启160MHz频段宽度模式。如果让路由器自己选择频段,那么路由器大概率会选择传统的频段,但是由于纽约的人实在太多,所有的频段都已经相当拥挤,根本无法让路由器开启其160MHz的频段宽度。强制选择了这两个频段之后便没有了这个问题——虽然我非常不喜欢这样的解决方式,毕竟万一以后有人也使用了这样的两个频段那么我还是需要重新选择频段的,也不是很理解为啥新开的100-120频段那么干净但是路由器就是不会自动选择它。在成功设置了之后,我发现电脑的无线适配器状态页面中,传输速率已经变成了2.4Gb/s了。 另一个问题是,我之前2.4GHz和两个5GHz的无线网把名字都叫做了zhxq。由于重启路由器时经常会先启动2.4GHz后再启动5GHz网络,会导致电脑经常性连接到2.4GHz而不是5GHz的网络,导致网络性能大幅下降。最终我选择了将2.4GHz和5GHz的网SSID拆开,并且让路由器SmartConnect只对5GHz的网络生效。 再次测试后,一切恢复正常,上传下载均可达到预期的100+MBps速度。 但是很奇怪,等我睡了一觉起来使用CrystalDiskMark再次进行磁盘测速的时候,我发现写入速度和读取速度出现了很大差异。读取速度能够毫不费力达到115MByte/s而写入却只能达到其一半也就是50MBps这样——无论从什么方面来说这都不太对劲。为了确定问题到底出在哪里,我使用了2018款MBP进行类似的文件写入操作,且发现其虽然使用802.11ac网络但是仍然能够达到70-80MByte/s的写入,说明问题又一次卡在了Alienware的网络上。经过再三测试,我发现是Killer网卡的问题。 作为一款为了游戏发烧友而设计的网卡,这款网卡支持网卡端的QoS。在电脑(客户端)上,其能够根据不同程序的优先级决定发送数据包的优先顺序,而这个功能对于网游FPS玩家算是一个大杀器,其能够保证游戏的数据拥有最高的发送优先级来降低FPS游戏的延迟。然而,作为一个非网游爱好者,这个功能对我来说几乎没有任何用处——我几乎用不到任何的需要低网络延迟的应用,可能偶尔偶尔偶尔会打打GTA Online但是也有很久没有玩过了,更别说我根本不会考虑在打GTA Online的时候后台跑其它需要网络的程序。 正是这个QoS导致了我根本无法将文件管理器和NAS的数据通讯进行优先级设置——在查看了资源监视器后,我发现从NAS上读取/向NAS上写入数据的进程是System进程,文件是ntoskrnl.exe——但是Killer的管理软件并没有提供添加监控指定进程的功能,也无法对ntoskrnl.exe进行网络传输的优先级进行调整,甚至无法在“当前网络活动程序列表”中找到ntoskrnl.exe,这可能因为ntoskrnl.exe工作在Kernel Space里,而Killer的网络工具只能工作在User Space中。另一个问题是,Killer网络工具中不提供关闭QoS的功能,一气之下决定删除之。删除Killer的工具软件后,传输速度回到正常。 4. 后记 在解决了基本的速度问题之后,使用DS918+的内置功能,我将自己不太常用的一条960 Pro 1TB和一条960 Evo 1TB作为缓存盘插进了NAS的底端NVMe接口,并设置其为RAID1的RW缓存。实际证明,这个方式可以大大提升访问目录和查看文件列表的速度——毕竟磁盘寻道很需要时间,而我买的普通WD Red又只有5400RPM。个人觉得这个就已经能够大大提升使用体验了:当初机械硬盘年代的时候最讨厌的事情之一就是打开个目录都需要寻道半天。现在插在电脑上的某块USB硬盘有的时候就为了打开一个目录都需要等三四秒才能显示内部文件列表。 另外我开启了DDNS系统,并且DS918+支持用UPnP对路由器进行操控并且让路由器自动添加端口映射功能,这样哪怕不在家都可以很容易地直接访问自己NAS上的数据,免去了我手动在路由器上设置十几个端口的麻烦。趁着来学校的功夫,测试了一下在家外使用NAS的功能,发现无论是访问管理端还是访问SMB服务器都是成功的。这样的话,无论身处天涯海角,只要家里不断电,那么就可以访问家里的数据了。 5. 总结 首先我确实得说,设置NAS的确用了我不少精力。从软件设置到硬件设置,每一个环节都可能成为瓶颈。要真正发挥NAS的实力,也需要其它硬件——从网线到路由器再到目标电脑网卡——的可靠支持。 也正是在设置NAS的过程当中,我也解决了家里的网络速度问题(从1.2GHz变成2.4GHz),使得网络可以发挥出其真正应有的速度。至于QoS的问题,我以前应该也遇到过由于Killer的QoS throttling导致部分软件上网极慢的问题(如果我没记错,是QQ的替代品TIM联网经常出问题)——但又因为家里的因特网上传是个小水管,所以一直没有感觉到问题有多么严重,直到这次发现局域网内的传输都出现了瓶颈才意识到了问题的严重性。 总之,设置NAS是对软硬件设置能力的综合考验。想要解决问题,那么需要有能够找出问题和解决问题的能力,而其中又涉及了许多环节。只有对当中所有的环节都十分熟悉,才能够真正去发现和解决问题。 趁此机会,也算是小试牛刀,将自己曾经学过的理论知识付诸实践吧。