搭建个人家用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网络了