如何在一台无nvme缓存盘运行truenas scale尽量跑满万兆
去年暑假开始时,站长的dl20G9(没错就是我写文章时用的那台)寄了。趁着这个机会,站长把NAS换成了一直以来非常想拥有的服务器————HP microserver gen8。但是这台机子有个致命缺陷,它只有一个pcie接口,插了万兆网卡后不能插NVME协议的缓存盘。这就..................很蛋疼了,但我不想妥协,便购买了一个INTEL S4500作为缓存使用。但是我犯了第一个错误,将它插在SATA5上.........这个接口的速率只有SATA2.0,完全不能发挥出SSD的实力。所以我又购置了个转接架,将它插在SATA1上。这里要注意了,microserver gen8只有SATA1和SATA2是SATA3.0速率的,其余均为SATA2.0速率的,我一开始不知道这件事情,导致读写速率没多大提升。但是即使我改变了硬盘接口,读写速率仍然不理想无法跑满SATA3.0速率。没办法,我就开始尝试参考https://www.chiphell.com/thread-2582831-1-1.html这个帖子去硬改我的服务器。但不知道是我手法不行还是什么原因,拆分一直失败,NVME转接卡和PCIE拆分卡再度陷入吃灰的局面。但我还不愿意放弃,随后便去搜索ZFS缓存相关的资料,发现truenas是会将内存作为ARC缓存使用,但是默认分配大小只有百分之十。但我的NAS只做文件共享,所以我16G内存直接分配了12G给它做ARC。之前一直困扰我的另外一个原因则是,truenas里的L2ARC缓存并不是其他系统那种,把传来的数据暂存,而是专门记录写入操作,能把零碎的同步写入请求聚合起来,变成大块顺序写入,从而达到大幅提升写入响应速度的效果。要实现暂存数据,我们应该是在存储池中选择选择SLOG而不是L2ARC。但起初我切SLOG后传输效果更加差了,后来查阅资料后才得知是由于我的NAS在等待把SLOG中的数据写入我机械硬盘后才提示完成传输,这就会显得传输速度很慢。要解决这个问题,激进的解决方法便是禁用同步写入,在数据写入缓存后便提示传输完成。但是在写入过程中突然断电或者系统崩溃,最后几秒正在写入的数据有可能会丢失。不过对于电影、音乐这些可以重新下载的“非关键数据”,这个风险通常可以接受。但如果是重要的数据库文件,就不建议这么做了。所以如何设置这点,就要见仁见智了。但我这台服务器始终是个老家伙了,让它跑满万兆始终是有它难度在的,所以我这里方法只能为你尽量靠近万兆传输速度,但要是你在更高级的NAS中使用这种配置方法,应该能够为你有效提升文件传输速率。
最后在这分享一下怎么强制扩大ARC的大小吧。
1、登录管理界面:打开浏览器,进入你的 TrueNAS SCALE 管理页面。
2、找到脚本设置:点击左侧菜单栏的 系统设置(System Settings) > 高级(Advanced)。在页面右侧找到 初始化/关闭脚本(Init/Shutdown Scripts),点击 添加(Add)创建脚本。
在创建脚本的选项中,我们可以这样填
描述(Description):随便填一个,比如 Increase ARC Max。
脚本类型:选择 命令。
命令:在这里输入你想设置的任务,比如说我在这里将ARC设置成12G,则是:
echo 12884901888 > /sys/module/zfs/parameters/zfs_arc_max
何时执行:选择 预初始化,确保在系统服务启动前就完成设置。
3、保存并重启:点击 保存(Save)。之后,你需要重启你的服务器,这个设置才会正式生效。
好了,感谢您的耐心观看,希望这能帮到您同时欢迎在评论区留下宝贵的评论,谢谢。








