高性能大容量分布式目录服务FastDIR简介

    作为通用分布式文件系统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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happy_fish100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值