CN104205780A - 一种存储数据的方法和装置 - Google Patents
一种存储数据的方法和装置 Download PDFInfo
- Publication number
- CN104205780A CN104205780A CN201480000338.5A CN201480000338A CN104205780A CN 104205780 A CN104205780 A CN 104205780A CN 201480000338 A CN201480000338 A CN 201480000338A CN 104205780 A CN104205780 A CN 104205780A
- Authority
- CN
- China
- Prior art keywords
- server
- data
- memory space
- residual
- servers
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种存储数据的方法和装置,涉及存储技术领域,用以减少读取数据时的时延,从而提高***性能。本发明实施例提供的方法,应用于分布式存储***,所述分布式存储***包括第一服务器和其他服务器,所述方法包括:确定所述第一服务器生成的第一数据;判断所述第一服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;如果所述第一服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述第一服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述第一服务器的剩余存储空间中。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种存储数据的方法和装置。
背景技术
分布式存储***以可靠性高、可用性强、易于扩展等特点成为研究的热点。分布式存储***由多个服务器构成,每个服务器上可以安装一个或者多个虚拟机,每个服务器对应RAID(Redundant Arrays ofIndependent Disks,磁盘阵列)上的一部分存储空间。
目前,在分布式存储***中,一般按照“负载均衡”的原则为服务器上安装的应用/虚拟机生成的数据分配物理存储空间,即,按照“HDFS中的各服务器的已使用存储空间均衡”的原则为服务器上安装的应用/虚拟机生成的数据分配物理存储空间;其中,物理存储空间为某一服务器对应的磁盘阵列的存储空间和/或该服务器本身的存储空间。具体的,以分布式存储***为HDFS(Hadoop Distributed FileSystem,分布式文件***)为例进行说明:
在HDFS中,最小存储单元为块(block),每个块的最大值为64M。当服务器上安装的应用/虚拟机生成的数据所占的存储空间大于64M时,该服务器首先对该数据进行分块,一般地,至多有1个块所占的存储空间小于64M,其余块所占的存储空间均等于64M;其次按照“HDFS中的各服务器的已使用存储空间均衡”的原则,将各块映射到HDFS中的一个或者多个服务器的存储空间上。当服务器上安装的应用/虚拟机生成的数据所占的存储空间等于或者小于64M时,按照“HDFS中的各服务器的已使用存储空间均衡”的原则,将该数据映射到HDFS中、已使用存储空间最小的服务器的存储空间上。
由于上述方案中按照“负载均衡”的原则为服务器上安装的应用/虚拟机生成的数据分配物理位置,因此,该数据中的部分/全部数据可能存储在分布式存储***中的其他服务器的存储空间上。这样,该服务器往往需要从其他服务器的存储空间上读取该数据,从而造成读取数据时延大的问题,进而导致***性能较差。
发明内容
本发明实施例提供一种存储数据的方法和装置,用以减少读取数据时的时延,从而提高***性能。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种存储数据的方法,应用于分布式存储***,所述分布式存储***包括第一服务器和其他服务器,所述方法包括:
确定所述第一服务器生成的第一数据;
判断所述第一服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
如果所述第一服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述第一服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述第一服务器的剩余存储空间中。
结合第一方面,在第一种可能的实现方式中,所述第一服务器包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器;所述方法还包括:
如果所述第一服务器的剩余存储空间小于所述第一数据所占的存储空间,则向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
结合第一方面,在第二种可能的实现方式中,所述其他服务器包括第二服务器;所述方法还包括:
如果所述第一服务器的剩余存储空间小于所述第一数据所占的存储空间,则向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
更新所述第一服务器的剩余存储空间;
当所述第一服务器更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述第一服务器;
接收所述第二服务器发送的所述第一数据;
将所述第一数据存储在所述第一服务器更新后的剩余存储空间中。
结合第一方面、第一方面的第一种可能的实现方式或者第二种可能的实现方式任一种,在第三种可能的实现方式中,所述其他服务器还包括第三服务器,所述方法还包括:
向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
第二方面,提供一种存储数据的方法,应用于分布式存储***,所述分布式存储***包括第一服务器和其他服务器,所述方法包括:
确定所述第一服务器生成的第一数据;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值;
判断所述第一服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
如果所述第一服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述第一服务器的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述第一服务器的剩余存储空间中。
第三方面,提供一种服务器,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器包括:
确定模块,用于确定所述服务器生成的第一数据;
判断模块,用于判断所述服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储模块,用于在所述判断模块确定所述服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述服务器的剩余存储空间中。
结合第三方面,在第一种可能的实现方式中,所述服务器包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器,所述服务器还包括:
发送模块,用于在所述判断模块确定所述服务器的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
迁移模块,用于在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
结合第三方面,在第二种可能的实现方式中,所述其他服务器包括第二服务器,所述服务器还包括:
发送模块,用于在所述判断模块确定所述服务器的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
更新模块,用于更新所述服务器的剩余存储空间;
所述发送模块还用于,当所述服务器更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述服务器;
接收模块,用于接收所述第二服务器发送的所述第一数据;
所述存储模块还用于,将所述第一数据存储在所述服务器更新后的剩余存储空间中。
结合第三方面、第三方面的第一种可能的实现方式或者第三方面的第二种可能的实现方式任一种,在第三种可能的实现方式中,所述其他服务器还包括第三服务器;
所述发送模块还用于,向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
第四方面,提供一种服务器,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器包括:
处理器,用于确定所述服务器生成的第一数据;以及判断所述服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储器,用于在所述处理器确定所述服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,在所述处理器的控制下将所述第一数据存储在所述服务器的剩余存储空间中。
结合第四方面,在第一种可能的实现方式中,所述服务器包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器,所述服务器还包括:
发送器,用于在所述处理器确定所述服务器的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
所述处理器还用于,在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
结合第四方面,在第二种可能的实现方式中,所述其他服务器包括第二服务器;
所述处理器还用于,更新所述服务器的剩余存储空间;
所述发送器还用于,当所述服务器更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述服务器;
所述服务器还包括:接收器,用于接收所述第二服务器发送的所述第一数据;
所述存储器还用于,在所述处理器的控制下将所述第一数据存储在所述服务器更新后的剩余存储空间中。
结合第四方面、第四方面的第一种可能的实现方式或者第四方面的第二种可能的实现方式任一种,在第三种可能的实现方式中,所述其他服务器还包括第三服务器;
所述发送器还用于,向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
第五方面,提供一种服务器,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器包括:
确定模块,用于确定所述服务器生成的第一数据;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值;
判断模块,用于判断所述服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储模块,用于在所述判断模块确定所述服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述服务器的剩余存储空间中。
第六方面,提供一种服务器,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器包括:
处理器,用于确定所述服务器生成的第一数据;以及判断所述服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值;
存储器,用于在所述处理器确定所述服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,在所述处理器的控制下将所述第一数据存储在所述服务器的剩余存储空间中。
上述技术方案,应用于分布式存储***,在一服务器确定其剩余存储空间大于或者等于其生成的一数据所占的存储空间时,优先将该数据存储在该服务器的剩余存储空间中。这样,该服务器可以直接从本地读取该数据,而不需要从网络中的其他服务器上读取该数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因通过在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种存储数据的方法的流程图;
图2为本发明实施例二提供的一种存储数据的方法的流程图;
图3为本发明实施例1提供的一种存储数据的方法的流程图;
图4为本发明实施例2提供的一种存储数据的方法的流程图;
图5为本发明实施例三提供的一种服务器的结构示意图;
图6为本发明实施例三提供的另一种服务器的结构示意图;
图7为本发明实施例四提供的一种服务器的结构示意图;
图8为本发明实施例四提供的另一种服务器的结构示意图;
图9为本发明实施例五提供的一种服务器的结构示意图;
图10为本发明实施例六提供的一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文中术语“***”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例一
如图1所示,为本实施例提供的一种存储数据的方法,应用于分布式存储***,所述分布式存储***包括第一服务器和其他服务器,所述方法包括:
101:确定所述第一服务器生成的第一数据。
其中,“第一服务器”可以为分布式存储***中的任一服务器;“其他服务器”是指该分布式存储***中、除第一服务器之外的所有服务器。“第一数据”可以为第一服务器生成的任一数据。本实施例的执行主体可以为“第一服务器”。
分布式存储***中的服务器可以安装一个或者多个虚拟机,也可以不安装虚拟机。当服务器上安装有虚拟机时,该服务器与其上安装的虚拟机共享该服务器对应的磁盘阵列。另外,当服务器上安装有一个或者多个虚拟机时,该服务器生成的第一数据可以为:该服务器(物理机)上安装的一应用生成的数据;也可以为该服务器上安装的一虚拟机生成的数据。
进一步地,当一数据为服务器上安装的一应用生成的数据时,该服务器会记录该数据与该服务器之间的对应关系;当一数据为服务器上安装的一虚拟机生成的数据时,该服务器会记录该数据与该虚拟机之间的对应关系。具体可以通过生成数据路由表来记录该对应关系。一般地,分布式存储***中的每个服务器均可共享该数据路由表。在本文中,当生成一数据的应用/虚拟机所在的服务器与存储该数据的存储空间所对应的服务器为同一服务器时,认为实现了对该数据的本地化。
102:判断所述第一服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系。
其中,“服务器的剩余存储空间”是指该服务器对应的磁盘阵列和/或该服务器本身的存储空间中未存储数据的、可用存储空间。剩余存储空间的大小可以为0,也可以包括一个或者多个存储单元。每个服务器的剩余存储空间可能因删除已存储的数据、增加待存储的数据、改变该服务器对应的磁盘阵列的大小等而更新。服务器可以包括但不限于按照以下几种方式获取其剩余存储空间:周期性获取其剩余存储空间,定期获取其剩余存储空间,生成一数据时获取其剩余存储空间等。
本实施例对“第一数据所占的存储空间”的大小不进行限定。
在步骤102之前,该方法还可以包括:获取所述第一数据所占的存储空间,以及所述第一服务器的剩余存储空间。
103:如果所述第一服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述第一服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述第一服务器的剩余存储空间中。
其中,步骤103具体可以包括:所述第一服务器在确定其剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述第一服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,为所述第一数据分配存储地址,并将所述第一数据存储在所述存储地址对应的存储单元中;所述存储地址为所述第一服务器的剩余存储空间中的一个或者多个存储单元对应的存储地址。
示例性的,通过一个具体示例对“其他服务器的最小已使用存储空间”进行说明:假设其他服务器由服务器1、服务器2、服务器3构成,该3个服务器的已使用存储空间的大小分别为:A、B、C,且A>B>C;那么,其他服务器的最小已使用存储空间为C。
进一步地,为了与现有技术方案进行详细对比,下面从第一数据所占的存储空间与分布式存储***的最小存储单元的最大值的大小关系的角度对步骤103进行说明。具体的,在包含特征“第一服务器的剩余存储空间大于或者等于第一数据所占的存储空间”的情况下,步骤103可以包括以下场景1和场景2:
场景1:第一数据所占的存储空间大于分布式存储***的最小存储单元的最大值,且第一服务器的已使用存储空间大于其他服务器的最小已使用存储空间。
场景2:第一数据所占的存储空间小于或者等于分布式存储***的最小存储单元的最大值,且第一服务器的已使用存储空间大于其他服务器的最小已使用存储空间。
其中,针对场景1,在现有技术方案中,第一服务器需要对第一数据进行分块,并按照“负载均衡”的原则,分别将每个块存储在分布式存储***的多个服务器的剩余存储空间中。针对场景2,在现有技术方案中,第一服务器需要将第一数据存储在其他服务器中的最大剩余存储空间中。
需要说明的是,实际实现时,还可能出现以下场景A和场景B:
场景A:第一数据所占的存储空间大于分布式存储***的最小存储单元的最大值,且第一服务器的已使用存储空间小于或者等于其他服务器的最小已使用存储空间。
场景B:第一数据所占的存储空间小于或者等于分布式存储***的最小存储单元的最大值,且第一服务器的已使用存储空间小于或者等于其他服务器的最小已使用存储空间。
其中,本文中提供了针对场景A的实现方法,在下述实施例二中有相应描述。针对场景B,与现有技术方案的实现方法相同,具体的,第一服务器将第一数据存储在其剩余存储空间中。
综述,由上述场景1、场景2、场景A和场景B可知,实际实现时,本发明实施例提供的存储数据的方法不需要限定第一数据所占的存储空间的大小,也不需要限定第一服务器的已使用存储空间与其他服务器的已使用存储空间的大小关系。具体实现方式包括但不限于下述实施例1和实施例2所示的方法。
在本发明的一个实施例中,所述第一服务器包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器;所述方法还包括下述步骤A1-A2:
步骤A1:如果所述第一服务器的剩余存储空间小于所述第一数据所占的存储空间,则向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中。
步骤A2:在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
其中,“第二服务器”可以为该分布式存储***中的、除第一服务器之外的、满足“剩余存储空间大于或者等于所述虚拟机对应的除第一数据之外的其他数据所占的存储空间”条件的任一服务器。
步骤A1可以包括:A11)如果所述第一服务器在确定其剩余存储空间小于所述第一数据所占的存储空间,则确定与所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间的大小;A12)将剩余存储空间大于或者等于该存储空间的服务器作为第二服务器;A13)向所述第二服务器发送包含所述第一数据的第一指示消息。
示例性的,“将所述虚拟机和所述虚拟机对应的其他数据迁移到所述第二服务器上”的具体实现方式如现有技术,此处不再描述。
需要说明的是,实际实现时,步骤A2可以在步骤A1之后立即执行;也可以在所述虚拟机需要读取第一数据时执行。其中,前者可以描述为:在将第一数据写入第二服务器时实现第一数据的本地化;后者可以描述为:在所述虚拟机需要读取所述第一数据时实现第一数据的本地化。
该实施例中,在“第一服务器将所述虚拟机迁移到第二服务器上”之后,所述虚拟机成为安装在第二服务器上的一虚拟机,第一服务器上不再存在所述虚拟机。在“第一服务器将与所述其他数据迁移到第二服务器上”之后,所述其他数据均存储在第二服务器的存储空间中。另外,可以将该可选的实施例称为通过虚拟机迁移的方式实现第一数据的本地化。
在本发明的另一个实施例中,所述其他服务器包括第二服务器;所述方法还包括下述步骤B1-B4:
步骤B1:如果所述第一服务器的剩余存储空间小于所述第一数据所占的存储空间,则向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中。
步骤B2:更新所述第一服务器的剩余存储空间。
步骤B3:当所述第一服务器更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述第一服务器。
步骤B4:接收所述第二服务器发送的所述第一数据;将所述第一数据存储在所述第一服务器更新后的剩余存储空间中。
其中,在该实施例中,第二服务器在向第一服务器发送第一数据之后,第二服务器可以将本地存储的第一数据删除,也可以不删除。在前者的实现方式中,可以将本实施例称为通过第一数据迁移的方式实现第一数据的本地化;在后者的实现方式中,可以认为分布式存储***中存储的第一数据的副本由n副本变成了n+1副本,其中,存储第一数据的副本的方法可以参见下文相关的实施例。需要说明的是,为了与上述可选的实施例对应,下文中将该可选的实施例称为通过第一数据迁移的方式实现第一数据的本地化。
在本发明的又一实施例中:所述第一服务器包含一虚拟机,所述第一数据是所述虚拟机生成的数据,所述其他服务器还包括第三服务器,所述方法还包括以下步骤C:
步骤C:所述第一服务器向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
其中,“第三服务器”可以用于存储第一数据的副本,分布式存储***中可以包含一个或者多个第三服务器。实际实现时,分布式存储***中的每个服务器均可获知该分布式存储***中所有服务器的剩余存储空间。该实施例中,第一服务器可以按照“负载均衡”的原则,选择分布式存储***中的一个或者多个服务器作为第三服务器。
该实施例通过存储第一数据的副本,可以达到增强分布式存储***的性能的有益效果。具体的:当第一数据损坏或者丢失时,可以通过调用第一数据的副本使分布式存储***正常运行,从而增强***的稳定性。
本发明实施例提供的存储数据的方法,应用于包含第一服务器和其他服务器的分布式存储***中,在第一服务器确定其剩余存储空间大于或者等于其生成的一数据所占的存储空间,且第一服务器的已使用存储空间大于其他服务器的最小已使用存储空间时,优先将该数据存储在该服务器的剩余存储空间中。这样,第一服务器可以直接从本地读取该数据,而不需要从网络中的其他服务器上读取该数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
实施例二
本实施例提供的存储数据的方法,应用于分布式存储***,所述分布式存储***包括第一服务器和其他服务器。本实施例描述的是上述实施例一中的场景A下存储数据的方法。
如图2所示,包括:
201:确定所述第一服务器生成的第一数据;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值。
202:判断所述第一服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系。
203:如果所述第一服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述第一服务器的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述第一服务器的剩余存储空间中。
进一步地,针对本实施例的场景(即场景A),在现有技术方案中,第一服务器需要对第一数据进行分块,并按照“负载均衡”的原则,分别将每个块存储在分布式存储***的多个服务器的剩余存储空间中。
可选的,在本发明的一个实施例中,所述方法还可以包括:上述实施例一中的步骤A1-A2,或者上述实施例一中的步骤B1-B4;另外,还可以包括上述实施例一中的步骤C。
需要说明的是,本实施例中的相关解释可以参考上述实施例一的相关部分。
本发明实施例提供的存储数据的方法,应用于包含第一服务器和其他服务器的分布式存储***中,在第一服务器确定其剩余存储空间大于或者等于其生成的一数据所占的存储空间,且第一服务器的已使用存储空间小于或者等于其他服务器的最小已使用存储空间时,优先将该数据存储在该服务器的剩余存储空间中;其中,该数据所占的存储空间大于分布式存储***的最小存储单元的最大值。这样,第一服务器可以直接从本地读取该数据,而不需要从网络中的其他服务器上读取该数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
下面通过几个具体的实施例对上述实施例一和实施例二提供的存储数据的方法进行示例性说明:
实施例1
本实施例中第一服务器上不包含虚拟机。本实施例中的“本地”是指生成数据的应用所在的服务器。
如图3所示,为本实施例提供的一种存储数据的方法,包括:
301:第一服务器(物理机)上安装的一应用生成一数据。
示例性的,这里的“应用”可以为现有技术中的任何一种应用,例如,文字处理应用、音频处理应用、视频图片处理应用、计算机控制应用、计算机辅助设计应用、科学仿真应用等。
假设4次执行该步骤301,第一服务器(物理机)上安装的一应用共生成4个数据,分别为D1、D2、D3、D4。
302:第一服务器获取第一服务器的剩余存储空间和该数据所占存储空间。
具体地,步骤302可以实现为:第一服务器上的分布式存储程序获取第一服务器的剩余存储空间和该数据所占存储空间
示例性的,按照步骤301中的示例,4次执行步骤302,获取的第一服务器的剩余存储空间分别为:X1、X2、X3、X4;数据D1、D2、D3、D4所占的空间的大小分别为:M1、M2、M3、M4。
303:第一服务器判断其剩余存储空间是否大于或者等于该数据所占存储空间。
若是,则执行步骤304;若否,则执行步骤305。
具体地,步骤303可以实现为:第一服务器上的分布式存储程序判断第一服务器的剩余存储空间是否大于或者等于该数据所占存储空间。
示例性的,按照步骤302中的示例,假设:X1>M1、X2>M2、X3=M3、X4﹤M4。
304:第一服务器将该数据存储在第一服务器的剩余存储空间中。具体包括:第一服务器上的分布式存储程序为该数据分配存储地址,并将该数据存储在该存储地址对应的存储模块中;该存储地址为第一服务器的剩余存储空间中的一个或者多个存储模块对应的存储地址。
在执行步骤304之后,则结束。
示例性的,按照步骤303中的示例,D1、D2、D3分别存储第一服务器的(剩余)存储空间中。假设第一服务器为D1、D2、D3分配的存储地址分别为:S1/D1/offset1、S1/D2/offset2、S1/D2/offset3。其中,S1表示第一服务器,S1/D1/offset1表示:数据D1的存储地址位于第一服务器S1的存储空间的offset1处,其他的存储地址不再一一解释。
第3次执行步骤301-306之后,分布式存储***中记录的数据路由表如表1所示:
表1
数据 | 本地 | 剩余存储空间 | 数据存储地址 |
D1 | S1 | X1 | S1/D1/offset1 |
D2 | S1 | X2 | S1/D2/offset2 |
D3 | S1 | X3 | S1/D3/offset3 |
305:第一服务器向第二服务器发送包含该数据的第一指示消息;第一指示消息用于指示第二服务器将该数据存储在第二服务器的剩余存储空间中。
在执行步骤305之后,执行步骤306。
306:第二服务器根据第一指示消息将该数据存储在第二服务器的剩余存储空间中。具体包括:第二服务器上的分布式存储程序为该数据分配存储地址,并将该数据存储在该存储地址对应的存储模块中;该存储地址为第二服务器的剩余存储空间中的一个或者多个存储模块对应的存储地址。
示例性的,按照步骤303中的示例,D4存储在第二服务器的(剩余)存储空间中。假设第二服务器为D4分配的存储地址分别为:S2/D4/offset4。其中,S2表示第二服务器,S2/D4/offset4表示数据D4的存储地址位于第二服务器S2的存储空间的offset4处。
第4次执行步骤301-306之后,分布式存储***中记录的数据路由表如表2所示:
表2
数据 | 本地 | 剩余存储空间 | 数据存储地址 |
D1 | S1 | X1 | S1/D1/offset1 |
D2 | S1 | X2 | S1/D2/offset2 |
D3 | S1 | X3 | S1/D3/offset3 |
D4 | S1 | X4 | S2/D4/offset4 |
由表2可知,获取数据D4的服务器与存储数据D4的服务器为为同一服务器。
307:第一服务器更新第一服务器的剩余存储空间,并周期性检测第一服务器更新后的剩余存储空间。
具体地,步骤307可以实现为:第一服务器上的分布式存储程序更新第一服务器的剩余存储空间,并周期性检测第一服务器更新后的剩余存储空间。
示例性的,按照步骤306中的示例,将第4次执行步骤301-306之后,执行步骤307时,获得的第一服务器更新后的剩余存储空间表示为X4′。假设X4′>M4。
308:第一服务器判断其更新后的剩余存储空间是否大于或者等于该数据所占的存储空间。
若否,则返回步骤307;若是,则执行步骤309。
具体地,步骤308可以实现为:第一服务器上的分布式存储程序判断第一服务器更新后的剩余存储空间是否大于或者等于该数据所占的存储空间。
示例性的,按照步骤307中的示例,步骤308具体为:第一服务器判断X4′是否大于或者等于M4。
309:第一服务器向第二服务器发送第二指示消息;第二指示消息用于指示第二服务器将该数据发送到第一服务器。
310:第二服务器根据第二指示消息向第一服务器发送该数据。
311:第一服务器将该数据存储在第一服务器更新后的剩余存储空间中。
执行步骤311之后,则结束。
具体地,步骤311可以实现为:第一服务器上的分布式存储程序将该数据存储在第一服务器更新后的剩余存储空间中。
示例性的,按照步骤307中的示例,执行步骤311之后,分布式存储***中记录的数据路由表如表3所示:
表3
数据 | 本地 | 剩余存储空间 | 数据存储地址 |
D1 | S1 | X1 | S1/D1/offset1 |
D2 | S1 | X2 | S1/D2/offset2 |
D3 | S1 | X3 | S1/D3/offset3 |
D4 | S1 | X4′ | S1/D4/offset4 |
由表3可知,获取数据D4的服务器与存储数据D4的服务器为同一服务器。其中,S1/D4/offset4表示数据D4的存储地址位于第一服务器S1的offset4处。
可选的,在步骤301之后,该方法还可以包括以下步骤A和步骤B:
步骤A:第一服务器向第三服务器发送包含该数据的副本的第三指示消息,第三指示消息用于指示第三服务器将该数据的副本存储在第三服务器的剩余存储空间中。
示例性的,按照实施例1中的示例,将D1、D2、D3、D4的副本分别表示为:D1′、D2′、D3′、D4′。
步骤B:第三服务器根据第三指示消息将该数据的副本存储在第三服务器的剩余存储空间中。
具体地,步骤B可以实现为:第三服务器上的分布式存储程序根据第三指示消息将该数据的副本存储在第三服务器的剩余存储空间中。
示例性的,按照实施例1中的示例,假设第三服务器为D1、D2、D3、D4分配的存储地址分别为:S3/D1′/offset1、S3/D2′/offset2、S3/D3′/offset3、S3/D4′/offset4,其中,S3表示第三服务器,S3/D1′/offset1表示。数据D1的副本D1′存储地址位于第三服务器S3的存储空间的offset1处,其他的存储地址不再一一解释。
在第3次执行步骤301-306以及步骤A、步骤B之后,分布式存储***中记录的数据路由表如表4所示:
表4
数据 | 本地 | 剩余存储空间 | 数据存储地址 | 副本 | 副本存储地址 |
D1 | S1 | X1 | S1/D1/offset1 | D1′ | S3/D1′/offset1 |
D2 | S1 | X2 | S1/D2/offset2 | D2′ | S3/D2′/offset2 |
D3 | S1 | X3 | S1/D3/offset3 | D3′ | S3/D3′/offset3 |
在第4次执行步骤301-306以及步骤A、步骤B之后,分布式存储***中记录的数据路由表如表5所示:
表5
数据 | 本地 | 剩余存储空间 | 数据存储地址 | 副本 | 副本存储地址 |
D1 | S1 | X1 | S1/D1/offset1 | D1′ | S3/D1′/offset1 |
D2 | S1 | X2 | S1/D2/offset2 | D2′ | S3/D2′/offset2 |
D3 | S1 | X3 | S1/D3/offset3 | D3′ | S3/D3′/offset3 |
D4 | S1 | X4 | S2/D4/offset4 | D4′ | S3/D4′/offset3 |
进一步地,该步骤A和步骤B用于增强***的稳定性,具体的,若第二服务器的存储空间中存储的该数据丢失或者损坏时,第一服务器可以向第三服务器发送将该数据的副本发送至第一服务器的指示消息;使得第三服务器根据根据该指示消息向第一服务器发送该数据的副本;第一服务器将该数据的副本存储在第一服务器更新后的剩余存储空间中。
本发明实施例提供的存储数据的方法,在第一服务器确定其剩余存储空间大于或者等于其安装的一应用生成的一数据所占的存储空间时,优先将该数据存储在该服务器的剩余存储空间中;在第一服务器确定其剩余存储空间小于该数据所占的存储空间时,将该数据存储在第二服务器的剩余存储空间中,并在确定第一服务器更新后的剩余存储空间大于或者等于该数据所占的存储空间时,将该数据存储在第一服务器更新后的剩余存储空间中。这样,第一服务器上安装的应用可以直接从本地(第一服务器的存储空间)读取该数据,不需要从网络中的其他服务器上读取该数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
实施例2
本实施例中第一服务器上包含虚拟机。本实施例中的“本地”是指生成数据的虚拟机所在的服务器。
如图4所示,为本实施例提供的一种存储数据的方法,包括:
401:第一服务器上安装的虚拟机生成一数据。
示例性的,假设第一服务器上安装有4个虚拟机(VM1、VM2、VM3、VM4),4执行该步骤401,具体为:VM1、VM2、VM3、VM4分别获取数据D1、D2、D3、D4。
402:第一服务器获取第一服务器的剩余存储空间和该数据所占存储空间。
403:第一服务器判断其剩余存储空间是否大于或者等于该数据所占存储空间。
若是,则执行步骤404;若否,则执行步骤405。
404:第一服务器将该数据存储在第一服务器的剩余存储空间中。
在执行步骤404之后,则结束。
需要说明的是,步骤402-步骤404的示例可以参考上述实施例1中的步骤302-304,此处不再赘述。
405:第一服务器确定与步骤401中的虚拟机对应的除所述第一数据之外的其他数据所占的存储空间的大小,将其标记为W。
406:第一服务器确定分布式存储***中、剩余存储空间大于或者等于W的服务器,作为第二服务器。
407:第一服务器向第二服务器发送包含该数据的第一指示消息;第一指示消息用于指示第二服务器将该数据存储在第二服务器的剩余存储空间中。
408:第二服务器根据第一指示消息将该数据存储在第二服务器的剩余存储空间中。
需要说明的是,步骤407-408中的具体示例可以参考上述实施例1中的步骤305-306相同,此处不再赘述。另外,实施例1中的表1和表2也可以适用于本实施的对应步骤中。
进一步地,为了清楚对比实施例1和实施例2,在本实施例中,上述表1和表2可以分别表示为以下表1′和表2′:
表1′
虚拟机 | 数据 | 本地 | 剩余存储空间 | 数据存储地址 |
VM1 | D1 | S1 | X1 | S1/D1/offset1 |
VM2 | D2 | S1 | X2 | S1/D2/offset2 |
VM3 | D3 | S1 | X3 | S1/D3/offset3 |
表2′
虚拟机 | 数据 | 本地 | 剩余存储空间 | 数据存储地址 |
VM1 | D1 | S1 | X1 | S1/D1/offset1 |
VM2 | D2 | S1 | X2 | S1/D2/offset2 |
VM3 | D3 | S1 | X3 | S1/D3/offset3 |
VM4 | D4 | S1 | X4 | S2/D4/offset4 |
由表2′可知,获取D4的虚拟机VM4所在的服务器S1与存储D4的服务器S2不是同一服务器。
409:第一服务器将该虚拟机和该虚拟机生成的其他数据迁移到第二服务器上。
执行步骤409之后,则结束。
示例性的,假设数据路由表中记录的、与该虚拟机存在对应关系的所有数据为:D1、D2、D3、D4,则步骤409具体为:第一服务器将该虚拟机和D1、D2、D3迁移到第二服务器上。
示例性的,按照步骤408中的示例,执行步骤409之后,分布式存储***中记录的数据路由表如表3′所示:
表3′
虚拟机 | 数据 | 本地 | 剩余存储空间 | 数据存储地址 |
VM1 | D1 | S1 | X1 | S1/D1/offset1 |
VM2 | D2 | S1 | X2 | S1/D2/offset2 |
VM3 | D3 | S1 | X3 | S1/D3/offset3 |
VM4 | D4 | S2 | X4 | S2/D4/offset4 |
由表3′可知,获取D4的虚拟机VM4所在的服务器S2与存储D4的服务器S2为同一服务器。
可选的,该方法还可以包括上述实施例1中的步骤A和步骤B。
为了清楚对比实施例1和实施例2,在本实施例中,上述表4和表5可以分别表示为以下表4′和表5′:
表4′
虚拟机 | 数据 | 本地 | 剩余存储空间 | 数据存储地址 | 副本 | 副本存储地址 |
VM1 | D1 | S1 | X1 | S1/D1/offset1 | D1′ | S3/D1′/offset1 |
VM2 | D2 | S1 | X2 | S1/D2/offset2 | D2′ | S3/D2′/offset2 |
VM3 | D3 | S1 | X3 | S1/D3/offset3 | D3′ | S3/D3′/offset3 |
表5′
虚拟机 | 数据 | 本地 | 剩余存储空间 | 数据存储地址 | 副本 | 副本存储地址 |
VM1 | D1 | S1 | X1 | S1/D1/offset1 | D1′ | S3/D1′/offset1 |
VM2 | D2 | S1 | X2 | S1/D2/offset2 | D2′ | S3/D2′/offset2 |
VM3 | D3 | S1 | X3 | S1/D3/offset3 | D3′ | S3/D3′/offset3 |
VM4 | D4 | S1 | X4 | S2/D4/offset4 | D4′ | S3/D4′/offset3 |
本发明实施例提供的存储数据的方法,在第一服务器确定其剩余存储空间大于或者等于其上的一虚拟机生成的一数据所占的存储空间时,优先将该数据存储在该服务器的剩余存储空间中;在第一服务器确定其剩余存储空间小于该数据所占的存储空间时,将该数据存储在第二服务器的存储空间中,并将该虚拟机迁移到第二服务器上。这样,虚拟机可以直接从本地(第二服务器的存储空间)读取数据,不需要从网络中的其他服务器上读取数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
实施例三
如图5所示,为本实施例提供的一种服务器1,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器1用以执行图1所示的存储数据的方法,所述服务器1包括:
确定模块51,用于确定所述服务器1生成的第一数据;
判断模块52,用于判断所述服务器1的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储模块53,用于在所述判断模块52确定所述服务器1的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器1的已使用存储空间大于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述服务器1的剩余存储空间中。
可选的,所述服务器1包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器;如图6所示,所述服务器1还包括:
发送模块54,用于在所述判断模块52确定所述服务器1的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
迁移模块55,用于在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
可选的,所述其他服务器包括第二服务器,如图6所示,所述服务器1还包括:
发送模块54,用于在所述判断模块52确定所述服务器1的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
更新模块56,用于更新所述服务器1的剩余存储空间;
所述发送模块54还用于,当所述服务器1更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述服务器1;
接收模块57,用于接收所述第二服务器发送的所述第一数据;
所述存储模块53还用于,将所述第一数据存储在所述服务器1更新后的剩余存储空间中。
可选的,所述其他服务器还包括第三服务器;
所述发送模块54还用于,向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
示例性的,本实施例中的服务器1具体可以为上述实施例一中描述的“第一服务器”,本实施例中的“第二服务器”可以为上述实施例一中描述的“第二服务器”。
本发明实施例提供的服务器1,应用于还包含其他服务器的分布式存储***中,在服务器1确定其剩余存储空间大于或者等于其生成的一数据所占的存储空间,且服务器1的已使用存储空间大于其他服务器的最小已使用存储空间时,优先将该数据存储在该服务器的剩余存储空间中。这样,服务器1可以直接从本地读取该数据,而不需要从网络中的其他服务器上读取该数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
实施例四
针对实施例三,在硬件实现上,其中的发送模块可以为发送器,接收模块可以为接收器,且该发送器和接收器可以集成在一起构成收发器;存储模块可以为存储器,确定模块、判断模块、迁移模块等可以以硬件形式内嵌于或独立于服务器1的处理器中,也可以以软件形式存储于服务器1的存储器中,以便于处理器调用执行以上各个模块对应的操作,该处理器可以为中央处理单元(CPU)、微处理器、单片机等。
如图7所示,为本发明实施例提供的一种服务器1,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器1用以执行图1所示的存储数据的方法,所述服务器1包括:总线***71、存储器72、处理器73。
其中,存储器72和处理器73之间是通过总线***71耦合在一起的,其中总线***71除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线***71。
存储器72,用于存储一组代码;
存储器72中存储的代码用于控制处理器73确定所述服务器1生成的第一数据;以及判断所述服务器1的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储器72,还用于在所述处理器73确定所述服务器1的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器1的已使用存储空间大于所述其他服务器的最小已使用存储空间时,在所述处理器的控制下将所述第一数据存储在所述服务器1的剩余存储空间中。
可选的,所述服务器1包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器;如图8所示,所述服务器1还包括:
发送器74,用于在所述处理器73确定所述服务器1的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
所述处理器73还用于,在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
可选的,所述其他服务器包括第二服务器;
所述处理器73还用于,更新所述服务器1的剩余存储空间;
所述发送器74还用于,当所述服务器1更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述服务器1;
如图8所示,所述服务器1还包括:接收器75,用于接收所述第二服务器发送的所述第一数据;
所述存储器72还用于,在所述处理器73的控制下将所述第一数据存储在所述服务器1更新后的剩余存储空间中。
可选的,所述其他服务器还包括第三服务器;
所述发送器74还用于,向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
示例性的,本实施例中的服务器1具体可以为上述实施例一中描述的“第一服务器”,本实施例中的“第二服务器”可以为上述实施例一中描述的“第二服务器”。
本发明实施例提供的服务器1,应用于还包含其他服务器的分布式存储***中,在服务器1确定其剩余存储空间大于或者等于其生成的一数据所占的存储空间,且服务器1的已使用存储空间大于其他服务器的最小已使用存储空间时,优先将该数据存储在该服务器的剩余存储空间中。这样,服务器1可以直接从本地读取该数据,而不需要从网络中的其他服务器上读取该数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
实施例五
如图9所示,为本实施例提供的一种服务器2,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器2用以执行图2所示的存储数据的方法,所述服务器2包括:
确定模块91,用于确定所述服务器2生成的第一数据;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值;
判断模块92,用于判断所述服务器2的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储模块93,用于在所述判断模块92确定所述服务器2的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器2的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述服务器2的剩余存储空间中。
示例性的,本实施例中的服务器2具体可以为上述实施例一中描述的“第一服务器”,
本发明实施例提供的服务器2,应用于还包含其他服务器的分布式存储***中,在服务器2确定其剩余存储空间大于或者等于其生成的一数据所占的存储空间,且服务器2的已使用存储空间小于或者等于其他服务器的最小已使用存储空间时,优先将该数据存储在该服务器的剩余存储空间中;其中,该数据所占的存储空间大于分布式存储***的最小存储单元的最大值。这样,服务器2可以直接从本地读取该数据,而不需要从网络中的其他服务器上读取该数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
实施例六
针对实施例五,在硬件实现上,其中的存储模块可以为存储器,确定模块、判断模块可以以硬件形式内嵌于或独立于服务器2的处理器中,也可以以软件形式存储于服务器2的存储器中,以便于处理器调用执行以上各个模块对应的操作,该处理器可以为中央处理单元(CPU)、微处理器、单片机等。
如图10所示,为本发明实施例提供的一种服务器2,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器2用以执行图2所示的存储数据的方法,所述服务器1包括:总线***10A、存储器10B、处理器10C。
其中,存储器10B和处理器10C之间是通过总线***10A耦合在一起的,其中总线***10A除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线***10A。
存储器10B,用于存储一组代码;
存储器10B中存储的代码用于控制处理器10C确定所述服务器2生成的第一数据;以及判断所述服务器2的剩余存储空间与所述第一数据所占的存储空间的大小关系;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值;
存储器10B,还用于在所述处理器10C确定所述服务器2的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器2的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,在所述处理器10C的控制下将所述第一数据存储在所述服务器2的剩余存储空间中。
示例性的,本实施例中的服务器2具体可以为上述实施例一中描述的“第一服务器”,
本发明实施例提供的服务器2,应用于还包含其他服务器的分布式存储***中,在服务器2确定其剩余存储空间大于或者等于其生成的一数据所占的存储空间,且服务器2的已使用存储空间小于或者等于其他服务器的最小已使用存储空间时,优先将该数据存储在该服务器的剩余存储空间中;其中,该数据所占的存储空间大于分布式存储***的最小存储单元的最大值。这样,服务器2可以直接从本地读取该数据,而不需要从网络中的其他服务器上读取该数据,从而达到缩短时延、提高***性能的有益效果。解决了现有技术中,因在网络中的其他服务器上读取数据导致的时延长、***性能较差的问题。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理包括,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (15)
1.一种存储数据的方法,其特征在于,应用于分布式存储***,所述分布式存储***包括第一服务器和其他服务器,所述方法包括:
确定所述第一服务器生成的第一数据;
判断所述第一服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
如果所述第一服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述第一服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述第一服务器的剩余存储空间中。
2.根据权利要求1所述的方法,其特征在于,所述第一服务器包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器;所述方法还包括:
如果所述第一服务器的剩余存储空间小于所述第一数据所占的存储空间,则向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
3.根据权利要求1所述的方法,其特征在于,所述其他服务器包括第二服务器;所述方法还包括:
如果所述第一服务器的剩余存储空间小于所述第一数据所占的存储空间,则向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
更新所述第一服务器的剩余存储空间;
当所述第一服务器更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述第一服务器;
接收所述第二服务器发送的所述第一数据;
将所述第一数据存储在所述第一服务器更新后的剩余存储空间中。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述其他服务器还包括第三服务器,所述方法还包括:
向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
5.一种存储数据的方法,其特征在于,应用于分布式存储***,所述分布式存储***包括第一服务器和其他服务器,所述方法包括:
确定所述第一服务器生成的第一数据;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值;
判断所述第一服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
如果所述第一服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述第一服务器的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述第一服务器的剩余存储空间中。
6.一种服务器,其特征在于,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器包括:
确定模块,用于确定所述服务器生成的第一数据;
判断模块,用于判断所述服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储模块,用于在所述判断模块确定所述服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述服务器的剩余存储空间中。
7.根据权利要求6所述的服务器,其特征在于,所述服务器包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器,所述服务器还包括:
发送模块,用于在所述判断模块确定所述服务器的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
迁移模块,用于在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
8.根据权利要求6所述的服务器,其特征在于,所述其他服务器包括第二服务器,所述服务器还包括:
发送模块,用于在所述判断模块确定所述服务器的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
更新模块,用于更新所述服务器的剩余存储空间;
所述发送模块还用于,当所述服务器更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述服务器;
接收模块,用于接收所述第二服务器发送的所述第一数据;
所述存储模块还用于,将所述第一数据存储在所述服务器更新后的剩余存储空间中。
9.根据权利要求6-8任一项所述的服务器,其特征在于,所述其他服务器还包括第三服务器;
所述发送模块还用于,向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
10.一种服务器,其特征在于,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器包括:
处理器,用于确定所述服务器生成的第一数据;以及判断所述服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储器,用于在所述处理器确定所述服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器的已使用存储空间大于所述其他服务器的最小已使用存储空间时,在所述处理器的控制下将所述第一数据存储在所述服务器的剩余存储空间中。
11.根据权利要求10所述的服务器,其特征在于,所述服务器包含一虚拟机,所述第一数据是所述虚拟机生成的数据;所述其他服务器包括第二服务器,所述服务器还包括:
发送器,用于在所述处理器确定所述服务器的剩余存储空间小于所述第一数据所占的存储空间时,向所述第二服务器发送包含所述第一数据的第一指示消息;所述第一指示消息用于指示所述第二服务器将所述第一数据存储在所述第二服务器的剩余存储空间中;
所述处理器还用于,在所述虚拟机对应的除所述第一数据之外的其他数据所占的存储空间小于或者等于所述第二服务器的剩余存储空间时,将所述虚拟机和所述其他数据迁移到所述第二服务器上。
12.根据权利要求10所述的服务器,其特征在于,所述其他服务器包括第二服务器;
所述处理器还用于,更新所述服务器的剩余存储空间;
所述发送器还用于,当所述服务器更新后的剩余存储空间大于或者等于所述第一数据所占的存储空间时,向所述第二服务器发送第二指示消息;所述第二指示消息用于指示所述第二服务器将所述第一数据迁移到所述服务器;
所述服务器还包括:接收器,用于接收所述第二服务器发送的所述第一数据;
所述存储器还用于,在所述处理器的控制下将所述第一数据存储在所述服务器更新后的剩余存储空间中。
13.根据权利要求10-12任一项所述的服务器,其特征在于,所述其他服务器还包括第三服务器;
所述发送器还用于,向所述第三服务器发送包含所述第一数据的副本的第三指示消息,所述第三指示消息用于指示所述第三服务器将所述第一数据的副本存储在所述第三服务器的剩余存储空间中。
14.一种服务器,其特征在于,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器包括:
确定模块,用于确定所述服务器生成的第一数据;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值;
判断模块,用于判断所述服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;
存储模块,用于在所述判断模块确定所述服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,将所述第一数据存储在所述服务器的剩余存储空间中。
15.一种服务器,其特征在于,应用于分布式存储***,所述分布式存储***还包括其他服务器,所述服务器包括:
处理器,用于确定所述服务器生成的第一数据;以及判断所述服务器的剩余存储空间与所述第一数据所占的存储空间的大小关系;所述第一数据所占的存储空间大于所述分布式存储***的最小存储单元的最大值;
存储器,用于在所述处理器确定所述服务器的剩余存储空间大于或者等于所述第一数据所占的存储空间,且所述服务器的已使用存储空间小于或者等于所述其他服务器的最小已使用存储空间时,在所述处理器的控制下将所述第一数据存储在所述服务器的剩余存储空间中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/071224 WO2015109483A1 (zh) | 2014-01-23 | 2014-01-23 | 一种存储数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104205780A true CN104205780A (zh) | 2014-12-10 |
CN104205780B CN104205780B (zh) | 2017-06-27 |
Family
ID=52088184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480000338.5A Active CN104205780B (zh) | 2014-01-23 | 2014-01-23 | 一种存储数据的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104205780B (zh) |
WO (1) | WO2015109483A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202350A (zh) * | 2016-07-05 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件***自动精简配置的方法及*** |
CN106909321A (zh) * | 2017-02-24 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于存储***的控制方法及装置 |
CN107092443A (zh) * | 2017-04-28 | 2017-08-25 | 杭州宏杉科技股份有限公司 | 数据迁移方法及装置 |
CN107172222A (zh) * | 2017-07-27 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种基于分布式存储***的数据存储方法及装置 |
CN109783576A (zh) * | 2019-01-02 | 2019-05-21 | 佛山市顺德区美的洗涤电器制造有限公司 | 家电设备及其数据存储方法、装置 |
CN110109622A (zh) * | 2019-04-28 | 2019-08-09 | 平安科技(深圳)有限公司 | 一种基于中间件的数据处理方法和相关装置 |
CN110134332A (zh) * | 2019-04-28 | 2019-08-16 | 平安科技(深圳)有限公司 | 一种数据存储方法及相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6958881B1 (en) * | 2003-11-26 | 2005-10-25 | Western Digital Technologies, Inc. | Disk drive control system having a servo processing accelerator circuit |
CN101771715A (zh) * | 2008-12-26 | 2010-07-07 | 华为技术有限公司 | 分布式网络构建存储的方法、装置和*** |
CN103064639A (zh) * | 2012-12-28 | 2013-04-24 | 华为技术有限公司 | 数据存储方法及装置 |
CN103092927A (zh) * | 2012-12-29 | 2013-05-08 | 华中科技大学 | 一种分布式环境下的文件快速读写方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7406505B2 (en) * | 2004-04-29 | 2008-07-29 | International Business Machines Corporation | Managing on-demand email storage |
CN102508736A (zh) * | 2011-10-11 | 2012-06-20 | 宇龙计算机通信科技(深圳)有限公司 | 通信终端中应用程序的备份方法及通信终端 |
-
2014
- 2014-01-23 WO PCT/CN2014/071224 patent/WO2015109483A1/zh active Application Filing
- 2014-01-23 CN CN201480000338.5A patent/CN104205780B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6958881B1 (en) * | 2003-11-26 | 2005-10-25 | Western Digital Technologies, Inc. | Disk drive control system having a servo processing accelerator circuit |
CN101771715A (zh) * | 2008-12-26 | 2010-07-07 | 华为技术有限公司 | 分布式网络构建存储的方法、装置和*** |
CN103064639A (zh) * | 2012-12-28 | 2013-04-24 | 华为技术有限公司 | 数据存储方法及装置 |
CN103092927A (zh) * | 2012-12-29 | 2013-05-08 | 华中科技大学 | 一种分布式环境下的文件快速读写方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202350A (zh) * | 2016-07-05 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件***自动精简配置的方法及*** |
CN106909321A (zh) * | 2017-02-24 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于存储***的控制方法及装置 |
CN107092443A (zh) * | 2017-04-28 | 2017-08-25 | 杭州宏杉科技股份有限公司 | 数据迁移方法及装置 |
CN107092443B (zh) * | 2017-04-28 | 2020-04-07 | 杭州宏杉科技股份有限公司 | 数据迁移方法及装置 |
CN107172222A (zh) * | 2017-07-27 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种基于分布式存储***的数据存储方法及装置 |
CN109783576A (zh) * | 2019-01-02 | 2019-05-21 | 佛山市顺德区美的洗涤电器制造有限公司 | 家电设备及其数据存储方法、装置 |
CN110109622A (zh) * | 2019-04-28 | 2019-08-09 | 平安科技(深圳)有限公司 | 一种基于中间件的数据处理方法和相关装置 |
CN110134332A (zh) * | 2019-04-28 | 2019-08-16 | 平安科技(深圳)有限公司 | 一种数据存储方法及相关装置 |
WO2020220535A1 (zh) * | 2019-04-28 | 2020-11-05 | 平安科技(深圳)有限公司 | 一种数据存储方法及相关装置 |
CN110134332B (zh) * | 2019-04-28 | 2022-03-08 | 平安科技(深圳)有限公司 | 一种数据存储方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2015109483A1 (zh) | 2015-07-30 |
CN104205780B (zh) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104205780A (zh) | 一种存储数据的方法和装置 | |
CN102707990B (zh) | 基于容器的处理方法和装置 | |
KR102137761B1 (ko) | 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법 | |
US9471239B2 (en) | Memory power management and data consolidation | |
CN101901149B (zh) | 处理信息的设备、方法和程序 | |
US9703488B2 (en) | Autonomous dynamic optimization of platform resources | |
US9916215B2 (en) | System and method for selectively utilizing memory available in a redundant host in a cluster for virtual machines | |
CN105677257A (zh) | 一种数据存储方法及电子设备 | |
US10664392B2 (en) | Method and device for managing storage system | |
CN104932933A (zh) | 一种获取自旋锁的方法及装置 | |
CN105335309A (zh) | 一种数据传输方法及计算机 | |
CN104572242A (zh) | 一种扩展虚拟机磁盘空间的方法、装置及虚拟机*** | |
CN102419753B (zh) | 信息处理设备、信息处理方法和信息处理*** | |
CN104517067A (zh) | 访问数据的方法、装置及*** | |
CN103885804A (zh) | 一种fpga多功能项动态加载***及其方法 | |
CN104216834A (zh) | 一种内存访问的方法、缓冲调度器和内存模块 | |
US20120179885A1 (en) | Write control system | |
CN104063234A (zh) | 一种兼容方法及装置 | |
US20150278299A1 (en) | External merge sort method and device, and distributed processing device for external merge sort | |
CN111414422B (zh) | 一种数据分布方法、装置、设备和存储介质 | |
CN102521155B (zh) | 实现表项在物理存储器上动态分配的方法和装置 | |
CN104050189A (zh) | 页面共享处理方法及装置 | |
CN102419693A (zh) | 一种管理存储单元的磁盘空间的方法和电子设备 | |
CN104023056A (zh) | 更新数据的方法和相关设备 | |
CN104750547A (zh) | 虚拟机的输入输出io请求处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |