8000+字的FREENAS个人的入门及建议与安装后延伸搭建可靠备份
创作立场声明:本文所购买的所有产品均为自用,购买渠道也写明了,要是有赞助就好了,可惜并没有,一套组下来心在滴血啊。
目录
提要
配置
常见问题
ECC内存要求
单盘/条带建Pool
FreeNAS怎么装其他软件
遇到的困难与解决
Jail不互通
权限配置问题/挂载无编辑或写权限
Scrub/SMART任务
虚拟机的Debian安装花屏
UPS配置
硬盘休眠停转设置
Jail的NAT映射
安装插件以外的软件
服务搭建
使用Duplicati备份
云端服务供应商
Duplicati配置备份
Duplicati性能
额外内容
后记
提要
想拼台NAS来存家里照片和重要文件挺久的了,终于在Amazon Prime Day把硬件买完了,组了这套完整的FreeNAS系统。没上群晖,黑群兼容性是个值得思考的问题,而且升级麻烦,安装麻烦,不洗白缺功能,白群价格不便宜,性能不够高,于是就去用基于ZFS的FreeNAS了(不知道以前叫NAS4FREE的XigmaNAS怎么样)。
配置
FreeNAS的推荐最低配置是多核64位处理器,16GB ECC内存,独立系统盘,NAS专用盘,这套配置算是基本满足了(另外我买了块BX500 120GB(22.59刀)拿来亮机,居然忘记加进去了)。
ZFS已经负责RAID的功能,所以FreeNAS不需要也最好不要上 硬RAID卡,LSI的HBA卡是官方推荐。
机箱是真的贵。
常见问题
ECC内存要求:
FreeNAS乃至于ZFS对ECC的要求一直都备受争论,有传闻说基于ZFS必须上ECC不然数据很容易坏,还有理论说ZFS的Scrub(类似数据校验)这个设计会导致写入被认为"正确"的错误数据("Scrub of Death"),实际上并不会发生(如有兴趣可以参考这篇文章),ZFS的Co-founder Matthew Ahrens也说过ZFS对ECC内存的要求并不特殊,没有比其他文件系统更需要ECC。
虽然是家用,我还是上了Unbuffered ECC内存(Registered ECC对CPU和主板的要求导致基本只有E5还有Eypc这种才能用),因为E5系列太耗电,E3或者I3要上工作站主板(实在太贵)才能用Unbuffered ECC,于是就挑了AMD的Ryzen 3 Pro 2200GE,AMD的Ryzen系列的有一部分是支持直接在家用级主板上用Unbuffered ECC内存的。然而Picasso和Raven Ridge,也就是大部分APU是不支持Unbuffered ECC的(虽然有传闻说ECC功能能正常运行,只是不显示),但是Raven Ridge和Picasso的Pro系列(一般用在OEM平台上)是支持ECC的。因为Ebay没(便宜或者从美国发的)货,于是我就从AliExpress(也就是淘宝海外版)上买了一块,等了快一个月才从中国送到美国。Unbuffered的ECC还是贵,毕竟要用双倍的颗粒。
ECC仍然是推荐上,不上也不是严重影响运行,ECC只能上道保险,遇到双Bit翻转ECC内存也是无法修正的(只能报错,单Bit翻转可以修复),还有“垃圾进,垃圾出”这种情况也无济于事(原本输入的内容就是损坏的)。顺便提到,装好NAS后我第一次检验65000多张照片时发现有10多张是损坏的(不完整或翻转导致图片变样),校验多个备份都发现一样的问题,有些是十几年前就留下的问题。
如果你是给公司企业用,或者生产环境,保存重要数据,强烈建议上ECC内存,不要拿别人的数据去冒险。
单盘/条带建Pool:
单盘/条带(RAID-0)建Pool是无法使用Scrub纠错的,只能用其校验,因为Scrub在发现错误后需要用已有的拷贝(RAID-1,RAID-10)或者奇偶校验(RAID-5和RAID-6在FreeNAS不存在,只有替代的RAID-Z1,RAID-Z2,RAID-Z3)来修复。
FreeNAS怎么装其他软件:
基于FreeBSD的FreeNAS自身是不让你装软件的,为了安全和隔离。所以直接在主机上用pkg install是无效的(你要修改配置启用也没问题),一般安装其他软件或者插件都在FreeBSD自带的Jail上,在Plugins里面提供了不少官方或者非官方插件(例如Transmission,Plex等等)。Jail和Docker也是系统层虚拟化创建独立环境,当然FreeNAS也提供了FreeBSD的硬件虚拟化Bhyve,让你随便装BSD,Linux,Windows。
遇到的困难与解决
Jail不互通:
最好解决的一个,只需要给Jail加挂载点即可。
先将Jail关掉,然后进入Mount Points,右上角选择Add,选好原始路径和目标路径后确认,重启即可
权限配置问题/挂载无编辑或写权限:
权限配置是最让我头痛的一个问题(甚至考虑过放弃FreeNAS,因为一开始不知道怎么配),因为一开始我以为无法不修改拥有者就让所有规定的用户具备写权限。这也导致一开始Transmission无法下载,Plex无法删除文件。
参考iXSystems官方社区后,于是决定来让组权限具有修改和写权限,解决了所有问题
因为FreeNAS本身的部分组和Jail的组 名称和GID是相同的,于是我就直接用了wheel这个组(FreeNAS默认关闭了wheel组的sudo权限,而且大部分文件 组用户和其他用户 都是一样只有读和运行的权限,所以不用担心安全问题)
先将你挂载到Jail的Dataset的权限修改成775(组用户可读写),并设置到你需要的拥有者和组
在Jail的Shell里面输入以下内容,即可将Plex(范例,修改成Jail里软件需要的用户)加入Wheel组(范例,可以修改成你需要的组)
pw groupmod wheel -m plex
如果你想添加的组不是Jail和FreeNAS自带有相同名称和GID的组,你需要在Jail里面添加这个组(FreeNAS也要有这个组),按照FreeNAS里的组名称(范例EXAMPLE_GROUP)和ID(范例5555)添加即可
pw groupadd -n EXAMPLE_GROUP -g 5555
不建议在Jail上直接用root权限运行程序,不建议在任何情况用root权限运行程序,权限配置不周是安全隐患。
Scrub/SMART任务:
FreeNAS默认没有自动规划Scrub任务和SMART任务(也是我在看到Pool的Scrub Status一直不存在才意识到的),不过设置起来不难,直接在Task - S.M.A.R.T Tests 和 Scrub Tasks里面设置就行,右上角分别添加Long Test,Short Test,还有每个Pool的Scrub。
直接参考了其他人的配置,个人的配置是SMART 选全盘,短测试每个月5,12,19,26号 早上4点,长测试每个月8,22号 早上4点。Scrub任务也是把所有Pool在每个月1,15号 早上4点测试,阈值(Threshold)设10天(阈值是成功测试后过多少天才再次测试,例如每天执行一次Scrub任务,但是因为阈值是十天,如果第一次成功执行第二次实际执行是在十天后,如果第一次失败了,第二天又会马上执行,每天执行直到成功)。
在添加界面Schedule选Custom,然后输入需要的日期。范例是 每个月5,12,19,26号 早上4点执行,不需要更改Preset或者设置Months和Days of Week。
虚拟机的Debian安装花屏:
很迷,不知道为什么只有Debian安装会花屏。装Debian是为了用OpenConnect的一键包来方便连回家(我是真的懒^ ^),可能是和显卡,VNC,Bhyve,Debian之中哪几个不兼容吧。从Debian官网试过不少ISO都是花屏的,实在没办法。
于是就去用了netboot.xyz的网络安装,里面直接网络安装的Debian就不花屏,也真是奇怪。Netboot.xyz提供了不少Linux发行版,BSD,还有Windows的安装,挺方便的,不过有个Bug(不知道是Netboot还是Debian的关系)就是其安装的引导位置有点奇怪,导致第二次启动的时候进不了系统,不过网上有教程很好解决,移动一下引导文件就行(其实是我已经忘记具体情况了,也懒得再去重现一次了)。
UPS配置:
先把能智能管理的UPS用线(例如网线或者USB)接到NAS的机器上,我用的是APC的BE 550G,用的是USB线,所以用dmesg查看UPS用的USB端口。
dmesg | grep -i usbus
然后在Service - UPS里面进行修改。
UPS模式不用改,ID不要改(乱改识别不出来,我已经受过教训了),Driver用这个硬件表找对应UPS型号,如果是USB,直接输入/dev/ugenX.X(对应dmesg里显示的UPS所在的端口),Shutdown Mode我选了UPS被使用10分钟(图中的600秒)后自动关闭,你也可以选择UPS低电量自动关机。Monitor Password随便改下(大多数人都不需要,但是为了安全建议修改默认密码),就可以了,如果有需要可以设置邮件通知(需要SMTP,此处就不再叙述了)。
然后启动服务,把Auto Start给勾上,然后在Shell或者SSH输入以下指令,UPS就会返回状态了,可以算完成了。
upsc ups@localhost
硬盘休眠停转设置:
很多人都说Spin Down(停转)伤硬盘,没办法这里电费太贵了,全天候跑着想想就费钱(纯属个人心理想法,频繁Spin Down和Spin Up对硬盘也不好,因为启动硬盘的电压之类的,一直7x24不停跑可能还更稳一些)
不过因为设错某些个设置,导致硬盘还没买回来1个月04(启停次数),C0(磁头关闭次数),C1(负载周期次数)猛飙(04和C0 370多,C1 790多),心疼硬盘。
研究了一下发现是因为SMART服务(与SMART Task不同,SMART服务在Service那个界面,互不影响),我设置的是所有硬盘30分钟检测一次,无论状态,导致我的硬盘全部都要30分钟启动一次。马上就把Power Mode(即设置的状态不运行SMART)从Never改成了Standby(Standby状态的硬盘下不运行SMART服务)。
修改完后至少04,C0,C1飙的没那么快了,但是在运行任务的时候会莫名其妙涨,理论上运行任务是不应该停转的啊?然后才意识到硬盘的APM(Advanced Power Management,智能供电管理)设置导致运行中间还停转。
然后马上就把APM改到128(不智能自动Spin Down,只自动进入Idle状态),这里解释一下,APM和HDD Standby是互相独立的两个参数,HDD Standby只在硬盘不工作后多少时间Spin Down节能,APM(1,64,127)是在某个时间后自动进入Spin Down休眠的(导致任务还没结束就开始Spin Down,然后又马上重启)。这里我仍然保留了HDD Standby为30分钟,这也硬盘不工作30分钟后才会停转。APM是128(128和192)也就是不自动在某时间后停转,只进入IDLE或者IDLE_B的状态(磁头归位(IDLE_B)但是保持盘片旋转),如果在30分钟内有需要能马上启动,30分钟后然后再通过HDD Standby让盘片停转,以避免APM自动频繁进入Standby状态关闭盘片旋转。
此问题开头我也说了,在7x24小时的情况下,一直让硬盘转不Spin Down可能对硬盘更有利,自己酌情设置或者禁用,这个没有什么标准的。
Jail的NAT映射:
Jail的网络可以选择直接用DHCP从你的路由器获取,也可以通过NAT的方式(把FreeNAS当路由器)给每个Jail分配内网IP。很多应用我都选了NAT,因为觉得所有Jail全在实际的路由器下不美观,也占IP。看个人喜好来吧。
在Jail关机状态下,选择Edit,然后选Network Properties,最底下有个NAT Port Forwarding,勾上之后添加协议(TCP或者UDP)程序所要的Jail端口和你想要的Host端口,然后保存并重新启动Jail,访问FreeNAS的IP:Host端口就可以访问到服务了,下为例子
http://FREENAS的IP:Host端口
安装插件以外的软件:
很多软件都一键化了,网上也有其他教程如何在Jail里装特定软件例如Aria2和Aria2NG。
这里提醒一下,装了插件的Jail是不能直接用pkg install装别的软件的,需要修改一下配置。修改此路经的FreeBSD.conf这个文件
/usr/local/etc/pkg/repos/FreeBSD.conf
然后把里面的no改成yes即可,即可使用包管理系统了
FreeBSD: { enabled: yes }
服务搭建
安装Plex,Transmission这种就不在讲述了,人人都会,而且插件直接能一键安装,不麻烦,只需要搞定权限和挂载就行。Jail不行就直接用Bhyve虚拟机,更完整更隔离。
使用Duplicati备份:
因为要保证数据安全性(读作固执~~),就决定用Duplicati来备份到云端,FreeNAS上有提供很多备份的插件,但都不是很熟悉,所有没试过,Rclone在FreeNAS没有官方或者非官方插件,看着配置也挺麻烦的,于是决定用一键的Duplicati。Duplicati是增量备份,每次文件有变动才会上传修改的部分。
云端服务供应商:
然后我最后选择了两个云端备份方案:Amazon S3 Glacier Deep Archive和OneDrive for Business。前者是商业化的方案,对后者的稳定性我是有所保留。
Amazon S3 Glacier Deep Archive是非常冷的冷备,本身Amazon S3 Glacier就是储存长期备份用的,Deep Archive对数据访问的要求是更低(AWS明确写了"适用于长期保存每年访问一两次且可在 12 小时内恢复的数据"),这就意味着备份被导入后,无法即时访问到数据,取出需要12(标准取出,价格是批量的8倍)-48(批量取出,更便宜)个小时。因为Amazon S3 Glacier Deep Archive是作为极端情况(如火灾,水淹等不可抗力导致本地NAS报废,再加OneDrive for Business订阅报废,才会从Amazon S3 Glacier Deep Archive取出备份)的避险备份,基本上只输入数据到Amazon S3 Glacier,基本不再取回了。
Amazon标称99.999999999%的对象持久性(多少个9了都),然后再加“一个 AWS 区域中不同地理位置的至少三个物理可用区”(如果我的理解无误的话也就是一个大概地方(例如弗吉尼亚北部)的不同机房(例如Equinix DC1, DC12, Coresite VA1等等这些机房AWS都有托管和PoP)的至少三个物理可用区(AWS自己的可用区,在弗吉尼亚北部有六个))。如果再出什么问题,那我就真的没话说了。
Amazon S3 Glacier Deep Archive的价格也很便宜,存储1TB数据最低只要约1.01美元一个月(1GB 0.00099 USD,在弗吉尼亚北部,俄亥俄,俄勒冈,爱尔兰,斯德哥尔摩才有这个价,其他则在0.0018 USD到0.002 USD(包括亚太),也就翻个倍,在南美是0.0032USD,如果是从中国连的话建议选东京和新加坡,中国电信有直连(不知道现在怎么样),而且有Lightsail(很重要))。上传(Put Object)每1000个文件是0.05美元,获取(Get Object) 每1000个文件是0.0004美元。但是Glacier和Glacier Deep Archive需要取回文件,批量取回每1000个文件0.025美元+每GB 0.0025美元(两者都要收,一个是算请求费用,一个是算数据量的费用),在48小时内返回数据,标准取回每1000个文件0.10美元+每GB 0.02美元(4倍和8倍),在12小时内返回数据(加急费哈哈哈哈哈哈)。不过AWS还有免费额度,每个月给你2000的Put, Copy, Post,List请求(不包括Deep Archive的Put请求),还有20000的Get请求。
然而需要特别注意,AWS S3传入无流量费用,传出是有流量费用的(免费套餐有15GB,不过够谁用啊?),每GB 0.09美元,传出1TB要90美金(亚洲更贵)!不过还有别的方法,如果传出到AWS S3同区域的EC2上是免费。虽然EC2的流量也是一个价,基于EC2的Lightsail只需要3.5美元就自带1TB流量包。只要用Lightsail中继一下(比如 东京S3-东京Lightsail-你),这笔流量钱就省下了,只需要付3.5美元也就是Lightsail到你这段的费用,不过Lightsail一定要是同区域的(不选香港S3是因为Lightsail没有香港分区)。
另外提早删除也会收费,Amazon S3 Glacier Deep Archive中的文件最短须储存180天(Glacier为90天),如果提早删除,须将180天的储存费用付完(例如有1GB的数据在储存30天后删除,你仍然需要为这1GB付剩下150天的费用),超过180天则不需要付此费用。
OneDrive for Business的SLA是99.9%的可用性,不过因为订阅的关系不知道以后会怎么样。反正免费,不存白不存,如果出问题可以随时下载,比Amazon S3 Glacier要方便,顺序肯定是优先OneDrive for Business再S3 Glacier Deep Archive取数据。
Duplicati配置备份:
安装完后在浏览器打开 FreeNAS地址:8200 即可,输入默认密码duplicati,然后就可以开始配置了。
Duplicati的网页端自带中文,选新增备份,配置新备份。
给备份起名,然后添加加密(可选,也可以不加密,性能低的情况下加密可能有影响)
在Amazon的S3管理面板上创建新的S3储存桶,给储存桶起名字,选位置(中国大陆推荐选日本和新加坡),除了默认加密可以打开,其他都不建议打开。
选择Amazon S3,启用SSL(照理说应该是默认的),Bucket名称和创建区域用刚才新建时你填入的内容,存储类型选Deep Archive,文件夹路径可选填写(开头不需要加斜杠),AWS访问ID和AWS访问密钥在My Security Credentials - 访问密钥 里创建并填入,测试连接成功后即可
选择你挂载到Jail的文件夹
设置自动运行备份的时间(按你的想法来),也可以手动运行。Duplicati是增量备份,以前备份过无变动的文件是不会上传的。
按你的需求设置远程卷大小(这个大小是每个压缩加密后的文件包的最大大小,与你实际的文件大小或者实际最大备份大小无关),默认是50MB,因为AWS S3是按照文件个数收费的,所以我设置的是2GB,185GB的所有文件最后大概是183个文件(里面包含校验文件和列表文件)。备份保留选择永久保留不需要改(增量备份只上传修改的部分)。高级设置要开,把no-auto-compact和no-backend-verification打开。Auto Compact会把没达到压缩文件包最大大小的文件包合并,Backend Verification会从云下载文件来校验以确保完整性。乍一看是挺好的,但是因为Glacier性质的关系,需要取回文件才能下载,这些功能实际上是没法用的。同理,Duplicati无法直接使用 恢复功能 恢复存在AWS S3 Glacier的文件。保存完后就可以开始备份了。
如果是OneDrive for Business的话,只需要在第二步选Microsoft OneDrive v2,第五步可以调整远程卷大小,无需设置高级设置,因为OneDrive for Business可以即时下载。
Duplicati性能:
Duplicati的性能还是可以接受的,备份到Amazon S3平均120Mbps上传,备份到OneDrive for Business平均40Mbps上传(因为需要压缩和加密,此外我的OneDrive for Business节点在亚太,上传速度有影响),宽带是Verizon FIOS 1Gbps对等。
额外内容
自己有那么多照片要备份,于是我决定去检查照片完整性,看看有多少照片是损坏的了。用到了jpeginfo,最后发现65000多张照片,有10多张是损坏的,问题留下很久了,也不知道是哪里出的问题,心疼啊。
直接在Jail里安装
pkg install jpeginfo
然后在你的照片主目录下运行此命令,会递归查找此目录(包括子目录)下所有照片,只反馈损坏的照片
find . -iname "*.jpg" -exec jpeginfo -c {} ; | grep -E "WARNING|ERROR"
后记
FreeNAS配置完了还是挺好用的,就是有些地方有些麻烦。用Amazon还有OneDrive备份至少是让我自己安心了。折腾了2-3个月,写了这篇8000多字的文章,就和这一路折腾过来一样。
布衣燁隱
校验提示文案
CAUMOU秋夜日暮
其实我还加过nvme做写缓存。想提高它的随机读写和顺序读写。但是加和不加都没起作用,查了社区资料也没发现啥。
校验提示文案
sjyh
校验提示文案
春之叔
校验提示文案
huiuh
校验提示文案
值友9989976343
我的配置i7 3770K+16GB RAM+3*10GB HGST企业盘+ssd做缓存+2*10GB LAN,感觉性能有较多盈余,想装了EXSI之后再装Freenas了
校验提示文案
Butwhy
校验提示文案
蒙古国海军上将
校验提示文案
fs_2010
校验提示文案
大官人爱阿莲
校验提示文案
值友2086779077
校验提示文案
nicolar
校验提示文案
值友5234693002
校验提示文案
ShelbyMao
校验提示文案
风华流云
校验提示文案
梁下君子
校验提示文案
zm200603
校验提示文案
宇宙大波
校验提示文案
hugo007y
校验提示文案
薅着薅着就秃了
校验提示文案
值友8699710426
校验提示文案
把刀吧
校验提示文案
我的曾哥哥
我用 ryzen 3100 + b550m 也搞了一台nas。和楼主的方案相同。
请问楼主你的nas性能如何?符合预期么?有做什么性能优化么?
校验提示文案
woyaojizhu8
校验提示文案
浮萍V
校验提示文案
值友5234693002
校验提示文案
nicolar
校验提示文案
值友2086779077
校验提示文案
fgjjfgj
校验提示文案
CasparLi
校验提示文案
风华流云
校验提示文案
大官人爱阿莲
校验提示文案
lucifer_lu
校验提示文案
哈哈宝贝58
校验提示文案
CAUMOU秋夜日暮
其实我还加过nvme做写缓存。想提高它的随机读写和顺序读写。但是加和不加都没起作用,查了社区资料也没发现啥。
校验提示文案
fs_2010
校验提示文案
蒙古国海军上将
校验提示文案
值友4897617376
校验提示文案
煮鸡蛋
校验提示文案
Butwhy
校验提示文案