上一篇文章介绍了FastCFS服务端两大核心组件:FastDIR和FastStore。其中FastDIR管理文件元数据,FastStore以分块方式存储文件内容。FastDIR和FastStore均采用Master/Slave结构,Master不需要手工配置,由程序自动选举产生,并且做到了failover。FastDIR架构是FastStore架构子集(特例),因此我们着重介绍FastStore的架构及其特点。
无图无真相,先上FastStore的架构图。
FastStore对服务器和数据均采用分组方式,服务器分组简称 SG,为物理分组;数据分组简称 DG,为逻辑分组。FastStore的server各自管理数据块(文件块)索引,数据块的元数据采用无中心的分布式架构。FastStore本质是一个分布式KV系统,key是数据块所属的对象ID(inode) + 偏移量(offset),value是数据块内容。FastStore采用的数据路由规则:数据块key按数据分组数(DGC)求模得出所在的数据分组,即:block_hash_code % DGC。可见DGC一旦确定就不可更改,否则将导致数据访问混乱!如果数据增长远超预期需要增大DGC,只能搭建一套新集群,在新旧两套集群并存的情况下,把原有数据手工迁移到新集群,迁移完成后切换到新集群。
一个SG由一台到多台服务器组成,组内的数据是冗余关系