基于超元数据缓存的高速数据访问系统

2016-10-25 07:55张震伟马雁云
广东通信技术 2016年9期
关键词:代理服务器服务器模块

[张震伟 马雁云]

基于超元数据缓存的高速数据访问系统

[张震伟 马雁云]

存储区域网 光纤通道 文件系统 缓存 超元数据

张震伟

华为技术有限公司,南京研究所,中级工程师,硕士研究生,非CCF会员,主要研究方向:软件技术在通信中的应用。

马雁云

南京邮电大学档案馆,中级工程师,硕士研究生,非CCF会员,主要研究方向:软件技术在通信中的应用。

引言

随着Internet技术的迅猛发展,网络上的数据信息已经呈爆炸式增长,网络服务器需要存储的信息和数据也越来越多,对服务器存储容量要求不断提高,导致简单的内部存储从容量上已经无法满足这一境况,用户对于数据传输可靠性或数据传输速率等方面的要求也越来越高。因此,服务器存储“外部化”已经成为必选的策略。为服务器提供专用的外部存储环境,充分利用最新的存储硬件技术和网络技术,才能够最终满足对大容量数据快速可靠的存储、精确高效的访问和安全稳定的备份等需求。

1 网络存储技术的发展

1.1直连式附加存储(Direct Attached Storage,DAS)

在存储功能“外部化”的发展历程中最先被设计出的存储体系架构被称为DAS[1,2,3,4],在现在的部分网络环境中仍然被使用。其特点是磁盘阵列(Redundant Array of Independent Disk,RAID)等存储设备通过总线技术直接连接到计算机的系统总线上,而计算机既作为应用服务器,同时作为存储服务器,响应客户机的访问请求后,访问直连的存储设备并返回数据给客户[5]。这是一种以服务器为中心的存储体系结构,在更高要求的场合存在较多问题:存储设备只存在于单一的服务器,不同服务器的存储设备不能共享,利用率不高;不同服务器的存储设备不能相互备份,安全性不高;当存储设备越来越多后,需要在更长距离和服务器连接,此技术上的连线距离有限,增加存储设备等变更操作困难;各个NAS设备之间的数据信息不容易聚合,而且NAS的集中式结构容易产生单点故障失效问题等[6]。为了部分解决问题,出现了将数据从通用的应用服务器中分离出来,建立专门的存储子系统服务器的技术,跨越了机内存储。

这种技术通过专用电缆将服务器总线和存储设备连接,并通过小型计算机系统接口(Small Computer System Interface,SCSI)协议和指令来存取数据。但本质上这种方案和DAS还是统一形式,具有DAS的各种缺点。

1.2网络附加存储(Network Attached Storage,NAS)

为了解决DAS的各种问题,逐渐发展出了NAS网络附加存储技术。它通过网络文件系统(Network File System,NFS)和公用网络文件系统(Common Internet File System,CIFS)等标准化的协议提供文件级的数据访问。

在NAS网络中,计算机系统是通过文件重定向器从一个NAS中得到的数据。当一个用户/应用试图通过网络访问NAS中的数据时,重定向器把对本地文件系统的本地路径重定向到使用TCP协议的网络操作系统而连接到某个远程服务器,服务器上运行的软件提供支持多个客户访问的文件系统。

1.3区域存储网络(Storage Area Network,SAN)

SAN是通过专用高速网将一个或多个网络存储设备和服务器连接起来的专用存储系统。如图1 。SAN在最基本的层次上定义为互连存储设备和服务器的专用光纤通道网络,它在这些设备之间提供端到端的通讯,并允许多台服务器独立的访问同一存储设备。与局域网(Local Area Network,LAN)非常类似,SAN提高了计算机存储资源的可扩展性和可靠性,使实施的成本更低,管理更轻松。

SAN网络根据具体实现的协议不同被划分为IP SAN和FC SAN两种。其中IP SAN是伴随着iSCSI协议的出现而逐步投入实际应用之中,它使用IP协议族,运行于高速以太网。而FC SAN相对目前应用更为广泛,使用光纤通道(Fiber Channel,FC)协议族,运行于专门的光纤通道网络之上。

图1 SAN区域存储网络示意图

2 文件系统

文件系统是对文件存储器空间进行组织分配,负责文件存储并对存入的文件进行保护和检索的系统[7][8]。文件系统中的数据一般包括两部分:文件数据和元数据。其中,文件数据包括目录数据和实际数据;而元数据是用来组织和管理文件数据的数据。

随着信息化时代的快速发展,各领域的数据信息量也迅速膨胀扩大。一般采用文件系统对海量的数据进行管理和存储。由于这些存储的数据需要随时查阅或实时更新,因此要求文件系统中的数据能够方便快速地被访问。现有技术中,在对文件系统的数据进行访问时,通常是通过磁头寻道硬磁盘的方法来确定待访问的数据,即根据文件系统中各个磁盘之间的逻辑对应关系,查找到需要访问的数据。现有技术数据访问方法中,定位待访问数据都需要通过磁头寻道硬磁盘来访问待访问数据,这种方法由于受到磁盘机械结构的限制,导致了文件系统的响应时间增长,降低了服务质量。

为了便于理解下面列举一个访问文件系统中数据的例子。例如文件系统中共有20个存储块,依次编号为0、1、2、3……19;如果此时需要访问文件系统中的某一数据,服务器首先找到的是第0号存储块,第0号存储块各级访问请求中携带的信息(可以理解为线索信息),索引找到第3号存储块,在找到第3号存储块后,第3号存储块根据线索信息索引到第1号存储块,在找到第1号存储块后,第1号存储块根据线索信息索引找到第9号存储块,进而从第9号存储块中定位所要访问的待访问数据。可见,访问文件系统中的数据首先都需要经过数个或数十个不同磁盘间相互查找的过程定位待访问数据,进而对待访问数据进行访问。

3 本方案详细阐述

3.1本方案所要解决的问题

由于硬磁盘的机械结构限制,磁头寻道时间大约要10毫秒,一个硬磁盘对随机请求的响应率仅仅为每秒100个请求。即使是网络存储使用磁盘阵列的前提下,把请求分配到各个磁盘上,也很难突破每秒1 000个。

目前的缓存技术主要就是针对访问过的数据进行高速的缓存,如果数据一段时间内没有被访问就被替换出缓存。这种类型缓存的问题主要有两个:

(1) 当大量访问文件数据以后(比如拷贝巨大文件),以前缓存的目录和文件系统的数据由于一段时间没有使用就被替换出去,当访问其他目录的时候会出现一段时间非常缓慢的现象。这降低了服务器的服务质量。

(2)访问没有访问过的目录或者文件花费的时间相对较长。

本方案提出了基于超元数据缓存的高速数据访问,以使得应用服务器在访问文件系统中的数据,尤其是访问目录数据和元数据时,能够快速响应应用服务器的数据访问请求,提升服务质量。

3.2 本方案实现的具体实施例

本方案通过在存储网络中增加独立的缓存系统,来加速文件系统的访问速度。本方案中的缓存系统就是图2中的超元数据缓存模块。存储系统是磁盘系统。服务器对存储的访问分为3类:超元数据块的读;超元数据块的写;数据块的读写。

(1)元数据缓存模块首先会从存储系统中把所有的超元数据读取出来,并且缓存。这个过程后面叫超元数据块载入过程。

(2)超元数据缓存模块收到服务器的文件数据块请求。这个过程叫数据块请求过程。

(3)超元数据缓存模块把请求直接转发给存储系统。这个过程叫数据块请求处理过程。

(4)超元数据缓存模块收到服务器的元数据读请求,直接把缓存的数据提交给服务器。这个过程叫超元数据块读请求处理过程。

(5)超元数据缓存模块收到服务器的元数据写请求,直接修改缓存中的数据。这个过程叫超元数据块写请求处理过程。

(6)然后把修改的缓存数据同步到存储系统。

(7)检查修改的超元数据缓存,如果有新的超元数据块需要载入或者删除,则载入或删除新的超元数据块。(在添加或删除目录和文件的时候可能会出现)。

图2 本方案实施实例

3.3本方案实施实例的数据访问方法

代理服务器预先获取存储服务器的文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存。本实施实例的数据访问方法包括:接收应用服务器发起的数据访问请求和超元数据更新操作请求。

为了为应用服务器提供其想要查找的数据,首先需要接收应用服务器发起的数据访问请求,判断数据访问请求是否为超元数据访问请求,具体可以判断数据访问请求中索引信息指示的数据是否为目录数据和元数据中的至少一个,如果“是”,对超元数据进行读取或更新操作;如果“否”,将数据访问请求发送至存储服务器的文件系统。

在判断出数据访问请求的数据是超元数据的情况下,直接在预先保存的超元数据中找到索引信息指示的数据即可,进而根据数据访问请求中的要求对索引信息指示的数据进行相应的读取或更新操作。

应用服务器的数据访问请求为超元数据访问请求时,可以直接在预先保存的超元数据中查找,将索引信息指示的数据发送给应用服务器。

应用服务器可以对超元数据进行更新操作,更新操作包括数据增加、修改和删除操作,针对不同的数据访问请求,处理方法也不同,因此需要在确定数据访问请求中索引信息指示的数据为超元数据的情况下,按照是否将原来不是超元数据的数据增加为超元数据的条件,进一步确定数据访问请求为超元数据增加请求还是超元数据修改、删除或读取请求。

增加超元数据,从文件系统中获取超元数据中不存在的数据,并加入到超元数据中。

修改超元数据,可能是将一些原来不是超元数据的数据更新为超元数据,也可能是将原来是超元数据的数据更新为文件数据,而这些数据往往以存储块的形式存在的,因此,预先保存的超元数据可能就会从文件系统中载入新的超元数据块,或删除原有的超元数据块。

上述方法不需要通过磁头寻道硬盘的方法来访问超元数据,而是直接对缓存的超元数据进行读取或更新操作,能够快速响应应用服务器的超元数据访问请求,并能够将数据访问请求对代理服务器中存储的超元数据进行的操作同步到文件系统。该方法整体提升了存储服务器的服务质量。

3.4本方案实施实例的数据访问装置

本方案给出了2种数据访问装置:

数据访问装置1能够对应依次执行上述方案实施例中的步骤。缓存器预先获取存储服务器的文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存。访问接收模块用于接收应用服务器发起的数据访问请求,并将数据访问请求发送给第一判断模块。第一判断模块用于接收访问请求,可以是判断数据访问请求中索引信息指示的数据是否为目录数据和元数据中的至少一个。

请求转发模块用于在第一判断模块的判断结构为“否”的情形下,将数据访问请求发送至存储服务器的文件系统;超元数据模块用于在第一判断模块的判断结果为“是”的情况下,对超元数据进行读取或更新操作。超元数据操作模块结构包括数据获取模块获取数据访问请求中索引信息指示的数据;数据发送模块用于将索引信息指示的数据发送给应用服务器,如图3。

图3 数据访问装置

数据访问装置2缓存器是预先获取存储服务器的文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存。访问接受模块用于接收应用服务器发起的数据访问请求,并将数据访问请求发送给请求判断模块。请求判断模块用于接收访问请求,判断数据访问请求是否为超元数据访问请求。

请求转发模块用于在请求判断模块的判断结构为“否”的情形下,将数据访问请求发送至存储服务器的文件系统;超元数据模块用于在请求判断模块的判断结构为“是”的情况下,对超元数据进行的操作。超元数据操作模块结构包括第二判断模块,判断数据访问请求中索引信息指示的数据中是否包括超元数据中不存在的数据;第一处理模块用于在第二判断模块的判断结果为“是”时,从文件系统中获取超元数据中不存在的数据,并加入超元数据;第二处理模块用于在第二判断模块的判断结果为“否”时,从数据访问请求修改或删除索引信息指示的数据,如图4。

图4 数据访问装置

本方案中数据访问装置可以是代理服务器。代理服务器能够预先获取文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存。之后,代理服务器接收应用服务器发起的数据访问请求,判断数据访问请求中索引信息指示的数据是否为目录数据和元数据,如果是,对超元数据进行读取或更新操作;如果否,将数据访问请求发送至文件系统。代理服务器不需要通过磁头寻道硬磁盘的方法来访问超元数据,而是直接对缓存的超元数据进行访问,能够快速的响应应用服务器的数据访问请求,提升了存储服务器的服务质量。

3.5本方案实施的数据访问系统

本方案实施的数据访问系统1包括存储器和存储器进行通信的处理器,存储器中存储处理器可执行的程序代码,程序代码包括:

(1)用于获取文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存;

(2)用于接收应用服务器发起的数据访问请求;

(3)用于判断数据访问请求是否为超元数据访问请求;

(4)用于在(3)的判断结构为“是”的情况下,对超元数据进行读取或更新操作;

(5)用于在(3)的判断结构为“否”的情况下,将数据访问请求发送至存储服务器的文件系统。

存储器中存储处理器用于获取上述程序代码,并执行。

数据访问系统1能够通过处理器执行存储器中的操作指令,完成预先获取文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存;在接收到的应用服务器发起的数据访问请求中索引信息指示的数据为目录数据和/或元数据时,从预先保存的超元数据中确定索引信息指示的数据;在索引信息指示的数据不是超元数据时,将数据访问请求发送至文件系统等操作。

本方案实施的数据访问系统2包括应用服务器、代理服务器和存储服务器。存储服务器拥有存储文件系统,应用服务器用于向代理服务器发起数据访问请求。代理服务器用于预先获取存储服务器的文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存;接收应用服务器发起的数据访问请求,当数据访问请求为超元数据访问请求时,对超元数据进行读取或更新操作;当数据访问请求为非超元数据访问请求时,将数据访问请求发送至存储服务器的文件系统。

该数据访问系统中代理服务器不需要通过磁头寻道硬磁盘的方法来访问超元数据,而是直接对缓存的超元数据进行读取或更新操作,能够快速的响应应用服务器的超元数据访问请求,并能够针对超元数据访问请求的类型不同进行不同的操作,整体提升了存储服务器的服务质量。

4 本方案实验和数据

4.1 实验环境介绍

图 5 实验组网

本实验的网络环境如图5,网络中有5个设备,两台服务器,一台FC交换机,一台磁盘阵列以及cache设备。实验过程中cache设备并不是始终接入网络的。我们通过对比网络中是否接入cache设备的目录访问效率来观察cache设备的作用。

两台服务器配置intel i7处理器,2G内存,并在服务器上运行ubuntu 14.04。然后我们在服务器上创建实验所需要的目录环境。首先,创建目录test_dir,并在该目录下创建1000个子目录,然后在各个子目录下面继续创建100个子目录,并在这些子目录中的最后一个子目录存放一个目标文件target。创建过程由下面脚本实现:

4.2 简单查找实验和数据

首先,网络中并不接入cache设备,登陆服务器,接着进入test_dir目录,最后运行time find -name target命令并记录运行时间。

然后,网络中接入cache 设备,重复执行time find -name target命令并记录运行时间,单位为秒。多次实验得到图6数据:

图6 查找文件时间

图6中纵轴表示时间,单位是秒,横轴表示不同次查找。从图6中可以看到接入cache以后,服务器查找文件的性能有少量的提升。在不接入cache的情况下,服务器多次查找同一个文件所花费的时间也是会下降的,这是因为服务器会使用内存来做缓存,从而减少磁盘的访问。

4.3复杂查找实验和数据

4.2节中的实验服务器只进行文件查找操作,并没有任何的文件读写操作,现实情况并不存在这样简单的场景。所以本节我们构造复杂的实验环境,首先我们在服务器后台运行dd if=/dev/zero of=var/test bs=8k count=100000命令,其次运行进入test_dir目录,运行time find -name target命令。最后对比cache服务器是否接入网络的数据。多次实验得到图7数据:

图7 复杂文件查找时间

图7纵轴表示时间,单位是秒,横轴表示不同查找的编号。从图7中可以看出当服务器进行大量文件访问的时候,同时进行文件查找的效率是很低的,并且查找时间不稳定,极大影响了用户的体验。其原因是文件访问时服务器把大量的内存用于缓存文件的内容,此时进行目录查找则需要多次的访问磁盘,导致查找性能急速下滑。而接入cache设备以后,服务器在大量访问文件的时候,同时查找的性能保持不受到任何的影响。

5 结语

本方案不需要通过磁头寻道硬盘的方法来访问超元数据,而是直接对缓存的超元数据进行读取或更新操作,能够快速响应应用服务器的超元数据访问请求,并能够将数据访问请求对代理服务器中存储的超元数据进行的操作同步到文件系统。该方法整体提升了存储服务器的服务质量。提高服务器文件系统加速,尤其是访问目录的时候,缩短服务器集群主备切换时间。

1Gibson G A,Meter R V.Network-attached storage architecture[J].Communication of the ACM,2000,43(11):11-17

2Phillips B.Have storage area networks come of age[J].Computer,1998,31(7):10-12

3Katz R H.Network-attached storage systems[C]// Proceedings of the Conference on Scalable High Performance Computing.Williamsburg,VA,USA,1992:68-75

4赵跃龙等.一种智能网络磁盘(IND)存储系统结构[J].计算机学,2008,5:859

5谢胜彬等.DAS、NAS与SAN的研究与应用[J].计算机与现代,2003,7:8

6Yokota H.Autonomous disks for advanced database applications[C]//Proceedings of the 1999 International Symposium on Database Applications in Non-Traditional Environments(DATE'99).Kyoto,Japan,1999:435-442

7Ghemawat S,Gobioff H,Leung S.The Google file system[C]//Proceedings of the 19th ACM Symposium on Operating Systems Principles.New York,USA,2003:29-43

8Weil S A,Brandt S A,Miller E L,et al.Ceph:A scalable,high-performance distributed file system[C]//Proceedings of the 7th Symposium on Operating Systems Design and Implementation.San Diego,USA,2006:102-118

10.3969/j.issn.1006-6403.2016.09.007

2016-07-04)

针对访问被替换出缓存的数据需要时间较长的问题,提出来一种基于超元数据的高速数据访问系统。首先,代理服务器预先获取文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存,然后,接收应用服务器发起的访问请求,当数据访问请求为超元数据访问请求时,对超元数据进行读取或更新操作,当数据访问请求为非超元数据访问请求时,将数据访问请求发送至存储服务器。最后,由于代理服务器的存在,应用服务器不需要磁头寻道硬盘来访问超元数据,直接对缓存的超元数据进行读取或更新操作。实验结果表明该系统能够快速的响应应用服务器的数据访问请求,提升存储服务器的文件系统的服务质量。

猜你喜欢
代理服务器服务器模块
28通道收发处理模块设计
“选修3—3”模块的复习备考
通信控制服务器(CCS)维护终端的设计与实现
地铁信号系统中代理服务器的设计与实现
IP地址隐藏器
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
集成水空中冷器的进气模块
一种容侵系统的设计