专利名称:应用于存储区域网络的共享磁盘文件系统同步方法
技术领域:
本发明涉及不同计算机上文件系统之间进行同步的方法,特别涉及存储区域网络(Storage Area Networ, SAN)中,不同计算机上运行的共享磁盘文件系统之间进行同步的方法。
背景技术:
随着多媒体,互联网应用的不断发展,以网络为中心的存储结构和存储技术得到快速的发展,在这种 背景下,出现了 SAN (Storage Area Network,存储区域网络)。SAN是由并行SCSI应用演化而来的,并 且从SCS1的替代者进化为更复杂的、基于环路基础的存储共享,进而发展成为目前具有高可扩展性、高 可靠性的交换fabric网络。SAN现在绝大多数被部署在企业的关键应用和重要领域。典型的应用SAN的场 合是绝大多数关键业务以及需要高级存储技术才能解决的地方。SAN -方面能为网络上的应用系统提供丰 富,快速,简便的存储资源,另一方面又能对网上的存储资源实施集中统一的管理,成为当今理想的存 储应用模式。在SAN中,应用服务器通过存储网络(可以是光纤网络或者TCP/IP网络)访问存储服务器上的存储资 源。存储服务器上的存储资源为组织成逻辑巻(Logical Volume)的共享磁盘,向应用服务器表现为块级 (block-level)的接口。应用服务器在共享磁盘之上自行建立文件系统以供上层应用使用。由于文件系统 由应用服务器各自分别建立,在存在两个或以上应用服务器同时使用一个逻辑巻的情况时,不同应用服务 器上的文件系统之间不能同步,不能看到别的应用服务器对文件的更新。因此,需耍一个共享磁盘文件系 统的同步方法,来解决SAN中文件系统之间同步的问题。S前,具有同步功能的文件系统可以被粗略地分为三类并行文件系统,分布式文件系统,以及共享 磁盘文件系统。第一类是并行文件系统,例如用于Intel Paragon系统的PFS、用于HP公^]的Exempla的HFS、用于 IBM公司的SP系列计算机的PIOFS以及用于CMU NASD集群的PFS。并行文件系统主要用于大规模科学计 算集群,并且大多只能在自己公司的特定的平台上才能使用,并不使用与SAN环境F。第二类分布式文件系统主要以NFS, AFS/Coda, InterMezzo, xFS和CIFS为代表。这些文件系统被设 计用来提供多个客户机对文件的分布式读写访问,通过网络(一般是IP网络)提供基于文件级语义的共享, 它们的一致性语义和缓存策略也是为了这种访问设计的。而SAN中使用基于块级语义的共享,与此有较 大差别。第三类共享磁盘文件系统,使用在SAN环境中,主要有IBM的GPFS和Storage Tank,用于SGI公司 的IRIX集群的CXFS, Sistina公司的Global filesystem(GFS)等。共享磁盘文件系统能够在块级别提供 数据的共享和并发访问,减少了协议开销。但与之相应,其设计和实现十分复杂。以GFS为例,为了保证 多个客户机对文件的共享访问,设计了复杂的锁机制,而且为了避免死锁的发生作了很多性能上和功能上 的牺牲。鉴于已有实现的以上不足,需要一个应用于SAN的共享磁盘文件系统同步方法。 发明内容本发明的内容为应用于存储区域网络的共享磁盘文件系统同步方法,具体包括以下步骤(1) 在不同应用服务器之间建立TCP/IP连接;(2) 在有一个应用服务器进行写操作的时候,通过TCP/IP连接通知应用服务器;(3〉其他应用服务器此时若需要读取数据,则去掉文件系统的各级缓存(cache),改为直接从磁盘读取。由于在SAN系统中磁盘是共享的,所以磁盘上的数据对于各个服务器都是一致的; (4〉进行写操作的应用服务器的写操作完成后,通过TCP/IP连接通知其他应用服务器。 本发明无需复杂的锁机制,仅在有写操作时会对读操作产生影响,大部分时间对系统性能影响很小。 通过本发明,可以保证SAN环境下共享磁盘文件系统的同步。
图1为存储区域网络(SAN)结构图。图2为应用于SAN的共享磁盘文件系统同步方法示意图。
具体实施方式
Linux操作系统使用的VFS(Virtual File System,虚拟文件系统)和EXT2文件系统中,都用索引节点 (inode)来描述一个文件的存储位置,并包含存储权限,文件所有者,文件存取修改时间和文件类型等信 息。索引节点存储在磁盘上,核心把inode读进内存索引节点来操作它和它所对应的文件。在本文中,把 存储于磁盘上的inode称作磁盘索引节点,而把它在内存中的映像称为内存索引节点。为了使文件操作速 度变快,Limix在这里使用了缓存的概念。系统将磁盘上的索引节点读入内存,不仅加快了文件的操作的 速度,而且便于实现文件操作的同步与互斥。内存中的索引节点有索引节点号,用来指出内存索引节点对 应的磁盘索引节点在磁盘上的位置。还有指向其他索引节点的指针,这个指针是为了将一系列索引节点构 造成队列,方便査找,尤其分成两个队列, 一个是使用中的cache队列, 一个是空闲队列,这样使用缓存 的思想是为了可以减少读盘次数,提高内核效率。而在VFS和EXT2文件系统中,还使用目录cache(即 d-cache),以便对经常使用的目录对应的inode进行快速査找。而正是由于inode cache和directory cache (缓存的是detitry)的存在,使得不同服务器上各自的文 件系统出现了不同步。本发明的实施方式就是,在有一个应用服务器进行写操作的时候,在其他的应用服 务器上去掉这些cache,而改为直接从磁盘读取。由于在SAN系统中磁盘是共享的,所以磁盘上的数据对T-各个服务器都是一致的,不存在同步问题。于是,通过直接到共享磁盘读取数据,就可以实现同步。要做的第一步是使dentry cache无效,第二步需要使Tnode Cadie无效,最后还要Lh底层块设备的 Buffer Cache无效。具体地说,就是在每次读操作的时候,判断是否需要同步,如果不需要同步,仍然肖 先从缓存中査找。如果需要同步,就使inode cache , dentry cache和buffer cache都失效,从而达到 直接从磁盘读取,实现同步。具体地,通过三部分程序来实现本发明所述的方法(1) 第一部分是写者端程序。写者端程序运行在操作系统的内核空间,截获写操作。在每次写操作发 生时,记录下相关的信息,并保存在/proc./irrfo文件。同时在Zproc/rw文件里下入一个l表示这是 本机正在进行写操作。写者端完成写操作之后,需要将所有脏页面(dirty page)同步至磁盘。(2) 第二部分是通讯程序。通讯程序运行在操作系统的用户空间,它定期读入/proc/info文件,并 将其中内容通过LAN发送到其它应用服务器上运行的通讯程序。其他应用服务器上的通讯程序在收到 写者端发来的讯息的时候,将在/proc/rw文件里写入一个0,并且保存下发过来的info文件中的内 容。(3) 第三部分是读者端程序。读者端程序运行在操作系统的内核空间,它在每次进行读操作的时候, 通过判断/proc/rw文件是l或是0来决定是否需要同步地读。若需要同步地读,则调用EXT2文件系 统提供的接口,禁用dentry cache, Inode Cache和Buffer Cache。其中,读者端程序是本方法的关键,进一歩阐述如下读者端要做的第一步,就是在每次读操作的时候判断是否需要同步。因此,在Linux内核源码中的 proc.c和proc.h文件中,加入了 sfs—is—reader (void)函数,通过读取/proc/rw的内容来判断是否需要 同步的读。如果/proc/rw文件的内容为0,则是需要同步的读,否则,说明不需要同步的读。在Linux内核源码中的inode. c文件中,增加了 sfs—revalidate函数。该函数原形如下int sfs_jevalidate (struct dentry* dentry)在对文件操作时,以及读取文件信息时,如果用sfs—is一reader函数判断需要进行同步,会调用该函 数。该函数通过调用系统提供的接口 shrink—dcache—sb(sb) , int i,lidate一inodes(struct super—block以及void —invalidate—buffers (kdev—t dev, int)三个函数。其中,shrink—dcache—sb(sb) 函数使去除该文件系统上的全部dentry cache , invalidate—inodes函数将该文件系统上的全部inode 缓存设为无效,而—invalidate—buffers函数去除该块设备对应的的全部buffer。然后从共享磁盘重新 读入该inode结构,这样就实现了同步。
权利要求
1. 一种应用于存储区域网络的共享磁盘文件系统同步方法,包括以下内容(1)在不同应用服务器之间建立TCP/IP连接;(2)在有一个应用服务器进行写操作的时候,通过TCP/IP连接通知应用服务器;(3)其他应用服务器此时若需要读取数据,则去掉文件系统的各级缓存(cache),改为直接从磁盘读取。由于在存储区域网络中磁盘是共享的,所以磁盘上的数据对于各个服务器都是一致的;(4)进行写操作的应用服务器的写操作完成后,通过TCP/IP连接通知其他应用服务器。
全文摘要
本发明公开了一种应用于存储区域网络的共享磁盘文件系统的同步方法,可以使存储区域网络中使用同一个共享磁盘的不同应用服务器上的文件系统实现同步,从而解决文件系统的一致性问题。本方法具体通过以下措施实现存储区域网络中共享磁盘文件系统的同步在有一个应用服务器进行写操作的时候,在其他的服务器上去掉文件系统的各级缓存,而改为直接从磁盘读取。由于在存储区域网络中磁盘是共享的,因此,通过直接到共享磁盘读取数据,就可以实现不同应用服务器上文件系统之间的同步。
文档编号H04L12/46GK101272312SQ20071008729
公开日2008年9月24日 申请日期2007年3月23日 优先权日2007年3月23日
发明者健 宋 申请人:健 宋