CN101567001B - 并行文件系统的元数据文件布局管理方法 - Google Patents
并行文件系统的元数据文件布局管理方法 Download PDFInfo
- Publication number
- CN101567001B CN101567001B CN2009100854824A CN200910085482A CN101567001B CN 101567001 B CN101567001 B CN 101567001B CN 2009100854824 A CN2009100854824 A CN 2009100854824A CN 200910085482 A CN200910085482 A CN 200910085482A CN 101567001 B CN101567001 B CN 101567001B
- Authority
- CN
- China
- Prior art keywords
- file
- extension blocks
- layout
- reference position
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims description 70
- 238000007726 management method Methods 0.000 claims description 43
- 230000008859 change Effects 0.000 claims description 10
- 238000012217 deletion Methods 0.000 claims description 6
- 230000037430 deletion Effects 0.000 claims description 6
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 4
- 230000008520 organization Effects 0.000 claims description 4
- 239000012634 fragment Substances 0.000 claims description 3
- 244000188472 Ilex paraguariensis Species 0.000 claims description 2
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- VQLYBLABXAHUDN-UHFFFAOYSA-N bis(4-fluorophenyl)-methyl-(1,2,4-triazol-1-ylmethyl)silane;methyl n-(1h-benzimidazol-2-yl)carbamate Chemical compound C1=CC=C2NC(NC(=O)OC)=NC2=C1.C=1C=C(F)C=CC=1[Si](C=1C=CC(F)=CC=1)(C)CN1C=NC=N1 VQLYBLABXAHUDN-UHFFFAOYSA-N 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
并行文件系统的元数据文件布局管理方法属于文件系统领域,其特征在于:文件系统采用扩展块分配方式对文件进行组织;元数据服务器接收到用户请求后,对相应文件布局中的扩展块进行快速分配、划分、合并及释放等操作,达到文件布局的获取、提交或调整的要求,实现对文件布局的优化管理。本方法采用满足最低要求原则,应答请求对应的最小扩展块集合,因而最大程度满足多用户同时对同一文件的操作,提高了系统的并行性;同时采用扩展块实时合并策略以保证文件布局最大程度连续,优化存储,减少文件布局寻道时间,提高了文件系统性能。
Description
技术领域
并行文件系统的元数据文件布局管理方法属于文件系统领域,尤其涉及其中的元数据管理领域。
背景技术
随着信息技术的飞速发展,人们要处理的数据量不断增加,造成了对存储系统容量和性能的巨大需求,传统的存储方式已经无法满足用户的需要。一般情况下,每台主机都带有自己的存储设备,这使得信息分散在各个主机上,形成信息孤岛,不利于信息整合。网络存储可以提供共享的信息存取服务,并具有超大容量和优秀的性能,因此成为存储系统发展的趋势。存储区域网络(StorageArea Network,SAN)是一种专门的存储网络,它可以把各种存储设备连接在一起,组成统一管理的存储资源,而主机可以通过光纤或IP网络来访问这些资源。在这种存储体系结构中,资源的配置是不断变化的,新的设备可以不断地加入到系统中,以满足用户对存储容量或性能的需求。
传统的分布式文件系统如NFS、AFS等已经无法满足大规模网络存储系统的高可扩展性要求;基于对象的文件系统如Lustre、PanFS等不能满足SAN应用环境;近来出现的SAN文件系统,如GPFS等,其空间管理采用基于块的分配方式。实验证明基于扩展块(extent)的分配方式较基于块的分配方式,减少了磁盘寻道时间,有利于将一大批数据一次性写到存储设备中的连续位置,缩短写数据的时间。采用基于扩展块分配方式的并行文件系统在读取文件的时候有很好的性能,因为文件块都是成组连续分配的。若并行文件系统采用基于扩展块的分配方式,服务器如何将文件布局(layout)划分为扩展块的集合,为SAN 环境下的应用提供灵活的、高效的服务,同时满足多用户对同一文件的并行操作,是本发明需要解决的重要问题。
发明内容
本发明的目的是将并行文件系统中基于扩展块的文件布局划分为扩展块集合,对用户请求做出合理响应,并向磁盘空间管理模块请求分配或释放相应的空间。
本发明的特征在于,所述方法是在由客户机、元数据服务器和存储设备构成的并行文件系统中依次按以下步骤完成的:
步骤(1)在所述系统中的元数据服务器之上加载一个文件布局管理模块:
所述文件布局管理模块含有的数据结构为:
blocklayout_extent:记录文件的扩展块的属性,包括长度、状态、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置,其中状态可能有读写、读、无效、空四种,
allocator_segment:记录向磁盘空间管理模块申请的文件的扩展块的属性,包括长度、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置,
bes_node:记录文件的扩展块,包含blocklayout_extent结构,作为节点加入文件扩展块链表,
blocklayout_layout:记录文件的扩展块的节点的总数,同时作为文件扩展链表的表头,
所述文件布局的数据结构组织方式为:所述blocklayout_layout作为链表头,所述bes_node作为链表节点的双向链表,该bes_node中的blocklayout_extent是所述文件的扩展块,所述文件的所有扩展块组成所述的文件布局的逻辑结构,
所述文件布局管理模块设有与用户请求处理模块的接口,以及与磁盘空间管理模块的接口,其中:
与用户请求处理模块的接口,有下述三个:
layout_get:用于获取文件的布局,来自所述用户请求处理模块的请求输入参数包括指定文件的索引节点inode及所述指定文件的起始位置和长度,经过所述文件布局管理模块处理后,向所述用户请求处理模块返回对应于所述起始位置和长度的文件的扩展块集合,
layout_commit:用于提交文件的布局,来自所述用户请求处理模块的请求输入参数包括指定文件的索引节点inode及提交给所述指定文件的扩展块的集合,经过所述文件布局管理模块处理后,向所述用户请求处理模块返回所述文件的布局提交是否成功的标志,
layout_adjust:用于调整文件的布局,来自所述用户请求处理模块的请求输入参数包括指定文件的索引节点inode及所述指定文件的大小,经过文件布局管理模块处理后,向所述用户请求处理模块返回所述文件的布局按照指定大小修改是否成功的标志,
与磁盘空间管理模块的接口,有下述两个:
get_space_from_allocator:用于向所述磁盘空间管理模块请求分配新的磁盘空间,向所述磁盘空间管理模块输入的参数为:指定扩展块的最佳的磁盘ID和该磁盘起始位置及长度,经所述磁盘空间管理模块处理后,向所述文件布局管理模块返回的是实际提供给该指定扩展块的磁盘ID和磁盘起始位置,
free_space_to_allocator:用于向所述磁盘空间管理模块释放空闲的磁盘空间,向所述磁盘空间管理模块输入的是指定扩展块的磁盘ID、磁盘起始位置及长度,经所述磁盘空间管理模块处理后,向所述文件布局管理模块返回实际释放是否成功的标志,
在所述文件布局管理模块中设定:
所述扩展块的属性包括长度、状态、在文件中的起始位置、所属磁盘的ID 及在磁盘中的起始位置,所述的长度、状态、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置都以非负整数表示,其中所述长度表示该扩展块的字节数,所述文件的起始位置表示该扩展块中第一个字节距文件第一个字节的字节数,
待处理的文件布局为S,S={SE1,SE2,...,SEm},SEi∈S,1≤i≤m,SEi是该文件布局中包含的第i个扩展块,m为集合S的大小,
若所述文件布局S中扩展块SEi对应的长度为lsi,则所述扩展块SE1包含的文件布局区间是[0,ls1),SE2包含的文件的布局区间是[ls1,ls2),......,SEm包含的文件的布局区间是[lsm-1,lsm),
所述来自用户请求处理模块的请求中所要获取文件的起始位置为B,长度为L,
所述与用户请求处理模块交互的扩展块集合为R,R={RE1,RE2,...,REn},REj∈R,1≤j≤n,REj是该请求中的第j个扩展块,n为集合R的大小,
若所述扩展块集合R中扩展块REj对应的文件起始位置是brj,长度是lrj,则所述扩展块RE1包含的文件布局区间是[br1,br1+lr1),RE2包含的文件布局区间是[br2,br2+lr2),......,REn包含的文件的布局区间是[brn,brn+lrn),
若所述扩展块集合P中扩展块PEk对应的文件起始位置是bpk,长度是lpk, 则所述扩展块PE1包含的文件布局区间是[bp1,bp1+lp1),PE2包含的文件布局区间是[bp2,bp2+lp2),......,PEt包含的文件的布局区间是[bpt,bpt+lpt),
所述扩展块集合P是以扩展块在文件的起始位置的小于等于关系为偏序关系的偏序集,且所述P中任意两个扩展块的文件布局区间无互相覆盖部分,即对有bpk-1+lpk-1≤bpk,
在所述文件布局管理模块中,对于所述文件布局S中包含的连续两个扩展块E1和扩展块E2能够合并作如下定义:
所述扩展块E1与所述扩展块E2能够合并是指:所述E1和E2的状态相同、所属磁盘的ID相同,所述E1在文件中的起始位置与长度的和等于所述E2在文件中的起始位置,所述E1在磁盘中的起始位置与长度的和等于所述E2在磁盘中的起始位置,合并后的扩展块在状态、所属磁盘的ID与合并前的所述E1、E2的相同,该合并后的扩展块的长度是合并前的所述扩展块E1与E2长度之和,该合并后的扩展块在文件中的起始位置及在磁盘中的起始位置与所述E1相同,
在所述文件布局管理模块中,对于属于所述扩展块集合P的扩展块E与另一个属于所述扩展块集合R的扩展块E′之间的关系作如下定义:
所述扩展块E′与所述扩展块E的内容相同:两者在扩展块的文件长度、状态、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置均相同,
所述两个扩展块E与E′的内容能做差运算,其条件为:所述E′在文件中的起始位置大于或等于所述E在文件中的起始位置,所述E′在文件中的起始位置与长度之和小于或等于所述E在文件中的起始位置与长度之和,
所述两个扩展块E与E′内容之差的头部定义为扩展块E头,符合以下条件:所述扩展块E头的状态、所属磁盘的ID均与所述E相同,该扩展块E头的长度是所述E′在文件中的起始位置减去所述E在文件中的起始位置,该扩展块E头在文件中的起始位置是所述E在文件中的起始位置,该扩展块E头在磁盘中的起始位 置是所述E在磁盘中的起始位置,
所述两个扩展块E与E′内容之差的尾部定义为扩展块E尾,符合以下条件:所述扩展块E尾的状态、所属磁盘的ID均与所述E相同,该扩展块E尾的长度是所述E的长度减去所述E′的长度,该扩展块E尾在文件中的起始位置是所述E在文件中的起始位置加上所述E′的长度,该扩展块E尾在磁盘中的起始位置是所述E在磁盘中的起始位置加上所述E′的长度;
步骤(2)在步骤(1)所述的系统中,所述文件布局管理模块依次按以下步骤执行并行文件系统的文件布局管理方法:
步骤(2.1)获取文件布局:所述用户请求处理模块向所述文件布局管理模块发送获取文件布局的请求,该请求的输入参数包括指定文件的索引节点inode及所述指定文件的起始位置和长度,所述文件布局管理模块找到相应的文件布局,把组成文件布局的扩展块根据所述请求的起始位置和长度,进行划分与合并,返回给所述请求相应的扩展块集合,并告知所述文件系统,其步骤如下:
步骤(2.1.1)从用户请求处理模块传来的请求中的索引节点inode结构获取对应的file结构,找到由file结构指向的元数据文件,
步骤(2.1.2)若用户请求处理模块发来的是读请求,则从所述元数据文件中读取对应的文件布局S,S={SE1,SE2,...,SEm},根据所述请求的文件的起始位置B,长度L,获取相应的扩展块集合R={RE1,RE2,...,REn},并返回给所述用户请求处理模块,
步骤(2.1.3)若用户请求处理模块发来的是写请求,则
首先,根据所述元数据文件是否为空,判断该请求的文件是否存在,若文件不存在则所述文件布局管理模块创建文件布局S={SE1},否则从所述元数据文件中读取对应的文件布局S,S={SE1,SE2,...,SEm},
其次,若所述文件布局S={SE1,SE2,...,SEm}中对应用户请求的起始位置B,长 度L的片段中包含尚未在磁盘上分配空间的扩展块时,先向所述磁盘空间管理模块申请空间,
最后,若所述文件布局S发生改变,则告知系统新的文件布局S′={SE1′,SE2′,...,SEm′},并写入所述元数据文件中,根据所述请求的文件的起始位置B,长度L,获取相应的扩展块集合R={RE1,RE2,...,REn},并返回给所述用户请求处理模块,
步骤(2.2)提交文件布局:所述用户请求处理模块向所述文件布局管理模块发送提交文件布局的请求,该请求的输入参数包括指定文件的索引节点inode及提交给所述指定文件的扩展块的集合,所述文件布局管理模块将该文件布局中的扩展块与该用户请求处理模块传来的扩展块依次比较,找到对应部分后,进行划分与合并操作,答复用户请求处理模块,并告知所述文件系统,其步骤如下:
步骤(2.2.1)再次执行步骤(2.1.1),由所述元数据文件中读取对应的文件布局S,S={SE1,SE2,...,SEm},
步骤(2.2.2)在步骤(2.2.1)得到的所述文件布局S={SE1,SE2,..,SEm}中检索到与该用户请求处理模块请求的扩展块集合R={RE1,RE2,...,REn}对应的文件扩展块集合P={PE1,PE2,...,PEt},区别以下两种情况,分别对所述P中的扩展块PEk作划分:
若:所述R={RE1,RE2,...,REn}中的扩展块REj与相应的P={PE1,PE2,..,PEt}扩展块PEk起始位置匹配,且结束位置也匹配,则不需划分,如果结束位置不匹配,则从所述S中划分出一个新的扩展块PEk′,与所述REj内容相同,划分后,所述PEk的内容发生改变,改变为划分前所述PEk与所述REj内容之差的尾部,
若:所述R={RE1,RE2,...,REn}中的扩展块REj与相应的P={PE1,PE2,...,PEt}扩展块PEk起始位置不匹配,则从所述S中划分一个新的扩展块PEk′,其内容是所述 PEk与所述REj内容之差的头部,划分后,所述PEk的内容发生改变,改变为划分前所述PEk与所述PEk′内容之差的尾部,再按REj与PEk起始位置匹配的情况处理,
步骤(2.2.3)判断步骤(2.2.2)得到的文件扩展块集合中是否有能合并的扩展块,若有,则合并相应的扩展块,
步骤(2.2.4)若所述文件布局S={SE1,SE2,...,SEm}发生改变,则告知系统新的文件布局S′={SE1′,SE2′,...,SEm′},并写入所述元数据文件,答复所述用户请求处理模块,
步骤(2.3)调整文件布局:所述用户请求处理模块向所述文件布局管理模块发送调整文件布局的请求,该请求的输入参数包括指定文件的索引节点inode及所述指定文件的大小,所述文件布局管理模块通过删除扩展块或减少扩展块长度的方式裁剪文件布局以减小文件,或者通过增加扩展块或增大扩展块长度的方式以增大文件,答复该用户请求处理模块的请求,并告知所述文件系统,其步骤如下:
步骤(2.3.1)重复步骤(2.1.1),由所述元数据文件中读取对应的文件布局S,S={SE1,SE2,...,SEm},
步骤(2.3.2)按以下步骤处理扩展块,满足用户调整文件大小的请求:
第二步,判断调整的大小是否小于文件已有大小,如果是,删除超出部分的扩展块P={PE1,PE2,...,PEt},新的文件布局S′=S-P,否则进行下一步,
第三步,判断调整的大小是否超出文件已有大小,如果是,创建一个新的扩展块SEm+1,新的文件布局S′=S+{SEm+1},否则结束,
步骤(2.3.3)判断文件的扩展块集合中是否有能合并的扩展块,如果有, 则合并相应的扩展块,
步骤(2.3.4)若所述文件布局S={SE1,SE2,..,SEm}发生改变,则告知系统新的文件布局S′={SE1′,SE2′,...,SEm′},将其写入所述元数据文件,并答复所述用户请求处理模块。
本项发明主要针对SAN环境下并行文件系统的需求,设计并实现了一套切实可行的文件布局管理方法。本方法采用“满足最低要求原则”,针对客户端发出的文件布局请求,元数据服务器应答请求对应的最小扩展块集合;同时采用扩展块实时合并策略,在文件布局请求处理的过程中将存在依赖关系的扩展块进行合并,保证文件布局最大程度连续。通过本方法,一方面最大程度满足多用户同时对同一文件的操作,提高了系统的并行性;另一方面优化存储,减少文件布局寻道时间,提高了文件系统性能。
附图说明
图1.并行文件系统的硬件架构图。
图2.并行文件系统的软件架构图。
图3.并行文件系统元数据文件布局管理命令处理流程。
图4.文件布局中扩展块双链表结构。
图5.扩展块合并的示意图。
图6.扩展块划分的示意图。
图7.获取文件布局的流程图。
图8.提交文件布局的流程图。
图9.调整文件布局的流程图。
具体实施方式
本发明的核心是通过在并行文件系统元数据服务器上,添加文件布局管理模 块,用于重新组织用户请求的文件布局。根据用户发来的请求,对文件布局中的扩展块进行划分和合并等处理。处理完成后,通知磁盘空间管理模块,使其按照处理结果分配或回收空间,并返回给请求相应的应答,以进行后续操作。
本发明具体实现的接口包括以下两个主要部分:
1.与用户请求处理模块接口部分。与用户请求处理模块的接口主要包括三个,分别是layout_get、layout_commit、layout_adjust。layout_get用于获取文件的布局,请求的输入参数是指定的文件的起始位置和长度,经过文件布局管理模块的处理后,返回给请求对应于起始位置和长度的文件的扩展块集合。layout_commit用于提交文件的布局,请求的输入参数是指定文件的扩展块集合,经过文件布局管理模块的处理后,返回文件的布局提交是否成功的标志。layout_adjust用于调整文件的布局,请求的输入参数是指定文件的大小,经过文件布局管理模块的处理后,返回文件的布局按照指定大小修改是否成功的标志。
2.与磁盘空间管理模块接口部分。与磁盘空间管理模块的接口有两个,分别是get_space_from_allocator和free_space_to_allocator。get_space_from_allocator向磁盘空间管理模块请求分配新的磁盘空间,输入参数是指定扩展块的最佳的磁盘ID和磁盘起始位置及长度,经处理后得到的是实际可以提供给扩展块的磁盘ID和磁盘起始位置。free_space_to_allocator用来将空闲的磁盘空间释放给磁盘空间管理模块,输入参数是指定扩展块的磁盘ID、磁盘起始位置及长度,经处理后得到实际释放是否成功的标志。
用户对文件布局的相关请求到达后,经过用户请求处理模块解码等相应处理,并转发给文件布局管理模块。文件布局管理模块从相关元数据文件中读出请求要求的文件布局,根据请求的内容,对相应文件布局中的扩展块进行划分和合并等处理。如有需要,通过与磁盘空间管理模块的交互,获取或释放空间。最后将修改后的文件布局告知系统,对文件的元数据做出相应的修改,并答复请求。 每一次对文件布局的处理,都尽量保持数据存储的连续性,即连续数据尽量存于同一个存储设备的连续存储空间中。文件布局管理模块在向磁盘空间管理模块请求空间时将提供相邻扩展块相同的存储设备ID及连续的磁盘位置,以保证数据存储的连续性。
本发明所述的文件布局管理方法主要包括:
提交文件布局:用户读写文件完成后,请求提交文件的部分或全部布局,服务器根据用户发来的请求,找到相应的文件布局,将文件的布局中的扩展块与提交的布局中的扩展块依次比较,找到对应部分进行划分与合并等操作,处理结束后告知系统并应答请求。
调整文件布局:用户改变文件大小的属性,服务器根据用户发来请求的文件大小,找到相应的文件布局,通过删除扩展块或减小扩展块长度的方式裁剪文件的布局以减小文件;通过增加扩展块或增大扩展块长度的方式扩展文件布局以增大文件。处理结束后告知系统并应答请求。
下面将详细介绍本发明的实现架构:
本发明所需的硬件设备包括由一个或多个元数据服务器、一个或多个客户机,以及一个或多个光纤盘阵和光纤交换机组成的FC-SAN,或者一个或多个ISCSI目标器和以太网交换机组成的IP-SAN。
文件的扩展块的属性包括长度、状态、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置,通过下列数据结构进行描述:
struct blocklayout_extent{
struct deviceid bv_id;
u64 be_f_offset;
u64 be_length;
u64 be_v_offset;
u32 be_state;
};
其中,bv_id是扩展块所属磁盘ID,be_f_offset是扩展块在文件中的起始位置,be_length是扩展块的长度,be_v_offset是扩展块在磁盘中的起始位置,be_state是扩展块的状态。
指定文件的所有扩展块通过双向链表连接起来,构成文件的布局。组成该链表的头节点指出该文件的扩展块的数目,其数据结构如下:
struct blocklayout_layout{
u32 bl_count;
struct list_head bl_bes_list;
};
其中,bl_count指出组成该文件的扩展块的总数目,随着对用户请求的处理,扩展块被划分或合并,对应的bl_count值会随之发生改变;bl_bes_list由两个指针构成,分别指向文件的第一个节点和最后一个节点。
文件布局的链表节点数据结构如下:
struct bes_node{
struct list_head bn_bl_bes;
struct blocklayout_extent bn_be;
};
其中,bn_bl_bes由两个指针构成,分别指向该节点的上一个节点和下一个节点,特别的,第一个节点的上一个节点是链表头节点,最后一个节点的下一 个节点也是链表头节点,如图4所示;bn_be是节点的内容,记录了该节点对应扩展块的属性。
当请求的文件片段中存在尚未分配空间的情况,需向磁盘空间管理模块请求分配新的磁盘空间,其数据结构为:
struct allocator_segment{
u64 be_f_offset;
u64 be_length;
u64 be_v_offset;
struct deviceid bv_id;
};
其中,be_f_offset、be_length分别是向磁盘空间管理模块请求的扩展块在文件中的起始位置和长度、be_v_offset、bv_id是请求的扩展块的最佳的磁盘起始位置和磁盘ID。
文件布局管理步骤如下:
1.获取文件布局:在客户机上访问并行文件系统,元数据服务器接收从客户机传来的获取文件布局的请求,请求中的inode结构对应的file结构指向的元数据文件中读取文件布局,每个扩展块blocklayout_extent的节点bes_node与链表头节点blocklayout_layout组成双向链表;
如果用户请求是写文件,判断请求的文件布局无扩展块节点,如果没有,则表示文件不存在,创建一个新的扩展块,起始位置为0,长度是用户请求的起始位置值;
从链表头节点blocklayout_layout开始找到请求中文件的起始位置和长度所对应的所有扩展块节点bes_node,如果请求的文件布局有尚未分配空间的部分,则向磁盘空间管理模块申请相应的空间,如果文件布局发生改变,则将改变后 的文件布局的双向链表写入对应的元数据文件中。
从链表头节点blocklayout_layout开始找到请求中文件的起始位置和长度所对应的所有扩展块节点bes_node,将这些节点复制到另一个对应请求的有链表头节点blocklayout_layout的双向链表中,将对应请求的双向链表作为对请求的应答返回给客户机上的应用。
2.提交文件布局:在客户机应用对文件写操作完成后,元数据服务器将收到从客户机传来的提交文件布局的请求,从请求中的inode结构对应的file结构指向的元数据文件中读取文件布局,每个扩展块blocklayout_extent的节点bes_node与链表头节点blocklayout_layout组成双向链表;
从链表头节点blocklayout_layout开始找到请求中的扩展块链表节点对应的所有扩展块节点bes_node,对节点中的扩展块blocklayout_extent按请求中参数的情况以图6所示的方式进行划分,将提交的内容更新到文件布局的双向链表中;
判断文件布局的双向链表中是否有节点可以合并,如果有,按照图5所示的方式进行合并,将改变后的文件布局的双向链表写入对应的元数据文件中;
答复客户机上的应用此次提交文件布局是否成功。
3.调整文件布局:在客户机应用对文件进行截断操作或者修改文件大小属性后,元数据服务器将接收到调整文件布局的请求,从请求中的inode结构对应的file结构指向的元数据文件中读取文件布局,每个扩展块blocklayout_extent的节点bes_node与链表头节点blocklayout_layout组成双向链表;
如果用户请求将文件长度设为0,则删除文件布局双向链表的所有节点,仅保留头节点;
如果用户请求设置的文件长度不为0,则从链表头节点blocklayout_layout开始,依次累加每个扩展块blocklayout_extent的长度,直到刚好超出文件的大 小,以后的扩展块blocklayout_extent从链表中删除,并释放对应的空间,之后将最后一个扩展块blocklayout_extent进行划分,使之刚好满足文件大小的要求,将超出部分的新划分删除,并释放对应的空间;
如果累加所有扩展块blocklayout_extent的长度后,总长度还小于用户请求设置的文件长度,则创建一个新的扩展块节点,设置该扩展块,使所有扩展块的总长度等于用户请求设置的文件长度;
判断文件布局的双向链表中是否有节点可以合并,如果有进行合并,将改变后的文件布局的双向链表并写入对应的元数据文件中;
答复客户机上的应用此次调整文件布局是否成功。
Claims (1)
1.并行文件系统的元数据文件布局管理方法,其特征在于,所述方法是在用以太网连接起来的,由客户机、元数据服务器和存储设备构成的存储区域网络并行文件系统中依次按以下步骤完成的:
步骤(1)在所述系统中的元数据服务器之上加载一个文件布局管理模块:
所述文件布局管理模块含有的数据结构为:
blocklayout_extent:记录文件的扩展块的属性,包括长度、状态、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置,其中状态可能有读写、读、无效、空四种,
allocator_segment:记录向磁盘空间管理模块申请的文件的扩展块的属性,包括长度、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置,
bes_node:记录文件的扩展块,包含blocklayout_extent结构,作为节点加入文件扩展块链表,
blocklayout_layout:记录文件的扩展块的节点的总数,同时作为文件扩展链表的表头,
所述文件布局的数据结构组织方式为:所述blocklayout_layout作为链表头,所述bes_node作为链表节点的双向链表,该bes_node中的blocklayout_extent是所述文件的扩展块,所述文件的所有扩展块组成所述的文件布局的逻辑结构,
所述文件布局管理模块设有与用户请求处理模块的接口,以及与磁盘空间管理模块的接口,其中:
与用户请求处理模块的接口,有下述三个:
layout_get:用于获取文件的布局,来自所述用户请求处理模块的请求输入参数包括指定文件的索引节点inode及所述指定文件的起始位置和长度,经过所 述文件布局管理模块处理后,向所述用户请求处理模块返回对应于所述起始位置和长度的文件的扩展块集合,
layout_commit:用于提交文件的布局,来自所述用户请求处理模块的请求输入参数包括指定文件的索引节点inode及提交给所述指定文件的扩展块的集合,经过所述文件布局管理模块处理后,向所述用户请求处理模块返回所述文件的布局提交是否成功的标志,
layout_adjust:用于调整文件的布局,来自所述用户请求处理模块的请求输入参数包括指定文件的索引节点inode及所述指定文件的大小,经过文件布局管理模块处理后,向所述用户请求处理模块返回所述文件的布局按照指定大小修改是否成功的标志,
与磁盘空间管理模块的接口,有下述两个:
get_space_from_allocator:用于向所述磁盘空间管理模块请求分配新的磁盘空间,向所述磁盘空间管理模块输入的参数为:指定扩展块的最佳的磁盘ID和该磁盘起始位置及长度,经所述磁盘空间管理模块处理后,向所述文件布局管理模块返回的是实际提供给该指定扩展块的磁盘ID和磁盘起始位置,
free_space_to_allocator:用于向所述磁盘空间管理模块释放空闲的磁盘空间,向所述磁盘空间管理模块输入的是指定扩展块的磁盘ID、磁盘起始位置及长度,经所述磁盘空间管理模块处理后,向所述文件布局管理模块返回实际释放是否成功的标志,
在所述文件布局管理模块中设定:
所述扩展块的属性包括长度、状态、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置,所述的长度、状态、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置都以非负整数表示,其中所述长度表示该扩展块的字节数,所述文件的起始位置表示该扩展块中第一个字节距文件第一个字节的字节数,
待处理的文件布局为S,S={SE1,SE2,...,SEm},SEi∈S,1≤i≤m,SEi是该文件布局中包含的第i个扩展块,m为集合S的大小,
若所述文件布局S中扩展块SEi对应的长度为lsi,则所述扩展块SE1包含的文件布局区间是[0,ls1),SE2包含的文件的布局区间是[ls1,ls2),......,SEm包含的文件的布局区间是[lsm-1,lsm),
所述来自用户请求处理模块的请求中所要获取文件的起始位置为B,长度为L,
所述与用户请求处理模块交互的扩展块集合为R,R={RE1,RE2,...,REn},REj∈R,1≤j≤n,REj是该请求中的第j个扩展块,n为集合R的大小,
若所述扩展块集合R中扩展块REj对应的文件起始位置是brj,长度是lrj,则所述扩展块RE1包含的文件布局区间是[br1,br1+lr1),RE2包含的文件布局区间是[br2,br2+lr2),......,REn包含的文件的布局区间是[brn,brn+lrn),
所述扩展块集合R是以扩展块在文件的起始位置的小于等于关系为偏序关系的偏序集,且所述R中任意两个扩展块的文件布局区间无互相覆盖部分,即对有brj-1+lrj-1≤brj,
若所述扩展块集合P中扩展块PEk对应的文件起始位置是bpk,长度是lpk,则所述扩展块PE1包含的文件布局区间是[bp1,bp1+lp1),PE2包含的文件布局区间是[bp2,bp2+lp2),......,PEt包含的文件的布局区间是[bpt,bpt+lpt),
在所述文件布局管理模块中,对于所述文件布局S中包含的连续两个扩展块E1和扩展块E2能够合并作如下定义:
所述扩展块E1与所述扩展块E2能够合并是指:所述E1和E2的状态相同、所属磁盘的ID相同,所述E1在文件中的起始位置与长度的和等于所述E2在文件中的起始位置,所述E1在磁盘中的起始位置与长度的和等于所述E2在磁盘中的起始位置,合并后的扩展块在状态、所属磁盘的ID与合并前的所述E1、E2的相同,该合并后的扩展块的长度是合并前的所述扩展块E1与E2长度之和,该合并后的扩展块在文件中的起始位置及在磁盘中的起始位置与所述E1相同,
在所述文件布局管理模块中,对于属于所述扩展块集合P的扩展块E与另一个属于所述扩展块集合R的扩展块E′之间的关系作如下定义:
所述扩展块E′与所述扩展块E的内容相同:两者在扩展块的文件长度、状态、在文件中的起始位置、所属磁盘的ID及在磁盘中的起始位置均相同,
所述两个扩展块E与E′的内容能做差运算,其条件为:所述E′在文件中的起始位置大于或等于所述E在文件中的起始位置,所述E′在文件中的起始位置与长度之和小于或等于所述E在文件中的起始位置与长度之和,
所述两个扩展块E与E′内容之差的头部定义为扩展块E头,符合以下条件:所述扩展块E头的状态、所属磁盘的ID均与所述E相同,该扩展块E头的长度是所述E′在文件中的起始位置减去所述E在文件中的起始位置,该扩展块E头在文件中的起始位置是所述E在文件中的起始位置,该扩展块E头在磁盘中的起始位置是所述E在磁盘中的起始位置,
所述两个扩展块E与E′内容之差的尾部定义为扩展块E尾,符合以下条件:所述扩展块E尾的状态、所属磁盘的ID均与所述E相同,该扩展块E尾的长度是所述E的长度减去所述E′的长度,该扩展块E尾在文件中的起始位置是所述E在文件中的起始位置加上所述E′的长度,该扩展块E尾在磁盘中的起始位置是所述 E在磁盘中的起始位置加上所述E′的长度;
步骤(2)在步骤(1)所述的系统中,所述文件布局管理模块依次按以下步骤执行并行文件系统的文件布局管理方法:
步骤(2.1)获取文件布局:所述用户请求处理模块向所述文件布局管理模块发送获取文件布局的请求,该请求的输入参数包括指定文件的索引节点inode及所述指定文件的起始位置和长度,所述文件布局管理模块找到相应的文件布局,把组成文件布局的扩展块根据所述请求的起始位置和长度,进行划分与合并,返回给所述请求相应的扩展块集合,并告知所述文件系统,其步骤如下:
步骤(2.1.1)从用户请求处理模块传来的请求中的索引节点inode结构获取对应的file结构,找到由file结构指向的元数据文件,
步骤(2.1.2)若用户请求处理模块发来的是读请求,则从所述元数据文件中读取对应的文件布局S,S={SE1,SE2,...,SEm},根据所述请求的文件的起始位置B,长度L,获取相应的扩展块集合R={RE1,RE2,...,REn},并返回给所述用户请求处理模块,
步骤(2.1.3)若用户请求处理模块发来的是写请求,则
首先,根据所述元数据文件是否为空,判断该请求的文件是否存在,若文件不存在则所述文件布局管理模块创建文件布局S={SE1},否则从所述元数据文件中读取对应的文件布局S,S={SE1,SE2,...,SEm},
其次,若所述文件布局S={SE1,SE2,...,SEm}中对应用户请求的起始位置B,长度L的片段中包含尚未在磁盘上分配空间的扩展块时,先向所述磁盘空间管理模块申请空间,
最后,若所述文件布局S发生改变,则告知系统新的文件布局S′={SE1′,SE2′,...,SEm′},并写入所述元数据文件中,根据所述请求的文件的起始位置B,长度L,获取相应的扩展块集合R={RE1,RE2,...,REn},并返回给所述用户请 求处理模块,
步骤(2.2)提交文件布局:所述用户请求处理模块向所述文件布局管理模块发送提交文件布局的请求,该请求的输入参数包括指定文件的索引节点inode及提交给所述指定文件的扩展块的集合,所述文件布局管理模块将该文件布局中的扩展块与该用户请求处理模块传来的扩展块依次比较,找到对应部分后,进行划分与合并操作,答复用户请求处理模块,并告知所述文件系统,其步骤如下:
步骤(2.2.1)再次执行步骤(2.1.1),由所述元数据文件中读取对应的文件布局S,S={SE1,SE2,...,SEm},
步骤(2.2.2)在步骤(2.2.1)得到的所述文件布局S={SE1,SE2,...,SEm}中检索到与该用户请求处理模块请求的扩展块集合R={RE1,RE2,...,REn}对应的文件扩展块集合P={PE1,PE2,...,PEt},区别以下两种情况,分别对所述P中的扩展块PEk作划分:
若:所述R={RE1,RE2,...,REn}中的扩展块REj与相应的P={PE1,PE2,...,PEt}扩展块PEk起始位置匹配,且结束位置也匹配,则不需划分,如果结束位置不匹配,则从所述S中划分出一个新的扩展块PEk′,与所述REj内容相同,划分后,所述PEk的内容发生改变,改变为划分前所述PEk与所述REj内容之差的尾部,
若:所述R={RE1,RE2,...,REn}中的扩展块REj与相应的P={PE1,PE2,...,PEt}扩展块PEk起始位置不匹配,则从所述S中划分一个新的扩展块PEk ′,其内容是所述PEk与所述REj内容之差的头部,划分后,所述PEk的内容发生改变,改变为划分前所述PEk与所述PEk′内容之差的尾部,再按REj与PEk起始位置匹配的情况处理,
步骤(2.2.3)判断步骤(2.2.2)得到的文件扩展块集合中是否有能合并的扩展块,若有,则合并相应的扩展块,
步骤(2.2.4)若所述文件布局S={SE1,SE2,...,SEm}发生改变,则告知系统新的文件布局S′={SE1′,SE2′,...,SEm′},并写入所述元数据文件,答复所述用户请求处理模块,
步骤(2.3)调整文件布局:所述用户请求处理模块向所述文件布局管理模块发送调整文件布局的请求,该请求的输入参数包括指定文件的索引节点inode及所述指定文件的大小,所述文件布局管理模块通过删除扩展块或减少扩展块长度的方式裁剪文件布局以减小文件,或者通过增加扩展块或增大扩展块长度的方式以增大文件,答复该用户请求处理模块的请求,并告知所述文件系统,其步骤如下:
步骤(2.3.1)重复步骤(2.1.1),由所述元数据文件中读取对应的文件布局S,S={SE1,SE2,...,SEm},
步骤(2.3.2)按以下步骤处理扩展块,满足用户调整文件大小的请求:
第二步,判断调整的大小是否小于文件已有大小,如果是,删除超出部分的扩展块P={PE1,PE2,...,PEt},新的文件布局S′=S-P,否则进行下一步,
第三步,判断调整的大小是否超出文件已有大小,如果是,创建一个新的扩展块SEm+1,新的文件布局S′=S+{SEm+1},否则结束,
步骤(2.3.3)判断文件的扩展块集合中是否有能合并的扩展块,如果有,则合并相应的扩展块,
步骤(2.3.4)若所述文件布局S={SE1,SE2,...,SEm}发生改变,则告知系统新的文件布局S′={SE1′,SE2′,...,SEm′},将其写入所述元数据文件,并答复所述用户请求处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100854824A CN101567001B (zh) | 2009-05-22 | 2009-05-22 | 并行文件系统的元数据文件布局管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100854824A CN101567001B (zh) | 2009-05-22 | 2009-05-22 | 并行文件系统的元数据文件布局管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101567001A CN101567001A (zh) | 2009-10-28 |
CN101567001B true CN101567001B (zh) | 2012-05-16 |
Family
ID=41283154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100854824A Expired - Fee Related CN101567001B (zh) | 2009-05-22 | 2009-05-22 | 并行文件系统的元数据文件布局管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101567001B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101883028B (zh) * | 2010-06-30 | 2015-06-24 | 中兴通讯股份有限公司 | 网络文件系统服务器的检测方法及装置 |
CN102073739A (zh) * | 2011-01-25 | 2011-05-25 | 中国科学院计算技术研究所 | 带有快照功能的分布式文件系统中的数据读与数据写方法 |
CN102622412A (zh) * | 2011-11-28 | 2012-08-01 | 中兴通讯股份有限公司 | 一种分布式文件系统中的并发写入方法及装置 |
US9524342B2 (en) * | 2011-12-21 | 2016-12-20 | The Boeing Company | Panoptic visualization document navigation |
CN103186473A (zh) * | 2011-12-30 | 2013-07-03 | 英业达股份有限公司 | 存储资源的定位系统 |
JP6134514B2 (ja) * | 2012-03-23 | 2017-05-24 | ザ・ボーイング・カンパニーThe Boeing Company | パノラマ的な視覚化ドキュメントデータベース管理 |
CN102831240B (zh) * | 2012-09-05 | 2016-03-30 | 曙光信息产业(北京)有限公司 | 扩展元数据文件的存储方法和存储结构 |
CN103458023B (zh) * | 2013-08-30 | 2016-12-28 | 清华大学 | 分布式闪存存储系统 |
CN104636397B (zh) * | 2013-11-15 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 用于分布式计算的资源分配方法、计算加速方法以及装置 |
CN103873577B (zh) * | 2014-03-21 | 2017-02-01 | 浙江天正信息科技有限公司 | 一种优化数据密集型Web服务组合的并行度计算方法 |
CN104281517B (zh) * | 2014-10-16 | 2017-05-17 | 浙江宇视科技有限公司 | 一种基于日志方式的存储空间管理方法和装置 |
CN105630810B (zh) * | 2014-10-30 | 2019-05-21 | 曙光信息产业股份有限公司 | 一种对于海量小文件在分布式存储系统中上载的方法 |
CN105808622A (zh) * | 2014-12-31 | 2016-07-27 | 乐视网信息技术(北京)股份有限公司 | 一种文件存储的方法和装置 |
CN105119758A (zh) * | 2015-09-14 | 2015-12-02 | 中国联合网络通信集团有限公司 | 一种数据采集的方法及采集系统 |
CN107247714B (zh) * | 2016-06-01 | 2018-02-27 | 国家电网公司 | 一种基于分布式存储技术的小文件存取系统的存取方法 |
CN107016130A (zh) * | 2017-05-18 | 2017-08-04 | 郑州云海信息技术有限公司 | 一种文件存储的方法及装置 |
CN108089818B (zh) * | 2017-12-12 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及存储介质 |
CN108494704A (zh) * | 2018-03-05 | 2018-09-04 | 电子科技大学 | 一种基于通道的双缓冲技术的实时数据流处理方法 |
CN109471864A (zh) * | 2018-11-19 | 2019-03-15 | 中山大学 | 一种面向并行文件系统双层索引方法和系统 |
CN115022890B (zh) * | 2022-06-02 | 2023-06-30 | 西安电子科技大学 | 面向容量覆盖的资源小区覆盖结构生成方法 |
-
2009
- 2009-05-22 CN CN2009100854824A patent/CN101567001B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101567001A (zh) | 2009-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101567001B (zh) | 并行文件系统的元数据文件布局管理方法 | |
US10579610B2 (en) | Replicated database startup for common database storage | |
US9946735B2 (en) | Index structure navigation using page versions for read-only nodes | |
CN102164161B (zh) | 一种对并行文件系统进行文件布局提取的方法和装置 | |
JP5411250B2 (ja) | 冗長データ記憶システムへの指示に従ってのデータ配置 | |
JP4787315B2 (ja) | データコンテナの中身をクラスタの複数のボリュームにわたってストライピングするためのストレージシステム・アーキテクチャ | |
CN103502926B (zh) | 基于扩展区的存储架构 | |
US8341118B2 (en) | Method and system for dynamically replicating data within a distributed storage system | |
US9904717B2 (en) | Replication of data objects from a source server to a target server | |
KR100834162B1 (ko) | 스트라이핑을 사용한 데이터 저장 방법 및 장치 | |
US7865677B1 (en) | Enhancing access to data storage | |
US20150112951A1 (en) | Data management in distributed file systems | |
US11797491B2 (en) | Inofile management and access control list file handle parity | |
JP2004070403A (ja) | ファイル格納先ボリューム制御方法 | |
EP2534571B1 (en) | Method and system for dynamically replicating data within a distributed storage system | |
US10503693B1 (en) | Method and system for parallel file operation in distributed data storage system with mixed types of storage media | |
JP2012525634A (ja) | ストライプ化ファイルシステムにおける能力平準化によるデータ分散 | |
US9405484B2 (en) | System of managing remote resources | |
US10909143B1 (en) | Shared pages for database copies | |
US10852985B2 (en) | Persistent hole reservation | |
WO2019226365A1 (en) | Scalable multi-tier storage structures and techniques for accessing entries therein | |
US20210365187A1 (en) | Freeing and utilizing unused inodes | |
WO2021057108A1 (zh) | 一种读数据方法、写数据方法及服务器 | |
US20220035837A1 (en) | Timestamp consistency for synchronous replication | |
CN108897822A (zh) | 一种数据更新方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120516 Termination date: 20170522 |
|
CF01 | Termination of patent right due to non-payment of annual fee |