著录项信息
专利名称 | 一种云计算环境下的海量数据存取方法 |
申请号 | CN201110153271.7 | 申请日期 | 2011-06-09 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-09-14 | 公开/公告号 | CN102184260A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 中国人民解放军国防科学技术大学 | 申请人地址 | 湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机学院
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国人民解放军国防科学技术大学 | 当前权利人 | 中国人民解放军国防科学技术大学 |
发明人 | 廖湘科;付松龄;黄辰林;李姗姗;何连跃;吴庆波;戴华东 |
代理机构 | 湖南兆弘专利事务所 | 代理人 | 赵洪;周长清 |
摘要
本发明公开了一种云计算环境下的海量数据存取方法,包括步骤:格式化磁盘分区并在磁盘分区中设置一随用户操作实时更新的分区元数据信息;将经应用层中的数据管理系统分块处理后的数据块,逐块依次写入磁盘分区中并顺序编索引号,用户通过输入所述索引号从磁盘分区中读取对应的数据块。本发明具有步骤极度简化,能提高云计算环境下的数据存取效率、减少系统内核资源的消耗和提高系统性能等优点。
1.一种云计算环境下的海量数据存取方法,其特征在于包括以下步骤:
1)格式化磁盘分区并在磁盘分区中设置一随用户操作实时更新的分区元数据信息;
2)将经应用层中的数据管理系统分块处理后的数据块,逐块依次写入磁盘分区中并顺序编索引号,用户通过输入所述索引号从磁盘分区中读取对应的数据块;
写入数据块时,在数据块后存储一相应的用于检查数据块正确性的校验数据块,所述校验数据块根据所述数据块的内容计算得到且与数据块一一对应;所述计算数据块的校验数据块,具体包括以下步骤:将所述数据块分为A个新的校验块,定义一校验变量,并将所述A个新的校验块中的每个字节依次与所述校验变量做异或运算,每个校验块算出1个字节的校验值,共计算出A个字节的校验值,即为数据块的校验数据块,所述A为校验数据块大小;
读取对应的数据块时,要读取校验数据块,并根据校验数据块检查数据块的正确性,具体包括以下步骤:根据读取的数据块,重新计算一新校验数据块;将所述新校验数据块与从磁盘分区中读取的校验数据块逐字节进行比较,若两者相同,则判定数据块正确,否则判定数据块不正确。
2.根据权利要求1所述的云计算环境下的海量数据存取方法,其特征在于,所述分区元数据信息存储在磁盘分区中的保留数据区域内,所述保留数据区域为两块,一块位于所述磁盘分区的头部,另一块位于所述磁盘分区的尾部。
3.根据权利要求2所述的云计算环境下的数据存取方法,其特征在于,所述步骤1),具体包括以下步骤:
1.1)确定分区元数据信息;
1.2)将分区元数据信息写入磁盘分区头部保留数据区域中;
1.3)将分区元数据信息写入磁盘分区尾部保留数据区域中,作为冗余备份。
4.根据权利要求2所述的云计算环境下的海量数据存取方法,其特征在于,所述写入数据块,具体包括以下步骤:
2.1)读取分区元数据信息,并校验其完整性;
2.2)判断磁盘分区是否已满,若满则返回“磁盘已满”的错误,否则继续;
2.3)计算数据块的校验数据块;
2.4)将数据块写入磁盘分区中,并将校验数据块写于数据块后;
2.5)更新分区元数据信息;
2.6)将新的分区元数据信息写入磁盘分区中;
2.7)根据数据块的写入位置返回相应的索引号。
5.根据权利要求2所述的云计算环境下的海量数据存取方法,其特征在于,所述读取对应的数据块,具体包括以下步骤:
3.1)从磁盘分区中读取分区元数据信息,并校验其完整性;
3.2)导入用户输入的索引号,并检查其合法性;
3.3)若所述索引号合法,则根据索引号计算数据块在磁盘分区中的位置;
3.4)在计算得到的位置处读取数据块;
3.5)在该数据块后读取校验数据块;
3.6)根据校验数据块检查数据块的正确性;
3.7)若数据块正确,则将读取的数据块返回给用户,否则返回错误。
6.根据权利要求1~5中任一项所述的云计算环境下的海量数据存取方法,其特征在于,所述分区元数据信息包括:元数据校验值、分区元数据大小、数据块大小、校验数据块大小、数据块总量、已使用数据块数量和新数据块起始位置。
一种云计算环境下的海量数据存取方法\n技术领域\n[0001] 本发明涉及计算机领域的数据管理方法,特指一种云计算环境下的海量数据存取方法。\n背景技术\n[0002] 云计算是一种商业计算模型,它将计算任务分布在大量计算机构成的资源池上,使各种应用程序能够根据需要获取计算力、存储空间和信息服务;对于数据密集型服务而言,海量数据存储于云中,在用户需要时按需提取部分数据,并将计算结果返回给用户。其将位于网络中的各种资源整合在一起,为用户提供服务,用户按需取用、按用付费,就像水和电一样方便、快捷。随着信息技术的高速发展,云计算已经成为一种趋势。\n[0003] 如图1所示,现有的用于云计算环境数据管理方法,一般是运行于应用层,采用应用层的数据管理系统,所有针对应用数据特点做的优化全部在应用层完成,在底层仍然采用操作系统已有的传统文件系统来存取数据。如:Google的数据管理系统google文件系统(google File System GFS)。Google首先利用网络爬虫将网络上的海量网页信息收集到自己的云中,然后在用户搜索时,将包含用户指定关键字的网页按一定顺序返回给用户。\n这些网页信息作为一种资源在相当长的时间里都会保存下来,具有“一旦写入不再更改”的特点。GFS将数据按块(称为Chunk,每块大小64M)存储,每个数据块至少在3个数据服务器上冗余备份,每个数据块副本对应一个文件系统中的64M文件,通过一个元数据服务器对这些数据块文件进行管理。GFS不修改操作系统已有的传统文件系统,运行于应用层。\n[0004] 传统文件系统以文件的方式为用户提供数据存取的功能。要使用传统文件系统,首先需要用磁盘分区工具将磁盘进行分区,然后用传统文件系统格式化工具将分区格式化为特定的格式。用户就可以在该分区中创建目录,目录里再创建子目录,形成一个层次式的数据存储目录结构。用户可以在任意目录中创建数据文件,并将数据写入文件中。读取该数据时,首先通过分区根目录逐级向下遍历该数据文件的每一级父目录,直到找到该文件为止,然后打开文件读取其中的数据。其具体步骤如下:\n[0005] 1、格式化磁盘分区:格式化磁盘分区的主要工作是在磁盘分区头部划分一个区域,存储该磁盘分区的一些元数据信息。\n[0006] 为了支持文件系统所提供的层次式数据存储功能,元数据信息通常比较庞杂,以FreeBSD操作系统所采用的UFS文件系统为例,其分区元数据包括超级块信息、柱面组信息、inode节点表等。超级块存储有关文件系统参数的大量信息,包括柱面组大小,数据块大小,碎片的大小,还包括文件系统最后挂载时间等,通常位于文件系统起始位置的64KB处。\n柱面组信息主要包括该柱面组的目录数,空闲块数,空闲inode节点数,空闲碎片数等。每一个柱面组都拥有一个inode节点表,它用于存放本柱面组内的inode节点。每一个inode节点存储一个文件的元数据信息。每一个柱面组的inode节点表都位于柱面组的固定位置,一般为第32个碎片处,它的大小由inode节点大小和为柱面组分配的inode节点数决定。\n[0007] 2、打开文件:其主要工作是根据用户所请求的文件路径查询并取出目标文件的inode节点信息,并根据访问类型的不同,为文件加不同的锁,以维护数据一致性。在层次式的数据存储结构中,可以从任意目录的inode节点信息中检索到该目录中的所有文件和子目录的inode节点信息。下面以打开/a/b/c.txt文件为例,说明查询目标文件c.txt的inode节点信息的流程:\n[0008] 在磁盘分区的固定位置读取根目录的inode节点信息;\n[0009] (1)读取根目录下的所有目录,从中匹配目标文件路径中位于根目录下的目录名,即a;\n[0010] (2)读取a对应的inode节点信息,从中匹配目标文件路径中位于a下的目录名,即b;\n[0011] (3)读取b对应的inode节点信息,从中匹配目标文件路径中位于b下的文件名,即c.txt;\n[0012] (4)读取目标文件(即c.txt)的inode节点信息;\n[0013] (5)为目标文件(即c.txt)加锁。\n[0014] 3、写入文件:该操作在请求写入数据的起始位置开始写入用户数据,并更新相关的文件元数据和文件系统元数据。\n[0015] 4、读取文件:该操作在请求读取数据的起始位置开始读取所需要长度的数据,并更新相关的文件元数据和文件系统元数据。\n[0016] 5、删除文件:该操作在磁盘中删除文件,删除相关的文件元数据,并更新文件系统元数据。\n[0017] 6、关闭文件:该操作执行解锁、清内存等操作。\n[0018] 由以上步骤可知,传统文件系统中的层次式目录结构为用户提供了灵活便利的数据存取方式,但其并没有针对云计算环境下的“一旦写入不再更改”的数据做专门的优化,其中的文件寻址、文件打开和关闭、文件的读写锁机制等功能都对系统性能有很大的影响,因而效率不高。\n发明内容\n[0019] 本发明所要解决的技术问题是:针对现有技术存在的技术问题,本发明提供一种极度简化、能提高云计算环境下的数据存取效率、减少系统内核资源的消耗和提高系统性能的云计算环境下的海量数据存取方法。\n[0020] 为解决上述技术问题,本发明采用以下技术方案:\n[0021] 一种云计算环境下的海量数据存取方法,其特征在于包括以下步骤:\n[0022] 1)格式化磁盘分区并在磁盘分区中设置一随用户操作实时更新的分区元数据信息;\n[0023] 2)将经应用层中的数据管理系统分块处理后的数据块,逐块依次写入磁盘分区中并顺序编索引号,用户通过输入所述索引号从磁盘分区中读取对应的数据块。\n[0024] 作为本发明的方法的进一步改进:\n[0025] 上述的方法中,写入数据块时,在数据块后存储一相应的用于检查数据块正确性的校验数据块,所述校验数据块根据所述数据块的内容计算得到且与数据块一一对应。\n[0026] 上述的方法中,所述分区元数据信息存储在磁盘分区中的保留数据区域内,所述保留数据区域为两块,一块位于所述磁盘分区的头部,另一块位于所述磁盘分区的尾部。\n[0027] 上述的方法中,所述步骤1),具体包括以下步骤:\n[0028] 1.1)确定分区元数据信息;\n[0029] 1.2)将分区元数据信息写入磁盘分区头部保留数据区域中;\n[0030] 1.3)将分区元数据信息写入磁盘分区尾部保留数据区域中,作为冗余备份。\n[0031] 上述的方法中,所述写入数据块,具体包括以下步骤:\n[0032] 2.1)读取分区元数据信息,并校验其完整性;\n[0033] 2.2)判断磁盘分区是否已满,若满则返回“磁盘已满”的错误,否则继续;\n[0034] 2.3)计算数据块的校验数据块;\n[0035] 2.4)将数据块写入磁盘分区中,并将校验数据块写于数据块后;\n[0036] 2.5)更新分区元数据信息;\n[0037] 2.6)将新的分区元数据信息写入磁盘分区中;\n[0038] 2.7)根据数据块的写入位置返回相应的索引号。\n[0039] 上述的方法中,所述计算数据块的校验数据块,具体包括以下步骤:将所述数据块分为A个新的校验块,定义一校验变量,并将所述A个新的校验块中的每个字节依次与所述校验变量做异或运算,每个校验块算出1个字节的校验值,共计算出A个字节的校验值,即为数据块的校验数据块,所述A为校验数据块大小。\n[0040] 上述的方法中,所述读取数据块,具体包括以下步骤:\n[0041] 3.1)从磁盘分区中读取分区元数据信息,并校验其完整性;\n[0042] 3.2)导入用户输入的索引号,并检查其合法性;\n[0043] 3.3)若所述索引号合法,则根据索引号计算数据块在磁盘分区中的位置;\n[0044] 3.4)在计算得到的位置处读取数据块;\n[0045] 3.5)在该数据块后读取校验数据块;\n[0046] 3.6)根据校验数据块检查数据块的正确性;\n[0047] 3.7)若数据块正确,则将读取的数据块返回给用户,否则返回错误。\n[0048] 上述的方法中,所述根据校验数据块检查数据块的正确性,具体包括以下步骤:\n[0049] 3.6.1)根据读取的数据块,重新计算一新校验数据块;\n[0050] 3.6.2)将所述新校验数据块与从磁盘分区中读取的校验数据块逐字节进行比较,若两者相同,则判定数据块正确,否则判定数据块不正确。\n[0051] 上述的方法中,所述分区元数据信息包括:元数据校验值、分区元数据大小、数据块大小、校验数据块大小、数据块总量、已使用数据块数量和新数据块起始位置。\n[0052] 与现有技术相比,本发明的优点在于:\n[0053] 1、本发明的云计算环境下的海量数据存取方法,针对云计算环境的“一旦写入不再更改”的海量数据特点,直接对经应用层数据管理程序分块后的数据块进行处理,取消了传统文件系统中的层次式数据存储结构,同时取消了文件锁等功能,通过索引号直接读写磁盘分区,仅提供最基本的数据存取功能,极度简化了数据存取步骤,且减少了内核资源的消耗,可将性能提高到最优。\n[0054] 2、本发明的云计算环境下的海量数据存取方法,为每个数据块设置一校验数据块,以检查数据块是否遭到破坏,可保证数据的正确性。\n[0055] 3、本发明的云计算环境下的海量数据存取方法,格式化磁盘分区时,分区元数据信息中仅保留最基本的文件系统元数据信息,进一步减少和优化了数据存取的步骤;将分区元数据信息存于分区头部和尾部,互为备份,提高了可靠性。\n附图说明\n[0056] 图1是现有技术的数据存取方法的模块关系示意图;\n[0057] 图2是本发明的应用实例中的模块组成关系示意图;\n[0058] 图3是本发明中的总体流程示意图; \n[0059] 图4是本发明的格式化磁盘分区的流程示意图;\n[0060] 图5是本发明的写入数据块流程示意图;\n[0061] 图6是本发明的读取数据块流程示意图;\n[0062] 图7为具体实施例中的分区元数据信息的物理存储格式示意图;\n[0063] 图8为具体实施例中的分区元数据信息在内存中的数据结构示意图。\n具体实施方式\n[0064] 以下将结合说明书附图和具体实施例对本发明作进一步详细说明。\n[0065] 如图2所示,用本发明的云计算环境下的海量数据存取方法,应用于Linux操作系统中,可实现一可配置块式文件系统(Configurable Block File System 以下简称CBFS)。该可配置块式文件系统与操作系统内核中其它相关模块的关系如图2所示,其直接通过磁盘驱动读写磁盘数据,不采用虚拟文件系统或传统的文件系统,步骤较传统的数据存取方法更简单,效率较高。\n[0066] 如图3、图4、图5、图6所示,本发明的云计算环境下的海量数据存取方法,包括以下步骤:\n[0067] 1、格式化磁盘分区:\n[0068] 1.1 确定分区元数据信息;\n[0069] 1.1.1 系统管理员指定待格式化的磁盘分区和支持的数据块大小。\n[0070] 1.1.2 判断数据块大小是否介于4K至1G之间并且是4K的倍数,如果不是,则返回错误,否则继续下一步。\n[0071] 1.1.3 判断磁盘分区大小是否大于(DataBlockSize + 2 * MetaDataSize),如果不是则返回错误,否则继续下一步。\n[0072] 1.1.4 定义一个全局指针变量gpCBFSPartionHeadCache,在内存中创建分区元数据信息,其在内存中的数据结构如图8所示,其物理存储格式如图7所示,并将其地址赋给全局指针变量gpCBFSPartionHeadCache。分区元数据信息的大小为4K,分区元数据信息的前192字节包括12个16字节的字段,依次为:\n[0073] 元数据校验值MetaDataVerifyValue,字段值的计算公式如下:\n[0074] MetaDataVerifyValue =Version^CreateTime ^ PartitionSize ^ MetaDataSize ^ DataBlockSize ^ VerifyDataBlockSize ^ VerifyBlockSize ^ TotalDataBlock ^ DataBlockUsed ^ NextNewPosition ^ LastMTime;\n[0075] 软件版本号Version,字段值为1.0;\n[0076] 分区创建时间CreateTime,字段值为当前时间;\n[0077] 分区大小PartitionSize,字段值为当前磁盘分区大小;\n[0078] 分区元数据大小MetaDataSize,字段值为4K;\n[0079] 数据块大小DataBlockSize,字段值为管理员指定的数据块大小;\n[0080] 校验数据块大小VerifyDataBlockSize,字段值为1K;\n[0081] 校验块大小VerifyBlockSize,字段值的计算公式为:\n[0082] VerifyBlockSize = DataBlockSize/VerifyDataBlockSize;\n[0083] 数据块总量TotalDataBlock,字段值的计算公式为:\n[0084] TotalDataBlock = (PartitionSize – 2 * MetaDataSize) / DataBlockSize;\n[0085] 已使用数据块数量DataBlockUsed,字段值为0;\n[0086] 新数据块起始位置NextNewPosition,字段值为0; \n[0087] 最新分区修改时间LastMTime,字段值为当前时间;\n[0088] 分区元数据信息的第192字节以后的区域为保留字段。\n[0089] 1.2将分区元数据信息写入磁盘分区头部的保留数据区域(即磁盘分区的第一个\n4K空间)中:\n[0090] 将gpCBFS PartionHeadCache内的地址所指向的数据结构中的各字段值依序写入磁盘分区头部的第0到191字节中,并用0将磁盘分区头部的保留字段填满。\n[0091] 1.3将分区元数据信息写入磁盘分区尾部的保留数据区域(即磁盘分区的最后一个4K空间)中,作为冗余备份:\n[0092] 将gpCBFSPartionHeadCache内的地址所指向的数据结构中的各字段值依序写入磁盘分区尾部的第0到191字节中,并用0将磁盘分区尾部的保留字段填满。\n[0093] 2、存取数据——写入数据块,将经应用层中的数据管理系统分块处理后的数据块,逐块依次写入磁盘分区中并顺序编索引号,具体包括以下步骤:\n[0094] 2.1 读取分区元数据信息,并校验其完整性:\n[0095] 如果gpCBFSPartionHeadCache内存储的地址不为空(分区元数据信息已经缓存到内存,不用再到磁盘读取),则跳转到2.2步骤;否则从磁盘分区头部读取磁盘分区元数据信息到内存,具体包括以下步骤:\n[0096] 2.1.1在内存中创建一个如图8的数据结构,作为全局元数据信息缓存空间,并将其地址赋给全局指针变量gpCBFSPartionHeadCache。\n[0097] 2.1.2读取磁盘分区头部保留区域内的前192个字节,将这192个字节的内容作为全局指针变量gpCBFSPartionHeadCache内的地址所指向的数据结构中的各字段值,即将第一个16字节作为gpCBFSPartionHeadCache内的地址所指向的数据结构中的第一个字段的值,第二个16字节作为gpCBFSPartionHeadCache内的地址所指向的数据结构中的第一个字段的值,依此类推。\n[0098] 2.1.3在内存中分配一个16字节的内存空间作为元数据校验值的存储空间。\n[0099] 2.1.4 按照元数据校验值MetaDataVerifyValue的计算公式,以2.1.2步骤所读取的分区元数据信息作为输入,重新计算元数据校验值并存入2.1.3步骤分配的元数据校验值的存储空间中。\n[0100] 2.1.5 将2.1.4步骤计算出来元数据校验值与2.1.2步骤所读取的分区元数据信息中的元数据校验值做比较,如果相同,则返回正确,如果不同,则继续下一步。\n[0101] 2.1.6定义一个指针变量pCBFSPartitionTail,在内存中建立如图8所示的数据结构,作为存储在磁盘分区尾部的元数据校验值的存储空间,并将该数据结构的地址赋给指针变量pCBFSPartitionTail。\n[0102] 2.1.7 读取磁盘分区尾部的前192个字节,将这192个字节的内容作为2.1.6步骤分配的指针变量pCBFSPartitionTail内的地址所指向的数据结构中的各字段值:即将第一个16字节作为指针变量pCBFSPartitionTail内的地址所指向的数据结构中的第一个字段的值,第二个16字节作为指针变量pCBFSPartitionTail内的地址所指向的数据结构中的第二个字段的值,依此类推。\n[0103] 2.1.8 按元数据校验值MetaDataVerifyValue的计算公式,以2.1.7步骤所读取的分区元数据信息作为输入,重新计算元数据校验值并存入2.1.3步骤分配的元数据校验值的存储空间。\n[0104] 2.1.9 将2.1.8步骤计算出来的元数据校验值与2.1.7步骤所读取的分区元数据信息中的元数据校验值做比较,如果相同,则继续下一步,否则返回错误。\n[0105] 2.1.10用2.1.7步骤读取的分区元数据信息存入2.1.1步骤分配的全局元数据信息缓存空间,并写入磁盘分区头部的元数据存储区域。\n[0106] 2.2 判断磁盘分区是否已满,具体方法为:\n[0107] 判断gpCBFSPartionHeadCache内地址所指向的数据结构中的NextNewPosition的值是否为16个0xFF,如果是,则判定磁盘分区已满,返回“磁盘已满”的错误,否则继续;\n[0108] 2.3 计算数据块的校验数据块,具体包括以下步骤:\n[0109] 2.3.1 将 数 据 块 分 为A个 新 的 校 验 块,A 为 校 验 数 据 块 大 小VerifyDataBlockSize。\n[0110] 2.3.2 定义一校验变量VerifyByte,为校验变量VerifyByte赋初值为0x00。\n[0111] 2.3.3 将A个新的校验块中的每个字节依次与校验变量VerifyByte做异或运算,每个校验块算出1个字节的校验值,共计算出A个字节的校验值,即为数据块的校验数据块。\n[0112] 2.4将数据块写入磁盘分区中,并将校验数据块写于数据块后,具体步骤为:\n[0113] 2.4.1 将数据块写入磁盘分区中gpCBFSPartionHeadCache内地址所指向的数据结构中的NextNewPosition位置处。\n[0114] 2.4.2将校验数据块存入磁盘分区中紧挨数据块的后面位置,即\n(NextNewPosition + DataBlockSize )处。\n[0115] 2.5更新分区元数据信息,包括以下步骤: \n[0116] 2.5.1将分区元数据信息中的DataBlockUsed的值加1。\n[0117] 2.5.2更新分区元数据信息中的“新数据块的起始位置”,具体方法为: [0118] 2.5.2.1如果分区元数据信息中的DataBlockUsed的值等于TotalDataBlock的值,则将NextNewPosition中的每一个字节设为0xFF表示磁盘分区已满,返回正确;否则继续下一步。\n[0119] 2.5.2.2计算出紧挨校验数据块的第一个未使用字节的位置作为新数据块的起始位置,计算公式为:\n[0120] NextNewPosition = NextNewPosition + DataBlockSize + \nVerifyDataBlockSize\n[0121] 2.5.3将分区元数据信息中的“最新分区修改时间”更新为当前时间。\n[0122] 2.5.4以最新分区元数据信息作为输入,按照分区元数据校验值计算方法重新计算分区元数据校验值。\n[0123] 2.6将新的分区元数据信息写入磁盘分区中,具体包括以下步骤:\n[0124] 2.6.1将分区元数据信息中的“元数据校验值”、“已使用数据块数量”、“新数据块起始位置”和“最新分区修改时间”的值分别按顺序写入磁盘分区头部的保留数据区域中的第0到15字节、第144到159字节、第160到175字节和第179到191字节中(即为分区元数据信息的第1、第10、第11和第12个字段)。\n[0125] 2.6.2将分区元数据信息中的“元数据校验值”、“已使用数据块数量”、“新数据块起始位置”和“最新分区修改时间”的值分别按顺序写入磁盘分区尾部的保留数据区域中的第0到15字节、第144到159字节、第160到175字节和第179到191字节中(即为分区元数据信息的第1、第10、第11和第12个字段)。\n[0126] 2.7 根据数据块的写入位置返回相应的索引号给用户,具体步骤为:\n[0127] 将该已使用数据块数量DataBlockUsed的值作为数据块索引号返回给用户。\n[0128] 3、存取数据——读取数据块:根据用户输入的索引号,从磁盘分区中读取数据块并将数据块内容返回给用户,具体包括以下步骤:\n[0129] 3.1读取分区元数据信息,并校验其完整性,详细步骤与2.1步骤相同。\n[0130] 3.2 导入用户输入的索引号num,并检查其合法性,具体方法为:\n[0131] 3.2.1如果索引号num大于0,则继续,否则返回错误。\n[0132] 3.2.2 比较索引号num与DataBlockUsed的值。如果num小于或者等于DataBlockUsed,则判定索引号num合法,继续下一步;否则判定索引号num不合法,返回错误。\n[0133] 3.3根据索引号计算数据块在磁盘分区中的位置(ReadPosition),计算公式为:\n[0134] ReadPosition = MetaDataSize + (Num – 1) * (DataBlockSize + VerifyDataBlockSize)\n[0135] 3.4 在计算得到的位置处读取数据块,即:\n[0136] 从3.3步骤计算的结果ReadPosition位置处读取DataBlockSize字节的数据作为用户请求的数据块到内存。\n[0137] 3.5 并在该数据块后读取校验数据块,即:\n[0138] 从(ReadPosition+DataBlockSize)位置处读取VerifyDataBlockSize字节的数据作为数据块的校验数据块到内存。\n[0139] 3.6 根据校验数据块检查数据块的正确性;具体包括以下步骤:\n[0140] 3.6.1 根据读取的数据块,重新计算一新校验数据块(步骤与2.3步骤相同);\n[0141] 3.6.2 将新校验数据块与从磁盘分区中读取的校验数据块逐字节进行比较,若两者每一个字节都相同,则判定数据块正确,否则判定数据块不正确。\n[0142] 3.7)若数据块正确,则将读取的数据块返回给用户,否则返回错误。\n[0143] 采用上述步骤,取消了传统文件系统中所有不必要的功能,对用户仅提供两个接口:写入数据块和读取数据块,仅提供最基本的数据存取功能,用户直接读写磁盘分区,这种极度简化的设计使本发明在性能上做到了最优,能提高云计算环境下的数据存取效率、提高系统性能。\n[0144] 以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
法律信息
- 2013-07-10
- 2011-11-02
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201110153271.7
申请日: 2011.06.09
- 2011-09-14
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-06-03
|
2008-12-26
| | |
2
| |
2007-05-16
|
2006-11-29
| | |
3
| |
2004-08-04
|
2003-01-14
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |