一种写数据的方法、装置及系统的制作方法

文档序号:6353776阅读:201来源:国知局
专利名称:一种写数据的方法、装置及系统的制作方法
技术领域
本发明涉及分布式文件系统,特别涉及一种多用户进程写数据的方法、装置及系统。
背景技术
分布式文件系统包括用户进程、控制进程及文件服务器。当用户进程需要向系统追加数据时,首先由用户进程发送写请求到控制进程,控制进程会根据写请求生成响应包返回给用户进程,用户进程通知文件服务器完成数据的追加。在分布式文件系统中存在多个用户进程,这些用户进程负责应用接入,被称作多用户进程,多用户进程是通过控制进程与文件服务器进行交互操作的。 在分布式文件系统中,如果有多个用户进程要对某个文件进行写数据操作,那么,首先这些多用户进程获得该文件的文件尾偏移量,然后在该文件尾偏移量后写入数据。在实现本发明的过程中,发明人发现现有技术至少存在以下问题当多个用户进程并发向同一文件追加写数据时,控制进程直接返回当前文件尾偏移量,当某个用户进程尚未完成写入数据操作时,文件尾偏移量不会被改写,那么多个用户进程在相同的文件尾偏移量后写入数据,引起文件数据混乱无序,从而无法保证写入数据的正确性。

发明内容
为了实现了多用户进程并发数据汇总操作时,数据的有序性及正确性,本发明实施例提供了一种写数据的方法。所述技术方案如下所述方法包括接收用户进程的写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制所述用户进程将所述期望写入的数据写入所述目标文件中。本发明实施例还提供了一种写数据的装置。所述技术方案如下所述装置包括接收模块,用于接收用户进程的写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;偏移量修改模块,用于根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制写入模块,用于控制所述用户进程将所述期望写入的数据写入所述目标文件中。本发明实施例还提供了一种写数据的系统,所述系统包括用户进程,用于向控制进程发送写请求信息;
控制进程,用于接收所述写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制所述用户进程将所述期望写入的数据写入所述目标文件中;至少一台文件服务器,用于将所述期望写入的数据写入所述目标文件。本发明实施例提供的技术方案带来的有益效果是通过在多个用户进程并发追加数据的时候,预修改文件尾偏移量保证数据追加的有序性。


图I是本发明实施例I提供的ー种写数据的方法的流程示意图;图2是本发明实施例2提供的ー种写数据的方法的流程示意图;图3是本发明实施例3提供的ー种写数据的装置的结构示意图;图4是本发明实施例3中的控制写入模块的结构示意图;图5是本发明实施例3中的写入单元的结构示意图;图6是本发明实施例3中的发送子単元的结构示意图。图7是本发明实施例4提供的ー种写数据的系统的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进ー步地详细描述。实施例I本发明实施例提供ー种写数据的方法,參见图1,该方法包括101 :接收用户进程的写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;分布式文件系统包括用户进程、控制进程及文件服务器。当用户进程需要向系统追加数据(写数据)时,首先由用户进程发送写请求信息到控制进程,该写请求信息包括文件名,期望写入的数据长度,文件属性等信息。102 :根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制进程根据写请求信息中指定的文件名,检索该文件的内存元数据,获得该文件名对应的元数据,在元数据的结构中存储有与真实数据相关环境数据,即,元数据描述了真实数据相关环境数据。根据该写请求信息中的期望写入的数据的长度,修改该文件名对应的元数据中的文件尾偏移量字段的内容。通过在写入数据前,根据要写入数据的长度,预先改写该文件的文件尾偏移量,从而当多个用户进程并发向同一文件追加写数据时,使其他追加进程在修改后的文件结尾处追加数据,以免造成不同用户进程向文件同一位置写入数据,引起文件数据混乱无序。103 :控制所述用户进程将所述期望写入的数据写入所述目标文件中。控制进程根据写请求信息,获取到写请求信息中目标文件的元数据结构,并将该元数据结构发送给用户进程,用户进程根据该元数据结构,从缓冲区中取出数据,写入该目标文件中。 本发明实施例采用控制进程根据用户进程接入顺序,预增加文件逻辑长度,由控制进程限制存储服务器写磁盘操作,保证追加行为的有序性。实施例2本发明实施例提供一种写数据的方法,参见图2,该方法包括201 :接收用户进程的写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;分布式文件系统包括用户进程、控制进程及文件服务器。当用户进程需要向系统追加数据(写数据)时,首先由用户进程发送写请求到控制进程,该写请求信息包括文件名,期望写入的数据长度,文件属性等信息。控制进程根据所接收的写请求信息,进行进一步的操作。
202 :根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制进程根据写请求信息中指定的文件名,检索该文件的内存元数据,获得该文件名对应的元数据,在元数据的结构中存储有与真实数据相关环境数据,即,元数据描述了真实数据相关环境数据。根据该写请求信息中的期望写入的数据的长度,修改该文件名对应的元数据中的文件尾偏移量字段的内容。这样,在将数据写入目标文件之前,根据要写入数据的长度,预先改写该文件的文件尾偏移量。当多个用户进程并发向同一文件追加写数据时,系统确定用户进程A将写请求信息发送给控制进程,然后控制进程根据该写请求信息中的期望写入的数据长度,修改目标文件的文件尾偏移量,当接收到另一个对该目标文件进行追加操作的用户进程B的写请求信息时,即使用户进程A还没有完成对该目标文件的追加操作,此时控制进程所获取的文件尾偏移量仍是将用户进程A的期望写入数据全部写入后的文件偏移量,此时用户进程B是在修改后的文件尾偏移量处追加,从而确保用户进程B期望写入的数据是写在了用户进程A写入的数据之后。即,通过在写入数据前预先改写该文件的文件尾偏移量,从而,使其他追加进程在修改后的文件结尾处追加数据,以免造成不同用户进程向文件同一位置写入数据,引起文件数据混乱无序;根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量之后,控制所述用户进程将期望写入的数据写入所述目标文件中。203 :根据期望写入的数据长度计算所需的数据块数量,为每个数据块构建一个元数据,所述元数据中至少包括所述数据块对应的文件起始偏移量、数据长度、每个副本服务器的地址;所述副本服务器中有一个为主服务器,所述主服务器具有网络令牌;根据期望写入的数据的长度,可以计算出为期望写入的数据所需的数据块(chunk)数量。期望写入的数据的长度除以每个数据块的长度,如果能整除,商数为所需的数据块(chunk)数量,如果不能整除,商数加I为所需的数据块(chunk)数量,为每个数据块构建一个元数据。所述元数据中至少包括所述数据块对应的文件起始偏移量、数据长度等信息。另外,用户进程的写请求信息中还包括副本服务器的数目N,保证该数据的安全拷贝的份数,即,将数据复制在几个副本服务器上。控制进程根据所收到的文件服务器通过心态信号上报的服务器状态信息,这些状态信息包括网络地址,磁盘剩余空间,CPU利用率,网络负载等信息,根据各文件服务器负载情况,选取N(副本数)台负载较低的,同时选取一台服务器作为主服务器,为其分配一个网络令牌。令牌具有一定的生命周期,当生命周期结束后,该服务器需要重新申请令牌。
控制进程也将上述信息,例如,副本服务器的地址以及令牌信息,写入chunk的元数据中。可以将该N台副本服务器网络地址随机存入一个数组中。204 :控制进程将所有数据块的元数据发送给所述用户进程,控制进程将所有数据块的元数据返回给用户进程,所述元数据中至少包括所述数据块对应的文件起始偏移量、数据长度、每个副本服务器的地址;控制进程可将上述信息封装成响应数据包,并将所述响应数据包发送给所述用户进程。205:所述用户进程根据所述元数据,将期望写入的数据存储到副本服务器的内存中。 所述用户进程对所接收的每ー个数据块的元数据根据所述数据块的元数据中的文件起始偏移量和数据长度,从缓冲区中读取数据块,并将所述数据块以及相应的元数据发送给所有副本服务器;用户进程将所述数据块以及相应的元数据发送给所有副本服务器可以通过以下步骤实现所述用户进程对所接收的每ー个数据块的元数据所述用户进程将从缓冲区中读取数据块,并将所述数据块以及相应的元数据发送给a :所有副本服务器中的ー个副本服务器中;这个副本服务器可以是第一副本服务器,即,存放N台副本服务器网络地址数组中的第一个所对应的副本服务器,所述所有副本服务器中的ー个副本服务器根据所述数据块的元数据中其余副本服务器的地址,将所述数据块以及相应的元数据发送给其余副本服务器;所述其余副本服务器将所述数据块以及相应的元数据存储到其本地内存中。上述步骤a也可用步骤b来替代。b:用户进程还可将从缓冲区中读取数据块以及相应的元数据分别发送给所有副本服务器。所述用户进程对所接收的每一个数据块的元数据执行上述操作,直到遍历所有数据块的元数据。206:根据所述副本服务器返回的接收确认信息和所述数据块的元数据中的网络令牌,获取主服务器的地址,并向所述主服务器发送写磁盘命令,使所述主服务器根据写磁盘命令,将所述数据块写入本地磁盘中,并控制其余副本服务器将该数据块写入其本地磁盘中。所述用户进程根据所述元数据,将期望写入的数据存储到副本服务器的内存中存在两种方式对于使用步骤a的方式用户进程接收到第一个副本服务器发送的完成发送数据块以及相应的元数据确认信息后,读取所述chunk的元数据,获得拥有令牌的主服务器网络地址;向所述主服务器发送写磁盘确认命令。对于使用步骤b的方式用户进程接收到所有副本服务器发送的完成发送数据块以及相应的元数据确认信息后,读取所述chunk的元数据,获得拥有令牌的主服务器网络地址;向所述主服务器发送写磁盘确认命令。主服务器收到写磁盘确认命令后,将所述数据块写入本地磁盘,同时通知所述其余的副本服务器,将其内存中缓存的所述数据块写入其本地磁盘。用户进程对每一个chunk,都是通过具有网络令牌的主服务器,控制其余的副本服务器将这个chunk数据写入本地磁盘中,即对该chunk统一进行操作,从而确保数据版本的一致性,保证了备份的期望写入的数据的一致性。主服务器将本机内存中数据完整的写入到磁盘后,发送完成该写操作的确认信息。
由于其余的副本服务器已在各自的内存中缓存所述数据块以及相应的元数据。在得到主服务器的控制命令,就可以完成数据的备份。所以,主服务器将本机内存中数据完整的写入到磁盘后,即通知控制进程该次追加操作已经正确完成,无需等待其他副本服务器完成写操作。在主服务器根据所接收的响应数据包,完成写操作后,接收主服务器发送的完成确认信息,并将该完成确认信息通知所述用户进程。本发明实施例通过在多个用户进程并发追加数据的时候,预修改文件尾偏移量,从而确保了追加数据的有序性。另外,本发明实施例还通过结合网络令牌,从而实现了多用户进程并发数据汇总操作时,数据的有序性及正确性、在副本分发时保证各副本版本一致性以及简化控制进程处理逻辑,由文件服务器保证主文件及副本物理一致性,平衡各模块负载。实施例3本发明实施例提供一种写数据的装置,参见图3-图6,该装置包括接收模块300,用于接收用户进程的写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;偏移量修改模块310,用于根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制写入模块320,用于控制所述用户进程将所述期望写入的数据写入所述目标文件中。控制写入模块320包括元数据构建单元321,用于根据期望写入的数据长度计算所需的数据块数量,为每个数据块构建一个元数据,所述元数据中至少包括所述数据块对应的文件起始偏移量、数据长度、每个副本服务器的地址;所述副本服务器中有一个为主服务器,所述主服务器具有网络令牌;写入单元322,用于将所有数据块的元数据发送给所述用户进程,使所述用户进程根据所述元数据,将期望写入的数据存储到副本服务器中。所述写入单元322包括发送子单元3221,用于对所接收的每一个数据块的元数据,根据所述数据块的元数据中的文件起始偏移量和数据长度,从缓冲区中读取数据块,并将所述数据块以及相应的元数据发送给所有副本服务器;第一写入子单元3222,用于根据所述副本服务器返回的接收确认信息和所述数据块的元数据中的网络令牌,获取主服务器的地址,并向所述主服务器发送写磁盘命令,使所述主服务器根据写磁盘命令,将所述数据写入本地磁盘中,并控制其余副本服务器将该数据写入其本地磁盘中。发送子单3221元,包括第一发送子単元,用于将所述数据块以及相应的元数据发送到所有副本服务器中的ー个副本服务器;第二发送子単元,用于使所述副本服务器根据所述数据块的元数据中其余副本服务器的地址,将所述数据块以及相应的元数据发送给其余副本服务器;使所述其余副本服务器将所述数据存储到其本地内存中。本实施例提供的装置,与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。实施例4本发明实施例提供ー种写数据的系统,參见图7,该系统包括用户进程701,用于向控制进程发送写请求信息;控制进程702,用于接收所述写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制所述用户进程将所述期望写入的数据写入所述目标文件中;至少一台文件服务器703,用于将所述期望写入的数据写入所述目标文件。本实施例提供的系统与装置及方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。本发明实施例通过在多个用户进程并发追加数据的时候,预修改文件尾偏移量,从而确保了追加数据的有序性。另外,本发明实施例还通过结合网络令牌,从而实现了多用户进程并发数据汇总操作时,数据的有序性及正确性、在副本分发时保证各副本版本一致性以及简化控制进程处理逻辑,由文件服务器保证主文件及副本物理一致性,平衡各模块负载。以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如计算机中的硬盘、光盘或软盘。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种写数据的方法,其特征在于,所述方法包括接收用户进程的写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制所述用户进程将所述期望写入的数据写入所述目标文件中。
2.根据权利要求I所述的方法,其特征在于,所述控制所述用户进程将期望写入的数据写入所述目标文件中,包括根据期望写入的数据长度计算所需的数据块数量,为每个数据块构建一个元数据,所述元数据中至少包括所述数据块对应的文件起始偏移量、数据长度、每个副本服务器的地址;所述副本服务器中有一个为主服务器,所述主服务器具有网络令牌;将所有数据块的元数据发送给所述用户进程,使所述用户进程根据所述元数据,将期望写入的数据存储到副本服务器中。
3.根据权利要求2所述的方法,其特征在于,所述用户进程根据所述元数据,将期望写入的数据存储到副本服务器中,包括所述用户进程对所接收的每一个数据块的元数据根据所述数据块的元数据中的文件起始偏移量和数据长度,从缓冲区中读取数据块, 并将所述数据块以及对应的元数据发送给所有副本服务器;根据所述副本服务器返回的接收确认信息和所述数据块的元数据中的网络令牌,获取主服务器的地址,并向所述主服务器发送写磁盘命令,使所述主服务器根据写磁盘命令,将所述数据写入本地磁盘中,并控制其余副本服务器同时将该数据写入其本地磁盘中。
4.根据权利要求3所述的方法,其特征在于,所述将所述数据块以及对应的元数据发送给所有副本服务器,包括将所述数据块以及对应的元数据发送给所有副本服务器中的一个副本服务器;所述副本服务器根据所述数据块的元数据中其余副本服务器的地址,将所述数据块以及对应的元数据发送给其余副本服务器;所述其余副本服务器将所述数据块以及相应的元数据存储到其本地内存中。
5.一种写数据的装置,其特征在于,所述装置包括接收模块,用于接收用户进程的写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;偏移量修改模块,用于根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制写入模块,用于控制所述用户进程将所述期望写入的数据写入所述目标文件中。
6.根据权利要求5所述的装置,其特征在于,所述控制写入模块包括元数据构建单元,用于根据期望写入的数据长度计算所需的数据块数量,为每个数据块构建一个元数据,所述元数据中至少包括所述数据块对应的文件起始偏移量、数据长度、每个副本服务器的地址;所述副本服务器中有一个为主服务器,所述主服务器具有网络令牌;写入单元,用于将所有数据块的元数据发送给所述用户进程,使所述用户进程根据所述元数据,将期望写入的数据存储到副本服务器中。
7.根据权利要求6所述的装置,其特征在于,所述写入单元包括发送子单元,用于对所接收的每一个数据块的元数据,根据所述数据块的元数据中的文件起始偏移量和数据长度,从缓冲区中读取数据块,并将所述数据块以及对应的元数据发送给所有副本服务器;第一写入子单元,用于根据所述副本服务器返回的接收确认信息和所述数据块的元数据中的网络令牌,获取主服务器的地址,并向所述主服务器发送写磁盘命令,使所述主服务器根据写磁盘命令,将所述数据写入本地磁盘中,并控制其余副本服务器将该数据写入其本地磁盘中。
8.根据权利要求7所述的装置,其特征在于,所述发送子单元,包括第一发送子单元,用于将所述数据块以及对应的元数据发送给所有副本服务器中的一个副本服务器;第二发送子单元,用于使所述副本服务器根据所述数据块的元数据中其余副本服务器的地址,将所述数据块以及对应的元数据发送给其余副本服务器;使所述其余副本服务器将所述数据块以及相应的元数据存储到其本地内存中。
9.一种写数据的系统,其特征在于,所述系统包括用户进程,用于向控制进程发送写请求信息;控制进程,用于接收所述写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量; 控制所述用户进程将所述期望写入的数据写入所述目标文件中;至少一台文件服务器,用于将所述期望写入的数据写入所述目标文件。
全文摘要
本发明公开了一种写数据的方法,属于计算机技术领域。所述方法包括接收用户进程的写请求信息,所述写请求信息至少包括目标文件的标识和期望写入的数据长度;根据所述期望写入的数据长度,修改所述目标文件的文件尾偏移量;控制所述用户进程将所述期望写入的数据写入所述目标文件中。本发明还公开了一种写数据的装置以及一种写数据的系统,本发明通过在多个用户进程并发追加数据的时候,预修改文件尾偏移量,同时结合网络令牌,从而实现了多用户进程并发数据汇总操作时,数据的有序性及正确性、在副本分发时保证各副本版本一致性以及简化控制进程处理逻辑,由文件服务器保证主文件及副本物理一致性,平衡各模块负载。
文档编号G06F17/30GK102622350SQ20111002893
公开日2012年8月1日 申请日期2011年1月26日 优先权日2011年1月26日
发明者刘致远, 吴健, 张毕林, 潘璐, 王雨 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1