美文网首页
Robinhood策略引擎

Robinhood策略引擎

作者: 要厉害的 | 来源:发表于2020-06-19 00:19 被阅读0次

    Robinhood策略引擎是一个目标管理大型文件系统的工具。发布于2013年。它所能提供的功能有

    - 提供可定制策略引擎完成一些存储任务

    如,提供数据一致性检查策略(定期检查数据的checksum是否一致),根据文件名称、大小等将文件归类、删除,定期删除不常用的文件,到达一定容量后进行文件处理等等,非常灵活。操作涵盖压缩、拷贝、删除、删除目录、

    - 记录和计算基于用户或用户组的情况

    - 提供执行策略的报告(rbh-report)

    - 提供根据策略的du情况(rbh-du命令) 

    - 提供根据策略列出文件情况,即find效果(rbh-find命令)

    - 提供状态查看和告警机制(可以邮件发送)

    - 提供针对扫描效果的benchmark和一些优化建议

    Robinhood基本原理是实现了一个位于大型文件系统客户端的多线程扫描程序(C语言实现,为啥用C,或许其启动的目的是提供给Lustre使用),将文件系统的元数据存放在数据库里(默认MySQL或者Mariadb)。这样做元数据操作只要操作数据库就可以。优点:例如对find和du这样需要涉及大量元数据操作的场景,操作数据库比从元数据节点效率高很多。

    使用

    数据库最好和扫描使用的客户端在同一台机器上减少延迟(数据库是对延迟敏感)。

    其对任何使用Posix接口的文件系统均适用。对Lustre还有额外的适配(利用了文件系统的日志)。

    每个文件对应约1KB的存储空间。

    内存越大越好,让数据库信息存放在内存里。(多数基于数据库的应用都有这种考虑。)

    SSD能提供更高的IOPS和延迟,最好不使用HDD作为存储介质。使用Writeback模式。(MySQL数据库优化里也提过这一点。)

    主频越高越好,而不是看核数(说明实现可能基于单个或少量的线程、而不是多线程)。

    大型文件系统需要在多个客户端上执行(受限于单个客户端的能力),时间也很长可能长达数周或月。比如客户端A扫描/dir1目录,客户端B扫描/dir2目录。数据库最好为统一的一个。

    基本使用命令

    创建元数据存储的数据库

    提供名称、域名、密码等参数。

    rbh-config create_db <db_name> 'localhost' 'rbh_password'

    进行扫描

    可将日志输出

    robinhood --scan --once  -L stderr 

    执行策略。执行一次名为cleanup的策略,在执行完成后进程退出。

    robinhood --run=cleanup --once

    使用场景

    有一定规则策略的应用非常适合使用该工具,特别是定时归档和删除的场景。可以作为rsync工具的替换。

    同时该引擎也有明显的缺点:对客户端扫描太快和太慢都有弊端,太快占用存储系统整体性能,太慢处理不了实时性很高的任务。针对Lustre可以接近实时,但是其它提供POSIX接口的文件系统就没那么幸运了。笔者认为其对实效性要求较高的场景不适合。较大的文件系统需要人为规划任务,或者机械切分非常不智能。除此之外,它最新版本是3.1.5,但是有一年没有更新了,不活跃更新的开源软件维护成本很高。

    相关文章

      网友评论

          本文标题:Robinhood策略引擎

          本文链接:https://www.haomeiwen.com/subject/sxvpxktx.html