一种存储文件的方法、第一虚拟机及名称节点技术

技术编号:14756435 阅读:79 留言:0更新日期:2017-03-02 23:05
一种存储文件的方法、第一虚拟机及名称节点,用以解决分布式文件系统存储文件时存在的文件份数冗余问题,并提高系统的可用性。方法包括:客户端向名称节点发送请求向分布式文件系统写入待写数据的请求消息;名称节点向客户端发送请求消息对应的响应消息,响应消息包括第一虚拟机的地址和第二虚拟机的地址,并指示第一虚拟机为多个虚拟机中具有向存储区域写入数据的权限的一个虚拟机,第二虚拟机为多个虚拟机中除第一虚拟机以外的虚拟机;客户端向第一虚拟机发送待写数据和第二虚拟机的地址;第一虚拟机向多个虚拟机共享的存储区域写入待写数据,并生成或更新待写数据的元数据;第一虚拟机向第二虚拟机发送生成或更新的元数据。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种存储文件的方法、第一虚拟机及名称节点
技术介绍
分布式文件系统包括客户端(client)、数据节点(datanode)和名称节点(namenode);其中,数据节点用于存储文件,名称节点用于管理数据节点上存储的文件。客户端可通过名称节点查询每个数据节点中存储的文件并获得每个数据节点的地址,从而实现从数据节点中读取文件或者将文件写入数据节点。分布式文件系统中的数据节点可以是物理服务器,也可以是虚拟机。当分布式文件系统中的数据节点为虚拟机时,该虚拟机的虚拟硬盘是由分布式块存储系统提供的,向虚拟机写文件实际是向虚拟机的虚拟硬盘写文件,向虚拟硬盘写文件的实现方式是向分布式块存储系统管理的物理硬盘写文件。分布式文件系统为了保证文件的可靠性,在虚拟硬盘存储文件时会采用文件副本机制,将同一个文件保存在分布式文件系统中N个(N为大于1的整数)虚拟硬盘中;而分布式块存储系统为了保证文件的可靠性,也会采用文件副本机制,将同一个虚拟硬盘中的文件在M个(M为大于1的整数)物理硬盘中保存。由于分布式文件系统和分布式块存储系统均采用文件副本机制,会导致同一个文件在物理硬盘中实际保存的文件份数为N*M,造成了文件份数冗余。同一个文件保存的文件份数冗余会浪费存储空间,影响系统的处理性能。现有技术中为了解决分布式文件系统中文件份数冗余的问题,通常采用以下两种方法:第一种方法是,对于需要存储的一份文件,仅在分布式文件系统的一个虚拟机中存储该文件。采用第一种方法,只能通过该虚拟机才能访问该文件,若该虚拟机发生故障,则需要等待该虚拟机恢复正常后才能再次为客户端提供文件读写服务,导致分布式文件系统的可用性降低;第二种方法是,采用虚拟机的热备机制,即配置主虚拟机对应的热备虚拟机,该热备虚拟机与主虚拟机同步写入文件。当主虚拟机发生故障时,分布式文件系统切换到热备虚拟机继续为客户端提供文件读写服务。采用第二种方法,分布式文件系统切换到热备虚拟机时需要一定的等待时长,导致分布式文件系统在该等待时长内无法为客户端提供文件读写服务,使分布式文件系统的可用性降低;并且,热备虚拟机在切换至主虚拟机之前不对外提供服务,导致资源浪费。综上,现有的解决分布式文件系统中文件份数冗余问题的方法会导致分布式文件系统的可用性低、无法较好地解决文件份数冗余问题。
技术实现思路
本专利技术实施例提供一种存储文件的方法、第一虚拟机及名称节点,用以解决分布式文件系统存储文件时存在的文件份数冗余的问题,并提高系统的可用性。第一方面,本专利技术实施例提供一种分布式文件系统中存储文件的方法,该方法中,分布式文件系统包括名称节点、多个作为数据节点的虚拟机,其中的多个虚拟机共享同一存储区域;该方法包括:第一虚拟机接收客户端发送的待写数据、第二虚拟机的地址,然后向多个虚拟机共享的存储区域写入接收到的待写数据,并生成或更新待写数据的元数据;第一虚拟机根据接收到的第二虚拟机的地址向第二虚拟机发送第一虚拟机生成或更新的元数据。其中,第一虚拟机为多个虚拟机中被名称节点指定具有向存储区域写入数据的权限的一个虚拟机,第二虚拟机为多个虚拟机中除第一虚拟机以外的虚拟机;待写数据的元数据包括但不限于:待写数据的存储位置、待写数据的文件名称以及待写数据的文件目录。采用上述方法,由于分布式文件系统包括的多个虚拟机共享同一存储区域,因而在分布式文件系统中,第一虚拟机写入该存储区域的待写数据在该存储区域中仅保存一份。对于待写数据来说,仅会由于分布式块存储系统采用的文件副本机制而保存多份,而不存在由于分布式文件系统和分布式块存储系统均采用文件副本机制而导致的保存的文件份数冗余的问题。此外,采用上述方案,分布式文件系统包括的多个虚拟机中的第一虚拟机具有向存储区域写入数据的权限,多个虚拟机中除第一虚拟机以外的第二虚拟机具有从存储区域读取待写数据的权限。因而,分布式文件系统中可用于为客户端提供读写待写数据的服务的虚拟机的数量为多个。当某个虚拟机发生故障时,可以由其他虚拟机为客户端提供读写待写数据的服务,使分布式文件系统的可用性得到了提高,同时也避免了现有技术中采用虚拟机热备机制时存在的资源浪费问题。在一种可能的实现方式中,第一虚拟机向存储区域写入待写数据之前,还包括:第一虚拟机接收客户端发送的第一虚拟机的写权限标识,写权限标识是名称节点在客户端向名称节点请求向分布式文件系统写入待写数据时向客户端发送的,用于指定第一虚拟机具有向存储区域写入待写数据的权限。采用上述方案,提供了一种客户端向第一虚拟机指示第一虚拟机的权限的方式。多个虚拟机共享一个存储区域在具体实现时可采用如下方式:多个虚拟机挂载分布式块存储系统提供的同一虚拟硬盘,该虚拟硬盘包括多个虚拟机共享的存储区域。第一虚拟机向第二虚拟机发送的待写数据的元数据有以下两种用途:第一种若第二虚拟机通过自身的操作系统读取待写数据,则元数据用于第二虚拟机生成或更新自身的操作系统中记录的文件信息,文件信息用于操作系统从存储区域中读取待写数据。第二种若第二虚拟机读取待写数据,则元数据用于第二虚拟机从存储区域中读取待写数据。采用上述方案,第二虚拟机可以根据第一虚拟机发送的待写数据的元数据读取多个虚拟机共享的存储区域中的待写数据。在一种可能的实现方式中,第二虚拟机可以被名称节点指定具有从存储区域读取待写数据的权限。第二方面,本专利技术实施例提供一种分布式文件系统中存储文件的方法,该分布式文件系统包括名称节点、多个作为数据节点的虚拟机,多个虚拟机共享同一存储区域;该方法包括:名称节点接收客户端请求向分布式文件系统写入待写数据的请求消息后,向客户端发送该请求消息对应的响应消息。其中,名称节点向客户端发送的响应消息中包括第一虚拟机的地址和第二虚拟机的地址,此外,该响应消息还指示第一虚拟机为多个虚拟机中具有向存储区域写入数据的权限的一个虚拟机,第二虚拟机为多个虚拟机中除第一虚拟机以外的虚拟机。采用上述方案,由于分布式文件系统包括的多个虚拟机共享同一存储区域,而名称节点发送的响应消息指定多个虚拟机中的一个第一虚拟机具有向共享的存储区域中写入数据的权限,因而向共享的存储区域中写入的数据仅会在该存储区域中保存一份。对于写入共享的存储区域的数据来说,仅会由于分布式块存储系统采用的文件副本机制而保存多份,而不存在由于分布式文件系统和分布式块存储系统均采用文件副本机制而导致的保存的文件份数冗余的问题。此外,响应消息中指示分布式文件系统包括的多个虚拟机中的第一虚拟机具有向存储区域写入数据的权限,多个虚拟机中除第一虚拟机以外的第二虚拟机具有从存储区域读取待写数据的权限。因而,分布式文件系统中可用于为客户端提供读写待写数据的服务的虚拟机的数量为多个。当某个虚拟机发生故障时,可以由其他虚拟机为客户端提供读写待写数据的服务,使分布式文件系统的可用性得到了提高,同时也避免了现有技术中采用虚拟机热备机制时存在的资源浪费问题。在一种可能的实现方式中,响应消息还指示第二虚拟机具有从存储区域读取待写数据的权限。在一种可能的实现方式中,名称节点通过响应消息向客户端指示第一虚拟机的权限和第二虚拟机的权限时可采用如下两种方式:第一种方式名称节点向客户端发送的响应消息还包括第一虚拟机的写权限标识和第二本文档来自技高网
...
一种存储文件的方法、第一虚拟机及名称节点

【技术保护点】
一种分布式文件系统中存储文件的方法,其特征在于,所述分布式文件系统包括名称节点、多个作为数据节点的虚拟机,所述多个虚拟机共享同一存储区域;所述方法包括:第一虚拟机接收客户端发送的待写数据、第二虚拟机的地址,所述第一虚拟机为所述多个虚拟机中被所述名称节点指定具有向所述存储区域写入数据的权限的一个虚拟机,所述第二虚拟机为所述多个虚拟机中除所述第一虚拟机以外的虚拟机;所述第一虚拟机向所述存储区域写入所述待写数据,并生成或更新所述待写数据的元数据;所述第一虚拟机根据所述第二虚拟机的地址向所述第二虚拟机发送所述元数据。

【技术特征摘要】
1.一种分布式文件系统中存储文件的方法,其特征在于,所述分布式文件系统包括名称节点、多个作为数据节点的虚拟机,所述多个虚拟机共享同一存储区域;所述方法包括:第一虚拟机接收客户端发送的待写数据、第二虚拟机的地址,所述第一虚拟机为所述多个虚拟机中被所述名称节点指定具有向所述存储区域写入数据的权限的一个虚拟机,所述第二虚拟机为所述多个虚拟机中除所述第一虚拟机以外的虚拟机;所述第一虚拟机向所述存储区域写入所述待写数据,并生成或更新所述待写数据的元数据;所述第一虚拟机根据所述第二虚拟机的地址向所述第二虚拟机发送所述元数据。2.如权利要求1所述的方法,其特征在于,所述第一虚拟机向所述存储区域写入所述待写数据之前,还包括:所述第一虚拟机接收所述客户端发送的所述第一虚拟机的写权限标识,所述写权限标识是所述名称节点在所述客户端向所述名称节点请求向分布式文件系统写入所述待写数据时向所述客户端发送的,所述写权限标识用于指定所述第一虚拟机具有向所述存储区域写入所述待写数据的权限。3.如权利要求1或2所述的方法,其特征在于,所述多个虚拟机挂载分布式块存储系统提供的同一虚拟硬盘,所述虚拟硬盘包括所述存储区域。4.如权利要求1至3任一项所述的方法,其特征在于,若所述第二虚拟机通过自身的操作系统读取所述待写数据,则所述元数据用于所述第二虚拟机生成或更新自身的操作系统中记录的文件信息,所述文件信息用于所述操作系统从所述存储区域中读取所述待写数据;或者若所述第二虚拟机读取所述待写数据,则所述元数据用于所述第二虚拟机从所述存储区域中读取所述待写数据。5.如权利要求1至4任一项所述的方法,其特征在于,所述第二虚拟机被所述名称节点指定具有从所述存储区域读取所述待写数据的权限。6.一种分布式文件系统中存储文件的方法,其特征在于,所述分布式文件系统包括名称节点、多个作为数据节点的虚拟机,所述多个虚拟机共享同一存储区域;所述方法包括:所述名称节点接收客户端请求向所述分布式文件系统写入待写数据的请求消息;所述名称节点向所述客户端发送所述请求消息对应的响应消息,所述响应消息包括第一虚拟机的地址和第二虚拟机的地址,所述响应消息指示所述第一虚拟机为所述多个虚拟机中具有向所述存储区域写入数据的权限的一个虚拟机,所述第二虚拟机为所述多个虚拟机中除所述第一虚拟机以外的虚拟机。7.如权利要求6所述的方法,其特征在于,所述响应消息还指示所述第二虚拟机具有从所述存储区域读取所述待写数据的权限。8.如权利要求6或7所述的方法,其特征在于,所述响应消息还包括所述第一虚拟机的写权限标识和所述第二虚拟机的读权限标识,所述写权限标识用于指定所述第一虚拟机具有向所述存储区域写入所述待写数据的权限,所述读权限标识用于指定所述第二虚拟机具有从所述存储区域读取所述待写数据的权限。9.如权利要求6或7所述的方法,其特征在于,所述响应消息中所述第一虚拟机的地址和所述第二虚拟机的地址按照预设规则排列,所述预设规则用于指定所述第一虚拟机具有向所述存储区域写入所述待写数据的权限,以及指定所述第二虚拟机具有从所述存储区域读取所述待写数据的权限。10.如权利要求6至9任一项所述的方法,其特征在于,所述多个虚拟机挂载分布式块存储系统提供的同一虚拟硬盘,所述虚拟硬盘包括所述存储区域。11.如权利要求6至10任一项所述的方法,其特征在于,所述方法还包括:当所述第一虚拟机发生故障时,所述名称节点向所述客户端发送第一更新信息,所述第一更新信息包括更新的第一虚拟机的地址,所述第一更新信息指定所述多个虚拟机中除发生故障的所述第一虚拟机以外的另一个虚拟机作为所述更新的第一虚拟机,所述更新的第一虚拟机具有向所述存储区域写入数据的权限;和/或当所述第二虚拟机发生故障时,所述名称节点向所述客户端发送第二更新信息,所述第二更新信息包括更新的第二虚拟机的地址,所述第二更新信息指定所述多个虚拟机以外的另一个虚拟机作为所述更新的第二虚拟机,所述更新的第二虚拟机具有从所述存储区域读取所述待写数据的权限。12.一种分布式文件系统中的第一虚拟机,其特征在于,所述分布式文件系统包括名称节...

【专利技术属性】
技术研发人员:李亿
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1