需求篇
自从发生了几次数据丢失事故以后,一台NAS就成了我们家的迫切需求。首先,需要可以组建磁盘阵列备份数据,保证数据安全;其次,需要方便家人操作,可以作为服务器提供个人网盘服务、照片浏览服务等;然后,需要在家里充当客厅HTPC,外接5.1声道音响以及投影仪;最后,功耗和噪音希望可以尽量控制,实现7*24小时开机。
硬件篇
CPU
Intel Celeron J3455 功耗低,TDP仅10W,虽然主频不高但有四核,集成显卡,并且无需风扇
主板
华擎J3455-ITX 当前市场上最合适的主板,板载J3455 CPU,提供4个sata口,17*17尺寸小,多媒体方面支持hdmi和光纤输出,兼顾HTPC需求
内存
主板只支持笔记本内存,建议使用金士顿、威刚等主流品牌DDR3L 1600低电压内存,至少需要4G,如使用zfs文件系统至少要8G
硬盘
至少准备3块硬盘:1块系统盘安装各种操作系统,建议使用笔记本硬盘或小容量SSD;数据存储最低要求2块大容量硬盘组raid1。我现在用的西数蓝盘,但噪音较大,稳定性存疑,不推荐。
电源
由于平台功率小,所以对功率和转换效率没有要求,但应尽量静音,并提供足够的硬盘供电接口。
软件篇
由于我需要NAS提供多种服务,所以计划基于虚拟机以及容器安装软件
底层系统
使用vSphere Hypervisor(即ESXi),在此基础上组建虚拟机。目前是免费的,注册一个账户即可得到许可证号码和下载链接,页面链接如下:
https://www.vmware.com/cn/products/vsphere-hypervisor.html
我选择安装的是6.0u2版,安装过程中遇到了几个问题记录一下:
1. 需要使用rufus将ISO写入U盘,同时创建Linux引导程序,才能正常安装ESXi,程序下载地址:
http://rufus.akeo.ie/
2. 安装程序启动过程中报错“nfs41clientfailedtoload”。这个原因为没有网卡驱动,
首先,需要下载ESXi-Customizer-v2.7.2这个软件
https://www.v-front.de/p/esxi-customizer.html
之后,下载驱动程序,根据网卡型号,我选择的是net55-r8168,下载vib文件即可
https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages
最后,运行ESXi-Customizer程序,选择原始ISO镜像及vib文件,即可生成修改后的ISO
3. 选择安装盘时,只能选择安装到U盘。这个原因是没有硬盘控制器驱动,解决方法同上,只是驱动程序选择sata-xahci。
安装成功后,在控制端选择:配置->软件->已获许可类型->编辑,输入你的许可证号,就可以永久使用了。
NAS系统
目前主流的NAS系统是freeNAS以及群晖。然而,新版freeNAS使用zfs文件系统,最低要求8G内存,在这个内存如此金贵的时期显然不划算。至于群晖,则根本就不是开源的,所谓的黑群晖版本无法保证可靠性。
最终我选择了一个小巧的系统OpenMediaVault(OMV),这个系统只要求1G内存。系统本身相当于在Debian基础上增加了NAS需要的各种服务,并提供网页图形界面,配置非常简便。同时可以通过内置的docker安装各种应用扩展功能。官网如下:
http://www.openmediavault.org/
此外,建议将数据盘直通给NAS系统管理,便于建立磁盘阵列。在ESXi系统做如下配置即可:
Docker
OMV系统的扩展,使用Docker插件最为便捷:
1. 系统自带的插件种类较少,需要先按官网指南下载并安装omv-extras扩展插件种类
http://omv-extras.org/joomla/index.php/guides
2. 之后就可以在OMV系统中安装docker-gui插件,用来支持管理页面直接控制docker
3. 启用docker插件,可以随意从Docker Hub上下载镜像了
Nextcloud
Nextcloud是一个提供私人网盘服务的系统,安装好后使用方法类似百度网盘,OneDrive之类的产品。同时它提供手机、平板等客户端,功能非常强大。
https://nextcloud.com/
通过OMV的docker插件,直接下载nextcloud的官方镜像,即可使用,省去了很多麻烦。唯一的问题就是网络,docker默认的网络是一种类似NAT的网络,只能通过端口映射开放有限的端口给容器。而手机端连接时,服务器地址只允许填写IP。所以,需要给容器配置一个与宿主机同网段的独立IP地址。方法如下:
1. 在OMV系统->服务->Docker->Networks,新建一个网络,subnet填网段地址,网关填宿主机的网关地址,parent填宿主机的网卡接口
2. 新建docker容器时,网络模式选择Macvlan,IP地址选希望给容器分配的地址
3. 启动容器后,就可以通过非宿主机的电脑直接访问容器了。但是,这种方式宿主机与容器之间互相无法访问,如果需要访问,接着在宿主机输入以下命令即可:
ip link add mac0 link eth0 type macvlan mode bridge //在eth0接口上桥接子接口
ip addr add 192.168.31.203/24 dev mac0 //给子接口mac0分配ip
ip link set mac0 up //手工启动子接口
ip route add 192.168.31.202 dev mac0 //添加路由,通过子接口访问docker容器
至此NAS的基本功能已经搭建完毕,其余个性化虚拟机、插件、容器的安装思路都是类似的。