李 乾 胡玉鹏 叶振宇 肖 叶 秦 拯
(湖南大学信息科学与工程学院 长沙 410082)(qianli160@hnu.edu.cn)
由于纠删码具备高可用性和高存储空间有效性的特点,采用纠删码为分布式存储系统以及数据中心[1-4]提供数据持久性已成为约定俗成的标准.纠删码把大数据对象划分成多个小的数据块,然后将这些小的数据块通过编码生成多个校验块,最后将这些数据块和校验块部署在不同存储群集的存储节点上.
数据更新在分布式存储系统中很常见[5-8].在许多企业的服务器和网络文件系统中,更新请求常常主导了写入工作负载(通常超过90%)[9-10].在典型的最大距离可分(maximum distance separable, MDS)MDS(n,k)纠删码存储系统中,1个数据块的更新请求涉及到n-k个校验块的更新.根据纠删码更新过程中是否有传输整个数据块,可以将更新分为2类:基于raid的更新和基于增量的更新.其中,基于raid的更新方案需要在数据节点和校验节点之间传输整个数据块,为了完成对数据节点的更新,数据节点首先需要收集所有新的数据块,然后重新计算更新后的校验块,并将其传到相应的校验节点.基于增量的更新方案只需要将数据节点上数据增量(数据块修改的部分)通过广播的方式传输到每一个校验节点,相比之下,基于增量的更新可以节省更多的IO操作和网络带宽.然而,频繁的数据更新也会导致巨大的IO操作和带宽开销.尤其在使用纠删码的键值存储系统中,对键值数据进行密集的小型更新会导致巨大的IO操作……