专利名称:一种面向分布式文件系统的主动重复数据删除方法
技术领域:
本发明涉及分布式存储系统领域,具体涉及一种面向分布式文件系统的主动重复数据删除方法。
背景技术:
分布式存储系统一般采用客户端/服务器架构,数据保存在服务器上,而客户端的应用程序能够像访问本地文件系统一样访问位于远程服务器上的文件。传统存储厂商的研发重点都在向云存储技术方面迁移,分布式文件系统构建云存储是当前云计算发展的一个重要方向。重复数据删除技术是一种数据缩减技术,通常用于磁盘备份系统,旨在减少存储系统中使用的存储容量,它的工作方式是在某个时间周期内查找不同文件不同位置的重复 数据,并将重复数据采用指针地址表示,达到减少存储用量的目的。重复数据删除技术的核心理念是在存储数据时检查和比较已存在的数据,如果它们是相同的,那么就过滤掉这部分数据的备份,然后通过指针引用已经存在的数据。重复数据删除是当前存储领域一个比较热门的研究课题,因为它能给整个存储系统甚至是整个企业带来很多明显的好处。传统的重复数据删除技术是一种被动的数据删除技术,主要用于备份阶段和数据传输阶段,但该方法需进行大量重复数据查找大大增加了工作量,影响工作效率。
发明内容
本发明针对目前重复数据删除技术存在的不足之处,提供一种面向分布式文件系统的主动重复数据删除方法。本发明所述方法基于分布式文件系统的I/O读写特点可以简化重复数据查找,将重复数据删除技术从后台移到前台,在将重复数据写入存储之前消除重复数据。本方法解决所述技术问题采用的技术方案如下在写入数据之前,首先通过数据位图校验当前数据是否已经存在,如果存在则修改数据目标指针,否则写入数据并更新数据目标指针,以此完成避免数据重复写入。分布式文件系统基于数据块实现数据存储的负载均衡,对于常见的分布式文件系统,文件存储被分为若干chunk,每个chunk具有固定的大小(一般为64MiB,但最后一个chunk例外),它又分为固定数目的block (—般为1024个),且block的大小也固定(一般为64MiB)。Block摘要位图表示为数据块摘要值(例如CRC32)与数据块地址对,给定一个block摘要值,通过Block摘要位图可以迅速判断具有相同数据的block是否已经存在,并获取地址。本发明所述方法的系统构成包括客户端、元数据、存储服务器、Block摘要位图和文件,其中客户端通过查询元数据获取文件的物理存储位置,客户端与存储服务器直接交互进行数据传输,存储服务器通过查询block摘要位图确定输入数据是否已在文件中存在。该方法的具体实现步骤如下
(1)客户端通过查询元数据服务器获取文件的物理存储位置;
(2)客户端与存储服务器直接交互进行数据传输;
客户端缓存数据,构造若干block,同时计算每个block的数据块摘要值CRC32值,以block为单位进行数据传输,同时传输相应block的CRC32值;
存储服务器接收到block以后,计算block的CRC32值,并验证与传输过来的CRC32值是否相同,完成数据传输校验;
(3)存储服务器通过CRC32值查询block摘要位图,确定当前block是否已经存在系统之中
如果block已经存在,则修改chunk中的地址指向已经存在的block地址 否则将block写入本地存储,并将这个block的地址写入chunk。本发明的有益效果是该方法将传统上运行于后台的重复数据删除技术移到数据I/o操作之前,在写入重复数据之前消除重复数据的存在,从而节省存储空间和存储I/O操作时间,对于提高分布式文件系统的I/o读写速度和缩减存储系统的使用,具有明显的效果O
图I是数据写入处理流程图。
具体实施例方式下面结合附图对本发明的方法作进一步说明。本发明所述方法是鉴于分布式文件系统的1/0读写特点,在数据写入存储之前就已主动完成重复数据的查询和删除工作的方法。该方法的系统构成包括客户端、元数据、存储服务器、Block摘要位图和文件,其中客户端通过查询元数据获取文件的物理存储位置,客户端与存储服务器直接交互进行数据传输,存储服务器通过查询block摘要位图确定输入数据是否已在文件中存在。该方法的具体实现步骤如下
(O客户端通过查询元数据服务器获取文件的物理存储位置;
(2)客户端与存储服务器直接交互进行数据传输;
客户端缓存数据,构造若干block,同时计算每个block的数据块摘要值CRC32值,以block为单位进行数据传输,同时传输相应block的CRC32值;
存储服务器接收到block以后,计算block的CRC32值,并验证与传输过来的CRC32值是否相同,完成数据传输校验;
(3)存储服务器通过CRC32值查询block摘要位图,确定当前block是否已经存在系统之中
如果block已经存在,则修改chunk中的地址指向已经存在的block地址,否则将block写入本地存储,并将这个block的地址写入chunk。通过以上步骤,本方法将重复数据删除技术从后台移到前台,在数据写入存储之前就已经主动完成了重复数据的查询和删除工作,因此,可以最大限度的节省存储空间,显著提高分布式文件系统的I/o速度。
除说明书所述的技术特征外,均为本专业技术人员的已知 技术。
权利要求
1.一种面向分布式文件系统的主动重复数据删除方法,其特征在于基于分布式文件系统的I/o读写特点,将重复数据删除技术从后台移到前台,在将重复数据写入存储之前主动完成重复数据的查询和删除工作,在写入数据之前,首先通过数据位图校验当前数据是否已经存在,如果存 在则修改数据目标指针,否则写入数据并更新数据目标指针,以此完成避免数据重复写入,系统构成包括客户端、元数据、存储服务器、Block摘要位图和文件,其中客户端通过查询元数据获取文件的物理存储位置,客户端与存储服务器直接交互进行数据传输,存储服务器通过查询block摘要位图确定输入数据是否已在文件中存在,具体实现步骤如下 (O客户端通过查询元数据服务器获取文件的物理存储位置; (2)客户端与存储服务器直接交互进行数据传输; 客户端缓存数据,构造若干block,同时计算每个block的数据块摘要值CRC32值,以block为单位进行数据传输,同时传输相应block的CRC32值; 存储服务器接收到block以后,计算block的CRC32值,并验证与传输过来的CRC32值是否相同,完成数据传输校验; (3)存储服务器通过CRC32值查询block摘要位图,确定当前block是否已经存在系统之中 如果block已经存在,则修改chunk中的地址指向已经存在的block地址; 否则将block写入本地存储,并将这个block的地址写入chunk。
全文摘要
本发明提供一种面向分布式文件系统的主动重复数据删除方法,该方法基于分布式文件系统的I/O读写特点可以简化重复数据查找,将重复数据删除技术从后台移到前台,在将重复数据写入存储之前消除重复数据,其技术方案如下在写入数据之前,首先通过数据位图校验当前数据是否已经存在,如果存在则修改数据目标指针,否则写入数据并更新数据目标指针,以此完成避免数据重复写入。该方法与现有技术相比,最大限度的节省存储空间,显著提高分布式文件系统的I/O速度。
文档编号H04L29/08GK102880671SQ201210328959
公开日2013年1月16日 申请日期2012年9月7日 优先权日2012年9月7日
发明者颜秉珩, 张明富, 张俊, 张现忠, 崔赢 申请人:浪潮电子信息产业股份有限公司