从成品NAS换到自组FreeNAS 11.3,这个念头其实在我心里盘踞了很长时间。之前两年多我用的是一台四盘位成品NAS,日常存照片、跑下载、备份手机相册,表面看没什么大毛病,但真到想扩容、想加功能的时候就很被动:盘位满了不好换、配置太低跑不动虚拟机、系统里很多功能是黑盒,出了问题只能按厂商逻辑来。后来看到一个朋友用FreeNAS组了一台八盘位的机器,ZFS的可靠性、快照和复制功能我都眼馋很久,加上11.3这个版本在易用性上有明显进步,干脆趁着周末把方案定了下来。这篇文章就是我搭建和使用了几个月后的完整心得,从为什么选11.3、硬件怎么配,到安装、建池、共享、插件以及后面踩过的各种坑,都一次性讲透,给想自组NAS的人一个能直接参考的路线。
1. 从成品NAS转向FreeNAS:先把这笔账算清楚
1.1 成品NAS好是好,但总有些地方让人憋屈
成品NAS最大的优势是省心:开箱、插盘、联网,跟着向导点几下就能用。可是当你的需求稍微超过“共享文件夹”这个层面,难受的地方就陆续冒出来了。
第一个是盘位。四盘位的机器看着很够用,但你还得分出一块或两块做校验和冗余,真正能存的容量其实没多少。等把照片和电影塞进去之后,想再加盘,只能整机淘汰或者外接设备,数据和设备绑得太死。第二个是性能。成品机为了控制功耗和成本,很多用的都是低功耗平台,跑跑SMB没问题,但一旦开索引、跑缩略图、装几个Docker容器,CPU就长时间满载,这个时候操作界面都跟着卡。
第三个问题更隐蔽:权限、快照、同步这类数据管理功能,在成品系统里往往是简化过的。要么只能选预设的方案,要么很多操作不够透明。比如文件权限出了问题,你很难知道系统内部到底发生了什么。所以对我来说,自组FreeNAS不是图新鲜,而是把数据的控制权拿回自己手里。
1.2 11.3为什么值得在这个节点入局
FreeNAS的版本分支不少,我之所以直接锁在11.3,而不是最新的某个测试版,主要是因为11.3在架构和易用性上是真正的分水岭。
11.3把原来的插件管理从Warden换成了更现代的iocage,创建Jail的速度和稳定性明显提升;它同时引入了新的界面风格,信息密度更高,操作链路也更合理,老用户可能觉得改得突兀,但从新用户角度看,上手门槛降了不少。还有一个关键点是复制(Replication)任务,在11.3里配置异地备份和本机快照推送变得非常直观,不需要再通过命令行敲一堆参数。
当时让我下决心的另一个原因是这个版本已经经历了好几个小版本的修复,社区讨论资源也非常多。FreeNAS的文档虽然全面,但新手遇到的很多问题是“发生了没预料到的状况”而不是“不知道按钮在哪”,这类经验在论坛和博客里沉淀得足够多,遇到问题能搜到相似案例,对第一次搭建的人来说是很重要的安全感。
还有一点要提醒:FreeNAS 11.3对硬件的默认要求已经比早年高了不少,官方说最低内存8GB,实际体验是16GB起步才舒服。这个需求也是我后面选硬件时优先考虑内存通道数和扩展性的原因。
2. 硬件选型:一个能长期稳定跑的装机方案是怎么定下来的
2.1 最容易被忽略的存储控制器问题
自组NAS最经典的误区是随便找一块家用主板、插几块硬盘就用。表面看能用,但家用主板的SATA接口数量有限,而且很多主板所谓的RAID功能其实是软件RAID,扩展性和稳定性都不够。
FreeNAS的根基是ZFS,ZFS完全不需要硬件RAID卡的参与,所有数据冗余和校验都由系统层自己完成。所以选择硬件的核心逻辑反而变得简单:不要买带RAID功能的阵列卡,而是要用一块HBA卡(Host Bus Adapter,主机总线适配器)做硬盘通道的扩展。
我最初踩过这个坑。当时图便宜收了一块带硬RAID功能的扩展卡,默认创建了一个RAID卷后交给FreeNAS用。结果在创建池时ZFS性能奇差,原因是数据经过了RAID层又被ZFS再次管理,这层“套娃”既影响性能也影响故障时的数据恢复。后来换成一张刷成IT模式的HBA卡,让硬盘直接暴露给系统,ZFS才能完整拿到每个盘的SMART信息和控制权。
如果你也要买HBA卡,记住两件事:一是要IT模式,而不是IR模式;二是确认卡的固件支持直通,刷卡之前先查好卡的具体型号和兼容性。
2.2 网卡、内存和ECC的那些匹配问题
FreeNAS本质上是FreeBSD系统,对硬件的兼容性跟常见桌面板并不完全一致。第一个要重点确认的是网卡。
我一开始用主板上板载的Realtek网卡,结果测速稳定在读写五六十MB/s,还偶尔断流。后来查了FreeBSD驱动支持情况,发现问题出在网卡驱动上。换了一块非常普通的Intel千兆网卡后,同样环境下SMB读写轻松跑满115MB/s左右。如果有条件,建议直接上万兆网卡,但至少要确认芯片方案是被FreeBSD支持比较好的。
第二个是内存。ZFS对内存的需求没有一个“上限”,它会用动态ARC缓存尽量把热点数据留在内存里。前文提到16GB是舒服的起点,不是说8GB不能用,而是当你是多块大容量硬盘做校验池时,内存不够会明显影响随机读性能,而且ZFS检查(Scrub)这类操作也会更慢。
ECC内存的问题我说说自己的看法:如果主板和CPU支持,尽量用ECC。ZFS对数据校验很严格,如果内存本身出错,坏数据可能被写入缓存再落到磁盘,这时代价很大。说“必须ECC”有点绝对,但对存储服务器这种长期通电机种来说,ECC是性价比最高的保险。我选择的是支持ECC内存的入门级服务器平台,整体功耗和噪音也能接受。
2.3 硬盘盘位与SMR避坑
硬盘选型是整个系统里最不该省钱的地方。我一开始图容量便宜买了一批某品牌的NAS专用盘,结果其中有几块在持续写入时掉速严重,查了颗粒规格才发现是SMR(叠瓦式磁记录)盘。SMR的典型特征是写入缓存用完以后速度断崖式下跌,在ZFS的持续写入和Scrub场景下非常难受。
所以我的建议是:选盘之前一定要查清楚目标型号是CMR还是SMR,同一个产品系列里面,不同容量甚至不同批次都可能混用不同记录方式。做存储池的话尽量选CMR盘,或者你确定自己负载比较轻,SMR盘只做冷存储也能接受。考虑到ZFS的校验机制,组RAIDZ时每块盘的性能一致性非常重要,某一块盘拖后腿会直接拉到整个池的写入速度。
盘位设计我后来也做了调整。原计划直接用普通塔式机箱,但后来发现硬盘散热和减震都很重要,毕竟数据可靠性不仅取决于盘本身,也取决于工作环境。我现在用的方案是机箱内带独立硬盘笼,前置风扇直吹,整体温度稳定在40度以下。如果你盘多,这一点不能图省事。
2.4 我的最终配置单与理由
最终我定下来一套成本和性能都相对均衡的平台。CPU用的是入门级的至强E3系列,四核八线程,不支持核显但处理存储和转码绰绰有余;主板是支持ECC的入门级服务器主板,有8个SATA接口;内存上了32GB ECC DDR4,差不多把ZFS ARC给喂到了一半的水平;网卡是第一张Intel千兆,为了测试万兆还专门插了一张Mellanox的ConnectX-3双口万兆卡,驱动在FreeBSD下老而弥坚。
存储部分我没有上来就追求一堆大容量盘。起初是4块4TB的CMR盘做RAIDZ1,后来数据量上来了又加了4块,迁移成了两个池分开管理。系统盘用了两个32GB的SATA接口小容量SSD做镜像,坐系统池,不放业务数据,这样的好处是系统故障时重建非常快,而且业务数据不会因为系统盘损坏而受影响。
这些年组下来,我对这套配置的评价是“刚好够用,且留有合理余量”。你如果只是普通家庭存储,不需要那么强的计算能力,G5400这类入门级CPU配16GB内存也完全够用,但网卡一定要认真选。
3. 安装和初始配置:从ISO到第一次进入Web界面
3.1 U盘启动盘制作与安装中的小插曲
FreeNAS 11.3的安装过程其实非常简单,官方ISO做启动U盘,引导进安装界面,选择目标系统盘,确认之后就会把系统写进去。
这里有一个容易忽略的点:安装程序会把整个目标盘作为系统设备使用,而不是像普通Linux安装那样还有单独的swap分区和boot分区规划。所以千万不要手滑把数据盘选成系统盘,否则整块盘会被覆盖。另一个点是系统盘建议用SSD,小容量就行。有朋友试着用机械盘做系统盘,开机和界面的响应速度都会明显变慢,而且系统日志频繁读取的时候整台机器都会有一点迟钝。
我安装时遇到的一个小插曲是U盘引导时卡在了黑屏状态。排查后发现是U盘的主控芯片兼容性问题,换了一个知名主控的U盘后一次引导成功。这个现象不多见,但如果碰到了,不要盲目怀疑镜像问题,先换U盘试。
安装完成拔掉U盘重启,看到控制台菜单的那一刻意味着系统已经起来了。这时候默认的网络可能是DHCP自动获取,所以我会先用路由器后台找到这台机器的IP,再从浏览器进入Web界面。首次登录账号是root,密码是你在安装时设置的root密码。
3.2 控制台设置与网络配置
很多人装完FreeNAS习惯直接就进Web界面点下一步,但有些基础配置其实在控制台阶段确认更可靠,尤其是网络部分。
在控制台菜单里选择“Configure Network”进入网络设置,我先把管理接口设成静态IP,避免以后路由器DHCP地址变化导致找不到机器。这一步强烈建议做,因为你后续要配置NFS、iSCSI或各种同步任务,如果IP老变,所有服务都得跟着改。
接着设置DNS、默认网关。DNS很重要,FreeNAS要用它来解析更新服务器、时钟服务器等等。我把NTP同步也顺手检查了一遍,因为ZFS和快照对时间非常敏感,时间错乱会导致快照覆盖、复制任务无法正常判断增量。
控制台里还有一个“Shell”入口,很多人会忽略它。等系统出了问题、Web打不开的时候,Shell是唯一能帮你救命的通道。我建议新手至少在Shell里学会看两个命令:zpool status和ifconfig,这能帮你快速定位池状态和IP配置问题。
3.3 创建存储池时的那些注意点
Web界面登录后,在“存储”菜单里可以创建新的存储池。这一步是FreeNAS的核心,我把当时踩过的点总结一下。
第一点是校验方式的选择。创建池时会让你决定用哪种布局,最常见的选项是Stripe、Mirror和RAIDZ系列。Stripe没有冗余,不要碰;Mirror是镜像,两块盘互为备份;RAIDZ则类似传统RAID5/6。不要上来就追求RAIDZ2,组多大的池、选哪种冗余,完全取决于你有几个盘、能接受多长的重建时间。我自己在4盘阶段做的是RAIDZ1,后来盘多了才切换为双池方案。
第二点是“据纸质盘”容易掉进的坑。FreeNAS会在创建池时让你选择添加哪些硬盘,如果你有几块旧盘或测试盘混在里面,ZFS会忠实按照你的选择创建,但之后想从池里去掉一块盘是很麻烦的。所以在创建之前,最好在系统里先确认每个盘对应的设备号和容量标签,而不是只信盘架位置。
第三点是池名。ZFS的池名在创建后是不能改的,建议用有意义的名字,比如tank、data这类,不要用“新卷”这种没信息量的名字。名字会出现在后续所有挂载路径里,改起来很伤筋动骨。
4. 数据集、共享和自动任务:这次不像普通NAS那么简单了
4.1 池拓扑选择:镜像还是RAIDZ
很多人问我:“到底该做RAIDZ1还是RAIDZ2?”我的回答始终是一句话:“这取决于你害怕的损失是什么,而不是你希望省多少空间。”
RAIDZ1(类似RAID5)允许坏一块盘不丢数据,所需校验空间是单盘容量;RAIDZ2允许坏两块,校验空间加倍。从空间利用率看磁盘越多,RAIDZ的性价比越高,但有个关键点是重建风险。大容量盘重建需要很长时间,重建期间如果第二块盘也出问题,RAIDZ1就宣告失败。所以我个人建议:如果你的数据真的重要、盘的数量又不高于6块,RAIDZ2比RAIDZ1更稳妥;如果你只有4块盘且希望有更好的扩展灵活性,那两组两盘镜像也许是更合理的选择,因为镜像池扩容、迁移、重平衡都比RAIDZ灵活。
我自己的实际情况是:电影、镜像这类可再生的数据放在RAIDZ1里,求容量;而照片、工作文档放另一组Mirror池,求的是稳定和容错。分区管理能够让你针对不同数据制定不同的冗余策略,这也是ZFS相比传统NAS系统的一大优势。
4.2 数据集划分与配额
在ZFS里,池建好之后,你还需要在里面创建数据集。一个数据集可以简单理解为单独的文件系统,有自己的挂载路径、配额、快照和权限设置。
我最常用的做法是把不同的业务类型拆成不同数据集。比如:一个数据集放个人文件共享,一个数据集放媒体库,一个数据集放Docker/应用的数据,还有一个数据集挂下载目录。这样做的好处是你可以针对不同数据集设置不同的快照周期、复制任务和压缩策略。
压缩方面,ZFS的lz4压缩在11.3里已经可以按数据集开启。日常使用建议开启,因为它几乎不占CPU,却能在存储文本、日志和部分图片时节约不少空间。需要注意压缩是针对数据集生效的,不是对池生效,所以创建数据集的时候就想清楚未来使用场景。
配额设置我当初也没有太在意,直到有一天下载任务把数据盘塞满才意识到,需要在下载数据集上设置一个比磁盘总空间略小的配额,防止它吞掉别的数据集的可用空间。ZFS的配额是按数据集上限做硬限制的,这一点比文件系统层的“目录配额”简单很多。
4.3 共享与用户权限:Windows访问不顺畅的问题
创建了数据集,接下来就要把它共享出去。FreeNAS支持SMB、NFS、AFP、iSCSI等多种方式,普通人最常用的是SMB。
11.3的SMB共享配置比老版本人性化,但仍有一个地方特别容易让新手困惑:权限的“鱼和熊掌不可兼得”问题。FreeNAS对数据集的访问权限有两种模型:一种是类Unix的普通权限(POSIX),一种是Windows风格的ACL。你可以在共享时开启ACL模式,这样可以在共享里对用户或用户组做细粒度授权,但代价是如果你在Linux或命令行里直接改目录权限,很可能会破坏ACL结构,反而导致共享无法访问。
我遇到过一次很典型的故障:新建了一个共享,Windows端能连接,但打开文件夹提示没有权限。排查时发现是数据集的属主是root,而访问用户是普通用户。解决方法是登录Web界面,在数据集权限编辑器中把属主改成对应的用户或组,同时确认共享里启用了“允许来宾访问”或正确配置了“用户映射”。
如果是中小型家庭环境,其实建议用最简单的模式:共享里开启“启用ACL”,然后直接指定一个权限最合适的管理员用户,其他用户按需要建立账号并加入对应组。先把共享跑通,再研究更细粒度的控制。
4.4 快照和Scrub
ZFS的快照是我决定从成品NAS转出来的最重要原因之一。快照是瞬时完成的,几乎不占空间,直到源数据变化后才会记录差异。你可以对一个数据集设置定时快照:每小时一个、每天一个、每周一个,保留多个版本,这样误删文件后可以从任意快照恢复。
11.3的快照界面非常直观,在“存储”菜单中可以对数据集启用定期快照任务。我之前用成品NAS的时候也号称有“多版本保护”,但真误删了一批照片之后才意识到,成品NAS的快照是卖了很大存储空间的,而ZFS快照在这种场景里几乎不占额外空间。一次误删事故之后,我连上快照一点点找回文件,整个过程干净利落。
Scrub是ZFS特有的数据完整性校验任务,作用是定期读取池里的所有数据并对比校验和,发现静默损坏后尝试自动修复。这个功能相当于给所有硬盘做定期体检。我创建了每月一次的Scrub计划,一般选在工作日的凌晨执行。第一次完整Scrub大约用了七八个小时,之后每次都稳定在这个范围内。
5. 从Jail到插件:让NAS做点NAS之外的事
5.1 iocage与旧插件系统的差异
FreeNAS 11.3最大的变化之一是插件系统彻底转向iocage。如果你接触过早期FreeNAS 9.x或11.0的老版本,应该还记得Warden时代的Jail管理,创建速度不稳定,结构分散。iocage下的Jail创建速度和一致性都好了很多,而且每个Jail都有独立的文件系统层级和网络栈。
11.3里可以方便地在“插件”菜单安装官方仓库里的插件,比如Plex、Nextcloud、Syncthing等等。安装插件会自动创建一个对应的Jail,把应用放进隔离环境里运行。这样做的好处是应用升级、出问题时不会拖累主系统。我曾经遇到过插件应用崩溃导致整个系统负载异常,重启对应Jail就好,宿主没有任何影响。
不过要注意,插件本质上是打包好的应用,想要真正灵活还是得手动创建Jail并安装软件。插件能省掉手工配置,但人家维护者更新不及时,你用的可能是几周甚至几月前的包。我的经验是:主流大件用插件,小众工具直接进Jail里用pkg安装,两者混用最舒服。
5.2 装一个媒体服务的实际流程和坑
我安装的插件里最常用的是Plex。搭建流程不复杂:Web界面的插件页点击安装,选择版本,等待下载安装即可。装完后需要在Plex界面里把媒体库指向挂载点,这就会涉及到标题的坑:如何让插件Jail访问NAS主机的数据目录。
在11.3的默认配置里,Jail对底层目录没有自动访问权限,除非你在创建插件或Jail时把宿主机的存储池挂载进去。我最初装完Plex后,在添加媒体库时死活找不到数据集,查了一圈才发现是安装阶段没有添加存储挂载点。解决方法是编辑这个Jail的配置,在“挂载点”中把宿主机的媒体数据集路径加到Jail对应路径下,然后重启Plex服务。
另外一个容易遇到的问题就是硬件转码。Plex的硬件转码功能需要把显卡设备透传给Jail,11.3对核显或独立显卡的透传支持还可以,但不同环境下驱动差异很大。我测试了多次发现失败率高、收益低,后来干脆放弃硬件转码,依靠服务器的CPU软件转码,1080p转720p是完全吃得住压力的。如果你主要观看设备不自持硬解4K,建议先评估一下服务器CPU能不能扛住,不行再加显卡。
5.3 虚拟机要不要碰
FreeNAS的虚拟化功能基于bhyve,属于FreeBSD自研的虚拟机方案。11.3的虚拟机管理界面已经很完整,可以创建Windows、Linux和FreeBSD虚拟机。
我的态度很明确:可以玩,但不要把关键业务全部押进去。bhyve的兼容性和性能跟成熟方案相比还有一些距离,特别是一旦虚拟机里跑负载很高的任务,宿主机的CPU、网络和存储资源都会有明显压力,间接影响NAS的核心功能。
我自己的使用方式是跑了一个轻量级的Linux虚拟机,用来跑一些只在Linux下才有工具的定时脚本。更重的业务我宁可放到Jail里跑,或者用另一台小主机专门处理。如果你对虚拟化有刚需,可能需要考虑换平台,FreeNAS更适合的定位始终是“存储和存储周边的轻应用”。
6. 跑了几个月后的复盘:值得表扬的,和想吐槽的
6.1 稳定性与数据保护的真实体验
截至写这篇心得的时候,这套FreeNAS 11.3已经连续运行了几个月。这几个月里系统盘和存储池都没有出现过一次异常中断,固件更新也都正常完成。
让我印象最深的一次是某块硬盘在Scrub阶段报出了大量校验错误。当时ZFS并没有直接把整块盘标记为故障,而是把那些扇区的坏块自动重定向到预留空间,同时记录了错误信息。我在仪表板里看到预警后,果断把那块盘更换掉,全程没有中断服务,也没有丢一个字节的数据。换成以前用成品NAS,可能得先做备份、再全盘替换、最后慢慢重建,整个过程复杂得多。ZFS对数据完整性的持续校验能力和热替换能力,确实值回配置成本。
但也不是说FreeNAS完全不用管。我每两周会看一眼存储池的健康状态和硬盘SMART信息,每个月固定检查一次Scrub报告。系统的一切可靠都建立在“你及时知道出了问题”的基础上,所以邮件告警一定要配好。11.3可以在系统设置里配置告警通过邮件发送,这一步我强烈建议尽早做。
6.2 性能和功耗的取舍
性能方面,千兆网络下SMB传输可以稳定跑满110-115MB/s,无论是大文件拷贝还是小文件批量写入都能保持一致。这个数据让我整个体验非常踏实,因为成品NAS的某些低价型号在混合读写时经常掉到六七十。
万兆网络我也做了测试,多线程传输能跑到800MB/s以上,瓶颈主要在网络和中转设备的处理能力。如果你不是有很多视频剪辑或虚拟机镜像要频繁拷贝,万兆方案可以往后放,优先级没有硬盘可靠性那么高。
功耗是我一直在权衡的点。我这套平台空载大约30到35瓦,满载大概70瓦,具体取决于硬盘数量和CPU负载。对这个性能级别来说可以接受,但你要是真的追求低功耗,用G5400这类低端桌面CPU配合更少盘位会明显降低。需要注意的是,硬盘从启动到稳定运行功耗差异很大,所以如果家里经常断电或不稳定,UPS是不可或缺的。我曾经有一次停电时把Scrub中断了,重新开机后ZFS需要重新校验,虽然没有丢数据,但整个池在修复完成前性能都受影响。
6.3 一些可以少走弯路的日常小建议
最后再分享几个日常使用中最实用的小建议,这些是踩过不少次坑后才养成的习惯。
我强烈建议给系统盘做镜像。两个小容量SSD组启动池镜像,看似浪费了一个盘位,但系统盘损坏时能免去重装系统、重新导入池的麻烦,而且SSD主控出问题的概率并不比机械盘低。数据盘则根据重要程度合理选择冗余级别,至少保证重要数据在另一台机器上有备份,不要把FreeNAS当成唯一副本。
对于初次接触FreeNAS的朋友,我建议把界面和任务菜单都自己点一遍,尤其是“存储”和“系统”这两个模块下的所有选项。11.3的界面组织已经非常好懂了,大部分功能都能从界面完成,命令行只是辅助手段。不要一上来就到处抄配置命令,自己理解了再做,后面维护起来会轻松很多。
另外,系统安装完成之后,建议第一时间做一个系统配置文件备份,路径在“系统”->“高级”->“配置”里,可以手动下载一个后缀为.db的备份文件。以后不管是你改了网络、改了共享还是加了用户,出问题时都还有退路可走。
上面这些经验,就是我折腾FreeNAS 11.3以来觉得最值得分享的核心内容。从硬件选型到日常保养,每一步都可能踩进不同的坑,但当你亲手拼出一台数据可控、运行稳定且能按需扩展的存储设备后,那种踏实感是成品NAS完全给不了的。如果你也正在计划组一台,建议先从自己最核心的需求出发,再用这篇文章作为避坑参考,逐步把方案落地。