群晖NAS的选择、搭建、拓展
介绍&记录一下最近搭群晖NAS的调研和实践成果,包括如何选择NAS型号、盘、周边硬件,以及软件拓展。
因为我主要是家用,所以只关注2-bay或4-bay的型号。
我的基本需求是:
- 能容忍坏盘(RAID,之前的盘大限将至数据恢复痛不欲生)
- 能与同步OneDrive
- 多设备访问/外网访问
- 能起docker(gitlab等)
- 静音、节能、稳定性、etc
黑群晖?白群晖?
黑群晖是指用自己组的硬件刷上一个群晖管理系统,跟黑苹果差不多道理,更便宜、性能更强大,但是有时候升级可能导致未知问题。我觉得NAS作为一个存数据的,稳定第一,还是不要老折腾……
群晖NAS的型号选择
这里可以查询群晖的全部家用型号 https://www.synology.cn/zh-cn/products/series/home
选择什么型号的NAS通常考虑如下因素:
- 需要多少个盘位(或者需要多少容量)
- 有没有拓展需求(是否需要docker)
- 需要什么CPU(跑什么类型的docker应用)
首先看我们需要多少盘位(bay),在不加扩充设备的情况下(也就是只用NAS上这个盘位的情况下),通常市面上常见3.5硬盘最大是16TB~18TB,所以不考虑冗余的情况下最大18TB x N的容量。
1-bay的基本上仅作为7×24的存储使用,没有任何冗余和拓展,适合家里设备数量很多且有共同的访问需求且没什么数据安全要求(比如存电影电视剧,想不出其他合适的场景)。2-bay可以做RAID-0或者RAID-1,做RAID-1的话就有基本的数据冗余了,能容忍一块坏盘。4-bay可以在2-bay的基础上支持RAID-5、RAID-6和RAID-10,有更好的吞吐、容量和冗余性(也有牺牲,见下节)。
关于docker,在plus系列中是都支持的(如DS220+这种带加号的),J系列和value系列是不支持的,需要注意。并且plus系列使用的都是赛扬处理器(x86),而J和value系列使用的是Realtek处理器。所以如果有docker的需求,一定要买plus系列,否则大可以买value系列或j系列来省钱~
如果你选择了plus系列,还有一个要注意的是,赛扬处理器有两种,J4025和J4125。在2-bay型号中,DS220+使用的是J4025,而DS720+是J4125;在4-bay型号中,DS420+使用的J4025,而DS920+使用的是J4125。J4025是双核2.9GHz,而J4125是四核2.7GHz,基本频率都是2.0GHz。跑分的话,这俩单核能力差不多(J4025好一点因为频率高,但是差距很小),多核能力J4125接近J4025的两倍。
另外J4125对应的两个NAS还多支持了esata、nvme接口等,所以不差这点钱建议是选择J4125处理器的NAS。
什么是「故障」
在选择RAID类型前,需要明确「故障」到底是什么。
硬盘存储数据的同时会存储一份冗余的纠错码(FEC data,Forward Error Correction),当读取磁片时遇到偶然的错误(电位不准确之类的),通过FEC可以将数据进行修复,这个过程对于操作系统是透明的,在SMART中的Raw Read Error Rate(01)和Hardware ECC Recovered(C3)计数器会加1。
但是纠错码纠错能力有限,当在一次读中,纠错码无法恢复出元数据,那么磁盘会重试数次,如果仍无法恢复出元数据,则会在SMART中将Reported Uncorrectable Errors(BB)加1,在西数硬盘中通常(据说?)使用的是Reallocation Event Count(C4),并会尝试将扇区映射到其他位置。当这两个值增加的时候一般意味着这块硬盘大限将至了。
(PS:这里并没有从官方考证到希捷西数都是怎么处理Uncorrectable Error的,都是口口相传)
当然了,0xBB和0xC4不是损毁的唯一标准,详细可以参考https://en.wikipedia.org/wiki/S.M.A.R.T.
(PS:BackBlaze很久之前做过一个关于0xBB(187)和磁盘损毁的一个统计,大意是0xBB如果不是0就赶紧换硬盘好了,看https://www.backblaze.com/blog/hard-drive-smart-stats/)
0xBB的这个指标还有一个说法叫URE(Unrecoverable Read Error),通常用N来表示URE发生期望的读取bit,P为URE发生的概率,P=1/N,对于民用硬盘N=10^14≈10TB,企业级硬盘N=10^15≈100TB。
RAID选择
RAID本质是容量、安全性、性能的tradeoff,但是如果有钱,三者可以兼得~
假设我们的阵列有N块盘,单盘大小为S,单盘URE概率为P。
RAID-0:N≥2,写时分割成N份写到每块盘,读时从所有盘读然后合并,读写吞吐是单盘的N倍,容量是SN。没有冗余,任意一块盘损毁则阵列损毁,盘越多损毁概率越高。属于安全性换性能和容量。
RAID-1:N≥2,N块盘互为镜像,写时一份内容写N份,写吞吐接近单盘;读时从多快盘读,读到即返回(但是群晖NAS实际上是把读打散到多个镜像,所以读吞吐是单盘的N倍)。容量为SN。N-1块盘损毁都没事,属于容量和性能换安全性。我觉得家用是比较好的选择。
RAID-2/3/4:群晖NAS不支持(也没几个支持的,这里不讲了)
RAID-5:N≥3,写时数据分为N-1份写到N-1块盘,生成一个parity数据写到第N块盘,写吞吐是单盘的N-1倍;读时同时读所有盘,如果有数据盘损坏,可以从N-2个数据盘和parity恢复出损坏的数据,读吞吐也是N-1倍。容量为S(N-1)/N。可以容忍一块盘损毁,看起来是兼顾性能、容量和安全性,但是实际上特别恶心:一块盘损毁后需要重建阵列(换一块盘插进去),需要从其他盘片读取所有数据块和parity来重建新加盘,过程中如果出现了新的URE则阵列损毁,这个重建成功概率是1-((1-P)*S)^(N-1),即把其他N-1块盘全扫一遍且不发生URE的概率。民用3盘4TB的恢复概率仅为53%(极端情况)。在这里可以计算恢复概率http://magj.github.io/raid-failure,不清楚这意味着什么的不推荐(清楚也不推荐: P)。
RAID-6:N≥4,跟RAID-5不同的是他有两个parity,分别用两个不同的算法,这样可以容忍两块盘损毁,用求二元方程的方法恢复损毁数据,读写计算的overhead高(慢),容量为S(N-2)/N。
RAID-10:N>=4,其实就是RAID-0和RAID-1的套娃,N=4时,四块盘可以分成两组组成两个RAID-1,然后两个RAID-1上面套一个RAID-0,这样每个RAID-1组里都能容忍坏1块盘。容量跟RAID-0和RAID-1的分组方式相关,上限为SN/2,略贵,属于容量换安全性和性能。
SHR和SHR2:SHR是群晖的智能分配方式,根据盘的多少自动选RAID类型(一块盘不冗余,两块盘用RAID-1,三块盘以上用RAID-5)。而SHR2允许双盘损毁,所以需要N≥4才能使用,相当于RAID-6。家用一般顶多四盘位,如果知道自己在做什么其实不需要SHR。
盘的选择
NAS如果又想要性能又想要安全性的话,一般就三种选择:NAS盘、高性能盘、企业盘。
对应的是西数的红盘、黑盘、金盘(或UltraStar),希捷的酷狼、酷鱼、银河。
硬盘选择的指标:MTBF、容量和转速、堆叠方式、气体、保修期、价格
- MTBF:一般都250w小时,少数200w小时以下的要不就pass了。
- 转速:一般8T以下的5400转多一些,但是实际体验7200转真的比5400好很多,要不也pass了。
- 堆叠方式:一定一定一定不要SMR,希捷的PMR和西数的CMR都可以。具体原因跟SMR的reorganization有关,见https://www.synology.com/en-global/knowledgebase/DSM/tutorial/Storage/PMR_SMR_hard_disk_drives。
- 气体:10T以上的盘都有氦气版本,没贵多少,噪音和能耗相对小(但是也有炒豆子声,不过黑盘动静也不小)
- 保修期:一般都5年,太短的pass
- 价格:我是觉得NAS盘有点智商税的成分,用企业盘不香吗……仁者见仁
另外BackBlaze每年都会对他们自己的盘做一个故障统计报告,可以一看https://www.backblaze.com/blog/backblaze-hard-drive-stats-for-2020/,HGST看起来是非常稳定的,希捷部分型号也不错,西数他们家用的少,往年的数据看也还可以。
但是HGST的牌子在被收购之后,18年已经被弃用了,据说现在的西数UltraStar继承了HGST的衣钵(我买的UltraStar检测出来也显示是HGST),如果真的是的话那还是香的,不过两家都是大厂根据预算选个看得过眼的就行了。
NAS硬件拓展
首先是内存,有个帖子盘点了一下兼容性,可以一看 https://tieba.baidu.com/p/6835098618。但是有一点要说的是,这两块CPU虽然实测可以支持到最大32G,但是Intel方面并没有对此做过严格测试,所以安全水平还是8G,我目前是加了一块三星4G 2666(一共8G),是完全够用的。
另外UPS通常也是标配,我用的是APC(施耐德)的BK650M2 390W,400多块,可以用usb连到NAS上,电力不足自动关闭NAS,还带了防浪涌的网口。不只NAS,家里的硬盘笼、无线网关都可以连上面。
NVME缓存盘我没有选配,7200盘的速度已经很够用。
拓展应用
docker、gitlab必装,在自带的应用商店就可以下载。另外还有一些优秀的docker镜像推荐:
https://www.reddit.com/r/synology/comments/9z0cdo/what_are_some_recommended_docker_images_for_home/
TODO
可以配置邮箱、短信通知推送,短信用clickatell的服务延迟比较大(十几分钟才能到国内),一条几毛钱。
内网穿透DDNS啥的,不细讲……