惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
TaoSecurity Blog
TaoSecurity Blog
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News | PayPal Newsroom
S
Security Affairs
T
Tor Project blog
P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security @ Cisco Blogs
H
Heimdal Security Blog
Hacker News: Ask HN
Hacker News: Ask HN
Help Net Security
Help Net Security
U
Unit 42
云风的 BLOG
云风的 BLOG
The Hacker News
The Hacker News
Cisco Talos Blog
Cisco Talos Blog
量子位
F
Full Disclosure
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
有赞技术团队
有赞技术团队
T
Troy Hunt's Blog
P
Privacy & Cybersecurity Law Blog
Forbes - Security
Forbes - Security
人人都是产品经理
人人都是产品经理
L
Lohrmann on Cybersecurity
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
博客园 - Franky
腾讯CDC
AI
AI
Last Week in AI
Last Week in AI
Latest news
Latest news
Google Online Security Blog
Google Online Security Blog
N
Netflix TechBlog - Medium
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
Martin Fowler
Martin Fowler
Blog — PlanetScale
Blog — PlanetScale
V2EX - 技术
V2EX - 技术
酷 壳 – CoolShell
酷 壳 – CoolShell

C0reFast记事本

一个virtio-blk设备IO大小的问题 使用单台高配服务器(部署你的业务) 一个Solidigm P41 Plus的冷数据问题 测试ARP/ND双发效果的小工具 硬件Bonding卸载场景下的ARP/ND双发 “无限”套娃,在WSL的Docker中使用YOLOv11做目标检测 在三条指令内实现闰年判断 一个中断关闭时间太长导致的网络延迟问题 一个Linux新老内核对于硬件中断的统计差异 IPIP隧道导致的DPDK收包RSS队列不均匀问题 在KVM虚拟机中开启TSC作为时钟源 x86平台的TSC(TIME-STAMP COUNTER) 一个UFO引发的惨案 在RHEL系统中快速抓取火焰图 反序列化AWS/阿里云样式的基于Query的API请求 分享一个记录LSI RAID卡芯片和各个OEM对应卡型号列表的神贴 在移动硬盘盒上启用SSD的Trim功能 SPDK的“Reduce”块压缩算法 实现一个Kubernetes的身份认证代理服务
DIY一个8盘位全闪NAS
陈孚 · 2023-01-26 · via C0reFast记事本

接上篇LSI RAID卡芯片和各个OEM对应卡型号列表里说的后续DIY NAS的想法,经过快3个月的时间,终于来更新整个DIY过程了,总结起来在整个过程中,收获的主要还是折腾的乐趣,要说折腾的尽头是白群晖,随着时间的推移,个人还是比较认同的,不过不得不说白群晖确实太贵了,都说群晖是买软件送硬件,但是这软件也太贵了点。

需求描述和分析

说起来,为啥会有个DIY NAS的需求呢?一个重要的原因是家里的小宝贝出生了,不知不觉也拍了好多的照片和视频,还是希望能更长久的把这些记忆保留下来。另外呢,之前更新自己的电脑,淘汰下来一套i5 6500 CPU加16G内存以及主板的准系统,买个机箱还有电源就直接可以用了,本着废物利用的原则,做个NAS也不亏,而且还多了很多可玩性。

其实单纯从保存数据来说,将数据存放到任何一个公有云的对象存储上,是个最终极的方案,因为目前各个厂商提供的对象存储数据持久性SLA都达到了11或者12个9(99.999999999%-99.9999999999%),这基本意味着几乎不存在数据丢失的可能性了。但是确实这个方案也是最贵的,毕竟每TB存储每月都需要消耗对应的存储费用,随着时间增长,即使是最便宜的冷归档类型,也依然是个不小的消耗。

那到底需要多少的存储容量呢?针对我个人而言,目前可预见的容量,应该不会超过10T,当前1-2年内所需求的容量更小,大概只需要1到2T的样子。

针对这个容量,其实已经可以考虑全SSD的存储方案了,其实相比于使用HDD的方案,纯SSD的NAS有以下几个好处:首先是噪音角度,相比HDD运行时的“炒豆子”声来说,SSD 0噪音,这可以直接解决夜间安静环境下HDD低频噪音对睡眠质量的影响;其次是稳定性和数据安全角度,根据我们公司数据中心有比较大规模的SSD和HDD的使用经验,同时参考backblaze提供的统计数据,可以看出SSD的稳定性远超过HDD,这带来了两个优势,一个是相比HDD,SSD损坏的概率低,这可以减少存储池修复的可能性,另外因为读写速度上SSD快很多,在坏盘的情况下,SSD也可以做到更坏的修复速度,从而可以提供更好的数据持久性。

当然SSD依然还是有缺点的,很明显当前SSD比HDD依然贵很多,以当前的价格来说,SSD成本大约0.4元/GB(大多数1T SATA SSD),HDD大概只有0.12元/GB(西数HC550 16T)。但是对于我目前的容量需求来说,使用SSD的成本相比HDD没有差距太大,多花的那部分成本,对于0噪音来说是相当值得的。

除了磁盘的选型,还有一些其他的需求,诸如盘位数量大于等于4,硬盘需要支持热拔插,存储池可以动态扩容,移动端、桌面端数据自动同步等等,不过这些也都算是比较基础的需求了。

硬盘笼选择

针对硬盘热拔插的需求,肯定还是要搞个硬盘笼的,不管怎么说,相比于直接把硬盘塞机箱里,有个热拔插硬盘笼一下子逼格就上来了。

所以一直花了不少精力去找合适的硬盘笼,主要还是集中于服务器的拆机件,这里给几个当时考虑的一些方案。

浪潮12盘位3.5寸硬盘笼

首先第一个选择是买浪潮的12盘位3.5寸硬盘笼,目前的价格大概150块钱的样子,还挺便宜,感觉应该都是当初Chia矿老板淘汰下来的,这些硬盘笼基本都有大4P的电源接口以及MiniSAS(SFF8087)接口,使用起来还是比较方便的,当然缺点是确实占地比较大,毕竟是适配的2U机箱,因为本来也一直坚持全闪的方案,所以3.5寸的硬盘位就没有必要了,即使很便宜,依然放弃了这个方案。

Intel 8盘位热插拔笼子(8 AnyBay)

这是Intel一个颜值和功能都超级能打的硬盘笼,具体的参数可以参考Intel的Spec文档(不得不说Intel的文档写的是真的好),甚至当前这个时间点,依然在量产状态,这个笼子一般来说都是在2U机箱上做竖插24盘位的组件的,这几乎是我心目中最理想的硬盘笼选择,8盘位AnyBay,支持SATA、SAS、U.2 NVMe接口的硬盘,特别是在现在咸鱼有大量的U.2接口的大容量企业级SSD,价格十分友好。最关键的是这个硬盘笼的尺寸非常完美,可以无缝的塞进两个5.25英寸光驱位中,网上也有这个硬盘笼搭配银欣(SilverStone)SG02-F机箱组NAS的方案:全网首发【8盘位热插拔NVMe SSD NAS】DIY指南简章,不得不说这个方案真的让人流口水,但确实不得不说成本太高了。

这个硬盘笼呢,什么都好,就是成本太高,不仅仅笼子本身(大约1100+)更重要的是其配套的组件,首先这个硬盘笼是MiniSAS HD(SFF‑8643)接口的,支持这个接口的HBA或者RAID卡也比较贵,其次如果说要支持8个NVMe硬盘的话,需要准备8个OcuLink接口,那PCIe转OcuLink接口的转接卡又是不小的支出。更重要的是,8个NVMe需要32个PCIe lane,这直接超出了当前大部分平台的能力,基本只有服务器平台的CPU+主板才能支持这么多的PCIe lane,成本很可观。最后还有一个不得不考虑的问题,U.2 NVMe硬盘一般来说功耗都比较高,很多盘能到10几20W往上,如果是8块硬盘,那整体功耗可能会超过100W,所以散热的问题就不得不考虑了,这个笼子如果插NVMe硬盘的话,需要额外的散热。

所以呢,东西虽好,但确实不符合我当前的需求和预算(流下贫穷的泪水)。据说H3C也有类似的笼子,价格要便宜1半,如果大家有类似的需求可以考虑。好像类似的8盘位AnyBay硬盘笼,各家OEM都有,但是好像好买且价格合适的不多。

Intel 8盘位热插拔笼子(4 AnyBay + 4 SATA/SAS)

这是另外一个Intel的硬盘笼子,大概可以算是上面笼子的低配版,文档看这里,这个笼子支持4个NVMe + 4个SATA/SAS硬盘,价格在淘宝也相对便宜,看到加上PCIe转接卡大概1000不到可以拿下,其实是个不错的选择,但是依然超出我的预算不少(继续流下贫穷的泪水)。

Intel 8盘位热插拔笼子(8 SATA/SAS)

Intel还有一种硬盘笼(Intel出的好东西真不少啊),文档看这里,这个笼子支持8个SATA/SAS硬盘,使用两个MiniSAS(SFF8087)接口,是一开始我选中的方案,整体还是很平衡的,淘宝大概400不到,在我找到下面的硬盘笼之前,一度准备剁手入了。

HP热插拔380 G6/G7硬盘笼

这个是我最后选择的笼子,这个硬盘笼原本是给HP DL380G6/G7升级16盘位的套件,在HP那边的编号是:507690-001516914-B21(这俩编号是一个东西),这个套件包含的几个组件和对应的物料编号如下:

硬盘笼子:463173-001 496074-001
硬盘背板:507690-001 451283-002
硬盘供电线:514217-001
硬盘SAS数据线:498425-001 493228-005

为什么我选择这个硬盘笼子呢,因为它真的便宜,笼子加上背板、送供电线和两根SAS线,只需要50块钱,当然是不带硬盘托架的,不过算上硬盘托架的价钱也只需要80。80块钱真买不了上当和吃亏。说实话它也有一些小问题,比如坑爹的HP不知道为啥要设计成横向的两个4盘位,尺寸比竖向8盘位相比宽了一点点,直接导致没办法塞进2个5.25英寸光驱位。另外电源接口的设计也比较恶心,是向外的,如果想塞进机箱,那突出来的电源线会成为一个大问题,另外HP的电源接口定义也是每代一改,虽然复用了10pin的接口,但是定义并不标准,导致我花了非常长的时间去寻找各个pin的定义,生怕弄错接口定义把背板烧了,最终还是在一个德语的论坛找到一个评论说了这个硬盘笼子的定义,需要说明的是这个背板不接3.3V的供电也没有影响,所以也是淘宝了两根大4P的电源线和10pin线,自己DIY了一个电源线,最终把这个硬盘盒的供电问题解决。总的来说,主要这个笼子实在是太便宜了,便宜到它的这几个缺点都可以忍受(还是流下贫穷的泪水)。

RAID/HBA卡选择

针对上面几个硬盘笼,特别是最终我选的硬盘笼,都使用了MiniSAS(SFF8087)接口,所以要想使用硬盘笼的话,需要有支持MiniSAS接口的SATA控制器或者RAID/HBA卡,根据之前的调查,大致有几种方案:

1. 可以使用MiniSAS转4SATA线实现,不过需要注意的是,这种线是区分正反的,正向线是MiniSAS口转4SATA,需要买反接线,将4SATA转换成MiniSAS口,从而实现将主板上的4个SATA口转成一个MiniSAS口。
2. 市面上还有一些基于类似ASM1166(或者类似芯片)的PCI-E转SFF-8087转接卡,但ASM1166原生只支持6SATA Port,是否两个SFF-8087端口的8个端口都能使用,这个存疑。
   另外还有也有一些M.2转8口SATA扩展卡也是用的两个SFF-8087转接卡,理论上也可以使用。
3. 使用拆机的服务器HBA卡,比如基于LSI SAS 2008/2308的一众原厂或者OEM HBA卡。

最终我还是选择了相对成熟的HBA卡方案,一顿精挑细选,最终选了SuperMicro家的AOC-S2308L-L8I 9217-8i,基于SAS 2308芯片,PCIe 3.0 x8的接口,支持两个SFF-8087接口,这是一张OEM卡,对应的原厂卡型号是LSI SAS9217-8i,市面上除了SuperMicro之外,还有很多OEM也会出相同芯片的卡,比如浪潮、IBM等等,选择还是比较多的。我选的是2308的方案,这个芯片算是2008芯片的升级,其实区别不大,最主要的升级就是从PCIe 2.0 x8变成了PCIe 3.0 x8,整体带宽会高点。另外需要注意的一点是,这两个芯片有两种固件:IT(Initiator Target)模式和IR(Integrated RAID)模式,IT模式是类似HBA卡的直通模式,没办法组建RAID;IR模式是类似RAID卡的模式,可以组建简单的RAID0和RAID1。另外这两种固件是可以互刷的,区别只是在产品名字上是9207还是9217(9217是IR模式,9207是IT模式,所以我买的卡也是原厂IR模式刷的IT固件)。最后其实这个卡有个比较大的散热方面的问题,根据原厂的User Guide文档。这张卡默认情况下有接近10W(默认9.8W,最大16W)的功耗,且最低要求200 linear feet per minute的风量,在服务器环境下散热都不是问题,但是放到家用的机箱里,如果没有主动散热的情况下,这张卡会非常的烫手!所以最终我又找了一个12cm的风扇专门对着卡的散热片吹,从而解决散热问题。

硬盘选择

上面的这些组件搞定,最终就是买硬盘了,之前提到现在全新的SATA SSD大概0.4元/GB,一块1TB的SSD大概400左右,说实话还是不便宜的,所以我又勇敢的选择了大船货!其实现在二手拆机SSD,量最大,最划算的还是U.2的硬盘,不到1000块钱可以买到4T左右的企业级SSD,而且这些企业级SSD寿命极高,稳定性也相当好,而且相比于SATA接口,U.2因为是PCIe链路,可以做到传输层的数据保护,可惜的是咱们的硬盘笼不支持。于是就只能选择SATA接口的SSD,一下子可选范围就少了不少,最终还是选了当前比较火的Sandisk/闪迪云盘ECO,但是相比于更火的1.92T容量的版本,我最终买了960G容量的版本,相比于1.92T这个容量点,我猜960G容量用来做系统盘的概率更大点,说不准能抽奖抽到写入量超低的盘😁。相比于全新盘,这个拆机盘的价格就很实惠了。目前的价格是960G容量版本230块,不到0.24元/GB,属实是相当划算了。

所有硬件的问题搞定,最后就只剩下软件层面的选择了,到底该用什么系统呢?一开始想使用TrueNAS,主要是看中ZFS的能力,但是试用了一小段时间TrueNAS之后,感觉这系统是真的很难用,门槛太高了,虽然运维这玩意对我来说并不是太大的瓶颈,但是确实各个方面都不太好用,特别是相关的软件生态上差很多。
于是乎就又试了试黑群晖,一开始我其实是抵制黑群晖的,因为有点担心数据安全问题,不确定会不会哪天就崩了,但是试用了一下之后,觉得确实群晖的生态做的太好了,体验拉满。于是就去简单研究了一下黑群晖的实现原理,发现其实黑群晖的相关项目都是开源的,都放在了RedPill-TTG这个组织下,其中最关键的对群晖内核的hack都在RedPill-TTG/redpill-lkm这个项目里,大致翻了翻代码,基本上就是通过加载模块的方式,欺骗群晖的内核,让其认为自己是跑在群晖专有的硬件上。了解了之后,黑群晖在我心目中好感倍增,话说感觉群晖这绝对是套路满满,都说黑群晖的尽头是白群。估计群晖官方默许黑群晖行为的原因大概和Windows一样,反正最终都会买我。

不过相比于直接把群晖跑在裸机上,我采取了一个另外的方法,把群晖跑在了虚拟机里,这样做的目的主要也是为了方便以后迁移,对我来说当前的硬件平台只是个相对临时的解决方案,为了后续能更好的跨平台迁移,所以我选择将黑群晖跑在虚拟机里,而对于HBA卡来说,采取的是硬件直通的方式直通给虚拟机,从而确保SMART等功能的正常使用。这里分享一下我现在用的虚拟机的XML,有需要的可以参考一下:

<domain type="kvm">
  <name>Synology</name>
  <uuid>5ce24e3b-627b-468a-bcd5-53ff58d9731d</uuid>
  <memory>8388608</memory>
  <currentMemory>8388608</currentMemory>
  <memoryBacking>
    <hugepages/>
  </memoryBacking>
  <vcpu>4</vcpu>
  <os firmware="efi">
    <firmware>
      <feature enabled='no' name='secure-boot'/>
    </firmware>
    <type arch="x86_64" machine="q35">hvm</type>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode="host-passthrough"/>
  <clock offset="utc">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
  </clock>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="raw"/>
      <source file="/data0/Synology/boot.img"/>
      <target dev="sda" bus="usb"/>
    </disk>
    <interface type="bridge">
      <source bridge="br0"/>
      <mac address="11:22:33:44:55:66"/>
      <model type="virtio"/>
    </interface>
    <console type="pty"/>
    <hostdev mode="subsystem" type="pci" managed="yes">
      <source>
        <address domain="0" bus="1" slot="0" function="0"/>
      </source>
    </hostdev>
    <memballoon model="none"/>
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='vga' vram='16384' heads='1' primary='yes'/>
    </video>
  </devices>
</domain>

总结和后续

目前的这套NAS方案已经运行了2个多月,看起来还算稳定,这段时间内没出现过大的问题。如果折腾半天就只为了存点照片也有点浪费,所以除了存储功能之外,我又跑了个PCDN业务,目前收益也还不错,我是100M的上传带宽,目前每天大概能有个5块钱的收益,至少电费能覆盖了,跑着玩玩吧~

想想当前这套还有什么不足,个人觉得一个比较大的缺点是占地,目前我是用了乔斯伯的V4做的机箱,但是硬盘笼是不太好直接放进机箱了,所以只是简单的放在了外壳上,整体相比于家用的NAS产品还是大了一圈,另外确实硬盘笼比双5.25寸光驱位大了点,即使后续换了机箱,可能也不太好直接放进去。

另外就是CPU这些硬件配置了,一方面当前这颗CPU TDP还是比较大的,65W,必须有主动散热,另外HBA卡也需要主动散热,所以离真正的0噪音还有点距离,理论上换用嵌入式的低功耗CPU+SATA转MiniSAS的方案,可以做到整机完全没有任何机械活动的部件,做到真正意义上的0噪音。

最后就是另一个方向,换到稍微低端点的数据中心CPU+主板,功耗会高一些,但是可扩展性会极大的增强,包括ECC内存以及U.2硬盘、IPMI这些都可以支持。具体往后该如何演进,还是等待当前套系统继续运行一段时间吧。