CN101888405B - 一种云计算的文件系统和数据处理方法 - Google Patents

一种云计算的文件系统和数据处理方法 Download PDF

Info

Publication number
CN101888405B
CN101888405B CN 201010199454 CN201010199454A CN101888405B CN 101888405 B CN101888405 B CN 101888405B CN 201010199454 CN201010199454 CN 201010199454 CN 201010199454 A CN201010199454 A CN 201010199454A CN 101888405 B CN101888405 B CN 101888405B
Authority
CN
China
Prior art keywords
data
node
back end
file system
storage
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
Application number
CN 201010199454
Other languages
English (en)
Other versions
CN101888405A (zh
Inventor
金晨
张昕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Yunhu Times Technology Co., Ltd.
Original Assignee
Beijing Grandison & Jm Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Grandison & Jm Information Technology Co Ltd filed Critical Beijing Grandison & Jm Information Technology Co Ltd
Priority to CN 201010199454 priority Critical patent/CN101888405B/zh
Publication of CN101888405A publication Critical patent/CN101888405A/zh
Application granted granted Critical
Publication of CN101888405B publication Critical patent/CN101888405B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提出了一种云计算的文件系统和数据处理方法,属于通讯技术领域。本发明实施例包括目录节点和数据节点。本发明实施例的方法包括:设置用于提供客户端接口并记录存储到数据节点中的数据的路径目录节点,和连接所述目录节点,用于存储数据的数据节点;目录节点生成数据存储列表,并将数据和所述数据存储列表发送到数据存储列表中的第一数据节点;当前数据节点接收数据,并在接收到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点;直至获得预订数量的冗余存储份数。本发明实施例提出了通过目录节点对数据进行存储、读取、修改,并通过冗余存储保证数据的可靠性和存储的高效性。

Description

一种云计算的文件系统和数据处理方法
技术领域
本发明涉及计算机技术领域,特别涉及一种云计算的文件系统和数据处理方法。
背景技术
云计算(cloud computing)是一种基于因特网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。因此,云计算可以通过大量成本较低的电脑和服务器,实现每秒10万亿次数量级的运算能力。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。
由服务商这样的专业网络公司来搭建计算机存储、运算中心,用户通过一根网线借助浏览器就可以很方便的访问,把“云”作为资料存储以及应用服务的中心。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
在实现本发明的过程中,发明人发现现有技术至少具有以下缺点:
由于采用了成千上万台电脑和服务器连接成一片电脑云,因此云计算的硬件容错性是非常重要的。现有技术为了保持数据的可靠性,都采用一个文件系统来控制数据的存储、读取、修改、删除。而现有的文件系统在对数据存储、读取、修改、删除时操作过于复杂,导致数据操作效率低。
发明内容
为了解决现有技术中的文件系统在对数据存储、读取、修改、删除时操作过于复杂,导致数据操作效率低的问题,本发明实施例提出了一种云计算的文件系统和数据处理方法。所述技术方案如下:
本发明实施例提出了一种云计算的文件系统,包括:
目录节点,用于提供客户端接口,并记录存储到数据节点中的数据的路径;
数据节点,连接所述目录节点,用于存储数据;
其中,所述目录节点包括:
数据存储模块,用于生成数据存储列表;将数据发送到所述数据存储列表中的每一节点;具体为前一数据节点接收到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点,直至获得预订数量的冗余存储份数;
所述目录节点还包括:
服务器状态确认模块,用于接收数据节点发送的心跳信息,以确定数据节点状态;并用于根据数据节点状态进行数据恢复。
作为上述技术方案的优选,所述目录节点还包括:
数据切分模块,用于将接收到的数据进行切分以获得预定大小的数据分块;并将每一分块分别发送到数据存储模块。
作为上述技术方案的优选,所述目录节点还包括:
数据节点选择模块,用于读取数据节点所在的机柜ID,并根据机柜ID及预先设置的冗余系数生成数据存储列表。
作为上述技术方案的优选,所述目录节点还包括:
数据校验模块,用于存储数据时,根据预设校验规则对数据进行校验,并将校验参数存储;并用于在读取文件时,根据所述校验参数对数据进行校验。
同时,本发明实施例还提出了一种云计算的文件系统的数据处理方法,其特征在于,包括:
步骤1、设置用于提供客户端接口并记录存储到数据节点中的数据的路径目录节点,和连接所述目录节点,用于存储数据的数据节点;
步骤2、目录节点生成数据存储列表,并将数据和所述数据存储列表发送到数据存储列表中的第一数据节点;
步骤3、当前数据节点接收数据,并在接收到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点;直至获得预订数量的冗余存储份数。
步骤4、目录节点接收数据节点发送的心跳信息,以确定数据节点状态;如果数据节点不可用,则读取该且该数据节点中存储的数据,以及文件系统中该数据的份数;如果所述份数少于冗余系数,则将该数据复制到可用的数据节点中并修改目录节点的参数。
作为上述技术方案的优选,所述步骤2具体为:
步骤21、目录节点将接收到的数据进行切分以获得预定大小的数据分块;
步骤22、目录节点针对每一数据分块生成数据存储列表,并分别将每一数据分块及对应所述数据存储列表发送到数据存储列表中的第一数据节点。
作为上述技术方案的优选,所述方法还包括:
步骤5、读取数据节点所在的机柜ID,并根据机柜ID及预先设置的冗余系数生成数据存储列表。
作为上述技术方案的优选,所述方法还包括:
步骤6、在存储数据时,根据预设校验规则对数据进行校验,并将校验参数存储;在读取文件时,根据所述校验参数对数据进行校验。
本发明实施例的有益效果是:本发明实施例通过目录节点对数据进行存储、读取、修改,并将数据进行冗余存储。同时,本发明实施例可以通过在接收到预订大小的数据块后即发送到另一个数据节点,这样可以在存储的同时进行冗余存储,以在提高数据可靠性的同时提高数据存储的效率。
附图说明
图1为本发明第一实施例的文件系统的结构示意图;
图2为本发明第二实施例的文件系统的结构示意图;
图3为本发明第三实施例的云计算的文件系统的数据处理方法的流程示意图;
图4为本发明实施例的数据库示意图;
图5为图4的数据库在物理存储时的一种结构示意图;
图6为图4的数据库在物理存储时的另一种结构示意图;
图7为图4的数据库在物理存储时的又一种结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
对于云计算来说,对于大文件的可靠保存是非常重要的。对于由成千上万台服务器构成的云,其中部分服务器出现故障是一种正常的情况。因此为了在硬件出错的情况下尽量保证数据完整性,本发明实施例的设计目标是在成百上千台服务器中存储数据,并且可以快速检测出硬件错误和快速进行数据的自动恢复。
实施例1
本发明第一实施例提出了一种云计算的文件系统,其结构如图1所示,包括:
目录节点1,用于提供客户端接口,并记录存储到数据节点中的数据的路径;
数据节点2,连接所述目录节点,用于存储数据;
其中,所述目录节点1包括:
数据存储模块11,用于生成数据存储列表;将数据发送到所述数据存储列表中的每一节点;具体为前一数据节点接收到到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点,直至获得预订数量的冗余存储份数。
在对数据进行存储时,客户端将数据发送到目录节点;目录节点根据用户指定的存储路径或默认的存储路径,将该数据再发送到相应的数据节点。同时,为了保证数据的高可用性,需要将文件进行冗余存储。在对数据或分块进行存储时,本发明实施例提出了一种进行冗余存储的方法,即:客户端将接收到的数据机列表和数据一起发送到第一台数据机。在第一台数据机接收到预定长度的数据后,就将数据机列表和这些数据发送到数据机列表中的第二台数据机......以此类推,直至达到冗余系数所需的份数。本发明的一个实施例中,可以采用以下方式:客户端根据数据机列表,把数据写入第一台数据机,并且把列表传给数据机,当数据机接收到4k数据的时候,写入本地。然后第一台数据机发起连接到下一台数据机,把这个4k的数据发送到第二台数据机......这样就形成一个类似于流水线的数据存储方法,直到数据全部传输完毕。此时,对于数据的复制也已经结束,获得了与冗余系数所需的份数。这样可以极大地提高对数据进行传输的效率。
实施例2
本发明第二实施例提出了一种云计算的文件系统,其结构如图2所示,包括:
目录节点1,用于提供客户端接口,并记录存储到数据节点中的数据的路径;
数据节点2,连接所述目录节点,用于存储数据;
其中,所述目录节点1包括:
数据存储模块11,用于生成数据存储列表;将数据发送到所述数据存储列表中的每一节点;具体为前一数据节点接收到到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点,直至获得预订数量的冗余存储份数。
在对数据进行存储时,客户端将数据发送到目录节点;目录节点根据用户指定的存储路径或默认的存储路径,将该数据再发送到相应的数据节点。同时,为了保证数据的高可用性,需要将文件进行冗余存储。在对数据或分块进行存储时,本发明实施例提出了一种进行冗余存储的方法,即:客户端将接收到的数据机列表和数据一起发送到第一台数据机。在第一台数据机接收到预定长度的数据后,就将数据机列表和这些数据发送到数据机列表中的第二台数据机......以此类推,直至达到冗余系数所需的份数。本发明的一个实施例中,可以采用以下方式:客户端根据数据机列表,把数据写入第一台数据机,并且把列表传给数据机,当数据机接收到4k数据的时候,写入本地。然后第一台数据机发起连接到下一台数据机,把这个4k的数据发送到第二台数据机......这样就形成一个类似于流水线的数据存储方法,直到数据全部传输完毕。此时,对于数据的复制也已经结束,获得了与冗余系数所需的份数。这样可以极大地提高对数据进行传输的效率。
其中,所述目录节点1还包括:
数据切分模块12,将接收到的数据进行切分以获得预定大小的数据分块;并将每一分块分别发送到数据存储模块11。
本发明实施例的目录节点1先将数据写入到本地,然后将数据分割为预设大小的分块。在本发明的一个实施例中,可以采用每一分块为64M大小。对于文件系统来说,每一分块都需要分别通过前述的数据存储模块11进行存储。这样每一个数据分块都可以冗余存储为多份,份数由冗余系数决定。因此,目录节点针对每一数据分块都要生成一个数据存储列表。当然,这只是针对大文件存储时的一个优选的方法,以保证数据存储的可靠性和效率。
其中,所述目录节点1还包括:
数据节点选择模块13,用于读取数据节点所在的机柜ID,并根据机柜ID及预先设置的冗余系数生成数据存储列表。
本发明实施例的文件系统中,每一个机柜都设置有ID,且文件系统会统计每一数据节点所处的机柜ID,并存储在目录节点中。这样就可以使文件系统可以获得更灵活的存储策略。例如,将本发明实施例的文件系统中,一般数据存储都采用raid(Redundant Array ofIndependent Disks,独立磁盘冗余阵列)形式。以冗余系数为3为例,需要将数据存储在三个数据节点中。本发明实施例可以将三份数据中的两份存储在同一raid ID的两个磁盘阵列中,另一份存储在另一raid ID的磁盘阵列中。这是由于同一机柜内的数据传输带宽一般都大于机会间的数据传输带宽。采用本发明实施例中数据存储模块11的方式,需要在多个数据节点之间进行数据传输。因此采用同一机柜内的raid阵列存储其中的两份冗余数据,这样既有利于机柜异常时候的数据恢复,又可以提高读写性能。同时,在数据读取时,文件系统首先确定想要读取的数据的每一个备份所存在的机柜的ID,并确定读取该数据的客户端的机柜ID。文件系统优先选择与客户端具有相同的机柜ID的数据进行读取;如果没有与客户端相同机柜ID的数据节点,则随机选择一个数据节点。这样可以提高数据读取的效率。其中,客户端是指用户接入到云之后,云中用于执行用户操作的服务器。
其中,所述目录节点1还包括:
服务器状态确认模块14,用于接收数据节点发送的心跳信息,以确定数据节点状态;并能根据数据节点状态进行数据恢复。
正如前所述的,对于由成千上万台服务器构成的云,其中部分服务器出现故障是一种正常的情况,因此为了在硬件出错的情况下尽量保证数据完整性是非常重要的。而云可能存在的故障包括:数据节点或网络硬件故障、数据传输和磁盘出错导致的数据异常错误。
为了防止数据节点或网络链路的硬件错误,本发明实施例的文件系统中,每一数据节点需要定时发送一个心跳信息给目录节点,表明自己仍然存活。网络异常或是数据节点不可用,都会可能会导致一部分数据机无法和目录服务器通讯。这时候目录服务器收不到心跳信息,就认为这个数据机已经死机,从有效io列表中清除,而该数据机上面的所有数据块也会标记为不可读。这个时候某些数据块的冗余份数有可能就低于它的冗余系数了,目录服务器会定期检查每一个数据块,看看它是否需要进行数据冗余复制。
其中,所述目录节点1还包括:
数据校验模块15,用于根据在存储数据时,根据预设校验规则对数据进行校验,并将校验参数存储;并用于在读取文件时,根据所述校验参数对数据进行校验。
为了防止由于数据传输和磁盘出错导致的数据异常错误,本发明实施例对数据块的校验。在客户端创建文件的时候,会对每一个文件块进行信息摘录,并把这些信息摘要写入到数据节点的同一个路径的隐藏文件里面。当客户端读取文件的时候,会先读取数据节点中的该信息摘要,并对数据块进行校验。如果校验出错,客户端就会请求到另外一个数据机读取该文件块,并且报告给目录服务器这个文件块有错误。目录服务器就会定期检查,并且重新复制这个块。其中,校验可以使用md5和sha1进行校验。
为了防止目录服务器错误,本发明实施例中对运行目录节点服务器进行备份。由于目录节点中的FsImage和Editlog是目录节点最核心的数据结构,如果其中一个文件出错就会造成目录节点不可用。因此本发明实施例中设置多个备份文件和备份服务器,并使备份文件和备份服务器与节点目录实现同步镜像。虽然这样增加了系统的负担,但是在目前这个架构上面为了实现数据的可靠性,这个同步操作是非常必要的。
实施例3
本发明第三实施例提出了一种云计算的文件系统的数据处理方法,其流程如图3所示,包括:
步骤101、设置用于提供客户端接口并记录存储到数据节点中的数据的路径目录节点,和连接所述目录节点,用于存储数据的数据节点;
步骤102、目录节点生成数据存储列表,并将数据和所述数据存储列表发送到数据存储列表中的第一数据节点;
步骤103、当前数据节点接收数据,并在接收到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点;直至获得预订数量的冗余存储份数。
本发明实施例提出了一种文件系统的数据处理方法,在对数据进行存储时,客户端将数据发送到目录节点;目录节点根据用户指定的存储路径或默认的存储路径,将该数据再发送到相应的数据节点。同时,为了保证数据的高可用性,需要将文件进行冗余存储。在对数据或分块进行存储时,本发明实施例提出了一种进行冗余存储的方法,即:客户端将接收到的数据机列表和数据一起发送到第一台数据机。在第一台数据机接收到预定长度的数据后,就将数据机列表和这些数据发送到数据机列表中的第二台数据机......以此类推,直至达到冗余系数所需的份数。本发明的一个实施例中,可以采用以下方式:客户端根据数据机列表,把数据写入第一台数据机,并且把列表传给数据机,当数据机接收到4k数据的时候,写入本地。然后第一台数据机发起连接到下一台数据机,把这个4k的数据发送到第二台数据机......这样就形成一个类似于流水线的数据存储方法,直到数据全部传输完毕。此时,对于数据的复制也已经结束,获得了与冗余系数所需的份数。这样可以极大地提高对数据进行传输的效率。
实施例4
本发明第四实施例提出了一种云计算的文件系统的数据处理方法,包括:
步骤201、设置用于提供客户端接口并记录存储到数据节点中的数据的路径目录节点,和连接所述目录节点,用于存储数据的数据节点;
步骤202、目录节点将接收到的数据进行切分以获得预定大小的数据分块;
步骤203、目录节点针对每一数据分块生成数据存储列表;并将每一数据分块和对应的所述数据存储列表发送到数据存储列表中的第一数据节点;
步骤204、当前数据节点接收数据分块,并在接收到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点;直至获得预订数量的冗余存储份数。
在上述步骤203中,本发明实施例提出了针对大文件存储时先将数据切分,然后再将每一数据分块都作为一个数据分别存储到数据节点中。在本发明的一个实施例中,可以采用每一分块为64M大小。对于文件系统来说,每一分块都需要分别通过前述的数据存储模块11进行存储。这样每一个数据分块都可以冗余存储为多份,份数由冗余系数决定。因此,目录节点针对每一数据分块都要生成一个数据存储列表。当然,这只是针对大文件存储时的一个优选的方法,以保证数据存储的可靠性和效率。
其中,在上述方法中可以还包括以下步骤:
步骤205、读取数据节点所在的机柜ID,并根据机柜ID及预先设置的冗余系数生成数据存储列表。
本发明实施例的文件系统中,每一个机柜都设置有ID,且文件系统会统计每一数据节点所处的机柜ID,并存储在目录节点中。这样就可以使文件系统可以获得更灵活的存储策略。例如,将本发明实施例的文件系统中,一般数据存储都采用raid(Redundant Array ofIndependent Disks,独立磁盘冗余阵列)形式。以冗余系数为3为例,需要将数据存储在三个数据节点中。本发明实施例可以将三份数据中的两份存储在同一raid ID的两个磁盘阵列中,另一份存储在另一raid ID的磁盘阵列中。这是由于同一机柜内的数据传输带宽一般都大于机会间的数据传输带宽。采用本发明实施例中数据存储模块11的方式,需要在多个数据节点之间进行数据传输。因此采用同一机柜内的raid阵列存储其中的两份冗余数据,这样既有利于机柜异常时候的数据恢复,又可以提高读写性能。同时,在数据读取时,文件系统首先确定想要读取的数据的每一个备份所存在的机柜的ID,并确定读取该数据的客户端的机柜ID。文件系统优先选择与客户端具有相同的机柜ID的数据进行读取;如果没有与客户端相同机柜ID的数据节点,则随机选择一个数据节点。这样可以提高数据读取的效率。其中,客户端是指用户接入到云之后,云中用于执行用户操作的服务器。
其中,在上述方法中可以还包括以下步骤:
步骤206、目录节点接收数据节点发送的心跳信息,以确定数据节点状态;如果数据节点不可用,则读取该且该数据节点中存储的数据,以及该数据位于所有数据节点中的份数;如果所述份数少于冗余系数,则将该数据复制到可用的数据节点中并修改目录节点的参数。
为了防止数据节点或网络链路的硬件错误,本发明实施例的文件系统中,每一数据节点需要定时发送一个心跳信息给目录节点,表明自己仍然可用。网络异常或是数据节点不可用,都会可能会导致一部分数据机无法和目录服务器通讯。这时候目录服务器收不到心跳信息,就认为这个数据机已经不可用,从有效io列表中清除,而该数据机上面的所有数据块也会标记为不可读。这个时候某些数据块的冗余份数有可能就低于它的冗余系数了,目录服务器会定期检查每一个数据块,看看它是否需要进行数据冗余复制。
其中,在上述方法中可以还包括以下步骤:
步骤207、在存储数据时,根据预设校验规则对数据进行校验,并将校验参数存储;在读取文件时,根据所述校验参数对数据进行校验。
为了防止由于数据传输和磁盘出错导致的数据异常错误,本发明实施例对数据块的校验。在客户端创建文件的时候,会对每一个文件块进行信息摘录,并把这些信息摘要写入到数据节点的同一个路径的隐藏文件里面。当客户端读取文件的时候,会先读取数据节点中的该信息摘要,并对数据块进行校验。如果校验出错,客户端就会请求到另外一个数据机读取该文件块,并且报告给目录服务器这个文件块有错误。目录服务器就会定期检查,并且重新复制这个块。其中,校验可以使用md5和sha1进行校验。
为了防止目录服务器错误,本发明实施例中对运行目录节点服务器进行备份。由于目录节点中的FsImage和Editlog是目录节点最核心的数据结构,如果其中一个文件出错就会造成目录节点不可用。因此本发明实施例中设置多个备份文件和备份服务器,并使备份文件和备份服务器与节点目录实现同步镜像。虽然这样增加了系统的负担,但是在目前这个架构上面为了实现数据的可靠性,这个同步操作是非常必要的。
在上述方法中,步骤205、步骤206、步骤207可以在上述方法的任意时隙,本发明实施例并不以此为限。
实施例5
本发明第五实施例是在第一、第二、第三、第四实施例的基础上改进而来。前述的第一至四实施例对云计算的文件系统做出了详细的说明。现有的云计算中,文件系统提供用户接口,并对数据存储进行控制。而对于用户来说,其并不知道数据如何在数据节点之间存储,而用户只能看到一个数据库,并对数据库进行操作。而数据库中的所有操作,都通过文件系统中的目录节点及数据节点实现。
本发明实施例的数据库为一分布式数据库,是一个稀疏的,长期存储的,多维度的,排序的映射表。本发明实施例的数据库的目标是处理非常庞大的表,可以用普通的计算机处理超过10亿行数据、超过百万列元素组成的数据表。
本发明实施例中的数据库表,每一行都有一个可排序的主键和任意多的列。这张表的索引是行关键字,列关键字和时间戳。每个值是一个不解释的字符数组,数据都是字符串,没有类型。
由于本发明的数据库是一个稀疏存储的,因此在同一张表里面的每一行数据都可以有截然不同的列。每一列的格式是″<family>:<label>″,都是由字符串组成,每一张表有一个family(列族)集合,这个集合是固定不变的,相当于表的结构,只能通过改变表结构来改变。而label值相对于每一行来说都是可以改变的。这样就可以实现每一行数据可以有不同的列。
本发明实施例的数据库,是将同一个family里面的数据存储在同一个目录底下,而数据库的写操作是锁行的,每一行都是一个原子元素,都可以加锁。
所有数据库的更新都有一个时间戳标记,每个更新都是一个新的版本,而GCDC会保留一定数量的版本,这个值是可以设定的。客户端可以选择获取距离某个时间最近的版本,或者一次获取所有版本。
一个表可以想象成一个大的映射关系,通过主键,或者主键+时间戳,可以定位一行数据,由于是稀疏数据,所以某些列可以是空白的。如图4所示的,即为本发明实施例的数据库的一个概念视图:
在图4中,存储的是一个Web网页的范例列表片断。行名是一个反向URL(即com.cnn.www);contents列族存放网页内容,anchor列族存放引用该网页的锚链接文本。CNN的主页被Sports Illustrater(即所谓SI,CNN的王牌体育节目)和MY-look的主页引用,因此该行包含了名叫“anchor:cnnsi.com”和“anchhor:my.look.ca”的列。每个锚链接只有一个版本(由时间戳标识,如t9,t8);而contents列则有三个版本,分别由时间戳t3,t5,和t6标识。
虽然从概念视图来看每个表格是由很多行组成,但是在物理存储上面,它是按照列来保存的。上面的概念视图在物理存储的时候应该表现成如图5、图6、图7的形式。在概念视图上面有些列是空白的,这样的列实际上并不会被存储,当请求这些空白的单元格的时候,会返回null值。
如果在查询的时候不提供时间戳,那么会返回距离现在最近的那一个版本的数据。因为在存储的时候,数据会按照时间戳排序。
例子:
一个程序写9行数据,row[0-9],先写入anchor:foo列,再写入anchor:bar列,最后重复写入anchor:foo列,由于是同一个列族,写到同一个映射文件里面,最后写到文件里面是这个样子的:
row=row0,column=anchor:bar,timestamp=1174184619081
row=row0,column=anchor:foo,timestamp=1174184620720
row=row0,column=anchor:foo,timestamp=1174184617161
row=row1,column=anchor:bar,timestamp=1174184619081
row=row1,column=anchor:foo,timestamp=1174184620721
row=row1,column=anchor:foo,timestamp=1174184617167
row=row2,column=anchor:bar,timestamp=1174184619081
row=row2,column=anchor:foo,timestamp=1174184620724
row=row2,column=anchor:foo,timestamp=1174184617167
row=row3,column=anchor:bar,timestamp=1174184619081
row=row3,column=anchor:foo,timestamp=1174184620724
row=row3,column=anchor:foo,timestamp=1174184617168
row=row4,column=anchor:bar,timestamp=1174184619081
row=row4,column=anchor:foo,timestamp=1174184620724
row=row4,column=anchor:foo,timestamp=1174184617168
row=row5,column=anchor:bar,timestamp=1174184619082
row=row5,column=anchor:foo,timestamp=1174184620725
row=row5,column=anchor:foo,timestamp=1174184617168
row=row6,column=anchor:bar,timestamp=1174184619082
row=row6,column=anchor:foo,timestamp=1174184620725
row=row6,column=anchor:foo,timestamp=1174184617168
row=row7,column=anchor:bar,timestamp=1174184619082
row=row7,column=anchor:foo,timestamp=1174184620725
row=row7,column=anchor:foo,timestamp=1174184617168
row=row8,column=anchor:bar,timestamp=1174184619082
row=row8,column=anchor:foo,timestamp=1174184620725
row=row8,column=anchor:foo,timestamp=1174184617169
row=row9,column=anchor:bar,timestamp=1174184619083
row=row9,column=anchor:foo,timestamp=1174184620725
row=row9,column=anchor:foo,timestamp=1174184617169
其中anchor:foo被保存了两次,由于时间戳不同,是两个不同的版本,而最新的数据排在前面,所以最新那次更新会先被找到。
本发明实施例的数据库体系,包括主服务器及多个子服务器组成的服务器群。对用户来说,每个表是一堆数据的集合,靠主键来区分。物理上,一张表是被拆分成多块,每一块都可以认为是一个子服务器。多个子服务器之间通过块的名称、开始主键、结束主键中的一个或多个来区分。每一个块从开始主键到结束主键,保存着一个表中的某段连续的数据。这样就可以将一张表划分为多个块,并保存在多个子服务器上。
当用户更新数据时,主服务器将用户分配到数据对应的子服务器。对数据的修改都先被缓存并写入子服务器的日志文件中。其中,缓存可以采用服务器的内容或硬盘或其他任意存储介质,本发明实施例中将这个缓存称为Hmemcache。其中,日志文件可以为服务器上的一个记录问及那,用于记录着所有的更新操作,本发明实施例中将这个日志文件称为Hlog。在缓存并记录后,才会调用相应的参数并返回客户端。
这样,当用户读取数据时,则主服务器将用户分配到相应的子服务器时,子服务器先访问Hmemcache缓存,如果缓存里面没有该数据,才回到磁盘上面寻找。如前所述的,数据库表中的每一个列族都会有一个集合,称为Hsotre集合。每个Hstore集合包含很多HstoreFiles具体文件,这些文件都是B树结构的,方便快速读取。
系统会定期调用写入函数flushcache把缓存里面的内容写到文件中,在写入时会增加一个新的HstoreFile文件,而此时高速缓存就会被清空,并且写入一个标记到Hlog,表示上面的内容已经被写入到文件中保存。
在服务器启动时,每个GCSC服务器都会检查自己的Hlog文件,看看最近一次执行flushcache之后有没有新的更新写入操作。如果没有更新,就表示所有数据都已经更新到文件中了;如果有更新,服务器就会先把这些更新写入高速缓存,然后调用flushcache写入到文件。最后服务器会删除旧的Hlog文件,并开始给用户访问数据。
Hlog会被定期回滚,回滚是指:在调用写入函数flushcache将缓存的数据写入文件中后,系统会删除那些已经被写到文件的更新,以降低Hlog文件的大小。
每一次调用flushcache会生成一个新的HstoreFile文件,从一个Hstore里面获取一个值都需要访问所有的HstoreFile文件,这样十分耗时,所以我们要定期把这些分散的文件合并到一个大文件里面,HStore.compact()就可以完成这样的工作。这样的合并工作是十分占用资源的,当HstoreFile文件的数量超过一个设定值的时候才会触发。
在本发明实施例中,每一个子服务器会定期将该子服务器的表内容发送到主服务器。因此,主服务器与子服务器之间会保持一个长连接。如果这个连接超时或者断开,则主服务器会认为该子服务器已经死机,并将该子服务器存储的表和对应的服务分配到其他子服务器。
本发明实施例所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上该仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种云计算的文件系统,其特征在于,包括:
目录节点,用于提供客户端接口,并记录存储到数据节点中的数据的路径;
数据节点,连接所述目录节点,用于存储数据;
其中,所述目录节点包括:
数据存储模块,用于生成数据存储列表;将数据发送到所述数据存储列表中的每一节点;具体为前一数据节点接收到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点,直至获得预订数量的冗余存储份数;
所述目录节点还包括:
服务器状态确认模块,用于接收数据节点发送的心跳信息,以确定数据节点状态;并用于根据数据节点状态进行数据恢复。
2.根据权利要求1所述的云计算的文件系统,其特征在于,所述目录节点还包括:
数据切分模块,用于将接收到的数据进行切分以获得预定大小的数据分块;并将每一分块分别发送到数据存储模块。
3.根据权利要求1所述的云计算的文件系统,其特征在于,所述目录节点还包括:
数据节点选择模块,用于读取数据节点所在的机柜ID,并根据机柜ID及预先设置的冗余系数生成数据存储列表。
4.根据权利要求1所述的云计算的文件系统,其特征在于,所述目录节点还包括:
数据校验模块,用于存储数据时,根据预设校验规则对数据进行校验,并将校验参数存储;并用于在读取文件时,根据所述校验参数对数据进行校验。
5.一种云计算的文件系统的数据处理方法,其特征在于,包括:
步骤1、设置用于提供客户端接口并记录存储到数据节点中的数据的路径目录节点,和连接所述目录节点,用于存储数据的数据节点;
步骤2、目录节点生成数据存储列表,并将数据和所述数据存储列表发送到数据存储列表中的第一数据节点;
步骤3、当前数据节点接收数据,并在接收到预定大小的数据块后,将接收到的数据块及所述数据存储列表发送到下一数据节点;直至获得预订数量的冗余存储份数;
步骤4、目录节点接收数据节点发送的心跳信息,以确定数据节点状态;如果数据节点不可用,则读取该数据节点中存储的数据,以及文件系统中该数据的份数;如果所述份数少于冗余系数,则将该数据复制到可用的数据节点中并修改目录节点的参数。
6.根据权利要求5所述的云计算的文件系统的数据处理方法,其特征在于,所述步骤2具体为:
步骤21、目录节点将接收到的数据进行切分以获得预定大小的数据分块;
步骤22、目录节点针对每一数据分块生成数据存储列表,并分别将每一数据分块及对应所述数据存储列表发送到数据存储列表中的第一数据节点。
7.根据权利要求5所述的云计算的文件系统的数据处理方法,其特征在于,所述方法还包括:
步骤5、读取数据节点所在的机柜ID,并根据机柜ID及预先设置的冗余系数生成数据存储列表。
8.根据权利要求5所述的云计算的文件系统的数据处理方法,其特征在于,所述方法还包括:
步骤6、在存储数据时,根据预设校验规则对数据进行校验,并将校验参数存储;在读取文件时,根据所述校验参数对数据进行校验。
CN 201010199454 2010-06-07 2010-06-07 一种云计算的文件系统和数据处理方法 Expired - Fee Related CN101888405B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010199454 CN101888405B (zh) 2010-06-07 2010-06-07 一种云计算的文件系统和数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010199454 CN101888405B (zh) 2010-06-07 2010-06-07 一种云计算的文件系统和数据处理方法

Publications (2)

Publication Number Publication Date
CN101888405A CN101888405A (zh) 2010-11-17
CN101888405B true CN101888405B (zh) 2013-03-06

Family

ID=43074121

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010199454 Expired - Fee Related CN101888405B (zh) 2010-06-07 2010-06-07 一种云计算的文件系统和数据处理方法

Country Status (1)

Country Link
CN (1) CN101888405B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630816A (zh) * 2014-11-03 2016-06-01 东方钢铁电子商务有限公司 电子平台的后台数据系统

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102055797A (zh) * 2010-11-29 2011-05-11 北京卓微天成科技咨询有限公司 一种云存储的数据存取的方法、装置及系统
US8347184B2 (en) 2010-11-29 2013-01-01 Beijing Z & W Technology Consulting Co. Ltd. Cloud storage data access method, apparatus and system
CN102073741B (zh) * 2011-01-30 2013-08-28 宇龙计算机通信科技(深圳)有限公司 一种实现文件读取和/或写入的方法以及数据服务器
CN102096722B (zh) * 2011-03-21 2013-03-27 华为数字技术(成都)有限公司 文件存储方法和装置
US9798831B2 (en) * 2011-04-01 2017-10-24 Google Inc. Processing data in a MapReduce framework
EP2569921B1 (en) * 2011-07-01 2017-11-08 Huawei Technologies Co., Ltd. System and method for providing reliable storage
US9026849B2 (en) 2011-08-23 2015-05-05 Futurewei Technologies, Inc. System and method for providing reliable storage
US9335931B2 (en) 2011-07-01 2016-05-10 Futurewei Technologies, Inc. System and method for making snapshots of storage devices
CN102622407B (zh) * 2012-01-29 2014-03-26 广州亦云信息技术有限公司 日志文件操作系统及日志文件管理方法
CN102750324A (zh) 2012-05-28 2012-10-24 华为技术有限公司 文件存储系统、装置及文件存取方法
CN102739777B (zh) * 2012-06-01 2015-04-01 苏州阔地网络科技有限公司 一种数据流断开恢复方法及系统
CN104954498B (zh) * 2012-07-03 2019-09-20 厦门简帛信息科技有限公司 一种数字资源的拷贝方法
CN103577503A (zh) * 2012-08-10 2014-02-12 鸿富锦精密工业(深圳)有限公司 云端文件存储系统及方法
CN103544285B (zh) * 2013-10-28 2017-09-26 华为技术有限公司 一种数据加载方法及装置
CN103605784A (zh) * 2013-11-29 2014-02-26 北京航空航天大学 一种多重云环境下数据完整性验证方法
CN105095319B (zh) 2014-05-23 2019-04-19 邓寅生 基于时间序列化的文档的标识、关联、搜索及展现的系统
CN105635287A (zh) * 2015-12-31 2016-06-01 深圳市网心科技有限公司 一种文件传输系统及方法
CN107391303B (zh) * 2017-06-30 2021-02-23 北京奇虎科技有限公司 数据处理方法、装置、系统、服务器及计算机存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272257B1 (en) * 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
US6499058B1 (en) * 1999-09-09 2002-12-24 Motokazu Hozumi File shared apparatus and its method file processing apparatus and its method recording medium in which file shared program is recorded and recording medium in which file processing program is recorded
CN100543743C (zh) * 2006-07-04 2009-09-23 华为技术有限公司 多机文件存储系统和方法
US8230108B2 (en) * 2007-04-13 2012-07-24 Hart Communication Foundation Routing packets on a network using directed graphs
CN101656624B (zh) * 2008-08-18 2011-12-07 中兴通讯股份有限公司 一种多节点应用级容灾系统及容灾方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630816A (zh) * 2014-11-03 2016-06-01 东方钢铁电子商务有限公司 电子平台的后台数据系统

Also Published As

Publication number Publication date
CN101888405A (zh) 2010-11-17

Similar Documents

Publication Publication Date Title
CN101888405B (zh) 一种云计算的文件系统和数据处理方法
US11500852B2 (en) Database system with database engine and separate distributed storage service
US11120152B2 (en) Dynamic quorum membership changes
AU2017204760B2 (en) Log record management
AU2017239539B2 (en) In place snapshots
US10229011B2 (en) Log-structured distributed storage using a single log sequence number space
US9507843B1 (en) Efficient replication of distributed storage changes for read-only nodes of a distributed database
CN101460930B (zh) 维护数据库与文件系统之间的链接级一致性
US9672237B2 (en) System-wide checkpoint avoidance for distributed database systems
US11030055B2 (en) Fast crash recovery for distributed database systems
CN101576915B (zh) 一种分布式b+树索引系统及构建方法
US20160110408A1 (en) Optimized log storage for asynchronous log updates
CN101577735B (zh) 一种接管故障元数据服务器的方法、装置及系统
US20180067662A1 (en) Memory-based on-demand data page generation
CN104813276A (zh) 从备份系统流式恢复数据库
WO2006020774A2 (en) Data replication method over a limited bandwidth network by mirroring parities

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
TR01 Transfer of patent right

Effective date of registration: 20180201

Address after: 100176 Beijing Beijing economic and Technological Development Zone Culture Park, No. 6, courtyard No. 30, No. 18, 1803

Patentee after: Beijing Yunhu Times Technology Co., Ltd.

Address before: 100020 Chaoyang District, Chaoyang District, Beijing, Beijing

Patentee before: Beijing Grandison & JM Information Technology Co., Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130306

Termination date: 20200607

CF01 Termination of patent right due to non-payment of annual fee