搭建家庭 NAS 服务器有什么好方案?

更新记录:

  • 2019-04-06:到目前的集群使用状况更新,位于最底部。
  • 2019-03-19:更新了自己的数据使用需求,ipad pro的价格对比. 防止有大佬觉得我家里有矿而买ipad pro的都是普通消费者. 【手动滑稽】
  • 2019-03-18:更新了表格,将表格更换为截图,方便阅读。
  • 2019-03-14:考虑到颈椎问题,重新上传了导致颈椎病的图片。

—————————————————————–

看到没有分享CEPH方案的, 那我来分享下CEPH方案吧. 老规矩, 先上图:

ceph -s 信息见下图:

总计容量 61TB, 19OSD, 3节点mon, 2节点OSD host.

一段往事

我个人NAS也跟大家有差不多的经历.

最先是Apple Airport 3TB, 几块零散的硬盘和一个硬盘座. 完全不需要维护, 只要往里面扔数据就行了.

后来装满了以后, 就开始考虑用盘柜的方案, 于是在14年买了个盘柜:

图中的Rackable就是了, 16盘盘柜, SFF-8088接口, 接下来就是垃圾佬的血泪史了:

我有个IBM X3650M2服务器,对,就是图中的那台IBM. 配了 LSI 9260-8i 卡(用转接线转成SFF8088). 然后我买了6块 WD30EZRX 3T,没错,著名的WD绿盘。插到盘柜里组RAID50.

接下来喜感的事情出现了, 9260-8i 不能识别全部的WD绿盘… 于是又败了一张RAID卡(HP Smart Array P812):

这卡在14年算是相当强劲的, 1G缓存带电池, 8i 16e. 把卡插上服务器又傻眼了,这HP卡提示,只能插在HP机器上…. 逼着我又弄了台HP DL380G6…

该RAID50组成的18T(可用12T左右) 服役到了18年, 由于容量, 性能都不是很能满足我现在需求了, 于是在今年初, 我组了个基于 CEPH 的60T系统.

为什么该停止用RAID了?

首先, 随着现在的盘越来越大, RAID5在大容量下已经完全不可靠了, 可以直接看 @木头龙 大佬这篇回答:

raid5 磁盘阵列真的不安全么?

我这里也翻译了个简单的RAID5重建失败概率计算器:

RAID重建成功概率计算器

以我上文的6块 3TB WD 绿盘来算, 如果挂了一块盘, RAID 5 重建成功概率只有30%:

RAID 6,除去重建过程中再挂一块盘的情况下,安全很多,RAID 1 目前仍是小型存储保证数据安全的最好方案. 当然自己手动复制一份也行.

但RAID最大的问题是, 完全没有CEPH那么灵活, 多机多盘柜情况下很复杂. 而且性能完全依赖于RAID卡. 当你的磁盘带宽总和大于RAID卡后, 就不能有效利用磁盘的性能了.

我需要什么样的存储?

综上, 我开始考虑一个新的存储系统, 我整理了个简单的“家用”存储系统评分点, 供大家参考:

使用简易的评分标准: 
    - 1 分, 需要专业知识才能使用
    - 3 分, 看看说明书就能使用
    - 5 分, 很好用, 而且符合平时操作习惯

可靠性评分标准:
    - 1 分, 很可能会丢数据
    - 3 分, RAID 5
    - 4 分, RAID 6 或 双副本, RAID 1
    - 5 分, 多种副本策略, 分布式

安全性:
    - 1分, 不安全, 可以假定数据是可以被匿名访问的
    - 3分, 只要正确使用安全性就有保障
    - 5分, 可以进行数据加密

恢复/重建速度:
    - 1 分, 无法恢复
    - 3 分, RAID 5, 6 恢复速度
    - 5 分, 副本恢复速度

数据与环境依赖性:
    - 1 分, 强依赖, 迁移数据只能通过软件复制
    - 3 分, 弱依赖, 通过适当修改就可以将存储设备应用到别的系统
    - 5 分, 无依赖, 数据直接存储到设备上

硬件可扩展性:
    - 1 分, 无法扩展
    - 3 分, 仅可以扩展容量
    - 5 分, 随意定制硬件进行扩展

软件可定制性:
    - 1 分, 只能使用厂家或第三方提供的特定软件
    - 3 分, 可以刷xxx, 刷xxx
    - 5 分, 开源

访问延时:
    - 1 分, 仅能用来存储文件
    - 3 分, HDD 水平
    - 5 分, SSD 水平

噪音:
    - 1 分, 机房设备, 无法忍受
    - 3 分, 可以放隔壁
    - 4 分, 可以放桌面
    - 5 分, 可以睡觉

功耗:
    - 1 分, 500W 以上
    - 2 分, 500W 以下
    - 3 分, 100W 以下
    - 5 分, 50W 以下

体积:
    - 1 分, 需要机柜
    - 2 分, 全塔
    - 3 分, 半塔
    - 4 分, 10 - 5寸
    - 5 分, 5寸以下

价格:
    - 直接是RMB

根据上表,导出我的需求是:

  • 使用简易:无所谓, 就当学习新知识了
  • 可靠性: 至少要双副本, 如果支持多种副本策略更好
  • 安全性: 反正内网用, 无所谓
  • 恢复/重建速度: 副本恢复速度最好
  • 数据与环境依赖性: 最好无依赖, 这样操作方便
  • 硬件可扩展性: 一定要能随意选择硬件进行扩展, 不能再吃HP的亏了[手动滑稽]
  • 软件可定制性: GNU大法好
  • 访问延时: 如果能当系统盘用当然再好不过了
  • 噪音: 最多能接受放隔壁
  • 功耗: 500W 以下吧
  • 体积: 无所谓
  • 价格: 20K以内能接受

另外还有一些自己的使用考虑和需求:

  • 由于租云服务器太贵, 所以我家里有CDH全家桶(hadoop什么的), kubernetes全家桶. 因此存储的性能至少不能拖累这部分的计算需求.
  • 有数据抓取和分析的需求, 典型场景 一千万平均大小 200k 的网页文件. 因此IO性能也有需求.
  • 提供块设备, 挂载到linux下给samba server用. 存普通的娱乐数据.
  • 60TB 左右, 方便扩容, 如果没有容量上限就更好了.
  • 接入10G/40G 网络, 网络传输不会成为存储瓶颈.
  • 不要求可用性 (不是线上业务, 程序挂了大不了重跑. 可以忍受长达几天的停机维护, 数据恢复, 故障恢复)

这套方案我在17年初就有考虑了, 最终在ZFS和CEPH方案中摇摆不定, 后来需要用kubernetes, 于是妥妥CEPH了.

开工

程序猿总要讲究些方法, 我们就自底向上设计吧(误), 首先是:

  • 硬盘

好的硬盘会省很多事情, 比如你的盘在RAID卡的支持列表里, 可以被顺利识别. 比如企业盘URE比家用盘低一个数量级.

目前最划算的垃圾佬盘除了3TB的一些, 剩下就是这款了:

没错, SEAGATE ST6000NM0034 6TB SAS 12Gb/s 便宜的话弄到手每块大约620CNY左右. 不要想太多, 当然是二手的. 作为一个垃圾佬怎么可能买新的.

来10块, 顺便之前还买了一块看看通电时间和坏块情况, 总计11块:

RAID 卡:

都CEPH了为啥还要RAID卡呢, 不用卡怎么把SAS盘怼到主板上. 我可不要板载SAS控制器的主板, 好的太贵, 垃圾的性能不行.

由于盘是12Gb/s 的, 自然卡也要 12Gb/s的.

这卡是 Fujitsu PRAID CP400i , LSI 3008 芯片. 支持HBA. 我也只需要HBA. 进入BIOS设置为JBOD就可以把盘直接给系统用了.

当然还需要电缆. SFF8643 转 SFF8482, 带个大4pin口给硬盘供电. 注意检查插硬盘这一侧的 SFF8482 口, SAS盘有的是需要这部分的针脚的. 没有可能会有问题. 我的两根线有一个有, 有一个没有, 不过盘都正常运行了. 我没有去查SFF8482针对这部分针脚的定义.

主机

RAID卡自然不能自己运行,我们还需要块主板, 这里权衡的点有以下几个:

  • CEPH 要求最好每 TB 盘配置 1GB 内存, 我打算用两台主机, 这样每台主机就是5块 6TB盘, 折合需要30GB内存. 然而XEON E3早期版本不支持这么大内存, 而我恰好手里有多余的E5-2670. 那么x79 就这么愉快的决定了.
  • RAID 卡 能直接连接8块盘(有expander卡能插更多盘.), 那么机箱也要能装下至少现阶段的5快盘. 这就需要 5个 3.5寸盘位.
  • ST6000NM0034 这盘单盘接近12W, 5块就是 60W. 电源的大4pin输出功率要够.
  • 最好还是ATX主板, 这样魔改方便.
  • 同样ATX电源. 魔改方便.
  • 我要插10G/40G 网卡(PCI-E 3.0 x8), RAID卡(PCI-E 3.0 x8), 那么主板至少要提供俩PCI-E 3.0 x8插槽. 如果主板不支持无显卡启动. 那么还要插亮机卡. 还要个PCIE(这个就不用x8了, 阉割下x4,甚至x2插槽插x16的卡都可能显示的.)
  • 便宜, 毕竟x79在12年就有了再战10年不太可能了, 迟早要换.
  • 功耗按说应该没啥事.

最终选择的是这个:

(图片来源见水印, 懒得拍我的机器了.)

ThinkStation S30. 单路x79 , 560W电源. 2个5.25寸位置, 3个3.5寸位置. 中间的软驱位还能插块3.5寸盘. 总计可以直接上6块3.5寸盘. 下面还有些空间可以后续再魔改插几块. 2个 SATA3 6Gb/s. 2个PCI-E 3.0 x16, 一个 PCI-E 3.0 x4 (x16长度槽) , 一个 PCI-E 2.0 x4. 还有个PCI.

上图就是弄到一半的状态.

不要在意电缆乱. 盖上机箱盖就看不见. —— 软件工程之何为封装

最终插了5块3.5寸盘, RAID 卡, 一块 Connectx3 40G单口 IB卡, 一块INTEL DC P3700. 2块 INTEL SSD 545. 4条 8G DDR3 ECC REG, 一个XEON E5-2670.

为了散热, 在PCI-E卡, 硬盘处又用双面胶粘了3个风扇. 否则SAS盘发热还是挺可怕的.

两台这样的机器.

网络

参见我家用万兆局域网的回答, 我之前已经弄了个40G内网了, 所以直接上IB卡.

如何在家庭布设万兆局域网?

图中是两块 Mellanox ConnectX 3 56G , 这个卡的IPoIB模式支持40G以太网.

怼到 已经魔改完猫扇的 Mellanox IS5022 40G IB 交换机上. (还没开opensm, 所以灯是黄色的)

5 分钟 CEPH 入门

好了, 我们准备要装ceph了, 所以要对ceph有个简单的理解.

ceph 有这么几个角色:

OSD (object storage daemon)就简单理解为硬盘好了(实际上不是这样的). 一般一块硬盘对应一个osd程序. SSD 为了提升性能可以一块SSD分配多个osd. osd负责向硬盘存储数据.

MON (monitor daemon) 监控节点, 用来监控调度啥的.

RADOS (Reliable Autonomic Distributed Object Store)简单来讲就是个算法, 把这个算法包装成软件装到电脑里, 每次向CEPH里面读写数据, 先把数据塞到RADOS里面计算下, 就知道数据在哪个OSD了. 这样就彻底摆脱了依赖. 只需要这个软件就有了RAID之类的功能. 而且没什么状态, 没有本地数据库啥的. 全靠这个算法定位.

好了,剩下MDS, RGW 啥的用不着就不用了解了. 是不是很简单?

还缺点什么?

好了, 现在我们有了两个一模一样的 CEPH 存储节点. 每个 30TB. 然而CEPH的架构是这样的:

(图来自网络)

其中, OSD (可以简单理解为硬盘), 承载OSD的主机我们有了. MON(可以理解为监控节点) 还没有. 我们可以在两个OSD主机上部署 MON, 但MON为了仲裁(Quorum) 我们最好还是 3 个mon 节点比较好(至少三人投票才能决出结果). 另外RGW啥的也需要放一放.

于是, 废物利用, 把之前的HP Microserver Gen8 当做了 mon 节点, 也插了个 IB 网卡.

搞定. 接下来开始安装CEPH.

安装CEPH.

我懒了, 所以没写教程. 后续会补充到我的专栏里. 感兴趣的同学先看官方教程吧. 挺简单的.

Installation (ceph-deploy)

用 ceph-deploy工具安装非常方便. 当然还需要后续调整才能达到理想的性能. (默认也足够用)

跑分

CEPH 的一个好处是可以定义副本数量( 没错 CEPH 就是把你的数据存成多份来保证数据全的 ).

我在OSD中建立了三个osd pool(理解成分区好了)

如图, 分别叫 L1, L2, L3.

L1 是单副本, 坏一块盘就丢了一块盘中的数据, 所以用来放完全不重要的东西, 比如你们懂的, 还有Steam游戏.

L2 是2副本, 用来放平时用的东西.

L3 是3副本, 用来放代码和一些重要的东西.

仔细看的同学会发现L1+L2 x 2 +L3 x 3超过了我的60TB存储容量. 没错. 这个pool 是虚拟的, 你可以随时扩容. 当然不会超过物理磁盘的容量. 物理磁盘满了会导致OSD满了, 到时候CEPH会提醒你要满了. 满了的话插盘, 增加OSD, 扩容就行. 是不是很灵活?

下面是将三个pool映射为块设备, 然后挂samba, 本地windows机器访问的跑分结果.

比较遗憾的是, 我本地只有一块INTEL 545, 所以这个跑分结果不是卡在了CEPH, 而是卡在了我本地机器的硬盘读取速度上.

这是用软件跑分的结果. 按说也没达到性能上限( 6TB 这个盘号称持续写入速度有200MB+ 10块就是2个G啊, 这成绩连RAID0都跑不过, 太丢脸了) .

优化

优化手段有很多, 比如开RDMA, 比如调整MTU. 我这里做了如下优化:

  • MTU 2044 (ConnectX3最大支持4000左右, 但是我调整到4000出现了内核问题, 为了稳定还是默认的2044了)
  • RDMA
  • CEPH Journal 单独放了块 intel 545
  • CEPH 开启缓存, 用了块 intel 545
  • 优化CEPH参数.
[global]
fsid = 0f7be0a4-2a05-4658-8829-f3d2f62579d2
mon initial members = storage01-ib,storage02-ib,storage03-ib
mon host = 10.0.7.1,10.0.7.2,10.0.7.3
mon pg warn min per osd = 1
public network = 10.0.7.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd crush chooseleaf type = 0
osd pool default size = 2
osd pool default min size = 1
rbd op threads = 4
[mon]
mon data = /var/lib/ceph/mon/ceph-$id
mon clock drift allowed = 0.5 
mon osd min down reporters = 1
mon osd down out interval = 600 
[osd]
osd journal = /data/ceph-osd-journal/$cluster-$id/journal
osd journal size = 10000
osd op num shards = 8 
osd op num threads per shard = 4
[client]
rbd cache = false

关了RBD cache, 防止突然掉电丢数据. osd 线程开到2倍.

那么, 加了缓存后, 性能啥样呢?

往死了优化

这717MB (折合5.6Gb/s)的速度对不起我的40G设备啊. 但是俩Intel 545 做缓存也就这样了(545 写入速度 500MB/s左右).

上NVME.

跑分:

[root@storage02-ib ~]# rados bench -p lc 60 write
hints = 1
Maintaining 16 concurrent writes of 4194304 bytes to objects of size 4194304 for up to 60 seconds or 0 objects
Object prefix: benchmark_data_storage02-ib.lobj.eth6.org_189720
  sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)
    0       0         0         0         0         0           -           0
    1      16       723       707   2827.51      2828  0.00620033   0.0223021
    2      16      1449      1433   2865.51      2904  0.00916287   0.0221825
    3      16      2155      2139   2851.58      2824   0.0366325   0.0222918
    4      16      2876      2860   2859.61      2884    0.033643   0.0223233
    5      16      3613      3597   2877.22      2948   0.0207602   0.0221836
    6      16      4335      4319   2878.95      2888   0.0557611   0.0221711
    7      16      5058      5042   2880.71      2892   0.0111489   0.0221847
    8      16      5803      5787   2893.08      2980   0.0100133    0.022082
    9      16      6493      6477   2878.26      2760  0.00491178   0.0221721
   10      16      7236      7220    2887.6      2972   0.0306935   0.0221227
   11      16      7946      7930   2883.24      2840   0.0116118   0.0221538
   12      16      8686      8670   2889.62      2960    0.020057   0.0221269
   13      16      9380      9364   2880.85      2776   0.0373555   0.0221801
   14      16     10114     10098   2884.77      2936   0.0283607   0.0221558
   15      16     10862     10846    2891.9      2992  0.00808201   0.0221035
   16      16     11604     11588   2896.64      2968   0.0215107   0.0220788
   17      16     12313     12297   2893.05      2836   0.0519716   0.0220919
   18      16     13036     13020   2892.98      2892  0.00509733   0.0220978
   19      16     13760     13744   2893.12      2896   0.0296724   0.0221057
2019-03-13 08:03:43.362085 min lat: 0.00401633 max lat: 0.0801554 avg lat: 0.022081
  sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)
   20      16     14501     14485   2896.65      2964   0.0288173    0.022081
   21      16     15229     15213   2897.36      2912   0.0124475   0.0220728
   22      16     15940     15924   2894.92      2844   0.0173604   0.0220985
   23      16     16662     16646   2894.61      2888  0.00595091   0.0220945
   24      16     17411     17395   2898.82      2996   0.0102223   0.0220689
   25      16     18145     18129   2900.29      2936  0.00714116   0.0220556
   26      16     18890     18874   2903.34      2980   0.0232422   0.0220303
   27      16     19607     19591   2902.02      2868   0.0213828   0.0220413
   28      15     20312     20297   2899.23      2824   0.0186098   0.0220668
   29      16     21022     21006   2897.04      2836   0.0113287   0.0220759
   30      16     21715     21699   2892.86      2772   0.0104436   0.0221137
   31      16     22439     22423   2892.95      2896   0.0402675   0.0221099
   32      16     23164     23148   2893.16      2900    0.014374   0.0221133
   33      16     23884     23868   2892.75      2880   0.0277044   0.0221148
   34      16     24582     24566   2889.78      2792   0.0238958    0.022137
   35      16     25331     25315    2892.8      2996   0.0220586   0.0221166
   36      16     26031     26015   2890.22      2800    0.018456   0.0221346
   37      16     26771     26755   2892.09      2960   0.0153843   0.0221214
   38      16     27512     27496   2893.98      2964   0.0287244   0.0221073
   39      16     28238     28222   2894.23      2904  0.00710386   0.0221054
2019-03-13 08:04:03.364287 min lat: 0.00380649 max lat: 0.0801554 avg lat: 0.0220819
  sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)
   40      16     28984     28968   2896.47      2984  0.00585799   0.0220819
   41      16     29719     29703   2897.52      2940   0.0121268   0.0220785
   42      16     30447     30431   2897.86      2912   0.0174378   0.0220777
   43      16     31182     31166   2898.83      2940   0.0266877   0.0220725
   44      16     31907     31891   2898.85      2900  0.00507255   0.0220651
   45      16     32645     32629   2900.02      2952   0.0264655   0.0220592
   46      16     33374     33358   2900.36      2916  0.00519323   0.0220554
   47      16     34103     34087   2900.69      2916   0.0174929   0.0220574
   48      16     34837     34821   2901.42      2936  0.00825005   0.0220507
   49      16     35567     35551   2901.79      2920   0.0161023    0.022052
   50      15     36313     36298   2903.51      2988   0.0338922   0.0220351
   51      16     37030     37014   2902.73      2864   0.0209547   0.0220435
   52      16     37760     37744   2903.05      2920  0.00616779   0.0220334
   53      16     38469     38453   2901.78      2836    0.030024   0.0220468
   54      16     39188     39172    2901.3      2876   0.0336324    0.022049
   55      16     39897     39881   2900.11      2836  0.00491591    0.022062
   56      16     40674     40658   2903.81      3108   0.0357856   0.0220327
   57      16     41400     41384   2903.81      2904   0.0057601   0.0220328
   58      16     42149     42133    2905.4      2996   0.0146372   0.0220229
   59      16     42855     42839   2904.01      2824   0.0291914    0.022034
2019-03-13 08:04:23.366453 min lat: 0.00380649 max lat: 0.0801554 avg lat: 0.022023
  sec Cur ops   started  finished  avg MB/s  cur MB/s last lat(s)  avg lat(s)
   60      16     43591     43575   2904.67      2944   0.0101212    0.022023
Total time run:         60.0109
Total writes made:      43591
Write size:             4194304
Object size:            4194304
Bandwidth (MB/sec):     2905.54
Stddev Bandwidth:       67.5243
Max bandwidth (MB/sec): 3108
Min bandwidth (MB/sec): 2760
Average IOPS:           726
Stddev IOPS:            16
Max IOPS:               777
Min IOPS:               690
Average Latency(s):     0.0220248
Stddev Latency(s):      0.0122845
Max latency(s):         0.0801554
Min latency(s):         0.00380649
Cleaning up (deleting benchmark objects)
Removed 43591 objects
Clean up completed and total clean up time :2.05853

平均写入速度 2905.54 MB/s , 最高 3108 MB/s, 最低 2760 MB/s. 舒服了.

P.S. 该数据由rados bench生成. 并不是 rbd 块设备性能. RBD块设备的测试结不理想:

974MB/s 作为两块写入速度能达到 1900 MB/s 的P3700来说, 这个成绩明显裁判有问题(dd从 /dev/zero 往 /dev/null 写入的速度接近 9GB/s, 所以不是dd的问题).

我怀疑要么是我的RBD没设置或优化正确. 要么是RBD的实现有性能问题. 但查了半天资料也没有什么结果. 这里就只能期待有大规模集群实践经验的大佬关于RBD的使用经验数据了.

总之, 够用了.

One more thing …

总之比买云服务便宜不是? [手动阿Q]

看到有同学问价格, 梳理下价格:

  • 6T 硬盘 620 * 11 = 6820
  • HBA卡 590 * 2 = 1180
  • 56G IB 网卡 495 * 4 = 1980
  • 56G 线 200 * 4 = 800
  • SAS线 60 * 4 = 240
  • ThinkStation S30 900 * 2 = 1800
  • E5-2670 450 * 2 = 900
  • 8G DDR3 ECC REG 95 * 8 = 760
  • INTEL 545 128G 250 * 4 = 1000

总计 : 15480 CNY

新版 iPad Pro 顶配 15299 CNY, 这么一想是不是很划算?

以上是本次新增的设备, 之前还有的设备是:

  • mellanox IS5022 IB交换机 2500 * 1 = 2500
  • HP Microserver Gen8 3800 * 1 = 3800
  • INTEL DC P3700 800G 2600 * 2 = 5200

总计:11500 CNY

一些 Tips

  • CEPH可以用SSD当缓存盘, 缓存超过设定容量或时间可以回写到机械硬盘, 对常用文件还能缓存到SSD提升读取性能.
  • 使用2副本最好编辑下CRUSH map, 防止预期外的掉盘导致副本不和期望问题.
  • 数据恢复速度与单盘最大写入速度有关. 所以单盘最大容量还是控制下, 6TB 按照写入速度 200MB/s算, 恢复一块盘也要 8.3 小时.
  • 最常用命令: ceph osd set noout 【手动滑稽】.
  • 家用写入500MB/s 真的够了…… 编辑4k视频当我没说…..
  • 掉盘恢复非常简单, 插上新盘, 添加osd后, 坐等就行了.
  • 最好常看看CEPH健康状态, 万一运气不好2块副本盘全掉还是要注意下的.
  • 想到再补充

到目前的集群使用状况

截止到2019-04-06,期间小区突然断电3次(无UPS),在一次系统维护中不小心干掉了mon节点,目前数据正常,系统正常使用,无故障。

CEPH-RBD映射的块设备给iSCSI,ESXi连接iSCSI给15台虚拟机使用。目前状况良好。

最后, 欢迎加入垃圾佬Q群, 共同学习, 共同交流.

回答不上进群问题的同学去百度下好不好….

来源:知乎 www.zhihu.com

作者:Karminski-牙医

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载

此问题还有 209 个回答,查看全部。
延伸阅读:
搭建家庭 NAS 服务器有什么好方案?
购买现成的NAS产品还是自己用ITX来做一个家庭服务器?