差不多一年前开始折腾家里的 NAS,一直想着把过程和心得记录下来,却迟迟没有动笔。希望接下来能克服惰性,分成几期把 FreeNAS 的使用和配置做一个系统地梳理。现有网上的相关资料也不是很完整,希望能抛砖引玉,给大家有所参考。
什么是 NAS 想必就不用我多说了。NAS 全称是 Network Attached Storage,即通过网络来集中存储和访问文件及数据。市面上的家庭存储产品有很多,没有绝对的优劣之分,重要的是根据需求选择最适合自己的方案。
目前的家庭NAS方案大致可分为三类:
我自己的需求是兼顾家庭和工作用途(家里一个老码农和一个学术民工_),容量需求大约15-20TB,可以满足今后几年家庭照片、多媒体内容和工作数据的增长。并且具备一部分像压缩、快照、增量复制这样的高级存储功能,同时还能在 NAS 服务器上运行 GitLab、Syncthing 这样的服务程序。怎么样,有点贪心吧?所以,本文方案的定位是家庭工作存储,也就是比一般消费级家庭存储的需求要略微复杂一些,这也是最能发挥 FreeNAS 长处的地方。当然即使你一开始的需求比较简单,但是你有一颗热爱探(zhe)索(teng)的心,你同样能用这套 DIY 的 NAS 系统来做很多有意思的事情。
FreeNAS 是一款开源免费的专门用于构建 NAS 服务器的专业操作系统。FreeNAS 可以轻松把一台普通的台式电脑变成存储服务器。它基于 FreeBSD 开发,在 BSD License 授权写一下发布,主要运行在 x86-64 架构的计算上。
FreeNAS 采用 ZFS 文件系统存储、管理和保护数据。ZFS 提供了诸如轻量级快照、压缩和重复数据删除等高级功能。可以快速的将数据增量备份到其他设备,带宽占用少,可有效帮助系统从故障中转移。
这里 ZFS 才是真正的黑科技,可以说是最强大的单机文件系统(没有之一)。也是昔日巨头 Sun 公司的一大遗产,可惜生不逢时,在分布式存储兴起的潮流中没能成为企业级市场的主流。如果想要更详细地了解 ZFS,可以参考 FreeNAS 文档。
举例来说,在我们四盘位 NAS 系统上能够发挥 ZFS 的一大优势是组成 RAID-Z。RAID-Z 与通过 RAID 卡实现的 RAID-5 相比,不仅有和 RAID-5 一样的空间利用率,而且数据可靠性、故障恢复能力和读写性能都更好。不过代价是比普通 RAID 系统付出更多的 CPU 和内存资源开销,当然这对于 DIY NAS 服务器的硬件配置来说不会是什么大问题。
虽然理论上,任何标准 x86 系统都可以安装 FeeeNAS 用作 NAS 服务器,但是对于一个稳定高效的家庭工作存储来说,合适的主机平台也是必不可少的。HP ProLiant MicroServer Gen8 就是这类小型服务器方案的首选(现已升级到 Gen10)。
Gen8 有着非常紧凑的体积,面板的大部分面积就是4个3.5寸盘位。最主要的是,它是完全按照服务器标准设计的,这点是 HTPC 和廉价黑群晖比不了的,非常适合放在家里的墙角持续运行。比如:支持带 ECC 校验的内存;可热插拔的盘位;内置 USB 插口或 SD 卡作启动盘;iLO 带外管理等。
Gen8 的官方出厂配置还是显得有些低:CPU 是 G1610T,内存最高4GB。如果要玩转 FreeNAS 和有尽可能多的扩展能力,建议能将配置都升级到最高,最少也要将内存升级到16GB。当然这些我们都不用操心啦,某宝上有许多卖家提供了打包的方案(现在有可能只能买到 Gen10 了),肯定比自己单弄要合算,当然得确保是原厂新机。
最终我从某宝购入的机器配置是:
机械硬盘作为 NAS 的主要数据存储,这里选用4块东芝 X300 系列 6TB 7200转 SATA 盘在 FreeNAS 中组成一个 RAID-Z 阵列,裸容量共24TB,可用容量18TB,约15.4TiB。
单盘6TB是目前性价比比较高的配置,选用东芝7200转台式机硬盘而不是低转速的 NAS 专用盘,一方面是对该存储也有一定的性能要求,另一方面一些额外的数据保护设计也完全可以通过 ZFS 冗余和软件能力替代。
SSD 对于 FreeNAS 来说并不是必须的,不过手上正好有一块升级换下来的三星 850 EVO 250GB 固态硬盘,可以装在 Gen8 的光驱位用来给 FeeeNAS 作交换分区、ZIL 缓存和虚机镜像文件,对系统起到性能优化的作用。
ZIL 是 ZFS 中的写缓存,将 ZIL 放在 SSD 上对随机读写性能有显著提升。虽然 FreeNAS 官方建议要将 ZIL 设备放在高速和高耐久性设备上,而不是像 850 EVO 这样的 TLC 芯片的 SSD。不过考虑到家庭环境下 NAS 的负载本来就不大,再加上 850 EVO 的写入寿命已经不错,还有 SLC 缓存的优化作用,充分利用 850 EVO 来做加速是不成问题的。
原本 850 EVO 上剩余的空间大小是比较适用作 L2ARC,也就是 ZFS 的读缓存的。不过 L2ARC 对内存的开销过大,除非有64GB以上的内存,才可能考虑启用。
安装 FreeNAS 需要有一个独立的启动盘。Gen8 有一个内置 USB 口和 Micro SD 读卡器,用一个优盘或者 MicroSD 卡作为 FreeNAS 的启动盘都是可以的。不过实际试验下来,SD 卡的工作可靠性总体要更好些。这里选用三星 EVO Plus 64GB,读写分别可达100MB/s和60MB/s。
除了 RAID-Z 提供的冗余能力外,我还希望通过 ZFS 的增量复制能力,对重要数据定期做一个冷备份。所以另外增加了一块希捷 Backup Plus 5TB USB3.0 移动硬盘接到 Gen8 背面的 USB 端口,确保在紧急情况下,能从单块磁盘中恢复重要数据,使得数据更加“万无一失”。
在首次开机后,先按F9
进入 BIOS 设置菜单,按以下菜单路径禁用板载 RAID 而启用 SATA AHCI 模式:System Options
-> SATA Controller Options
-> Embedded SATA Configuration
-> Enable SATA AHCI Support
。并且确保不再改动此设置,否则会引起数据丢失!
接下来通过 GParted 启动盘引导系统,并将4块 HDD 和1块 SSD 的分区初始化为 GPT 格式,将 SD 卡的分区初始化为 MBR 格式。这样可确保 FreeNAS 系统和引导记录能正确安装在 SD 卡上。
通过自建 NAS 服务器的方式来搭建家庭工作存储的优势在于灵活性和可扩展性。
本方案基于 FreeNAS 开源 NAS 操作系统,选用 HP ProLiant MicroServer Gen8 为服务器主机,FreeNAS 系统安装在 Gen8 内置的 MicroSD 卡上,通过4块东芝 X300 系列 6TB硬盘组成 RAID-Z 阵列,并在一块三星 850 EVO 250GB SSD 上开启 ZIL 缓存加速,另附加一块5TB的移动硬盘用作数据备份。
下一篇将会介绍 FreeNAS 的安装和配置。