目的

  • 软路由
  • NAS
  • Linux编译环境

总的来说,AllInOne,还要低功耗,便宜。

设备列表

  • 超微X8SIL-F,Xeon L3406:支持IPMI、VT-D。U性能羸弱,但功耗低,NAS+软路由足够了,而且白菜价(30¥)。缺点在于内存要纯ECC的,比较难找。而且CPU编译起代码来还是慢了点。
  • SSD 1块作为系统盘。虽然主板只支持SATA2,SSD还是会比机械硬盘快很多。2块机械硬盘作为NAS硬盘。
  • 联想Think centreM90/M70E M-ATX小机箱。市面上这种支持M-ATX的小机箱基本没有,银欣有几款HTPC,还是有大了点。现在机箱都是瞄准游戏玩家,或者是ITX这种小钢炮型的。想想机箱发展这么多年,能够选择的类型并不多。

安装

主板要升级下BMC,不然运行IPMC Console有些小问题。

除了内存比较特别,散热器也是,规格要对,而且固定螺柱要分开,不然容易碰到主板的电容。内存如果安装不正确,机器能开机,但是没有任何输出,也没有警报。

软件配置

虚拟机hypervisor我用Ubuntu Server的KVM。有了IPMI Console,安装系统变得很简单,不用接亮机卡和键盘,系统坏了也可以远程调试。也可以远程挂载本地的iso文件,这样甚至不用插入安装U盘。

OpenWrt作为Ubuntu Server上面的一个KVM虚拟机运行。直接从官网下载openwrt-15.05.1-x86-64-combined-ext4.img,这个是已经做好的虚拟磁盘镜像,然后在virt-manager里面创建虚拟机。如果遇到waiting for root device /dev/sda2...的错误,把磁盘类型从virtio改变成IDE或者SATA,这个可能是OpenWrt没有加上特定驱动的原因。

OpenWrt至少需要两个NIC,分别为LAN和WAN。WAN接电信网线,LAN接交换机。因为主板和CPU支持VT-D,可以直接把PCI设备赋给虚拟机。新点的设备比如Intel 82575/82576要igb驱动,这个OpenWrt默认没有编译到里面去。要么自己编译一个,要么先赋给OpenWrt两个虚拟的NIC,比如e1000,然后OpenWrt通过DHCP连上网后,手工运行opkg install kmod-igb安装需要的驱动。

下面是OpenWrt运行时状态,可以看到虽然CPU羸弱,但是对付OpenWrt + ShadowSocks还是绰绰有余的。外网/内网下载时可以跑满带宽,而MIPS的路由器在下载外网大文件时,CPU占用达0.85,这大概是ShadowSocks导致。

两块机械硬盘划分给Ubuntu组成NAS。如果硬盘多,可以加上一块PCI-E硬盘阵列卡,同样可以用VT-D划分给freenas/freebsd虚拟机。

总结

虽然最后效果满足了我的要求,但是这种PC机的配置还是过于庞大,我还是喜欢路由器大小的设备:电子元件少,少出错,也更稳定。上面的专门网络交换机芯片,这样很容易达成5网口,配置VLAN也很方便。但是一般的MIPS的太慢,ARM双核比如MT7621、ARMADA 370性能可以,但是一般集成了我并不需要的双频导致最终价格昂贵。

已有路由路硬件大多做了NAT优化,对于AES加密算法也做了优化,这些都是特定领域的计算,对于ShadowSocks这种需要CPU普通密集计算的难以应付。