基于 truenas/zfs 是否有较好的冷热数据 smb 无感访问的方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
23f0baf3
V2EX    NAS

基于 truenas/zfs 是否有较好的冷热数据 smb 无感访问的方案

  •  
  •  
    23f0baf3 2023-06-12 22:13:56 +08:00 2456 次点击
    这是一个创建于 904 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,现在有一台 NAS 配置了万兆,128G 内存,16 核 CPU ,16TBx9 RAIDZ3 zfs ,安装了 truenas 。另外有 2TB nvme 的硬盘目前没有使用。想问请问下是否有较好的冷热数据 smb 无感访问的方案?

    目前大概情况如下,一天可能会处理上百 G 的数据,中间需要频繁进行数十 G 的大文件和数万个小文件读写,数据逻辑结构清晰,每个数据一个文件夹就可以,目前使用 smb 挂载 ZFS 的机械盘分区发现性能较弱,大文件往往只能跑到 500-600M/s ,小文件 80-100M/s 。希望使用上 NVME 硬盘达到性能优化。

    主要想法:每日数据在 NVME 硬盘进行处理,下班后等空闲时同步一份到机械盘,NVME 盘空间不足一定量后进行释放。但是希望能无感在 SMB 中访问,不要用户手动拷来拷去。就是访问时 NVME 盘中有文件夹的就用 NVME 的,没有文件夹的直接读机械的,不需要对机械进行读 cache 类操作。

    目前了解上 ZFS 的技术 ARC,L2ARC,ZIL 等似乎都和需求不是特别匹配,也欢迎大佬给出建议。
    8 条回复    2023-06-15 12:14:22 +08:00
    AkaGhost
        1
    AkaGhost  
       2023-06-12 22:31:51 +08:00
    TrueNAS 可以用:
    只读缓存:ARC/L2ARC
    如果你说同步写入也想要优化就用 SLOG 。

    ---

    上述方法不好用的话,可以尝试自己搓个脚本,定时把文件都 mv 到机械硬盘里,然后软链接到 NVME 的挂载点里。

    ---

    楼主可以看看: https://www.utopiafar.com/2022/03/26/how_to_improve_zfs_performance_on_freenas
    Jirajine
        2
    Jirajine  
       2023-06-12 22:34:51 +08:00   2
    overlayfs 和你描述的需求一模一样。
    把 nvme 挂载到 hdd 的上层,这样 nvme 里有的文件会访问 nvme 的,没有的会访问 hdd 的。
    23f0baf3
        3
    23f0baf3  
    OP
       2023-06-12 22:51:40 +08:00
    @wyf001912hp 这几个我大概了解过,读缓存来说 ARC 不是把几十 G 的数据放缓存里其实命中率很低,然后写缓存来说似乎这些都是优化同步写入的,而 smb 是异步写入,我理解异步写入是内存缓存,很快会被释放。ZIL ,SLOG 之类的缓存似乎也会较快释放不会长时间大规模的保存。
    楼下说的 overlayfs 可能确实比较符合我的需求,可能会用 overlayfs 加计划任务脚本实现吧
    aru
        4
    aru  
       2023-06-12 23:48:36 +08:00
    overlayfs 不能实现
    overlayfs 的底层( hdd) 是不能修改、新增、删除的
    chronos
        5
    chronos  
       2023-06-13 13:41:21 +08:00   1
    https://github.com/trapexit/mergerfs 这个应该比 overlayfs 更适合你的场景。每日操作的数据直接放到 nvme 上,通过 mergerfs 将 hdd 和 nvme 合并到一个目录,使用 smb 开放服务,再跑个定时脚本去迁移数据。
    chronos
        6
    chronos  
       2023-06-13 13:49:26 +08:00
    mergerfs 创建文件有多种规则可以选,比如使用 epmfs 时当 nvme 存在文件夹 A 时,在 mergerfs 挂载的目录下的 A 目录中创建文件时就会创建到 nvme 里。如果 nvme 空间不足,会自动创建到 hdd 中。

    mergerfs 还支持在线迁移文件和在线修改子挂载选项,只要当前文件没有在打开状态,可以直接 mv 或 rsync --remove-source-files 之类的方式迁移到 hdd 上。
    EvineDeng
        7
    EvineDeng  
       2023-06-15 10:47:27 +08:00
    我的推荐也是 mergerfs ,保留 nvme 和 hdd 本来的各自的挂载点,新增一个 mergerfs 合并后的挂载点(可以选择不同的 merger 策略,见 @chronos 提供的链接的官方文档),平时使用就用合并后的挂载点。另外搞个脚本,定期把 nvme 的内容 rsync 到 hdd (使用原本各自的挂载点),然后再依据 nvme 的剩余空间大小和文件的 Access Time 或者 Modify Time 或者 Change Time 来删除定量的文件。
    EvineDeng
        8
    EvineDeng  
       2023-06-15 12:14:22 +08:00
    另外,还有一个 SHELL 脚本: https://github.com/graysky2/anything-sync-daemon ,这个主要是指定目录,让内存作为其缓存,然后定期将内存中的东西写入到 HDD/SDD 。你的需求不能直接用这个,要对 common
    /anything-sync-daemon.in 进行改造,改成你的需求。也可以结合 mergerfs 一起使用。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5588 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 54ms UTC 01:44 PVG 09:44 LAX 17:44 JFK 20:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86