搭建个人家用NAS网络存储服务器 [三]

上文 搭建个人家用NAS网络存储服务器 [二] 里讲了这次新NAS server的硬件,这篇讲讲软件。

首先,这次组home server的目的已经不仅仅是NAS,还想用虚拟化做几台VM跑一些web应用,所以在用何种虚拟化技术上动了点脑筋。
考虑过以下几种

  • ESXi
  • Xen
  • Solaris Zones

第一种ESXi安装起来最简单,VMWare的图形化配置简单易用,客户端还有中文版。但问题就在这个客户端上,它只有Windows版本(就算web client也是需要一台windows机器做web server)这给我造成了很大的不便,家里都是Mac和Linux。
第二种Xen的安装需要对Linux系统比较熟悉,并且配置大量依赖命令行(我没有装libvirt图形界面,用xl这个stack tool足够了)
第三种Solaris Zones我也曾经考虑过,那时候曾经想主机(Dom0)就直接跑OpenIndiana然后用Zones作虚拟化,最后作罢的的原因还是对Solaris不熟悉。

在决定采用Xen虚拟化技术的同时还有一点需要注意的就是CPU和主板都支持vt-d,这样可以直接把SAS控制卡和网卡直接pci passthrough给位于DomU的NAS系统,以达到接近于native的性能。Intel带K结尾的CPU都不支持vt-d技术(可惜了我的3770K),Z77主板除了Asrock的一款外也都不支持vt-d(又可惜了我的ROG M5G)

NAS本身的系统我还是选择了自己相对熟悉的FreeNas。曾经列入考虑范围的还有OpenIndiana(也就是OpenSolaris folk出的开源版本),最后由于对Solariz系统不熟悉和对FreeNAS漂亮GUI的依赖而作罢。

最终系统中软件的版本如下
Dom0:
Gentoo Linux 3.8.13-gentoo (我尝试过3.10.7 内核,Xen配置不成功)
Xen-4.2.1-r4 (4.2.2 下配合Xen-tools 有点问题,hvm DomU跑不起来)
Xen-tools-4.2.1-r5 (4.2.2-r3 下hvm和qemu被mask,遂降级至4.2.1-r4)

DomU:
FreeNAS我尝试过两个版本 (8.3.1-p2-X64, 9.1.1-X64) 可以顺利跑在DomU HVM下并且Dom0 pci passthrough LSI 9211-8i HBA controller和Intel 82579LM Gigabit ethernet card。
这里面有一个tricky的地方就是LSI 9211-8i 这块用SAS 2008芯片的HBA卡在通过Xen passthrough给FreeNAS的时候需要修改FreeNAS系统里的2个配置问题,否则系统启动中会遇到超时问题(如下)

run_interrupt_driven_hooks: still waiting after 60 seconds for xpt_config mps_startup
run_interrupt_driven_hooks: still waiting after 120 seconds for xpt_config mps_startup

解决办法就是修改FreeNAS上的/boot/loader.conf,加入以下两行 (默认情况下/boot 是readonly的,需要 mount -uw / 加载为可读写)

hw.pci.enable_msi="0"
hw.pci.enable_msix="0"

这个问题托 @delphij 的福已经开了bug ticket

至此我的第二台NAS server + home server顺利运转,并且主机上还能再跑几台VM弄点web应用。

如果还写第四篇的话,我估计玩的就是链路聚合 Link aggregation control protocol 或者是10GBase-T网络了

搭建个人家用NAS网络存储服务器 [二]

不知不觉距上文 搭建个人家用NAS网络存储服务器 [一] 发布已经快三年了。
第一篇中的主机后来给家人当做桌面机上网炒股打游戏,作为替换我尝试了HP N40L MicroServe (主要是捡到一台非常便宜的N40L) 加FreeNAS系统的组合,主要考量还是FreeNAS提供的ZFS磁盘格式比较吸引人,ZFS Snapshot是超越Mac OSX上时光机的终极快照备份工具。可惜的是N40L只有4个不可热插拔硬盘位,4个盘位跑RaidZ2略显尴尬,外加N40L的集成CPU性能较弱,应付RaidZ2略显吃力,在全负载读写数据下网络数据传输曲线惨不忍睹。加上最近家里宽带套餐换成了Business Class Internet,ISP提供了一个固定IP,于是想装一台新的home server在提供NAS的同时也可以跑一些web服务。于是再一次开始DIY…

这次装机考虑的主要是一机多用即主机上能跑多个虚拟机应付不同的应用,于是虚拟化能力成了选购主板和CPU的首要因素。Intel的VT-x和VT-d是必须的,前者在主流CPU上都有提供,后者是为了PCI device passthrough (Direct I/O)以保证提供NAS服务的虚拟机能直接操纵硬件以提供最佳性能。为了能将服务器仍在角落运转而不用担心死机重启,主板支持IPMI就显得非常重要。至于主板SATA的数量到不是最关键因素,决定上HBA控制卡来保证足够多的SATA/SAS接口。

于是乎有了下面的配置
Supermicro X9SCM-F (只有带F的型号支持IPMI)
Intel Xeon E3-1220 V2 (没有选择V3 Haswell平台主要是从功耗和价格上考虑,V2设计TDP 69w,V3居然要80W)
Kingston DDR3-1333 ECC unbuffered Memory 8Gx2 (主板只支持ECC内存)
LSI 9211-8I HBA 扩展卡
Seasonic 650W 80 Plus Gold (主要遇到打折,65美金实惠价,80+金牌能效比高一些)
OCZ Vertex2 128G SSD (以前机器淘汰下来的,仅作为系统盘够用了)
机箱这次用了Fractal Design Define XL R2,全塔ATX机箱,提供8个3.5寸,4个5.25寸驱动位,这个情况下应该足够了。
磁盘还没有全部到位,基本上准备上WD Red NAS driver红盘。

关于CPU的选择还有个插曲。我中途一度考虑过Xeon E3-1220L V2 这款2012二季度发布的CPU设计TDP只有17w,并且双核四线程带Vt-d简直是家用服务器首选。可惜这款CPU根本不针对零售市场,不管在美国还是中国都很难买到。淘宝上一度出现过一些ES版本的V1版喊价都在1200人民币以上,个别日本代购还喊出了1999人民币的匪夷所思价格。最终还是选择了Xeon E3-1220 V2这款好买又不算太贵的CPU,我买的价格是233美金不含税,如果最终感觉功耗过大可以在BIOS里关掉两个核以降低功耗。

主板的选择余地并不大,考虑到需要IPMI和虚拟KVM支持,基本上只有supermicro,Intel和ASUS这几家,考虑到名气和市场占有率选择Supermicro就不意外了。至于HBA扩展卡而不是硬件RAID卡,主要考虑因素是FreeNAS(或OpenSolaris)跑ZFS需要对硬盘的直接控制,用一款硬件RAID控制卡的话就等于中间额外架了一层,此外纯硬件RAID卡如果要支持RAID 6价格不菲。从性能上讲现代CPU已经严重性能过剩,以前硬件RAID的专用RISC处理器速度快,现在都已经可以完全靠软件Raid来提供同等性能。另外一个不得不考虑的地方就是硬件RAID卡坏了得找一块同厂家同型号的卡来把数据救回来,软件的就比较简单,接哪台机器上都一样用。选择这个型号是因为根据网上的评测,LSA 9211-8i这块卡上用的SAS 2008 芯片系统兼容性比较好。再次不得不说taobao神店多,这卡在淘宝上400-600人民币选择一大堆,在eBay/Amazon上都起码是200+美金,还是祖国好啊。

电源机箱没啥特别的,看到打折外加造型还可以就买了。电源唯一需要注意的就是实际运行中并不需要650w那么大功率,每个硬盘差不多十多w就搞定了,但是开机一瞬点启动电流会比较大,电源不能提供12V下足够电流就容易挂硬盘。我想也没有人会一个个慢慢热插拔硬盘来启动,所以还是选择名牌电源比较靠谱。

下文会讲具体的OS选择和虚拟化技术选择,提前预告下牵涉到了Xen的安装和具体PCI passthrough的配置…. 我想应该不用再等三年了