之前家里的服务器一直用着破烂 AMD 推土机架构的 FX-6100,早就看着不爽了,于是这次趁着全家电脑升级,将服务器也升级到四代酷睿。同时也针对服务器最重要的存储部分做了一次彻底的升级。
其实,在此之前,家里服务器陆陆续续用过不少存储方案。本文将记录各种我使用过的存储方案,并一一分析其中的优缺点。
存储方案
家用服务器嘛,最一开始都是仅靠主板的那几个 SATA 接口。最早的时候里面插三四块硬盘就算很多了。但是随着时间的推移,硬盘空间不够用了,最直接的解决办法就是往服务器上堆硬盘。在这过程中,遇到的第一个困难就是主板上 SATA 接口插满了。
1. SATA 扩展卡
对于 SATA 接口不够用,最简单的解决方法,加一块 PCIe SATA 扩展卡。最一开始加装的是基于 ASMedia ASM1061 的扩展卡。后来看到网上说 Marvell 88SE92xx 更稳定,就陆续买了 88SE9230 和 88SE9215 扩展卡。陆陆续续插了三块扩展卡之后,主板插槽又不够用了。
ASMedia ASM1061 使用起来很友好,基本上即插即用,用 Windows 自带的驱动程序就能工作。但是缺点很明显,接口少。一块 ASM1061 卡只能扩展出来 2 x SATA 接口。而且只能用到 PCIe x1 单通道模式,对端口资源也是浪费。
Marvell 88SE9215 好一些,一个 PCIe x1 接口可以扩展出 4 x SATA 接口。但是必须安装驱动。而且 PCIe x1 接口也造成了一定的带宽瓶颈。
Marvell 88SE9230 使用了一个 PCIe x2 接口,也是扩展出 4 x SATA 接口,也是必须安装驱动。相比之下,PCIe x2 的带宽就好多了。但是相应的,因为主板上没有 PCIe x2 接口,所以很可能需要占用一个 PCIe x4 或者 x8 甚至 x16 接口。对于只提供 PCIe x16 和 x1 接口的主板,很有可能插了显卡之后就不能再插 88SE9230 扩展卡了。
此外,市场上还有一些 SATA Port Multiplier。但是因为会造成性能损失,所以并不在我考虑范围之内。
这个时候,有一块扩展卡引起了我的兴趣。
2. IO Crest IO-PCE9215-16I
这块板卡还有另外一个型号,Syba SI-PEX40097。接口使用的 PCIe 2.0 x4,理论上总速率可以达到 5 GT/s x 4 通道 = 2000MB/s 传输速度。卡上通过一个 Pericom 的 PCIe 交换芯片,将一个 x4 总线分成 4 个 x1 总线,然后每个 x1 总线各连一个 88SE9215。所以总共算下来就是一个 PCIe x4 转成 16 x SATA 接口(4 x Mini SAS SFF-8087)。也就是说我只需要一块扩展卡就够了。
至于带宽嘛,2000MB/s 分给 16 个接口,平均每个分到 125MB/s,给机械硬盘(WD Blue/Green)差不多够用了。
但是这块板卡有个最大的问题:贵!一块卡原价要卖到 CAD$250!某天正好看到 Amazon Warehouse Deal 有一个开箱货,只需要 CAD$125,就买回来了。用了一段时间感觉还不错。
3. Dell PERC H310
一个偶然的机会,看到网上有人说家用服务器就买二手 IBM M1015,刷成 LSI 9211-8i IT 模式使用。然后我研究了一下,就去 eBay 买了二手 Dell PERC H310。
这块卡使用 PCIe 2.0 x8 接口,扩展出 8 x SATA(实际卡上是 2 x Mini SAS SFF-8087 接口),带宽多一倍,接口少一半,平均每个 SATA 接口的速率提升到 500MB/s,这已经很接近 SATA III 6Gbps 的速度上限了。
这块卡本身是给服务器设计的,性能好,稳定可靠。Windows 自带驱动,即插即用。
而且,最关键的一点:便宜!一块卡只需要 CAD$36!这样就算我买两块卡,获得同样多的 SATA 接口数量,也只需要 CAD$72,也就是 IO-PCE9215-16I 开箱货的半价。当然首先要保证主板上能插两块 PCie x8 板卡。
再说一下为什么选了 Dell PERC H310 而不是同样使用 SAS2008 芯片的 H200 或者 IBM M1015。一个原因是 H310 的 SAS 接口在后侧,M1015 的 SAS 接口在上方,走线来说 H310 会更方便一些。另外一个原因就是 Dell 给 H310 提供 HBA 固件。就算不刷 LSI 9211-8i,用 Dell 官方固件也能做成 IT 模式。如果不考虑这两点,Dell PERC H200 或者 Fujisu D2607 可能是更经济的选择。
IT 模式:全称 Initiator Target,就是将硬盘信息和数据完全呈现给系统,板卡不会改动任何信息/数据,也不提供硬件 RAID。
性能差别
前面说了 Dell PERC H310 的每个 SATA 接口速率都是 IO Crest IO-PCE9215-16I 的 4 倍。那么具体使用的时候,究竟有多大的性能差别呢?我针对自己的使用场景做了个 benchmark。
我的使用场景很简单,我有一个 8 块机械硬盘(WD Blue/Green)组建的存储池,其中的虚拟硬盘分为 无复原信息 和 5 柱面 Parity 复原(相当于 RAID5) 两种。
硬盘型号 接口 存取速度
==========================================
WD Blue WD60EZRZ SATA 6Gbps 170MB/s
WD Blue WD40EZRZ SATA 6Gbps 175MB/s
WD Blue WD40EZRZ SATA 6Gbps 175MB/s
WD Blue WD40EZRZ SATA 6Gbps 175MB/s
WD Green WD20EARX SATA 6Gbps 110MB/s
WD Green WD20EARX SATA 6Gbps 110MB/s
WD Green WD20EARS SATA 3Gbps 110MB/s
WD Green WD15EARX SATA 6Gbps 110MB/s
另外我还有一个 3 块 SSD 组建的存储池,其中的虚拟硬盘用的 3 柱面 Parity 复原。
SSD型号 接口 存取速度
==================================================================
KINGSTON SA400S37240G SATA 6Gbps 500MB/s (read) 350MB/s (write)
KINGSTON SA400S37240G SATA 6Gbps 500MB/s (read) 350MB/s (write)
KINGSTON SA400S37240G SATA 6Gbps 500MB/s (read) 350MB/s (write)
注:存取速度来源于官方规格说明。
场景 1:机械硬盘,无复原
因为机械硬盘的瓶颈在硬盘本身的存取速度,所以两块卡的结果都差不多。Dell H310 稍微快一点点。最快速度大概就是 WD Green 的上限(110MB/s)。
场景 2:机械硬盘,Parity 复原
5 柱面 Parity 布局是 4 柱面数据 + 1 柱面校验。理论读取速度应该是裸盘的 4 倍。但是这里跑分只有 3 倍左右,而且两边很一致,看样子除了 PCIe x1 接口以外还有其他的瓶颈。
因为 Parity 复原(RAID5)需要在写入时计算并检查校验信息,所以写入速度会很慢。从跑分中也可以看到写入速度对比无复原时大幅下降。Dell H310 的多线程读取比较好,但是写入速度居然不及 IO-PCE9215-16I。
场景 3:SSD,裸盘
因为 SSD 的高速存取特性,SSD 测试才能真正显示出扩展卡的性能。
不出意外,IO-PCE9215-16I 被 PCIe 2.0 x1 带宽所限,SSD 读取和写入均无法达到满速。而 Dell H310 基本上跟主板原生 SATA 接口性能相差无几。
场景 4:SSD,Pairty 复原
加了 Parity 复原之后,读取性能翻倍了。3 柱面 Parity 的布局是 2 柱面数据 + 1 柱面校验。所以读取性能翻倍完全符合预期。
这一次 Dell H310 仍然跟主板原生 SATA 接口性能一致,甚至略高。
然而在这个测试中 IO-PCE9215-16I 却翻车了。不管是将三块硬盘连到同一个 SAS 接口上,还是分别连到三个不同的 SAS 接口上,IO-PCE9215-16I 都会导致磁盘测试卡死(下图)。
小插曲
其一:SSD 丢失
在我测试 Dell PERC H310 的过程中,还发生了一件意外的事情。
我手上有一块 OCZ Vertex 3 SSD,已经很古老了。之前一直连到主板的 SATA 接口上使用。在做第一轮测试的时候,这块 SSD 突然不见了。而且不管是直连主板,还是接到 IO Crest IO-PCE9215-16I 上,都无法找到这块 SSD。
这时候 Windows 存储空间的 parity 复原就开始发挥作用了。在丢失一块硬盘的情况下,虚拟硬盘依然正常工作,数据没有损失。但是测试用的无复原虚拟硬盘就没那么幸运了,在 SSD 消失之后,无复原虚拟硬盘也无法访问了。
我决定死马当活马医,把这块 SSD 连到了 Dell H310 上。然后这块 SSD 居然神奇地复活了,而且至今依然正常工作。
然而,鉴于这块 SSD 目前处于不稳定状态,所以我又去买了两块 Kingston A400(看评论说这块 SSD 是垃圾,但是便宜啊),才重新组建好存储池,完成性能测试。
其二:Dell H310 刷写固件
在第二块 Dell H310 到货之后,我尝试直接在服务器上刷写 IT 固件(Asus Z97-C 主板)。但是在清除原有固件之后,刷写工具就无法操作 H310 卡了。提示错误如下:
Failed to initialize PAL
换到 HP EliteDesk 800 G1 SFF 上面就没有问题,刷写很顺利。只是开机报警提示内存问题,需要拔掉所有内存条,只插一条在 DIMM 1 插槽。
看网上说貌似 换到 UEFI 环境刷写 或者 屏蔽SMBus 可能可以解决这个问题。
总结
经过测试之后,可以看出 Dell H310 的性能表现非常出色,加上二手卡的售价优势,对于家用服务器是一个很好的选择。