免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 17432 | 回复: 0
打印 上一主题 下一主题

[其他DFS] 高性能大容量分布式目录服务FastDIR简介 [复制链接]

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2022-01-20 16:33 |只看该作者 |倒序浏览
    作为通用分布式文件系统FastCFS核心组件之一,FastDIR是一款高性能、大容量分布式目录服务,除了支持文件系统基本特性外,还实现了如下特性:
   * 支持全部类型:如socket、字符设备、符号链接等,还支持硬链接
   * 文件锁:完全支持POSIX文件锁,支持按范围加/解锁;
   * 文件扩展属性(x-attribute):V2.0开始支持,用于保存存储池相关属性。


    FastDIR支持命名空间,一个命名空间对应一套目录结构,多个命名空间的目录结构相互独立,可以通过命名空间隔离不同应用。FastCFS V2.0开始支持存储池,一个存储池对应FastDIR的一个命名空间。


    如果采用传统的加锁方式实现目录结构的修改和访问,因锁的粒度较大,会存在性能瓶颈。FastDIR引入了数据线程,一个数据线程管理多个命名空间(目录结构),数据线程以无锁方式存取其管辖的目录结构。为了充分发挥多核CPU的能力,数据线程可以配置多个。FastDIR按命名空间路由到数据线程,一个命名空间下的目录结构只由一个数据线程处理,因此不需要锁。


    FastDIR在内存中使用跳表(skiplist)存储目录结构,简单高效。跳表由基础库libfastcommon提供,跳表及其结点的内存分配均使用对象池。通过实测一个inode占用内存大约270字节,由此推算64GB内存可以存放2亿个inode(注:内存使用量按80%计算)。


    FastDIR采用binlog用于集群内数据复制,binglog也是数据持久化的一种实现方式,程序启动时通过binlog重放把数据全部加载到内存中。V3.0通过存储插件实现数据持久化,按需加载数据,配合LRU淘汰算法,单机以有限内存(如64GB)支持百亿级海量文件。


    存储插件采用inode持久化数据和原有binlog配合的做法,对修改后的inode数据异步落盘,简单高效。数据落盘需满足如下两个条件之一:
    * 修改的inode数目达到阈值,比如102400个;
    * 超过时间间隔,比如60秒。


    FastDIR存储插件的LRU淘汰算法具有如下两大特点:
    * 按目录结构淘汰:先淘汰子结点,然后淘汰父结点;
    * 按数据线程淘汰:每个数据线程作为一个独立的数据单元,数据存取和淘汰均在其数据线程中以无锁方式完成。


     友情提示
      * FastDIR是通用分布式目录服务,可以单独部署,用来存储其他场景下的目录结构;
      * 如果文件数只有千万级,不需要启用存储插件;
      * 在生产环境启用存储插件,建议使用SSD,推荐使用NVMe SSD。


    FastDIR存储插件可以随时开启和关闭,请大家在FastCFS项目官网下载使用最新版本V3.1,有任何疑问和建议,欢迎随时反馈和交流。


    附FastCFS项目地址:https://gitee.com/fastdfs100/FastCFS

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP