文章预览
CubeFS 在 3.0.0 版本支持了纠删码(ErasureCode)子系统以应对更大规模的存储需求,降低存储成本。然而磁盘故障、节点宕机等问题依然是不能完全避免的,需要后台任务来保证集群故障后快速恢复以及数据完整性、数据均匀分布等,且由于 EC 存储和多副本存储模式底层实现上的不同,实现细节亦有不同。本文结合图文和源码,阐述 CubeFS 的纠删码存储子系统——Blobstore 的后台任务调度设计和实现,重点分析后台任务的互斥机制、任务队列以及不同后台任务具体执行过程中的共通性。 01 名词解释 为方便理解源码和文章内容,下面先对 Blobstore 的一些相关名词进行解释: Volume:卷是用户数据的逻辑存储单元,通过 vid 唯一标识; Blob:进行一次 EC 计算的数据大小,用户数据先按照 blob 大小进行拆分,然后进行计算,如图在 4+4 的纠删码模式下,产生 4
………………………………