著录项信息
专利名称 | 一种基于网络的PB级云存储系统及其处理方法 |
申请号 | CN201110022741.6 | 申请日期 | 2011-01-20 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2011-08-03 | 公开/公告号 | CN102143215A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H;0;4;L;2;9;/;0;8;;;H;0;4;L;1;2;/;8;0;3查看分类表>
|
申请人 | 中国人民解放军理工大学 | 申请人地址 | 江苏省南京市白下区海福巷1号解放军理工大学指挥自动化学院计算机系
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国人民解放军理工大学 | 当前权利人 | 中国人民解放军理工大学 |
发明人 | 陈卫卫;吴海佳;胡谷雨;董继光;刘鹏;田浪军;胥光辉;潘志松;李清 |
代理机构 | 南京天华专利代理有限责任公司 | 代理人 | 夏平 |
摘要
一种基于网络的PB级云存储系统及其处理方法,它包括主控服务器、存储服务器集群和客户端,它们通过内部交换机进行;主控服务器用于对云存储客户端提供目录信息和元数据信息,并对存储服务器集群进行监控;存储服务器集群包括多台用于数据存储的存储服务器;客户端用于对云存储客户机提供虚拟磁盘服务,将云存储客户机对虚拟磁盘的操作请求提交给主控服务器,并从存储服务器读取/写入文件数据,所述的客户端模块被部署在云存储客户机上。本发明扩展容易、管理方便,解决了存储孤岛的问题,可在通用低性能的PC集群上构建具有动态负载均衡能力、在线备份与自动恢复功能,以及可按需扩展的云存储文件系统。
1.一种基于网络的PB级云存储系统,其特征是它包括主控服务器、存储服务器集群和客户端,它们通过内部交换机进行数据交换;
主控服务器用于对云存储客户端提供目录信息和元数据信息,并对存储服务器集群进行监控;
存储服务器集群包括多台用于数据存储的存储服务器,它设有AC-RU缓存,保存最近打开的若干个文件句柄;
客户端用于对云存储客户机提供虚拟磁盘服务,将云存储客户机对虚拟磁盘的操作请求提交给主控服务器,并从存储服务器读取/写入文件数据,所述的客户端模块被部署在云存储客户机上,它设有调节可控缓存即AC-RU缓存,保存最近访问的目录信息和文件的元数据信息。
2.根据权利要求1所述的基于网络的PB级云存储系统,其特征是所述的客户端为需要使用海量云存储服务的大型服务器,包括邮箱服务器、FTP服务器、Web服务器、数据库服务器或流媒体服务器。
3.根据权利要求1所述的基于网络的PB级云存储系统,其特征是所述的目录信息包括该目录的路径、创建日期、目录属性;元数据信息包括该文件的路径、创建/修改日期、文件属性、文件大小、所在主存储服务器和备份存储服务器的IP地址、端口号和对应的GUID。
4.一种基于网络的PB级云存储系统的处理方法,采用权利要求1所述的基于网络的PB级云存储系统,其特征是它包括以下步骤:
(a)、采用多台存储服务器建立存储服务器集群,各存储服务器启动后周期性地向主控服务器发送心跳报文,心跳报文中包含该存储服务器当前的状态;主控服务器的内存中设有一对应于多个存储服务器的逻辑节点列表,当主控服务器接收到各存储服务器的心跳报文后,更新列表中对应于各存储服务器的逻辑节点;
(b)、当客户端访问虚拟磁盘下任意目录时,云存储客户端对主控服务器发起请求,获取所请求目录下子目录信息与文件元数据信息,并将所获得的子目录信息与文件元数据信息保存在客户端AC-RU缓存中;
(c)、云存储客户端请求创建文件或目录的操作,其中;
ⅰ、当云存储客户端有创建文件的请求时,客户端将该请求提交给主控服务器,主控服务器检查创建文件所在的目录是否存在,若不存在,则返回目录不存在的回复;若存在,则为该文件分配GUID,从在线存储服务器中挑选负载较轻的两台作为该文件的主存储服务器和备份存储服务器,并通知这两台存储服务器创建名为GUID的文件,两台存储服务器都创建成功则向客户端返回创建成功的回复;
ⅱ、当云存储客户端有创建目录的请求时,客户端将该请求提交给主控服务器,主控服务器检查新建目录的父目录是否存在,若不存在,则返回父目录不存在的回复;若存在,则建立新目录节点,并添加到父目录节点的子目录列表中,并向客户端返回创建成功的回复;
(d)、云存储客户端请求读文件、写文件、删除文件、复制/移动文件或重命名文件操作,其中:
ⅰ、云存储客户端请求读文件时,首先从云存储客户端的AC-RU缓存中查找该文件的元数据信息,若缓存中元数据信息存在,则通过文件的元数据信息找到对应的主存储服务器,并对主存储服务器请求读取该文件的具体某一段的数据;若缓存中元数据信息不存在,则首先向主控服务器发送元数据请求,并将从主控服务器获得的元数据信息加入客户端AC-RU缓存中;
ⅱ、云存储客户端请求写文件时,首先从云存储客户端的AC-RU缓存中查找该文件的元数据信息,若缓存中元数据信息存在,则云存储客户端通过文件的元数据信息找到对应的主存储服务器和备份存储服务器,并向它们请求写入该文件的具体某一段的数据,等主存储服务器和备份存储服务器都返回写成功的响应后,该次写操作成功,否则认为写失败;
若缓存中元数据信息不存在,则首先向主控服务器发送元数据请求,并将从主控服务器获得的元数据信息加入客户端AC-RU缓存中;
ⅲ、云存储客户端请求删除文件时,首先向主控服务器发送文件删除请求,主控服务器根据该文件的元数据信息找到具体保存该文件的主文件存储服务器和备份文件存储服务器,并将该元数据信息从目录结构中删除,同时向云存储客户端返回删除成功的响应,然后主控服务器将通知该文件的主存储服务器和备份存储服务器删除该文件,两台存储服务器在收到主控服务器的文件删除指令后执行文件删除操作;
ⅳ、云存储客户端请求复制/移动文件操作是创建/读/写/删除文件操作的组合;
ⅴ、重命名文件是在主控服务器中修改目录结构下文件元数据信息;
(e)、云存储客户端请求删除目录操作,其中:云存储客户端请求删除目录时,首先查看客户端AC-RU缓存中是否存在被删目录的信息,如果存在则将其从缓存中删除,然后向主控服务器发送目录删除请求;如果不存在,则直接向主控服务器发送目录删除请求,主控服务器收到目录删除请求后遍历其子目录列表和文件列表,递归地删除该目录下所有子目录和文件,最终将该目录删除;递归删除过程中,当某子目录是目录结构中的叶节点,则直接删除,否则发生递归删除过程;当删除目录下文件时,按照步骤(d).iii方法进行。
5.根据权利要求4所述的基于网络的PB级云存储系统的处理方法,其特征是步骤(c)中,从在线存储服务器中挑选负载较轻的两台作为该文件的主存储服务器和备份存储服务器的方法是采用系统负载均衡方法;各存储服务器的负载计算方法为:
(1)
其中,li为存储服务器集群中第i台存储服务器的负载值,ai为此存储服务器的磁盘可用空间百分比,ui为此存储服务器的网卡上行速率,di为其下行速率,ni为该网卡的最大速率,ui、di和ni的单位都是kbps。
6.根据权利要求5所述的基于网络的PB级云存储系统的处理方法,其特征是所述的系统负载均衡方法还包括:主控服务器周期性的计算当前存储服务器集群的总工作负载和数据分布不平衡度;当总工作负载低于某设定值LThreshold,且数据分布不平衡度高于某设定值UThreshold时,则对存储负载最重的存储服务器实行数据迁移,将数据迁移到存储负载最轻的存储服务器;
存储服务器集群总工作负载的计算公式如下:
(2)
其中,N表示存储服务器集群中存储服务器的总数,ui、di、ni的意义同公式(1);
数据分布不平衡度用存储服务器集群中各存储服务器磁盘可用空间百分比的方差来表示,其计算公式如下:
(3)
其中,ai的意义同公式(1),N的意义同公式(2), 表示存储服务器集群中各存储服务器磁盘可用空间百分比的数学期望;
LThreshold通过采样评估的方法确定,具体方法是:主控服务器维护一个变量LMax,该变量的初值为0,保存主控服务器自启动以来存储服务器集群总工作负载L 的最大采样值,LThreshold=LMax×20%;
UThreshold通过样本统计的方法确定,具体方法是:首先选定某大型服务器上所有文件作为模拟样本,以轮询的方式存入N台存储服务器,计算出该情况下N台存储服务器的数据分布不平衡度URR,UThreshold=URR×80%。
7.根据权利要求4所述的基于网络的PB级云存储系统的处理方法,其特征是该处理方法还包括:存储服务器集群的扩展方法和存储服务器集群的监控方法,
其中,存储服务器集群的扩展方法包括以下步骤:将新的存储服务器添加到存储服务器集群中,该存储服务器启动后将周期性地向主控服务器发送心跳报文,心跳报文中包含该存储服务器当前的状态,主控服务器接收到该心跳报文后在内存中新建一个该存储服务器的逻辑节点,并将该逻辑节点添加到在线存储服务器列表中;
存储服务器集群的监控方法包括以下步骤:主控服务器在内存中维持在线存储服务器的逻辑节点列表,列表中每一个逻辑节点中保存着相应存储服务器最近一次心跳所汇报的状态;各逻辑节点中设有一个监视变量state=1,主控服务器被动的接受来自存储服务器的心跳信息,一旦收到某存储服务器的心跳,则更新其对应逻辑节点中的状态信息,并将该节点的state变量设置为2;主控服务器对逻辑节点列表中的各节点进行周期性的检查,检查周期等于存储服务器的心跳周期,检查时,将被检节点的state值减1,若state的值为
0,则做出“该存储服务器已经掉线”的判断,并启动数据自动恢复过程。
8.根据权利要求4或7所述的基于网络的PB级云存储系统的处理方法,其特征是所述的心跳报文中包含该存储服务器的当前状态,这些状态信息包括CPU占用率、内存占用率、网卡上行/下行速率和磁盘耗费。
9.根据权利要求4所述的基于网络的PB级云存储系统的处理方法,其特征是步骤(b)中:客户端AC-RU缓存中所保存的目录信息包括该目录的路径、创建日期、目录属性;元数据信息包括该文件的路径、创建/修改日期、文件属性、文件大小、所在主存储服务器和备份存储服务器的IP地址、端口号和对应的GUID。
一种基于网络的PB级云存储系统及其处理方法\n技术领域\n[0001] 本发明属于海量存储技术领域,尤其是海量存储中具有动态负载均衡、在线备份与自动故障切换、按需容量扩展功能的云存储文件系统,具体地说是一种基于网络的PB(1PB=1024×1024GB)级云存储系统及其处理方法。\n背景技术\n[0002] 在当今网络时代,存储技术正在发生革命性的变化。导致这一革命性变化的需求首先表现在存储容量的急剧膨胀。在数字化和网络互联时代、在多用户并行环境中,大规模应用系统的广泛部署对海量存储系统的性能和功能提出了巨大挑战,主要表现为高性能、可扩展性、可共享性、自适应性、可管理性,以及高可靠性和可用性。\n[0003] 基于专用存储设备构建的海量存储系统包括直连存储(DAS)、附网存储(NSA)、存储区域网(SAN)。这些海量存储都依赖于昂贵的专用存储设备,且存在管理复杂、扩展困难等问题。\n[0004] 基于分布式文件系统构建的分布式存储系统可部署于通用计算机上。传统的分布式文件系统包括NFS、AFS、GPFS等。NFS是目前应用最广泛的分布式文件系统,但是其可扩展性差,是基于单服务器模型的,即使网络中有多台NFS服务器,它们之间也没有任何联系,各自独立运行。随着系统客户规模的增长,NFS服务器将逐渐成为系统瓶颈。AFS、GPFS等大多提供了存储位置的独立性和容错功能,但这些文件系统都是针对科学计算设计的,对带宽和时延要求比较高,且缺乏对服务器动态加入和退出的支持,也不支持服务器失效的检测,随着系统规模的扩大,维护成本会急剧增加。\n[0005] 随着云计算思想的普及,云存储成为海量数据存储与管理高效而廉价的解决方案。较著名的有Google的Google File System(GFS)以及其开源实现Hadoop Distributed File System(HDFS)。GFS是为基于大文件和流式访问的数据并行处理而设计的,不适合文件的通用持久存储。HDFS的链式副本更新方式将造成系统性能严重下降,且HDFS目前还不支持存储服务器的动态加入和退出。国内著名的淘宝网也研制了Taobao File System(TFS),TFS针对海量小文件的随机读写访问性能做了特殊优化,使得其也不适合用作通用海量存储。\n[0006] 通用云存储文件系统通过云存储文件系统将集群中大量通用、廉价、低性能的存储设备协同起来,共同对外提供高性能的存储服务。用户无需关心数据具体的存放位置、存储形式,只需通过云存储客户端虚拟化软件,即可享受与本地硬盘无差异的海量高可靠存储服务。\n[0007] 云存储文件系统中存在多个模块,各模块间通过网络进行数据交互,因此会带来用户可体验的响应延迟,为了缩短或消除由于网络延迟造成的云存储文件系统响应延迟,需要使用缓存技术。目前,具有代表性的缓存调度方法包括:FIFO、LRU、LFU、Hyper-G、SIZE、GD-Size、LRU-SP、LEC等。这些缓存调度方法仅考虑如何提高缓存的命中率,却并没有考虑降低缓存序列的调整次数和缓存对象的查找次数。但在云存储文件系统中,由于存在大量概率分布平均的频繁的并发访问,若使用以上缓存调度方法,将导致系统不断调整缓存序列,从而造成一定的延迟。\n[0008] 为了提高云存储文件系统并发处理任务的能力,需要使用负载均衡技术。早期的负载均衡算法有随机(Random)算法和轮询(Round-Robin)算法,它们计算简单、效率高、应用较广。但这两种算法未考虑后端服务器的实际负载情况,以及服务器之间的性能差异,从而当系统的并发访问数增大时,不能保证各服务器之间的负载均衡。另外还有基于服务器中当前活跃连接数的最小连接数(Least Connection First)算法,选择当前正在处理的请求个数最少的服务器作为转发对象。但活跃请求连接个数并不能完全反映服务器处理负荷上的差异,如处理能力强的服务器在单位时间内可处理更多的请求。后来又出现了加权轮询(Weighted Round-Robin)算法和加权最小连接数(Weighted Least Connection First)算法,通过为不同的服务器配置不同的权值来平衡服务器之间的差异。但静态的权值信息不能表现动态的负载特征,随着系统运行时间增长,将导致集群负载分布的不平衡。\n[0009] 因此,现有的云存储文件系统存在扩展困难、管理复杂,易出现存储孤岛等问题,不能满足使用需求。\n发明内容\n[0010] 本发明的目的是针对目前传统海量存储系统(DAS、NAS、SAN等)所存在的扩展困难、管理复杂,易出现存储孤岛的问题,提出一种基于网络的PB级云存储系统FFS(Formicary File System)及其处理方法,可在通用低性能的PC集群上构建具有动态负载均衡能力、在线备份与自动恢复功能,以及可按需扩展的云存储系统。\n[0011] 本发明的技术方案是:\n[0012] 一种基于网络的PB级云存储系统,它包括主控服务器、存储服务器集群和客户端,它们通过内部交换机进行数据交换;\n[0013] 主控服务器用于对云存储客户端提供目录信息和元数据信息,并对存储服务器集群进行监控;\n[0014] 存储服务器集群包括多台用于数据存储的存储服务器,它设有AC-RU缓存,保存最近打开的若干个文件句柄;\n[0015] 客户端用于对云存储客户机提供虚拟磁盘服务,将云存储客户机对虚拟磁盘的操作请求提交给主控服务器,并从存储服务器读取/写入文件数据,所述的客户端模块被部署在云存储客户机上,它设有AC-RU缓存,保存最近访问的目录信息和文件的元数据信息。\n[0016] 本发明的客户端为需要使用海量云存储服务的大型服务器,包括邮箱服务器、FTP服务器、Web服务器、数据库服务器或流媒体服务器。\n[0017] 本发明的目录信息包括该目录的路径、创建日期、目录属性;元数据信息包括该文件的路径、创建/修改日期、文件属性、文件大小、所在主存储服务器和备份存储服务器的IP地址、端口号和对应的GUID。\n[0018] 一种基于网络的PB级云存储系统的处理方法,采用云存储文件系统,它包括以下步骤:\n[0019] (a)、采用多台存储服务器建立存储服务器集群,各存储服务器启动后周期性地向主控服务器发送心跳报文,心跳报文中包含该存储服务器当前的状态;主控服务器的内存中设有一对应于多个存储服务器的逻辑节点列表,当主控服务器接收到各存储服务器的心跳报文后在更新列表中对应于各存储服务器的逻辑节点;\n[0020] (b)、当客户端访问虚拟磁盘下任意目录时,云存储客户端对主控服务器发起请求,获取所请求目录下子目录信息与文件元数据信息,并将所获得的子目录信息与文件元数据信息保存在客户端AC-RU缓存中;\n[0021] (c)、云存储客户端请求创建文件或目录的操作,其中;\n[0022] i、当云存储客户端有创建文件的请求时,客户端将该请求提交给主控服务器,主控服务器检查创建文件所在的目录是否存在,若不存在,则返回目录不存在的回复;若存在,则为该文件分配GUID,从在线存储服务器中挑选负载较轻的两台作为该文件的主存储服务器和备份存储服务器,并通知这两台存储服务器创建名为GUID的文件,两台存储服务器都创建成功则向客户端返回创建成功的回复;\n[0023] ii、当云存储客户端有创建目录的请求时,客户端将该请求提交给主控服务器,主控服务器检查新建目录的父目录是否存在,若不存在,则返回父目录不存在的回复;若存在,则建立新目录节点,并添加到父目录节点的子目录列表中,并向客户端返回创建成功的回复;\n[0024] (d)、云存储客户端请求读文件、写文件、删除文件、复制/移动文件或重命名文件操作,其中:\n[0025] i、云存储客户端请求读文件时,首先从云存储客户端的AC-RU缓存中查找该文件的元数据信息,若缓存中元数据信息存在,则通过文件的元数据信息找到对应的主存储服务器,并对主存储服务器请求读取该文件的具体某一段的数据;若缓存中元数据信息不存在,则首先向主控服务器发送元数据请求,并将从主控服务器获得的元数据信息加入客户端AC-RU缓存中;\n[0026] ii、云存储客户端请求写文件时,首先从云存储客户端的AC-RU缓存中查找该文件的元数据信息,若缓存中元数据信息存在,则云存储客户端通过文件的元数据信息找到对应的主存储服务器和备份存储服务器,并向它们请求写入该文件的具体某一段的数据,等主存储服务器和备份存储服务器都返回写成功的响应后,该次写操作成功,否则认为写失败;若缓存中元数据信息不存在,则首先向主控服务器发送元数据请求,并将从主控服务器获得的元数据信息加入客户端AC-RU缓存中;\n[0027] iii、云存储客户端请求删除文件时,首先向主控服务器发送文件删除请求,主控服务器根据该文件的元数据信息找到具体保存该文件的主文件存储服务器和备份文件存储服务器,并将该元数据信息从目录结构中删除,同时向云存储客户端返回删除成功的响应,然后主控服务器将通知该文件的主存储服务器和备份存储服务器删除该文件,两台存储服务器在收到主控服务器的文件删除指令后执行文件删除操作;\n[0028] iv、云存储客户端请求复制/移动文件操作是创建/读/写/删除文件操作的组合;\n[0029] v、重命名文件是在主控服务器中修改目录结构下文件元数据信息;(e)、云存储客户端请求删除目录操作,其中:云存储客户端请求删除目录时,首先查看客户端AC-RU缓存中是否存在被删目录的信息,如果存在则将其从缓存中删除,然后向主控服务器发送目录删除请求;如果不存在,则直接向主控服务器发送目录删除请求,主控服务器收到目录删除请求后遍历其子目录列表和文件列表,递归地删除该目录下所有子目录和文件,最终将该目录删除;递归删除过程中,当某子目录是目录结构中的叶节点,则直接删除,否则发生递归删除过程;当删除目录下文件时,按照步骤(d).iii方法进行。\n[0030] 本发明的步骤(c)中,从在线存储服务器中挑选负载较轻的两台作为该文件的主存储服务器和备份存储服务器的方法是采用系统负载均衡方法;各存储服务器的负载计算方法为:\n[0031] li=ai×(ui+di)/ni (1)\n[0032] 其中,li为存储服务器集群中第i台存储服务器的负载值,ai为此存储服务器的磁盘可用空间百分比,ui为此存储服务器的网卡上行速率,di为其下行速率,ni为该网卡的最大速率,ui、di和ni的单位都是kbps。\n[0033] 本发明的系统负载均衡方法还包括:主控服务器周期性的计算当前存储服务器集群的总工作负载和数据分布不平衡度;当总工作负载低于某设定值LThreshold,且数据分布不平衡度高于某设定值UThreshold时,则对存储负载最重的存储服务器实行数据迁移,将数据迁移到存储负载最轻的存储服务器。\n[0034] 存储服务器集群总工作负载的计算公式如下:\n[0035] (2)\n[0036] 其中,N表示存储服务器集群中存储服务器的总数,ui、di、ni的意义同公式(1);\n[0037] 数据分布不平衡度用存储服务器集群中各存储服务器磁盘可用空间百分比的方差来表示,其计算公式如下:\n[0038] (3)\n[0039] 其中,ai的意义同公式(1),N的意义同公式(2),表示存储服务器集群中各存储服务器磁盘可用空间百分比的数学期望;\n[0040] LThreshold通过采样评估的方法确定,具体方法是:主控服务器维护一个变量LMax,该变量的初值为0,保存主控服务器自启动以来存储服务器集群总工作负载L的最大采样值,LThreshold=LMax×20%;\n[0041] UThreshold通过样本统计的方法确定,具体方法是:首先选定某大型服务器上所有文件作为模拟样本,以轮询的方式存入N台存储服务器,计算出该情况下N台存储服务器的数据分布不平衡度URR,UThreshold=URR×80%。\n[0042] 本发明的处理方法还包括:存储服务器集群的扩展方法和存储服务器集群的监控方法,\n[0043] 其中,存储服务器集群的扩展方法包括以下步骤:将新的存储服务器添加到存储服务器集群中,该存储服务器启动后将周期性地向主控服务器发送心跳报文,心跳报文中包含该存储服务器当前的状态,主控服务器接收到该心跳报文后在内存中新建一个该存储服务器的逻辑节点,并将该逻辑节点添加到在线存储服务器列表中;\n[0044] 存储服务器集群的监控方法包括以下步骤:主控服务器在内存中维持在线存储服务器的逻辑节点列表,列表中每一个逻辑节点中保存着相应存储服务器最近一次心跳所汇报的状态;各逻辑节点中设有一个监视变量state=1,主控服务器被动的接受来自存储服务器的心跳信息,一旦收到某存储服务器的心跳,则更新其对应逻辑节点中的状态信息,并将该节点的state变量设置为2;主控服务器对逻辑节点列表中的各节点进行周期性的检查,检查周期等于存储服务器的心跳周期,检查时,将被检节点的state值减1,若state的值为0,则做出“该存储服务器已经掉线”的判断,并启动数据自动恢复过程。\n[0045] 本发明的心跳报文中包含该存储服务器的当前状态,这些状态信息包括CPU占用率、内存占用率、网卡上行/下行速率和磁盘耗费。\n[0046] 本发明的步骤(b)中:客户端AC-RU缓存中所保存的目录信息包括该目录的路径、创建日期、目录属性;元数据信息包括该文件的路径、创建/修改日期、文件属性、文件大小、所在主存储服务器和备份存储服务器的IP地址、端口号和对应的GUID。\n[0047] 本发明的有益效果:\n[0048] 本发明的基于网络的PB级云存储系统及其处理方法中涉及存储服务器集群自动扩展方法、动态负载均衡方法、在线备份与自动恢复方法、AC-RU(Adjust-Controlled Recently-Used)缓存方法、客户端虚拟磁盘方法。其中,存储服务器集群自动扩展方法解决了传统海量存储系统扩展困难的问题。动态负载均衡方法解决了异构的云存储服务器集群在长期运行后会出现负载分布不平衡的问题。在线备份与自动恢复方法解决了采用通用低性能PC集群提供云存储服务时的可靠性问题。AC-RU缓存方法解决了在云存储文件系统中使用传统缓存调度策略时出现的缓存序列频繁调整的问题。\n[0049] 本发明解决了传统海量存储系统存在扩展上限和存储孤岛的问题。本发明通过主控服务器管理云存储池,将云存储池虚拟成一个海量的存储设备,向云存储池中添加新的存储服务器即可实现容量扩展,且这种扩展不存在扩展上限,避免了存储孤岛的产生。\n[0050] 在本发明中,通过存储服务器的心跳机制,主控服务器可实时掌握全局状态,利用全局状态可准确的进行存储负载均衡和任务负载均衡,有效的提高了云存储文件系统并发任务处理能力。\n[0051] 本发明通过在云存储客户端和存储服务器端设置AC-RU缓存,大大减少了云存储客户端向主控服务器发起的目录和元数据请求数量,降低了存储服务器打开/关闭文件的频率,有效的提高了系统的响应速度。AC-RU缓存克服了传统缓存调度机制在高并发、任务频繁切换的应用环境下会出现的缓存序列频繁调整的问题,进一步提高了系统的响应速度。\n[0052] 本发明通过FFS的在线备份与自动恢复机制,解决了使用廉价通用设备构建云存储系统带来的可靠性问题,保证了数据存储的可靠性。\n附图说明\n[0053] 图1为FFS云存储系统物理拓扑图;\n[0054] 图2为FFS云存储系统逻辑结构图;\n[0055] 图3为FFS监控存储服务器集群状态的示意图;\n[0056] 图4为主控服务器对存储服务器集群的监控流程;\n[0057] 图5为FFS客户端写数据的过程;\n[0058] 图6为FFS删除文件的过程;\n[0059] 图7为FFS恢复数据的过程;\n[0060] 图8为AC-RU缓存调度算法。\n[0061] 图9为FFS客户端虚拟磁盘读写流程图。\n[0062] 图10为目录结构和存储服务器逻辑节点列表示意图。\n[0063] 图11为文件节点与存储服务器逻辑节点\n具体实施方式\n[0064] 下面结合附图和实施例对本发明作进一步的说明。\n[0065] 如图1所示,一种基于网络的PB级云存储系统,它包括主控服务器、存储服务器集群和客户端,它们通过内部交换机进行数据交换;\n[0066] 主控服务器用于对云存储客户端提供目录信息和元数据信息,并对存储服务器集群进行监控;\n[0067] 存储服务器集群包括多台用于数据存储的存储服务器,它设有AC-RU缓存,保存最近打开的若干个文件句柄;\n[0068] 客户端用于对云存储客户机提供虚拟磁盘服务,将云存储客户机对虚拟磁盘的操作请求提交给主控服务器,并从存储服务器读取/写入文件数据,所述的客户端模块被部署在云存储客户机上,它设有AC-RU缓存,保存最近访问的目录信息和文件的元数据信息。\n[0069] 客户端虚拟磁盘服务:\n[0070] 为了屏蔽客户端应用对云存储文件系统的访问细节,保护现有软件资源,云存储文件系统对客户端应用提供的访问方式应符合标准文件访问方式,即磁盘读写方式。如图\n9所示,FFS设计并支持从Windows和Linux客户端以磁盘方式进行访问。\n[0071] 应用进程对云存储文件系统中文件的访问请求在Linux下转化为对Fuse驱动模块的访问请求,在Windows下转化为对Dokan驱动模块的访问请求。Fuse是Linux下开发应用层文件系统的开源开发包,其通过核心态的Fuse驱动调用开放给用户态的文件读写接口,开发者只需要在用户态实现Fuse的用户态文件读写接口,则可实现文件系统的开发。Dokan是Windows下类似于Fuse的一个开源开发包。\n[0072] 本发明云存储客户机为需要使用海量云存储服务的大型服务器,包括邮箱服务器、FTP服务器、Web服务器、数据库服务器或流媒体服务器。\n[0073] 本发明目录信息包括该目录的路径、创建日期、目录属性;元数据信息是指文件具体存放的主存储服务器和备份存储服务器的IP地址、端口以及其对应的GUID。\n[0074] 一种基于网络的PB级云存储系统的处理方法,它包括以下步骤:\n[0075] (a)、采用多台存储服务器建立存储服务器集群,各存储服务器启动后周期性地向主控服务器发送心跳报文,心跳报文中包含该存储服务器当前的状态;主控服务器的内存中设有一对应于多个存储服务器的逻辑节点列表,当主控服务器接收到各存储服务器的心跳报文后在内存的列表中更新对应于各存储服务器的逻辑节点;\n[0076] (b)、当客户端访问虚拟磁盘下任意目录时,云存储客户端对主控服务器发起请求,获取所请求目录下子目录信息与文件元数据信息,并将所获得的子目录信息与文件元数据信息保存在客户端AC-RU缓存中;\n[0077] (c)、云存储客户端请求创建文件或目录的操作,其中;\n[0078] i、当云存储客户端有创建文件的请求时,客户端将该请求提交给主控服务器,主控服务器检查创建文件所在的目录是否存在,若不存在,则返回目录不存在的回复;若存在,则为该文件分配GUID,从在线存储服务器中挑选负载较轻的两台作为该文件的主存储服务器和备份存储服务器,并通知这两台存储服务器创建名为GUID的文件,两台存储服务器都创建成功则向客户端返回创建成功的回复;\n[0079] ii、当云存储客户端有创建目录的请求时,客户端将该请求提交给主控服务器,主控服务器检查新建目录的父目录是否存在,若不存在,则返回父目录不存在的回复;若存在,则建立新目录节点,并添加到父目录节点的子目录列表中,并向客户端返回创建成功的回复;\n[0080] (d)、云存储客户端请求读文件、写文件、删除文件、复制/移动文件或重命名文件操作,其中:\n[0081] i、云存储客户端请求读文件时,首先从云存储客户端的AC-RU缓存中查找该文件的元数据信息,若存在则通过文件的元数据信息找到对应的主存储服务器,并对主存储服务器请求读取该文件的具体某一段的数据;若缓存中不存在则首先向主控服务器发送元数据请求,并将从主控服务器获得的元数据信息加入客户端AC-RU缓存中。\n[0082] ii、云存储客户端请求写文件时,首先从云存储客户端的AC-RU缓存中查找该文件的元数据信息,若存在则云存储客户端通过文件的元数据信息找到对应的主存储服务器和备份存储服务器,并对它们请求写入该文件的具体某一段的数据,等主存储服务器和备份存储服务器都返回写成功的响应后,该次写操作成功,否则认为写失败;若缓存中不存在则首先向主控服务器发送元数据请求,并将从主控服务器获得的元数据信息加入客户端AC-RU缓存中。\n[0083] iii、云存储客户端请求删除文件时,首先向主控服务器发送文件删除请求,主控服务器根据该文件的元数据信息找到具体保存该文件的主文件存储服务器和备份文件存储服务器,并将该元数据信息从目录结构中删除,同时向云存储客户端返回删除成功的响应,然后主控服务器将通知该文件的主存储服务器和备份存储服务器删除该文件,两台存储服务器在收到主控服务器的文件删除指令后执行文件删除操作。\n[0084] iv、云存储客户端请求复制/移动文件操作是创建/读/写/删除文件的组合操作;\n[0085] v、重命名文件是在主控服务器中修改目录结构下文件元数据信息;\n[0086] 目录结构:\n[0087] 目录结构是一种树状逻辑结构,保存目录信息和文件元数据信息,以及子目录与父目录、文件与目录之间的从属关系。\n[0088] 树状逻辑结构的内节点都是目录节点,保存目录信息。目录信息包括该目录的路径、目录属性、目录的创建日期,以及指向子目录节点的指针列表和指向文件节点的指针列表。\n[0089] 树状逻辑结构的叶节点可能是目录节点,也可能是文件节点。如果是目录节点说明该目录下不包含子目录与文件。如果是文件节点,则保存文件元数据信息。文件元数据信息包括该文件的路径、文件属性、文件的创建/修改日期,以及保存主文件和备份文件的存储服务器的IP地址、端口号和该文件的GUID。\n[0090] (e)、云存储客户端请求删除目录、复制/移动目录、重命名目录操作,其中:\n[0091] i、云存储客户端请求删除目录时,首先查看客户端AC-RU缓存中是否存在被删目录的信息,如果存在则将其从缓存中删除。然后向主控服务器发送目录删除请求,主控服务器收到目录删除请求后遍历其子目录列表和文件列表,递归地删除该目录下所有子目录和文件,最终将该目录删除。递归删除过程中,当某子目录是目录结构中的叶节点,则直接删除,否则发生递归删除过程;当删除目录下文件时,按照步骤(d).iii方法进行。\n[0092] 复制/移动目录、重命名目录同文件操作类似。\n[0093] 本发明的步骤(c)中,从在线存储服务器中挑选负载较轻的两台作为该文件的主存储服务器和备份存储服务器的方法是采用系统负载均衡方法;各存储服务器的负载计算方法为:\n[0094] li=ai×(ui+di)/ni (1)\n[0095] 其中,li为存储服务器集群中第i台存储服务器的负载值,ai为此存储服务器的磁盘可用空间百分比,ui为此存储服务器的网卡上行速率,di为其下行速率,ni为该网卡的最大速率,ui、di和ni的单位都是kbps。\n[0096] 本发明的系统负载均衡方法还包括:主控服务器周期性的计算当前存储服务器集群的总工作负载和数据分布不平衡度;当总工作负载低于某设定值LThreshold,且数据分布不平衡度高于某设定值UThreshold时,则对存储负载最重的存储服务器实行数据迁移,将数据迁移到存储负载最轻的存储服务器。\n[0097] 存储服务器集群总工作负载的计算公式如下:\n[0098] (2)\n[0099] 其中,N表示存储服务器集群中存储服务器的总数,ui、di、ni的意义同公式(1);\n[0100] 数据分布不平衡度用存储服务器集群中各存储服务器磁盘可用空间百分比的方差来表示,其计算公式如下:\n[0101] (3)\n[0102] 其中,ai的意义同公式(1),N的意义同公式(2),表示存储服务器集群中各存储服务器磁盘可用空间百分比的数学期望;\n[0103] LThreshold通过采样评估的方法确定,具体方法是:主控服务器维护一个变量LMax,该变量的初值为0,保存主控服务器自启动以来存储服务器集群总工作负载L的最大采样值,LThreshold=LMax×20%;\n[0104] UThreshold通过样本统计的方法确定,具体方法是:首先选定某大型服务器上所有文件作为模拟样本,以轮询的方式存入N台存储服务器,计算出该情况下N台存储服务器的数据分布不平衡度URR,UThreshold=URR×80%。\n[0105] 实验中,样本选择以校园网FTP服务器上的所有文件为例,根据统计可知,该FTP服务器上共有25169个文件夹,261242个文件,文件大小总和为4.75TB。该组样本中最小\n5 20\n文件为0字节,最大文件为34.29GB,其中绝大部分文件的大小分布在e ~e 字节范围内。\n将这些文件以轮询的方式依次保存到50台存储服务器,每台存储服务器总容量为250GB,经过计算可知,URR=6.88,UThreshold=5.51。\n[0106] 本发明的处理方法还包括:存储服务器集群的扩展方法和存储服务器集群的监控方法,\n[0107] 其中,存储服务器集群的扩展方法包括以下步骤:将新的存储服务器添加到存储服务器集群中,该存储服务器启动后将周期性地向主控服务器发送心跳报文,心跳报文中包含该存储服务器当前的状态,主控服务器接收到该心跳报文后将在内存中新建一个该存储服务器的逻辑节点,并将该逻辑节点添加到在线存储服务器列表中;\n[0108] 存储服务器集群的监控方法包括以下步骤:主控服务器在内存中维持在线存储服务器的逻辑节点列表,列表中每一个逻辑节点中保存着相应存储服务器最近一次心跳所汇报的状态;各逻辑节点中设有一个监视变量state=1,主控服务器被动的接受来自存储服务器的心跳信息,一旦收到某存储服务器的心跳,则更新其对应逻辑节点中的状态信息,并将该节点的state变量设置为2;主控服务器对逻辑节点列表中的各节点进行周期性的检查,检查周期等于存储服务器的心跳周期,检查时,将被检节点的state值减1,若state的值为0,则做出“该存储服务器已经掉线”的判断,并启动数据自动恢复过程。\n[0109] 本发明的心跳报文中包含该存储服务器当前的状态,为CPU占用率、内存占用率、网卡上行/下行速率和磁盘耗费。\n[0110] 本发明的步骤(b)中:客户端AC-RU缓存中所保存的目录信息包括该目录的路径、创建日期、目录属性;文件元数据信息包括该文件的路径、创建/修改日期、文件属性、文件大小、所在主存储服务器和备份存储服务器的IP地址、端口号和对应的GUID。\n[0111] 具体实施时:\n[0112] 如图2所示,是FFS云存储系统的逻辑结构图。FFS云存储系统共由三大模块组成:主控服务器、存储服务器、云存储客户端。主控服务器部署在一台性能较好的服务器上,存储服务器部署于存储服务器集群中的每一个节点上,云存储客户端部署于有海量数据存储需求的应用服务器上(如图中所示的数据库服务器、FTP服务器、邮件服务器、Web服务器、流媒体服务器等)。FFS云存储系统中各节点使用千兆交换机互联,千兆交换机端口不够时可通过级联来扩展。\n[0113] FFS云存储系统各节点之间通过内网IP地址进行通信。比如,设定主控服务器IP为192.168.0.1,设定各存储服务器和云存储客户端的IP地址为192.168.x.x。由于云存储客户端部署于应用服务器上,应用服务器需要对外提供服务,因此应用服务器需再配置一个外网IP地址。各存储服务器和云存储客户端需要将配置文件中的“主控服务器IP地址”字段修改为实际配置时分配给主控服务器的内网IP地址。\n[0114] 图3是FFS监控存储服务器集群状态的示意图。存储服务器主动向主控服务器发送心跳报文,心跳报文中包含存储服务器当前CPU使用率、内存占用率、网卡上/下行速率、磁盘总容量和已用容量、存储文件数等状态信息。主控服务器开启一个监听端口,被动的监听来自存储服务器的心跳报文。\n[0115] 图4是主控服务器监控存储服务器集群的算法流程。监控过程由两部分组成。如图4左半部分所示,为主控服务器被动采集存储服务器状态的过程。图4右半部分为周期性检查各存储服务器状态,对存储服务器列表按负载由小到大进行排序,并对离线存储服务器进行数据恢复。\n[0116] 图5是云存储客户端写文件的过程。在FFS中,每一个文件都在不同的存储服务器上各存储一份,一份为主文件,一份为备份文件。当云存储客户端写文件时,会同时将数据写入主文件和备份文件,当它们都写成功,才认为本次写数据成功,否则认为写文件失败。\n[0117] 图6为云存储客户端请求删除文件的过程。云存储客户端将删除文件的请求提交给主控服务器,主控服务器将删除文件的请求提交给该文件实际所在的主文件存储服务器和备份文件存储服务器。当主文件与备份文件都删除成功,则主控服务器向云存储客户端返回文件删除成功的响应。\n[0118] 图7为当主控服务器检测到某存储服务器离线后,所执行的数据恢复的过程。如图10、11所示,主控服务器中记录着每一个存储服务器中所保存的文件列表,文件列表中的项为指向目录结构下的文件叶节点的指针。文件叶节点中保存两个指针,分别指向该文件的主存储服务器逻辑节点和备份存储服务器逻辑节点。FFS的数据自动恢复基于在线备份技术。在线备份是指FFS客户端在创建文件时,会同时在两个存储服务器上创建文件副本,其中一个为主文件,一个为备份文件。为了保持两个副本的一致性,FFS采用了Read-one Write-all策略:由于文件读操作是安全性操作,只需要从主文件读取数据即可;对于文件写操作,客户端需要将数据同时写入所有副本,并获得所有副本的写成功回复,才判断为文件写操作成功。这种策略实现简单,而且尽可能保证了每一个副本在任何时刻都有最新数据,同时也减小了服务器负载,因为数据传播负担由服务器转移到了客户端,这反过来又提高了可扩展性。在线备份机制保证了常态下每份保存在FFS中的文件都有两个完全一致的副本。当存储集群中某台存储服务器失效时,主控服务器通过心跳机制可即时发现该失效节点,并启动数据自动恢复过程。如图10所示,在主控服务器中维持着一个目录结构和一个存储服务器逻辑节点列表。目录结构是一种树形结构。在目录树中,中间节点为子目录节点,节点中保存着该目录的路径信息、目录属性信息、创建日期信息;叶节点为空目录节点或文件节点,文件节点中保存着对应文件的路径信息、文件属性信息、创建/修改日期,以及该文件所对应的两台存储服务器的逻辑节点指针和其在存储服务器上对应的主文件和备份文件的GUID。GUID是文件在创建时由主控服务器统一分配的一个全局唯一编号,使用该编号在存储服务器上保存文件可避免同名文件冲突的问题。存储服务器逻辑节点中保存了对应存储服务器的IP地址与端口号、state变量、CPU/内存/网卡/磁盘状态,以及主文件指针列表与备份文件指针列表。如图11所示,为文件节点与存储服务器逻辑节点的数据视图。在文件节点中,通过主/备份文件指针可找到存放该文件的主/备份存储服务器逻辑节点;在存储服务器逻辑节点中,通过主/备份文件列表可找到目录结构中对应的文件节点。当主控服务器判断某存储服务器掉线后,将启动数据恢复过程。数据恢复过程会遍历该掉线存储服务器逻辑节点中保存的文件指针列表,找到目录结构下对应的文件节点。若掉线存储服务器为该文件的主存储服务器,则从文件叶节点中找的其备份存储服务器,将其备份存储服务器升级为主存储服务器,并选择一台负载较轻的存储服务器作为该文件新的备份存储服务器,然后通知该新备份存储服务器创建该文件,并从该文件的当前主存储服务器读取文件重构备份;若掉线存储服务器为该文件的备份存储服务器,则选择一台负载较轻的存储服务器作为该文件新的备份存储服务器,并通知该新的备份存储服务器创建该文件,并从该文件的主存储服务器读取文件重构备份。\n[0119] 图8为云存储客户端的元数据缓存与存储服务器端的文件句柄缓存所使用的AC-RU调度算法。新对象加入缓存时,添加到缓存的头部,缓存中原有对象依次后移,若新对象加入前缓存已经被占满,则新对象加入后将导致缓存尾部的对象被移出缓存。当缓存中已有对象被命中时,若该对象处于缓存前一半位置,则不进行缓存序列的调整,若该对象已经处于缓存后一半位置,则将该对象调整到缓存的头部。由此可见,当命中的缓存对象处于缓存的前一半时,并不会发生缓存序列的调整,缓存序列的调整只发生在新对象的加入或命中的缓存对象处于缓存的后一半时。\n[0120] 本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
法律信息
- 2015-03-18
未缴年费专利权终止
IPC(主分类): H04L 29/08
专利号: ZL 201110022741.6
申请日: 2011.01.20
授权公告日: 2013.04.10
- 2013-04-10
- 2011-09-28
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 201110022741.6
申请日: 2011.01.20
- 2011-08-03
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-11-10
|
2010-04-15
| | |
2
| |
2009-11-18
|
2008-05-15
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |