背景
1.现在越来越多的科学计算和网络服务将文件系统视为一个高速的轻量级“数据库”,将文件当做一个大目录下的无结构记录;
2.程序级的并发导致对元数据服务的并发性要求越来越高
目前文件系统的瓶颈:
1.由单一MDS管理元数据,限制了系统的扩展性
2.将目录的子树分散到不同的mds上管理,但是每个目录及其子树仍然由单一的mds管理;
3.有些系统允许将server作为代理,将请求发送到真正的server上,但是仍然没能解决单目录变化的吞吐量的限制;
4.对称的共享磁盘文件系统,虽然通过使用分布式锁和一致性缓存解决了单目录下并发更新的问题,但是对于并发创建仍然是系统的瓶颈;
5.允许客户端缓存元数据可以加速读速度,但是仍然无法解决更新操作的瓶颈问题
GIGA+的目标:
GIGA+尽量避免同步开销,并且尽量减少元数据的迁移; 客户端不换成目录的条目,仅仅缓存目录的索引信息; 客户端缓存的索引信息可能是过期的,此时客户端可能将请求发送到陈旧的server上,则陈旧的server将最新的目录索引信息返回给客户端;当有新的server加入系统时,也将元数据的迁移降到最低并且延迟通知客户端。主要包括以下几点:
1.server水平扩展data partition而不需要维持系统的同步;
2.允许使用过期的partition-to-server映射map;
3.支持在线增加server节点,并且尽量减少数据的迁移
GIGA+扩展了Fagin的extendible hash方案。extendible hash用来决定将hash值的多少bit位视为有效位,其余的bit位视为无效位留着扩展用。算法使用了两层数据结构:上层是一个indirection,称为header-table(头指针表),每个头指针指向二层数据结构的头。indirection使用一个header-table保存指向partition的指针;header-table中的多个项可以指向同一个partition。header-table中的项使用一个递增的基数索引。GIGA+中,目录条目的名字通过hash与key对应。
GIGA+中的重要变量是header-table,它保存了索引bitmap和基数。基数与bitmap的增长有关。
基数随着header-table大小的改变而改变。header-table有2r个条目,每个指向一个partition