您的位置:电脑故障网 > 网络 > 自己搭建高端NAS服务器经典好方案网络

自己搭建高端NAS服务器经典好方案

电脑装机员小李整理编辑2019-04-10作者:Karminski【网络】

本文作者:Karminski

说下我的NAS服务器方案,自认为目前比较完美了,特别是软件配置,用了两年,还是挺满意的,说说我搭建NAS服务器使用状况吧:
7*24小时开机,小型UPS电源保护,断电可自动让NAS优雅的关机,防止对硬盘造成不良影响,电力恢复后自动开机,意外关机后也可远程开机。

家庭影院服务器,影视剧使用自动化工具下载,只要把想看的添加进去就可以了,如果有了资源,系统会自动下载并分类整理,包括重命名下载字幕等,当然也可以手动添加种子下载,特别适合玩PT。

NAS上存储的海量影视等多媒体资源,在家可以在电视上观看,在外可通过手机或电脑客户端在线观看,不需要下载。

文件共享服务,这是最基本的了,可以很方便的开启SMB、FTP等服务。

私有云盘,实现类似DropboxOneDrive的自动同步功能,比如今天我在家拿主力机工作,明天拿轻薄本出去,相关数据在后台自动同步,不需要手动来回拷贝;另外手机客户端可实现照片自动上传至NAS服务器,手机小容量的福音。

家里局域网在外随时连接,只要有互联网,可以访问家里任一设备,包括路由器打印机等,和在家访问没有多大区别。其实这个功能是通过另外一个独立的小盒子实现。

硬件和软件均为DIY,非成品…… 老规矩, 先上图:

自己搭建高端NAS服务器经典好方案1自己搭建高端NAS服务器经典好方案2

ceph -s 信息见下图:

自己搭建高端NAS服务器经典好方案3

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

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

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

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

自己搭建高端NAS服务器经典好方案4

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

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

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

自己搭建高端NAS服务器经典好方案5

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

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

为什么该停止用RAID了?

首先, 随着现在的盘越来越大, RAID5在大容量下已经完全不可靠了, 我这里也翻译了个简单的RAID5重建失败概率计算器:

RAID重建成功概率计算器raid-failure.eth6.org,以我上文的6块 3TB WD 绿盘来算, 如果挂了一块盘, RAID 5 重建成功概率只有30%:自己搭建高端NAS服务器经典好方案6

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

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


我需要什么样的存储?

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

自己搭建高端NAS服务器经典好方案7 使用简易的评分标准: - 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了.


开工搭建NAS服务器

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

硬盘

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

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

自己搭建高端NAS服务器经典好方案8

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

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

自己搭建高端NAS服务器经典好方案9

RAID 卡:

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

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

自己搭建高端NAS服务器经典好方案10

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

自己搭建高端NAS服务器经典好方案11

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

自己搭建高端NAS服务器经典好方案12


NAS服务器主机

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年不太可能了, 迟早要换.功耗按说应该没啥事.

最终选择的是这个:

自己搭建高端NAS服务器经典好方案13

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

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.

自己搭建高端NAS服务器经典好方案14

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

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

最终插了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盘发热还是挺可怕的.

两台这样的机器.

NAS服务器所用网络

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

自己搭建高端NAS服务器经典好方案15

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

自己搭建高端NAS服务器经典好方案16

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

五分钟 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的架构是这样的:

自己搭建高端NAS服务器经典好方案17

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

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

自己搭建高端NAS服务器经典好方案18

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

安装CEPH

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

Installation (ceph-deploy)docs.ceph.com

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

NAS服务器跑分

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

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

自己搭建高端NAS服务器经典好方案19

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

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

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

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

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

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

自己搭建高端NAS服务器经典好方案20

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

自己搭建高端NAS服务器经典好方案21

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

NAS服务器优化

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

MTU 2044 (ConnectX3最大支持4000左右, 但是我调整到4000出现了内核问题, 为了稳定还是默认的2044了)RDMACEPH Journal 单独放了块 intel 545CEPH 开启缓存, 用了块 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倍.

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

自己搭建高端NAS服务器经典好方案22


NAS服务器继续优化

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

上NVME.

自己搭建高端NAS服务器经典好方案23自己搭建高端NAS服务器经典好方案24

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

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

自己搭建高端NAS服务器经典好方案25

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

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

总之, 够用了.

One more thing ...

自己搭建高端NAS服务器经典好方案26

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

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

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

总计 : 15480 CNY

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

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

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

总计:11500 CNY

一些小提示

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

NAS服务器集群使用状况

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

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

相关文章

文章评论

说出你的看法
  • 全部评论(0
    快来抢一楼吧
  • 电脑故障网:这是本系统第一条评论,测试一下。

服务器推荐

打赏本站

  • 如果您觉得本站很棒,能给您提供些许帮助,可以通过扫码支付打赏哦!
  • 微信扫码:你说多少就多少~
  • 支付宝扫码:你说多少就多少~
  • 实在不想出钱 那就领个红包吧~