华为云计算学习:FusionStorage-DHT算法

FusionStorage-DHT算法

DHT(distributed hash table)分布式hash算法,华为指的是数据路由算法

  • VBS提供SCSI\ISICI服务,DHT算法需要解决的问题是VBS接收到数据后怎么进行有效快速的分布式存储到OSD中

SCSI协议

预备知识,简单理解VBS怎么通过SCSI协议确定到具体的磁盘
华为云计算学习:FusionStorage-DHT算法_第1张图片

  • HOST_ID,通过主板总线接口识别并加载驱动所识别的SCSI控制器
  • CHANNEL_ID,每个channel拥有一条scsi总线
  • TARGENT_ID,具体的设备,比如U盘,硬盘
  • LUN_ID,硬件具体使用还会再分成多个逻辑磁盘LUN
  • LAB_ID,LUN设备的具体哪个位置

VBS会把SCSI信息转换为VBS能识别的信息,最终的LABID就是OSD了

做法一:

  • HASH的值:LUNID+LABID(VBS中叫tree_id/branch_id)
  • HASH值的范围:0-2 ^32-1次方
  • 通过HASH值的范围和OSD通过映射平均对应
    华为云计算学习:FusionStorage-DHT算法_第2张图片
  • 存在问题:每次检索需要2^32次方,CPU寻址时间过长

做法二:

  • 通过缩减检索范围,进行合并组(FS中叫Partition),减少条目
  • Partition跟osd_id对应关系用的是mod运算
  • Partition范围3600个组,过大影响检索,过小会影响OSD数量
  • 关系是N:1,Partition可以对应多个同样的OSD
    华为云计算学习:FusionStorage-DHT算法_第3张图片
  • 存在问题:当增加或者减少OSD数据会被重新分配,因为OSD进行的是规律分配对应组

做法三:

  • OSD需要变成无规律分配对应,需要使用映射表做无规律的对应记录
  • Partition-osd_id形成映射表

总结

LUNID+LABID进行HASH得到HASH值
HASH值进行mod运算得到Partition
Partition–>OSD映射关系

问题:

关于存储池最大容量是多少?
一套fs仅有一个控制集群(MDC,ZK辅助),可以有多个存储池,存储池由多个OSD组成

  • 存储池:DHT环 ------- 1:1
  • DHT环是基于数学的建模,理解上就是一个环(没有真实这样的环存在),作用就是Partition–>OSD映射关系

华为云计算学习:FusionStorage-DHT算法_第4张图片

  • hash值:扇区空间 ----- 1:1 (一个hash对应一块硬盘最小扇区大小)
  • 扇区空间-----512bytes
  • DHT环:hash------ 1:2^32

存储最大空间=2^32 *512bytes=2TB,所以一个卷也就最大为2TB

问题解决:

  • 增大扇区空间大小,FusionStorage认为合理值为1M,存储空间就扩大了1024*8倍
  • 扇区空间过大导致磁盘空间的浪费及数据分配不均衡,过小导致IO降低

做法:

要2个地方进行修改切片1M?

华为云计算学习:FusionStorage-DHT算法_第5张图片

你可能感兴趣的:(华为云计算)