CN101847148B - 实现应用高可用性的方法和装置 - Google Patents

实现应用高可用性的方法和装置 Download PDF

Info

Publication number
CN101847148B
CN101847148B CN2009101275890A CN200910127589A CN101847148B CN 101847148 B CN101847148 B CN 101847148B CN 2009101275890 A CN2009101275890 A CN 2009101275890A CN 200910127589 A CN200910127589 A CN 200910127589A CN 101847148 B CN101847148 B CN 101847148B
Authority
CN
China
Prior art keywords
file
application
node
renewal
subfile
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.)
Active
Application number
CN2009101275890A
Other languages
English (en)
Other versions
CN101847148A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN2009101275890A priority Critical patent/CN101847148B/zh
Priority to US12/728,302 priority patent/US8195979B2/en
Publication of CN101847148A publication Critical patent/CN101847148A/zh
Priority to US13/462,039 priority patent/US8433948B2/en
Application granted granted Critical
Publication of CN101847148B publication Critical patent/CN101847148B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2025Failover techniques using centralised failover control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种用于实现应用高可用性的方法和装置,其中应用分别被安装在第一节点和第二节点上,第一节点用作活动节点,第二节点用作备用节点,该方法包括:在应用在活动节点上的运行过程中监视应用对文件的访问操作;如果应用在对文件的访问操作过程中对文件进行更新,则将所监视的应用对文件的所述更新从活动节点复制到备用节点可访问的存储设备;探测应用在活动节点上的运行;以及响应于探测到应用在活动节点上的运行发生故障,将活动节点切换到第二节点,并启动第二节点上的应用。

Description

实现应用高可用性的方法和装置
技术领域
本发明涉及计算机领域,具体涉及应用的高可用性,更具体涉及一种用于实现应用的高可用性的方法和装置。
背景技术
应用的高可用性(HA)是指应用可以持续不间断地为用户提供访问的能力,它对企业来说是至关重要的。
图1示意性地示出了现有技术中用于实现应用的高可用性的解决方案。其中,在第一服务器和第二服务器上分别安装有相同的应用,第一服务器用作当前服务器,第二服务器用作备用服务器。在应用中包含有(或者与应用相关联地存在着)一个特定于该应用的用于HA的文件管理机制,该机制用于监视应用在运行过程中对磁盘文件的访问操作,并将应用对磁盘文件的更改复制到备用服务器上或者当前服务器与备用服务器之间的一共享存储器中。在与第一服务器和第二服务器连接的第三服务器上安装有HA管理器(HA管理器也可以直接安装到第一服务器和第二服务器上),该HA管理器用于监视当前服务器上的应用的运行状态,以及在应用发生故障时启动备用服务器上的应用,并将用于该应用的IP地址切换到备用服务器上。在这种解决方案中,只有应用所包含的特定于应用的用于HA的文件管理机制才知道应用的文件结构及其访问操作,并能够进行更新文件的复制,而HA管理器并不知道应用的文件结构。
也就是说,在现有技术中,不同的应用具有其自己的HA机制,而不存在通用的HA机制。例如,大型数据库软件DB2可以将数据储存库配置到一个用于HA的特定目录中,WAS(WebSphere应用服务器)可以将事务日志配置到一个用于HA的特定目录中,再例如,IBM公司的TivoliSystem Automation(TSA),Veritas Cluster实际上是具有策略支持的脚本执行框架,它提供了针对特定应用的HA自动化。然而,却不能将这种HA机制应用到一般的应用中。这是由于不同的应用在运行中所访问的文件是不同的,其文件目录结构也是不同的,并且一个应用在运行过程中所访问的文件往往分布在应用的安装目录之内和之外的多处,例如Apache包括如下用于配置和数据的不同路径:/etc/apache2-httpd配置(不可改变);/etc/sysconfig/apache2-包含配置文件;/usr/share/apache2-所有与apache相关的数据,因此,在现有技术中不存在一个通用的HA机制,能够把不同应用在运行过程中所更新的文件复制到备用服务器上。
现有技术的这种解决方案要求应用的设计者具有很高的设计技能,并付出很大的努力来设计HA机制,也要求应用的开发者具有很高的开发技能,并付出很大的努力来实现HA机制,此外还要求应用的部署者理解特定于应用的实现,并付出很大努力来正确地配置应用。
发明内容
为解决现有技术中的上述问题,提出了本发明的解决方案。
在本发明的一个方面,提出了一种用于实现应用高可用性的方法,其中应用分别被安装在第一节点和第二节点上,第一节点用作活动节点,第二节点用作备用节点,该方法包括:在应用在活动节点上的运行过程中监视应用对文件的访问操作;如果应用在对文件的访问操作过程中对文件进行更新,则将所监视的应用对文件的所述更新从活动节点复制到备用节点可访问的存储设备;探测应用在活动节点上的运行;以及响应于探测到应用在活动节点上的运行发生故障,将活动节点切换到第二节点,并启动第二节点上的应用。
在本发明的另一个方面,提出了一种用于实现应用高可用性的装置,其中,应用分别被安装在第一节点和第二节点,第一节点用作活动节点,第二节点用作备用节点,该装置包括:监视模块,用于在应用在活动节点上的运行过程中监视应用对文件的访问操作;复制模块,用于如果应用在对文件的访问操作过程中对文件进行更新,则将所监视的应用对文件的所述更新从活动节点复制到备用节点可访问的存储设备;探测模块,用于探测应用在活动节点上的运行;以及切换模块,用于响应于探测到应用在活动节点上的运行发生故障,将活动节点切换到第二节点,并启动第二节点上的应用。
本发明的解决方案消除了应用的设计者和开发者进行HA设计和开发的负担,也消除了在部署应用时进行针对HA的配置的负担。
附图说明
所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是,通过参照附图阅读下面对说明性实施例的详细说明可更好地理解发明本身以及其优选使用模式、目标、特征以及优点,在附图中:
图1示意性地示出了现有技术中用于实现应用的高可用性的技术方案;
图2示意性地示出了本发明的基本概念;
图3示出了本发明的实施例的体系结构;
图4示出了根据本发明的实施例的应用启动器的具体实施方式;
图5示出了根据本发明的实施例的文件重定向器的工作示意图;
图6示出了根据本发明的一个实施例的文件重定向器的具体实施方式;
图7示出了根据本发明的一个实施例由挂钩程序实现的文件重定向器执行的操作的流程;
图8示出了根据本发明的另一个实施例的文件重定向器的具体实施方式;
图9示出了根据本发明的另一个实施例由挂钩程序实现的文件重定向器执行的操作的流程;
图10示出了根据本发明的实施例执行的块复制的示意图;以及
图11示出了本发明的另一实施例的示意图。
具体实施方式
下面参照附图来说明本发明的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员明显的是,本发明的实现可不具有这些具体细节中的一些。此外,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。
图2示意性地示出了本发明的基本概念。如图所示,在活动服务器和备用服务器上分别安装有HA应用,本发明的用于实现HA的装置也分别安装在活动服务器和备用服务器上。本发明的用于实现HA的装置不是特定于应用的,而是位于应用之外,并可用于实现任何应用的高可用性。在活动服务器上,在应用的运行过程中,用于实现HA的装置以透明的方式分别与应用、OS文件***以及磁盘进行交互,负责更新文件的复制、IP地址切换及应用的启动。具体地,所述交互包括:在应用在活动服务器上运行过程中监视应用对文件的访问;将所监视的应用对文件的更新从活动服务器复制到备用服务器或者活动服务器与备用服务器之间的共享存储设备;探测应用在活动服务器上的运行;以及响应于探测到应用在活动服务器上的运行发生故障,切换到备用服务器,并启动备用服务器上的应用。
图3示出了本发明的实施例的体系结构。如图所示,在活动节点和备用节点上分别安装有相同的服务器应用,并且分别安装有相同的本发明的用于实现应用高可性的装置中的各模块。这样,当响应于活动节点发生故障将活动节点切换到备用节点,并在备用节点上启动应用之后,备用节点就成为新的活动节点,而原活动节点可在故障恢复后成为新的备用节点。
本发明的用于实现高可用性的装置包含位于活动节点和备用节点上的用户空间以及内核空间中的各模块。在用户空间中,有应用启动器301。在内核空间中,有文件重定向器302和块复制器303。
应用启动器301用于启动应用,并注册被启动的应用的标识例如进程ID(PID),以便由文件重定向器302使用。也就是说,每一个由应用启动器301启动的应用的标识都将被注册,从而可被视为高可用性应用。应用启动器301还用于在应用已故障转接到备用节点后探测应用在备用节点(此时已成为新的活动节点)上的运行,并在新的活动节点上应用的运行发生故障时,启动原活动节点上的应用。
文件重定向器302用于通过文件操作挂钩程序栏截应用在运行过程中的文件访问***调用,根据该应用的应用标识判断该应用是否为已注册的由应用启动器301启动的应用即HA应用,并响应于判断该应用为HA应用,将应用的文件访问操作重定向到一个事先创建的复制子文件***中。对复制子文件***的写操作都会被记录到与块复制器303相关联的块设备中。
块复制器303用于监视复制子文件***中的对块设备的写操作,并以块复制(block replication)的方式将挂接到复制子文件***的块设备中的内容复制到备用节点中相应的块设备中。所述块设备可以为一个磁盘,也可以为一个逻辑分区。可以在将应用安装到服务器上之前在服务器上创建复制子文件***,并随即将该块设备挂接到该复制子文件***,并且创建复制子文件***以及将块设备挂接到复制子文件***应当在活动节点和备用节点这两处进行。块复制器303可以通过挂钩到操作***中的磁盘操作挂钩程序来实现。例如,在Linux***中利用kprobe将磁盘操作挂钩程序挂载到ll_rw_block0函数上。这样,每当文件***通过调用写磁盘函数将对文件的更新写入块设备时,该挂钩程序被启动。如果判断所写入的决设备是挂接到复制子文件***的块设备,则该挂钩程序将对活动节点上的块设备的数据更新远程复制到备用节点上的块设备。该挂钩程序可以利用本领域中所知的多种远程磁盘同步工具或方法中的任何一种来进行块设备的远程复制。
图4示出了根据本发明的实施例的应用启动器的具体实施方式。如图所示,应用启动器301位于每一个节点上,并且包括应用管理器401,存储管理器402,IP切换器403和探测器404。
应用管理器401用于启动和终止应用。可以将应用的路径,可执行文件名以及运行参数通过命令行选项或者配置文件传递给应用管理器401,应用管理器401根据这些信息创建子进程启动应用,得到该应用的进程ID。并可凭此进程ID在需要的情况下终止应用运行。
存储管理器402用于将应用的标识例如进程ID注册到内核空间预分配的注册列表中,以由文件重定向器302用于判断该应用是否为HA应用。
IP切换器403用于通过网卡驱动程序修改所在节点的IP地址,例如,备用节点上的IP切换器403响应于探测器404探测到活动节点上的应用故障,将备用节点的IP地址修改为活动节点的IP地址,或者活动节点上的IP切换器403响应于探测器404探测到备用节点上的已故障转换的应用的运行再次发生故障,将活动节点的IP地址修改为原来的IP地址以便再次进行故障转接。
探测器404用于探测另一节点上的应用的运行状态,并在另一节点上的应用发生故障时,开始故障转接过程,包括通过应用管理器401启动所在节点上的应用,通过IP切换器403将用于该应用的IP地址切换到所在节点。探测器404可以使用本领域中所知的多种探测方法或工具中的任何一种来探测另一节点上的应用的运行状态。
尽管在图4以及以上描述中仅示出和说明了一个节点上的各模块所执行的操作,但显而易见的是,当另一个节点成为活动节点时,该另一个节点上的各模块可执行相同的操作。其中备用节点为活动节点的镜像,为方便说明,相关附图以及说明书中只是描述了备用节点相关细节。但本领域技术人员根据对活动节点的描述完全明了备用节点转换为活动节点时的相关操作。
图5示出了根据本发明的实施例的文件重定向器302的工作示意图。如图右上部分所示,在文件***中已创建了一用于复制的子文件***。根据本发明的一个实施例,在应用安装时,直接将应用安装在该复制子文件***中。根据本发明的另一个实施例,在应用安装时,不需要将应用安装在该子文件***中,而是可以将应用安装在该子文件***之外。此外,应指出的是,在文件***中创建复制子文件***,以及将应用安装在该复制子文件***之内或之外需要在活动节点和备用节点两者之中相对应地进行。也就是说,应当在活动节点和备用节点两者中分别创建复制子文件***;并且如果在活动节点中将应用安装在复制子文件***之内,在备用节点中也应当将应用安装在复制子文件***之内;而如果在活动节点中将应用安装在复制子文件***之外,在备用节点中也应当将应用安装在复制子文件***之外。
文件重定向器302通过挂钩程序拦截应用的文件访问***调用,包括文件打开、文件读和文件写,根据内核空间中的HA注册列表以及该应用的应用标识判断该应用是否为HA应用,并响应于判断该应用为HA应用,将应用对文件***中位于复制子文件***之外的文件的访问重定向到复制子文件***。在将应用直接安装在复制子文件***中的本发明的实施例中,只需要将应用对应用的安装目录之外的文件的访问重定向到该复制子文件***中。而在将应用安装在复制子文件***之外的本发明的实施例中,需要将应用对所有文件的访问重定向到该复制子文件***中。例如,如图所示,假设复制子文件***的路径名为DSS,应用在运行时访问了文件***中路径为/Local/temp的文件,则文件重定向器302将对该文件的访问重定向到复制子文件***中的具有相应路径DSS/Local/temp的文件。
图6示出了根据本发明的一个实施例的文件重定向器302的具体实施方式。如图所示,应用在运行过程中的文件访问操作(包括文件打开、文件读和文件写)将产生相应的文件访问***调用。本发明的该实施例利用了操作***所提供的挂钩机制来拦截这些文件访问***调用,并通过***每一个文件访问***调用的挂钩程序实现文件重定向器302。例如,在Linux中利用Kprobe机制,对文件打开(sys_open),读(sys_read)和写(sys_write)操作进拦截,并***相应的文件操作挂钩程序。对于文件打开***调用,挂钩程序将首先检查要打开的文件的路径,如果该文件的路径位于复制子文件***之外,则在操作***在内存中创建的该文件的文件描述符的文件数据结构中添加一外部标志。对于针对一文件的第一次文件写***调用,挂钩程序检查该文件的文件数据结构中是否存在外部标志,如果存在外部标志,则将该文件从复制子文件***的外部复制到复制子文件***的内部,例如将文件/local/temp复制到DSS/local/temp,并在内存中创建与复制子文件***内的该复制文件相关联的文件描述符的文件数据结构,称为影子文件数据结构,然后在原文件描述符的文件数据结构中添加一指向该影子文件数据结构指针,称为影子指针。此后,每当再次拦截到针对该文件的文件写***调用时,除了利用该文件的文件描述符的文件数据结构写入位于复制子文件***外部的该文件之外,还通过该文件数据结构中的影子指针找到影子文件数据结构,并利用影子文件数据结构写入复制子文件***中的复制文件。以这种方式,复制子文件***中将保存应用所更新的所有更新文件。除了在原文件描述数据结构中添加影子指针外,另一种可能的办法是在内核空间中创建一个影子文件关联表。当影子文件数据结构被创建的时候,在关联表中添加其和原文件描述数据结构的关联关系。在写文件的时候,通过关联表中查找与当前文件关联的影子文件数据结构。
现参照图7,其更具体地示出了根据本发明的一个实施例由文件操作挂钩程序实现的文件重定向器执行的操作的流程。
当文件操作挂钩程序由应用在运行过程中产生的文件访问***调用所启动后,首先在步骤701检查该应用的进程ID,根据HA注册列表判断该进程ID是否属于已注册的由应用启动器301所启动的应用的进程ID。
如果该判断为否,表明该应用不是HA应用,则进行到步骤710,从挂钩程序返回到文件访问***调用,以进行正常的文件打开处理。
如果该判断为是,表明该应用是HA应用,则进行到步骤702,进一步判断该文件访问***调用的类型。
响应于在步骤702判断该文件访问***调用的类型为文件打开,进行到步骤703,进一步判断要打开的文件的路径是否位于前述所创建的复制子文件***之外。
如果步骤703的判断为否,表明要打开的文件的路径位于所创建的复制子文件***之内,则进行到步骤710,从挂钩程序返回到文件访问***调用,以进行正常的文件打开处理。
如果步骤703的判断为是,表明要打开的文件的路径位于所创建的复制子文件***之外,则进行到步骤704,向操作***在内存中建立的用于该文件的文件描述符的文件数据结构中添加一外部标志。
然后,在步骤705判断在所述复制子文件***中是否存在具有与该文件的路径相对应的路径的文件,例如,假设所要打开的文件路径为/Local/temp,判断在复制子文件***中是否存在路径为DSS/Local/temp的文件。
如果该判断为是,则进行到步骤706,判断内存中是否存在对应于复制子文件***中的相应文件的文件数据结构,也称为影子文件数据结构。
如果在步骤706中的判断为否,即内存中不存在影子文件数据结构,则在步骤707将复制子文件***中的文件复制到原目录中,即复制到复制子文件***之外的相应路径中,例如将DSS/Local/temp文件复制到/Local/temp。
然后,在步骤708中在内存中建立复制子文件***中的相应文件的文件数据结构,即影子文件数据结构。所建立的该文件数据结构中包含的数据项是特定于操作***的,且通常包括文件路径、虚拟存储位置信息等。
接着,在步骤709中,在原文件数据结构(即对应于所打开的文件的文件描述符的文件数据结构)中添加一个指向所创建的影子文件数据结构的影子指针。
如果步骤706的判断为是,即内存中已存在影子文件数据结构,或者步骤705的判断为否,即复制子文件***中不存在具有与该文件的路径相对应的路径的文件,则进行到步骤710,由挂钩程序返回到文件访问***调用。
另一方面,响应于在步骤702判断该文件访问***调用的类型为文件读,则进行到步骤710,由挂钩程序返回到文件访问***调用,以进行正常的文件读取处理。
再一方面,响应于在步骤702判断该文件访问***调用的类型为文件写,则进行到步骤711,判断操作***在内存中建立的用于该文件的文件描述符的文件数据结构中是否存在外部标记。
响应于在步骤711的判断为否,则进行到步骤710,由挂钩程序返回到文件访问***调用,以进行正常的文件读取处理。
响应于在步骤711的判断为是,则进行到步骤712,进一步判断所述文件数据结构中是否存在影子指针。
响应于在步骤712的判断为是,则进行到步骤713,利用所述文件数据结构中的影子指针所指向的影子数据结构来写入复制子文件***中的相应文件。
然后,进行到步骤710,由挂钩程序返回到文件访问***调用,以进行正常的文件写处理。
响应于在步骤712的判断为否,则进行到步骤714,将所要写入的文件从原路径下复制到复制文件子中相应的路径下。
然后,在步骤715,创建对应于复制子文件***中的复制文件的文件描述符的文件数据结构,即影子文件数据结构。
接着,在步骤716,在对应于所要写入的文件的文件数据结构中添加指向影子文件数据结构的指针,即影子指针。
接着,在步骤717,针对复制子文件***中的复制文件执行写入操作。
然后,进行到步骤710,由挂钩程序返回到文件访问***调用,以进行正常的文件写处理。
图8示出了根据本发明的另一个实施例的文件重定向器的具体实施方式。如图所示,通过***每一个文件访问***调用的文件操作挂钩程序实现文件重定向器。对于文件打开***调用,文件操作挂钩程序将首先检查要打开的文件的路径,如果该文件的路径位于复制子文件***之外,则在操作***在内存中创建的该文件的文件描述符的文件数据结构中添加一外部标志。对于文件写***调用,文件操作挂钩程序检查该文件的文件数据结构中是否存在外部标志,如果存在外部标志,则将该文件从复制子文件***的外部复制到复制子文件***的内部,例如将文件/local/temp复制到DSS/local/temp,并修改该文件的文件描述符的文件数据结构,使其与复制子文件***内的复制文件相关联。此后,每当再次写入该文件时,都将利用修改后的文件描述符的文件数据结构直接写入复制子文件***内的复制文件,而不再写入复制子文件***外部的原来文件。以这种方式,复制子文件***中将保存应用对文件所作的所有更新。
现参照图9,其更具体地示出了根据本发明的该另一个实施例由文件操作挂钩程序实现的文件重定向器执行的操作的流程。
如图所示,当挂钩程序由应用在运行过程中产生的文件访问***调用所启动后,首先在步骤901检查该应用的进程ID,根据HA注册列表判断该进程ID是否属于已注册的由应用启动器301所启动的应用的进程ID。
如果该判断为否,表明该应用不是HA应用,则进行到步骤907,从挂钩程序返回到文件访问***调用,以进行正常的文件访问处理。
如果该判断为是,表明该应用是HA应用,则进行到步骤902,进一步判断该文件访问***调用的类型。
响应于在步骤902判断该文件访问***调用的类型为文件打开,进行到步骤903,进一步判断要打开的文件的路径是否位于前述所创建的复制子文件***之外。
如果步骤903的判断为否,表明要打开的文件的路径位于所创建的复制子文件***之内,则进行到步骤907,从挂钩程序返回到文件访问***调用,以进行正常的文件打开处理。
如果步骤903的判断为是,表明要打开的文件的路径位于所创建的复制子文件***之外,则进行到步骤904,向操作***在内存中建立的用于该文件的文件描述符的文件数据结构中添加一外部标志。
然后,在步骤905判断在所述复制子文件***中是否存在具有与该文件的路径相对应的路径的文件,例如,假设所要打开的文件路径为/Local/temp,判断在复制子文件***中是否存在路径为DSS/Local/temp的文件。
如果步骤905的判断为否,则进行到步骤907,从挂钩程序返回到文件访问***调用,以进行正常的文件打开处理。
如果步骤905的判断为是,则进行到步骤906,修改该文件的文件数据结构,例如修改文件数据结构中的虚拟存储位置信息,以使其与复制子文件***中的文件相关联。
然后进行到步骤907,从挂钩程序返回到文件访问***调用,以进行正常的文件打开处理。
另一方面,响应于在步骤902判断***调用的类型为文件读,进行到步骤907,从挂钩程序返回到文件访问***调用,以进行正常的文件读处理。
而响应于在步骤902判断***调用的类型为文件写,进行到步骤908,判断操作***在内存中建立的用于该文件的文件描述符的文件数据结构中是否包含外部标记。
响应于步骤908的判断为否,则进行到步骤907,从挂钩程序返回到文件访问***调用,以进行正常的文件读处理。
响应于步骤908的判断为是,则进行到步骤909,判断所述文件数据结构是否与复制子文件***中的文件相关联。
如果步骤909的判断为是,则进行到步骤907,从挂钩程序返回到文件访问***调用,以进行正常的文件读处理,包括利用所述文件数据结构写入复制子文件***中的文件。
如果步骤909的判断为否,则进行到步骤910,将所要写入的文件从原路径下复制到复制子文件***中相应的路径下。
然后,在步骤911,修改所述文件数据结构,例如修改文件数据结构中的虚拟存储位置信息,以使其与复制子文件***中的复制文件相关联。
对于操作***允许同时多次打开同一个文件的情况,则可能在内存中存在对应于同一个文件的多个文件描述符及其文件数据结构,因此在步骤911中需要修改对应于该文件的所有文件描述符的文件数据结构,以使它们都与复制子文件***中的复制文件相关联。这可以通过下述方式实现:在内存中维护一个外部文件列表,每当在步骤904中向文件描述符的文件数据结构添加外部标志时,也向该外部文件列表添加该文件描述符,这样该外部文件列表将记录所有被打开的外部文件的所有文件描述符;当在步骤911中修改当前文件的当前文件描述符的文件数据结构时,在该外部文件列表中查找当前文件的所有文件描述符,并修改所找到的所有文件描述符的文件数据结构,以使它们都与复制子文件***中的复制文件相关联。
然后,进行到步骤907,由挂钩程序返回到文件访问***调用,以进行正常的文件读处理,包括利用所述文件数据结构写入复制子文件***中的复制文件。
应指出的是,以上描述的根据本发明的实施例的文件重定向器302的具体实施方式及其所执行的操作流程的细节,仅仅是示例性说明,而不是对本发明的限制。在本发明的其他实施例中,文件重定向器302可采用其他实施方式,并且其执行的操作流程可具有更多、更少或不同的步骤,或不同顺序的步骤。事实上,只要文件重定向器302能够将应用对文件的更新复制或重定向到一复制子文件***,以便远程块复制到备用节点,则都处于本发明的精神和范围之内。
图10示出了根据本发明的实施例执行的块复制的示意图。如图所示,在活动节点上所创建的复制子文件***为/var/HA,逻辑分区/device/hda3被挂接到该复制子文件***/var/HA上。在备用节点上所创建的复制子文件***为/var/HA,逻辑分区/device/hda2被挂接到该复制子文件***/var/HA上。当活动服务器中文件***通过调用写磁盘函数将对文件的更新写入磁盘/device/hda3时,挂载在该函数上的块复制程序启动。由块复制器303所执行的块复制过程将把活动服务器磁盘/device/hda3上的更新复制到备用服务器的磁盘/device/hda2上,从而使两个磁盘上的数据完全一致,这样就实现了使活动节点的复制子文件***/var/HA中的内容与备用节点的复制子文件***/var/HA中的内容完全一致。
图11示出了本发明的另一实施例的示意图。在该实施例中,在活动节点和备用节点之间共享的存储设备分别挂接到活动节点上的复制子文件***和备用节点上的复制子文件***,这样,当活动节点上的应用在运行过程中将对文件的更新写入复制子文件***后,备用节点上的应用可以在启动后直接访问共享存储设备中的更新数据。在这样的实施例中,不需要进行块复制,因此用于实现应用HA的装置中将不包括块复制器303。
以上描述了根据本发明的用于实现应用高可用性的装置及其各模块的示例性实现方式,应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该装置可具有不同的模块,且各模块可具有不同的实现方式。例如,在本发明的一些实施例中,该装置可不包括文件重定向器302和块复制器303,而是在监视到活动节点上应用对文件的更新后,直接将对文件的更新远程复制到备用节点上的相应文件。此外,可以将以上所描述的各模块和子模块及其功能进行不同的划分和组合。例如,所述应用启动器301中的应用管理器401、存储管理器402、IP切换器403、探测器404都可以是单独的模块,文件重定向器302的监视功能也可由单独的监视模块来完成。
本发明可以硬件、软件、或硬件与软件的结合的方式实现。本发明可以集中的方式在一个计算机***中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机***中。适于执行本文中描述的方法的任何计算机***或其它装置都是合适的。一种典型的硬件和软件的组合可以是带有计算机程序的通用计算机***,当该计算机程序被加载和执行时,控制该计算机***而使其执行本发明的方法,并构成本发明的装置。
本发明也可体现在计算机程序产品中,该程序产品包含使能实现本文中描述的方法的所有特征,并且当其被加载到计算机***中时,能够执行所述方法。
尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。

Claims (12)

1.一种用于实现应用高可用性的方法,其中应用分别被安装在第一节点和第二节点上,第一节点用作活动节点,第二节点用作备用节点,该方法包括:
在应用在活动节点上的运行过程中监视应用对文件的访问操作;
如果应用在对文件的访问操作过程中对文件进行更新,则将所监视的应用对文件的所述更新从活动节点复制到备用节点可访问的存储设备;
探测应用在活动节点上的运行;以及
响应于探测到应用在活动节点上的运行发生故障,将活动节点切换到第二节点,并启动第二节点上的应用,
其中,在第一节点上创建有第一子文件***并且第一专用块设备被挂接在第一子文件***上,在第二节点上创建有第二子文件***并且第二专用块设备被挂接在第二子文件***上,且该方法还包括:
将所监视的应用对文件的所述更新重定向到第一子文件***,
且所述将所监视的应用对文件的所述更新从活动节点复制到备用节点可访问的存储设备包括:
将第一专用块设备中的更新复制到第二专用块设备中,
其中,所述方法还包括判断应用是否为高可用性应用,且所述将所监视的应用对文件的所述更新重定向到第一子文件***以及将第一专用块设备中的更新复制到第二专用块设备中是响应于判断应用为高可用性应用执行的。
2.根据权利要求1的方法,其中所述将第一专用块设备中的更新复制到第二专用块设备是由挂接到操作***中的磁盘操作挂钩程序实现的,且每当将对文件的更新写入第一专用块设备时,该挂钩程序被启动。
3.根据权利要求1的方法,其中,所述将所监视的应用对文件的所述更新重定向到第一子文件***包括:
响应于所监视的应用对所述第一子文件***之外的文件的第一次更新,将该文件从所述第一子文件***之外复制到所述第一子文件***之内,并在内存中创建与所述第一子文件***之内的复制文件相关联的文件描述符的文件数据结构;以及
使用所述文件数据结构将所监视的应用对所述第一子文件***之外的文件的更新写入所述第一子文件***之内的复制文件。
4.根据权利要求1的方法,所述判断应用是否为高可用性应用包括:
响应于任何应用由一专用的启动器启动,将该应用的标识注册到注册列表中;
响应于接收到来自一应用的文件访问请求,判断该应用的标识是否在所述注册列表中;以及
响应于判断该应用的标识在所述注册列表中,判断该应用是高可用性应用。
5.根据权利要求1-2中任何一个的方法,其中,所述监视应用对文件的访问操作以及将应用对文件的更新重定向到所述第一子文件***是通过挂接到操作***的文件访问***调用的文件操作挂钩程序实现的。
6.根据权利要求1的方法,其中,所述应用分别安装在所述第一子文件***和所述第二子文件***中,且所述将所监视的应用对文件的所述更新重定向到第一子文件***包括:
将所监视的应用对所述第一子文件***之外的文件的访问操作重定向到第一子文件***。
7.一种用于实现应用高可用性的装置,其中,应用分别被安装在第一节点和第二节点,第一节点用作活动节点,第二节点用作备用节点,该装置包括:
监视模块,用于在应用在活动节点上的运行过程中监视应用对文件的访问操作;
复制模块,用于如果应用在对文件的访问操作过程中对文件进行更新,则将所监视的应用对文件的所述更新从活动节点复制到备用节点可访问的存储设备;
探测模块,用于探测应用在活动节点上的运行;以及
切换模块,用于响应于探测到应用在活动节点上的运行发生故障,将活动节点切换到第二节点,并启动第二节点上的应用,
其中,在第一节点上创建有第一子文件***并且第一专用块设备被挂接在第一子文件***上,在第二节点上创建有第二子文件***并且第二专用块设备被挂接在第二子文件***上,且该装置还包括:
重定向模块,用于将所监视的应用对文件的所述更新重定向到第一子文件***,
且所述复制模块用于:
将第一专用块设备中的更新复制到第二专用块设备中,
其中,所述重定向模块还包括:用于判断应用是否为高可用性应用的装置,且所述重定向模块将所监视的应用对文件的所述更新重定向到第一子文件***以及所述复制模块将第一专用块设备中的更新复制到第二专用块设备中是响应于判断应用为高可用性应用执行的。
8.根据权利要求7的装置,其中所述复制模块是由挂接到操作***中的磁盘操作挂钩程序实现的,且每当将对文件的更新写入第一专用块设备时,该挂钩程序被启动。
9.根据权利要求7的装置,其中,所述重定向模块用于:
响应于所监视的应用对所述第一子文件***之外的文件的第一次更新,将该文件从所述第一子文件***之外复制到所述第一子文件***之内,并在内存中创建与所述第一子文件***之内的复制文件相关联的文件描述符的文件数据结构;以及
使用所述文件数据结构将所监视的应用对所述第一子文件***之外的文件的更新写入所述第一子文件***之内的复制文件。
10.根据权利要求7的装置,所述用于判断应用是否为高可用性应用的装置包括:
用于响应于任何应用由一专用的启动器启动,将该应用的标识注册到注册列表中的装置;
用于响应于接收到来自一应用的文件访问请求,判断该应用的标识是否在所述注册列表中的装置;以及
用于响应于判断该应用的标识在所述注册列表中,判断该应用是高可用性应用的装置。
11.根据权利要求7-8中任何一个的装置,其中,所述监视模块和重定向模块是通过挂接到操作***的文件访问***调用的文件操作挂钩程序实现的。
12.根据权利要求7的装置,其中,所述应用分别被安装在所述第一子文件***和第二子文件***中,且所述重定向模块用于:
将所监视的应用对所述第一子文件***之外的文件的访问操作重定向到第一子文件***。
CN2009101275890A 2009-03-23 2009-03-23 实现应用高可用性的方法和装置 Active CN101847148B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN2009101275890A CN101847148B (zh) 2009-03-23 2009-03-23 实现应用高可用性的方法和装置
US12/728,302 US8195979B2 (en) 2009-03-23 2010-03-22 Method and apparatus for realizing application high availability
US13/462,039 US8433948B2 (en) 2009-03-23 2012-05-02 Method and apparatus for realizing application high availability

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101275890A CN101847148B (zh) 2009-03-23 2009-03-23 实现应用高可用性的方法和装置

Publications (2)

Publication Number Publication Date
CN101847148A CN101847148A (zh) 2010-09-29
CN101847148B true CN101847148B (zh) 2013-03-20

Family

ID=42738668

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101275890A Active CN101847148B (zh) 2009-03-23 2009-03-23 实现应用高可用性的方法和装置

Country Status (2)

Country Link
US (2) US8195979B2 (zh)
CN (1) CN101847148B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961804B2 (en) * 2001-07-20 2005-11-01 International Business Machines Corporation Flexible techniques for associating cache memories with processors and main memory
DE102005061394A1 (de) * 2005-12-22 2007-06-28 Robert Bosch Gmbh Fehlertolerantes Prozessorsystem
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8677055B2 (en) 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US8782651B2 (en) 2011-09-26 2014-07-15 International Business Machines Corporation Dynamically redirecting a file descriptor of an executing process by another process by optionally suspending the executing process
US9058348B2 (en) * 2012-01-30 2015-06-16 International Business Machines Corporation Method for building and maintaining trusted supplier records
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
CN103377060B (zh) * 2012-04-25 2015-10-21 腾讯科技(深圳)有限公司 一种计算机程序加速方法和***
CN102833096B (zh) * 2012-08-06 2016-06-29 杭州华三通信技术有限公司 一种低成本的高可用***实现方法及装置
CN103279308B (zh) * 2013-05-06 2016-04-06 深圳市深信服电子科技有限公司 远程应用接口的缓存方法及装置
CN106778245A (zh) * 2016-11-29 2017-05-31 北京元心科技有限公司 移动终端及其文件共享方法
US10671370B2 (en) * 2018-05-30 2020-06-02 Red Hat, Inc. Distributing file system states
CN110781038A (zh) * 2019-09-20 2020-02-11 苏州浪潮智能科技有限公司 一种基于端口号复制实现快速容灾的装置和方法
CN112165426A (zh) * 2020-10-15 2021-01-01 北京明朝万达科技股份有限公司 一种基于Linux***的文件发送方法、装置和***
CN112699086A (zh) * 2020-12-30 2021-04-23 北京明朝万达科技股份有限公司 一种基于Windows***的文件操作监控方法和装置
CN114338075B (zh) * 2021-11-10 2024-03-12 国网浙江省电力有限公司金华供电公司 基于广泛嗅探的攻击对象防御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1336589A (zh) * 2000-07-28 2002-02-20 国际商业机器公司 数据管理应用程序的故障恢复方法和***
CN1500243A (zh) * 2001-04-05 2004-05-26 �Ҵ���˾ 使用可移动存储器收集和恢复用户环境数据
US7383463B2 (en) * 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6854069B2 (en) 2000-05-02 2005-02-08 Sun Microsystems Inc. Method and system for achieving high availability in a networked computer system
US6865591B1 (en) 2000-06-30 2005-03-08 Intel Corporation Apparatus and method for building distributed fault-tolerant/high-availability computed applications
US20020154646A1 (en) 2001-03-21 2002-10-24 Dubois Jean F. Programmable network services node
US7246256B2 (en) 2004-01-20 2007-07-17 International Business Machines Corporation Managing failover of J2EE compliant middleware in a high availability system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1336589A (zh) * 2000-07-28 2002-02-20 国际商业机器公司 数据管理应用程序的故障恢复方法和***
CN1500243A (zh) * 2001-04-05 2004-05-26 �Ҵ���˾ 使用可移动存储器收集和恢复用户环境数据
US7383463B2 (en) * 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server

Also Published As

Publication number Publication date
CN101847148A (zh) 2010-09-29
US20120216070A1 (en) 2012-08-23
US8433948B2 (en) 2013-04-30
US8195979B2 (en) 2012-06-05
US20100241895A1 (en) 2010-09-23

Similar Documents

Publication Publication Date Title
CN101847148B (zh) 实现应用高可用性的方法和装置
CN112099918B (zh) 容器化环境中的集群的实时迁移
CN111338854B (zh) 基于Kubernetes集群快速恢复数据的方法及***
CN109344000B (zh) 区块链网络服务平台、恢复工具及其故障处理方法、存储介质
US11853816B2 (en) Extending the Kubernetes API in-process
CN102200921B (zh) 智能引导设备选择和恢复
JP5118243B2 (ja) 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現
CN102893256B (zh) 在无约束事务存储器(utm)模式中处置操作***(os)转换
US20190082004A1 (en) Systems and methods for instantiating services on top of services
US20120192207A1 (en) Pipeline Across Isolated Computing Environments
US20080109812A1 (en) Method for Managing Access to Shared Resources in a Multi-Processor Environment
CN103164254A (zh) 用于维持镜像虚拟环境中存储装置的一致性的方法和***
US11991094B2 (en) Metadata driven static determination of controller availability
US20100058319A1 (en) Agile deployment of server
US9148430B2 (en) Method of managing usage rights in a share group of servers
CN115103012B (zh) 一种地理空间信息微服务集成***及方法
CN113467882A (zh) 部署容器的方法及***
CN110764962A (zh) 日志处理方法和装置
CN101542433A (zh) ***处理器的透明替换
US11803448B1 (en) Faster restart of task nodes using periodic checkpointing of data sources
CN104636086A (zh) 一种ha存储设备、管理ha状态的方法
US20080052296A1 (en) Method, system, and article of manufacture for storing device information
US12013774B2 (en) Verification of core file debugging resources
CN115878269A (zh) 集群迁移方法、相关装置及存储介质
EP4390671A1 (en) Client software upgrading method and apparatus

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