。当请求创建的文件为大文件时,Shard模块将大文件拆分为若干个固定大小的子文件,并向SpaceManager模块发送文件创建请求。此时,SpaceManager模块是网络互连的,SpaceManager模块首先在本地空间为各个子文件寻找合适的卷组,当本地空间不足时,通过网络间的进程NetRW去其他服务器中申请卷组进行逻辑卷LV的创建,并记录各个子文件的逻辑卷信息,包括逻辑卷的序号,以及各个逻辑卷的位置。Shard模块接收SpaceManager模块返回的LV信息,并将该LV信息通过文件系统操作层记入到本地文件系统中的文件中。当后续需要写入或者读取文件时,Shard模块通过读取本地文件系统中的逻辑卷信息查询各个子文件的位置,当子文件存储在其他服务器上时,通过NetRW进行远程逻辑卷LV的读写。通过利用全局的空间,达到了单个文件大小突破单台服务器磁盘容量的目的。
[0058]如图6所示,在一个实施例中,上述分布式文件系统数据管理方法还包括:
[0059]步骤602,接收删除文件的请求。
[0060]具体的,接收客户端或其他服务器发送的删除文件的请求。
[0061 ]步骤603,识别请求删除文件的大小类别。
[0062]具体的,根据缓存内容即根据当初创建该文件时记录的文件的大小类别,识别请求删除文件的大小类别。
[0063]步骤604,若请求删除的文件为小文件,则直接在本地文件系统中删除对应的文件。
[0064]具体的,若请求删除的文件为小文件,通过小文件的元数据信息直接在本地文件系统中找到请求删除的文件进行删除即可。其中,小文件的元数据也存储在本地文件系统中。
[0065]步骤606,若请求删除的文件为大文件,则查询大文件包含的子文件对应的逻辑卷信息,解析逻辑卷信息,根据解析后的逻辑卷信息删除对应的逻辑卷。
[0066]具体的,如果请求删除的文件为大文件,在首先查询存储在本地文件系统中的大文件元数据信息即各个子文件对应的逻辑卷信息,通过解析查找到的逻辑卷信息,找到各个子文件对应的逻辑卷并进行删除。
[0067]—个实施例中,通过如图2所示的场景图,客户端服务器Client发起删除文件请求,存储服务器中的Server中的Shard模块根据缓存内容判断请求删除的文件是大文件还是小文件,若请求删除的文件为小文件,则通过Server中的文件系统操作层在本地文件系统中即图中黑色的LV,找到请求删除的文件并进行删除。若请求删除的文件为大文件,Shard模块从本地文件系统中查询大文件包含的子文件对应的LV信息,向SpaceManager模块发送删除对应的LV的请求,SpaceManager模块根据接收到的请求,删除对应的LV。Shard模块将对应的LV信息从本地文件系统中删除。
[0068]如图7所示,在一个实施例中,上述分布式文件系统管理方法还包括:
[0069]步骤702,接收文件写入请求。
[0070]具体的,通过接收客户端或其他服务器发送的文件写入请求。
[0071 ]步骤703,识别请求写入文件的大小类别。
[0072]具体的,服务器接收写入请求,根据缓存内容判断请求写入文件的大小类别。
[0073]步骤704,若请求写入的文件为小文件,则直接将数据写入本地文件系统中对应的文件中。
[0074]具体的,如果请求写入的文件是小文件,通过本地文件系统中的小文件元数据信息在本地文件系统中找到对应的文件,将请求写入的数据写入到该文件中。
[0075]步骤706,若请求写入的文件为大文件,则查询大文件包含的子文件对应的逻辑卷信息,根据逻辑卷信息和写入的偏移位置,确定与偏移位置对应的逻辑卷,将数据写入到逻辑卷,并更新本地文件系统中相应的逻辑卷信息。
[0076]具体的,如果请求写入的文件为大文件,则查询该大文件包含的各个子文件对应的逻辑卷信息,并根据逻辑卷信息和请求写入的偏移位置,查找到与偏移位置对应的逻辑卷,并将数据写入到该逻辑卷,更新本地文件系统中相应的逻辑卷信息。这里的偏移位置是指请求写入数据的具体位置。
[0077]在一个实施例中,通过如图2所示的场景图,客户端服务器Client发起文件写入请求,存储服务器中的Server中的Shard模块根据缓存内容判断写入请求的文件是大文件还是小文件,若请求写入的文件为小文件,则通过Server中的文件系统操作层在本地文件系统中即图中黑色的LV,找到请求写入的文件,并将数据写入到对应的文件中。若请求写入的文件为大文件,则Shard模块从本地文件系统中查询该大文件包含的各个子文件对应的逻辑卷信息,并根据查找到的逻辑卷信息和请求写入的偏移位置,定位到与偏移位置对应的逻辑卷,在该逻辑卷中进行写入操作。Shard模块通过文件系统层更新本地文件系统中对应的逻辑卷信息,包括更新时间和文件大小等。
[0078]如图8所示,在一个实施例中,上述分布式文件系统的数据管理方法还包括:
[0079]步骤802,接收文件读取请求。
[0080]具体的,通过接收客户端或其他服务器发送的文件读取请求,根据缓存内容判断该请求读取的文件的大小类别。
[0081 ]步骤803,识别请求读取文件的大小类别。
[0082]具体的,服务器接收文件读取请求,根据缓存内容判断请求写入文件的大小类别。
[0083]步骤804,若请求读取的文件为小文件,则直接从本地文件系统中读取对应的文件内容。
[0084]具体的,如果请求读取的文件是小文件,通过本地文件系统中的小文件元数据信息在本地文件系统中找到对应的文件,并从找到的文件中读取对应的文件内容。
[0085]步骤806,若请求读取的文件为大文件,则查询大文件包含的子文件对应的逻辑卷信息,根据逻辑卷信息和读取的偏移位置,确定与偏移位置对应的逻辑卷,从逻辑卷中读取相应的文件内容,并更新本地文件系统中相应的逻辑卷信息。
[0086]具体的,如果请求读取的文件是大文件,则查询该大文件包含的各个子文件对应的逻辑卷信息,并根据逻辑卷信息和请求读取的偏移位置,查找到与偏移位置对应的逻辑卷,直接从该逻辑卷中读取相应的文件内容,并更新本地文件系统中相应的逻辑卷信息。
[0087]在一个实施例中,通过如图2所示的场景图,客户端服务器Client发起文件读取请求,存储服务器中的Server中的Shard模块根据缓存内容判断写入读取的文件是大文件还是小文件,若请求读取的文件为小文件,则通过Server中的文件系统操作层在本地文件系统中即图中黑色的LV,找到请求读取的文件,并从该文件中读取相应的文件内容。若请求写入的文件为大文件,则Shard模块从本地文件系统中查询该大文件包含的各个子文件对应的逻辑卷信息,并根据查找到的逻辑卷信息和请求读取的偏移位置,定位到与偏移位置对应的逻辑卷,从该逻辑卷中读取相应的文件内容。Shard模块通过文件系统层更新本地文件系统中对应的逻辑卷信息,包括更新时间和文件大小等。
[0088]如图9所示,在一个实施例中,提出了一种分布式文件系统的数据管理装置,该装置包括:
[0089]接收模块902,用于接收文件创建请求,获取请求创建的文件信息。
[O(M)]确定模块904,用于根据文件信息确定文件的大小类别。
[0091]分配模块906,用于若文件为小文件,则在本地文件系统中为小文件分配空间,若文件为大文件,则将大文件进行拆分,并为拆分后的子文件创建逻辑卷以存储子文件,记录子文件对应的逻辑卷信息,将记录的逻辑卷信息存储到本地文件系统。
[0092]如图10所示,在一个实施例中,确定模块904包括:
[0093]识别模块904a,用于根据文件信息识别文件的格式类型。
[0094]大小确定模块904b,根据预先建立的格式类型与大小类别之间的对应关系,确定文件的大小类别。
[0095]在一个实施例中,分配模块还用于若文件为大文件,则将大文件按预设的规则进行拆分,为拆分后的子文件分配卷组,并在卷组上为子文件创建逻辑卷以存储子文件,以及记录子文件对应的逻辑卷信息。
[0096]在一个实施例中,分配模块还用于在本地空间为拆分后的子文件分配卷组,并在该卷组上为子文件创建逻辑卷,当本地空间不足时,则通过网络间的进程为