用于存储系统中的软切换的方法和装置与流程

文档序号:12596738阅读:337来源:国知局
用于存储系统中的软切换的方法和装置与流程

本公开的实施例一般涉及存储系统,并且特别涉及一种用于存储系统中的软切换的方法和装置。



背景技术:

为了防范可能破坏数据可用性的事件,对数据而言具有冗余副本是至关重要的。复制(replication)是一种进程,在该进程中,使用快照(snapshot)技术在对文件应用和块应用的本地保护或者远程保护对数据进行复制。在源端的存储系统失效的情况中,这提供了增强级别的冗余。

软切换复制是用于对存储资源的灾难恢复的复制情况之一。软切换(同步失效转移)使得目标端存储资源的逻辑单元号(LUN)或者文件系统能够可用于所托管的存储资源而没有数据丢失。它逆转复制会话,从而在管理路径和数据路径上都可用并且完全参与整个进程的原始资源成为新的目标存储资源。

在复制进程中,从禁用主机数据访问的步骤开始到启用主机数据访问的步骤结束,系统将会禁止输入/输出(I/O)操作,即数据的写入和/或读取操作。当用户从系统得到快速和及时的反馈时,系统才被认为是有响应的。因此,通常应当在3秒内向用户命令提供反馈,但是现有的复制同步操作要求比3秒长得多的时间。当网络状况不佳时,将会花费更多的时间。为此,期望在存储阵列上的周转时间非常短。



技术实现要素:

鉴于现有技术中存在的上述问题,本公开的实施例的目的在于 提供一种用于存储系统中的软切换的方法和装置,以在源端离线或者被设置为只读之后并且目标端还没有就绪时处理用户对源端数据的访问操作。根据本发明的实施例的方法和装置可以帮助确保软切换完成而无需中止或者中断用户对数据的输入/输出操作,从而解决现有技术中的上述以及其他的问题。

根据本公开的实施例的第一方面,提供了一种用于存储系统中的软切换的方法。该方法包括:响应于软切换请求,将软切换的源端的数据设置为只读并且启动所述数据向软切换的目标端的复制进程;在所述源端记录在所述复制进程期间针对所述数据的更新操作,并且将所述更新操作同步记录到所述目标端;响应于所述复制进程的完成,在所述目标端利用所述同步记录的更新操作来更新所复制的数据;以及禁用对所述源端的数据访问并且启用对所述目标端的数据访问。

在一些实施例中,在所述源端记录在所述复制进程期间针对所述数据的更新操作,并且将所述更新操作同步记录到所述目标端包括:在所述源端还记录在所述复制进程期间写入的新数据,并且将所述写入的新数据同步记录到所述目标端。

在一些实施例中,在所述源端记录在所述复制进程期间针对所述数据的更新操作,并且将所述更新操作同步记录到所述目标端包括:在所述源端创建源端缓存并且在所述目标端创建目标端缓存,以用于在所述源端记录在所述复制进程期间针对所述数据的更新操作和写入的新数据并且同步记录到所述目标端。

在一些实施例中,在所述源端创建源端缓存并且在所述目标端创建目标端缓存,以用于在所述源端记录在所述复制进程期间针对所述数据的更新操作和写入的新数据并且同步记录到所述目标端包括:通过所述源端缓存来记录在所述复制进程期间针对所述数据的更新操作和写入的新数据,并且同步记录到所述目标端缓存。

在一些实施例中,所述源端缓存和所述目标端缓存在逻辑上通过互为镜像的数据结构来表示。

在一些实施例中,所述数据结构包括头部和主体,所述头部包括缓存指针和inode链,所述主体至少包括所述写入的新数据。

在一些实施例中,所述缓存指针至少存储所述inode链的入口地址,并且所述inode链存储记录所述更新操作的inode。

在一些实施例中,在所述源端记录在所述复制进程期间针对所述数据的更新操作,并且将所述更新操作同步记录到所述目标端包括:响应于针对所述数据或者所述写入的新数据的读取操作,从所述源端返回所述数据或者所记录的新数据。

在一些实施例中,启动所述数据向软切换的目标端的复制进程包括:根据所述复制进程的配置来确定软切换的目标端,并且配置所确定的目标端的存储空间以用于所述复制进程。

在一些实施例中,启动所述数据向软切换的目标端的复制进程包括:选择所述源端与所述目标端之间的内部连接,并且在所选择的内部连接上建立会话以作为用于所述复制进程的通信管道。

在一些实施例中,在所述目标端利用所述同步记录的更新操作来更新所复制的数据包括:将所记录的更新操作作为所复制的数据的最新快照。

在一些实施例中,禁用对所述源端的数据访问并且启用对所述目标端的数据访问包括:断开与所述源端的数据连接并且建立与所述目标端的数据连接。

根据本公开的实施例的第二方面,提供了一种用于存储系统中的软切换的装置。该装置包括:复制单元,被配置为响应于软切换请求,将软切换的源端的数据设置为只读并且启动所述数据向软切换的目标端的复制进程;记录单元,被配置为在所述源端记录在所述复制进程期间针对所述数据的更新操作,并且将所述更新操作同步记录到所述目标端;更新单元,被配置为响应于所述复制进程的完成,在所述目标端利用所述同步记录的更新操作来更新所复制的数据;以及切换单元,被配置为禁用对所述源端的数据访问并且启用对所述目标端的数据访问。

根据本公开的实施例的第三方面,提供了一种包括程序代码的计算机程序产品。所述程序代码在处理器上被执行时,可以促使所述处理器执行根据本公开的实施例的第一方面的方法。

根据本公开的实施例的第四方面,提供了一种存储系统。该存储系统可以包括根据本公开的实施例的第二方面的装置。

附图说明

通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例,其中:

图1示意性地示出了从源端到目标端的现有切换架构图;

图2示意性地示出了根据本公开的一个实施例的用于存储系统中的软切换的方法;

图3示意性地示出了根据本公开的一个实施例的用于源端缓存和目标端缓存的示例性数据结构;

图4示意性地示出了根据本公开的一个实施例的用于存储系统中的软切换的装置;

图5示意性地示出了根据本公开的一个实施例的软切换的拓扑结构;

图6示意性地示出了根据本公开的一个实施例的软切换代理模块的示例性结构图;

图7示意性地示出了根据本发明的一个实施例的软切换的示例性进程;

图8示意性地示出了可以用来实现本公开的实施例的示例性计算机系统/服务器的框图。

具体实施方式

下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域 的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。

图1示意性地示出了从源端到目标端的现有切换架构图。如图1中所示出的,在源端处,用户可以使用图形界面GUI或者命令行界面CLI通过CIC、HTTP、或TCP等协议经由存储处理器SP来与操作系统中的数据处理DP管理器进行交互。可替换地,用户也可以使用命令行界面CLI通过NBS或TCP协议来直接与DP管理器交互。在目标端处,用户可以使用GUI或者CLI经由存储处理器SP来与操作系统中的数据处理DP管理器进行交互。在源端处并且在目标端处,DP管理器可以与数据控制模块和复制引擎进行交互。

在复制进程中,源端的数据控制模块可以通过文件系统和iSCSI LUN取出要进行软切换的数据并且传送给源端的复制引擎。源端的复制引擎可以通过RCP、TCP IP等协议将该数据传送给目标端引擎。目标端引擎可以再将数据传送给目标端的数据控制模块,目标端的数据控制模块进而可以通过文件系统和iSCSI LUN将数据存储到目标端的存储空间。在复制进程期间,源端的数据处理管理器可以通过CIC、HTTP、TCP等协议来与目标端的数据处理管理器进行必要的通信。

一般而言,软切换的基本过程可以包括以下的步骤。首先,存储管理员可以选择要进行软切换的源端数据,系统可以执行一系列的内部同步,直到源端的存储资源未完成的复制少于100MB。第二,系统可以禁用对源端的数据的主机访问,对于文件存储资源而言,系统将源端数据设置为只读并且使得共享的文件夹服务器不激活。第三,系统可以执行到目标端的最终同步。第四,系统可以进行验证过程,包括验证源端处于只读状态、目标端处于读写状态、以及没有数据丢失。第五,系统可以逆转复制会话。最后,系统可以启用对目标端的数据的主机访问,即对于文件存储资源而言,系统将存储资源设置为读写并且使得共享的文件夹服务器激活。

如上文所讨论的,在复制进程中,从禁用主机数据访问的步骤 开始到启用主机数据访问的步骤结束,系统将会禁止对数据的输入/输出(I/O)操作。当用户从系统得到快速和及时的反馈时,系统才被认为是有响应的。因此,通常应当在3秒内向用户命令提供反馈,但是现有的复制同步操作要求比3秒长得多的时间。当网络状况不佳时,将会花费更多的时间。为此,期望在存储阵列上的周转时间非常短。

本公开的实施例可以在源端离线或者被设置为只读之后并且目标端还没有就绪时处理用户对源端数据的访问操作,帮助确保软切换完成而无需中止或者中断对数据的输入/输出操作,从而解决现有技术中的上述以及其他的问题。

图2示意性地示出了根据本公开的一个实施例的用于存储系统中的软切换的方法200。

如图2中所示出的,方法200在开始之后可以进入步骤201。在步骤201中,响应于软切换请求,将软切换的源端的数据设置为只读并且启动所述数据向软切换的目标端的复制进程。本领域的技术人员可以理解,软切换可以由于各种原因由各种相关的实体发起,诸如由于定期的冗余备份、存储管理员临时触发等等,本公开对此不进行限制。存储系统中的任何软切换都可以应用本公开内容的实施例所提供的方法200。

本领域的技术人员还可以理解,在进行步骤201的过程中,特别是在启动所述数据向软切换的目标端的复制进程之前,系统可能还需要进行与软切换相关联的复制准备工作,诸如内部同步、获取复制进程的参数、状态验证等。由于这些过程由本领域的技术人员所熟知,本公开对此不再赘述。

在一个实施例中,方法200还可以包括:根据所述复制进程的配置来确定软切换的目标端,并且配置所确定的目标端的存储空间以用于所述复制进程。在存储系统中,在准备进行软切换时,可能存在多个可用的候选目标端。因此,方法200可以根据复制进程的相关配置来最终确定进行软切换的目标端。在一个实施例中,方法 200还可以包括:选择所述源端与所述目标端之间的内部连接,并且在所选择的内部连接上建立会话以作为用于所述复制进程的通信管道。在存储系统中,在确定了进行软切换的目标端之后,在源端与目标端之间可能存在多个可用的候选内部连接。因此,方法200可以在这些可用的候选内部连接中选择出一个或者多个内部连接来进行软切换。进一步地,方法200可以在所选择的内部连接上建立连接会话,作为用于所述复制进程和/或其他数据同步的通信管道。

接着,方法200可以前进至步骤202。在步骤202中,在所述源端记录在所述复制进程期间针对所述数据的更新操作,并且将所述更新操作同步记录到所述目标端。在源端的数据被设置为只读之后,在复制进程完成之前,系统可能还会接收到来自用户的对这些被设置为只读的数据的更新操作,诸如对这些数据进行修改等。根据本公开的一个实施例,为了这些更新操作能够在被复制到目标端的数据上得以体现,方法200在源端对这些更新操作进行记录,并且同步记录到目标端,以便于在复制进程完成之后在目标端根据这些更新操作对所复制的数据进行更新。如此,在复制进程期间,用户对数据的更新操作不会被中断,因此没有受到软切换的影响,从而相比于现有的方法而言改进了用户体验。

在一个实施例中,方法200还可以包括:在所述源端还记录在所述复制进程期间写入的新数据,并且将所述写入的新数据同步记录到所述目标端。如上所述,在方法200中,针对源端已经被设置为只读的原有数据的更新操作可以被记录。除此以外,方法200还可以记录用户在复制进程期间写入的新数据,并且将写入的新数据同步记录到目标端。如此,在软切换完成之后,用户在这个复制进程期间写入的新数据也会体现在目标端。因此,在复制过程期间,从用户的视角来看,用户不仅可以对原有数据进行更新操作,还可以写入新的数据,进一步改进了用户体验。

在一个实施例中,方法200还可以包括:在源端创建源端缓存并且在目标端创建目标端缓存,以用于在源端记录在复制进程期间 针对数据的更新操作和写入的新数据并且同步记录到目标端。根据本公开的一个实施例,在源端对于上述更新操作以及写入的新数据的记录工作可以通过源端缓存来完成,而在目标端对于上述更新操作以及写入的新数据的同步记录工作可以通过目标端缓存来完成。因此,在进行上述记录和同步记录工作之前,方法200分别在源端和目标端创建源端缓存和目标端缓存,以用于在源端处记录在复制进程期间针对原有数据的更新操作和写入的新数据并且同步记录到目标端。

在一个实施例中,源端缓存和目标端缓存在逻辑上可以通过互为镜像的数据结构来表示。在一个实施例中,该数据结构可以包括头部和主体,头部可以包括缓存指针和inode链,主体至少可以包括写入的新数据。在一个实施例中,缓存指针可以至少存储inode链的入口地址,并且inode链存可以储记录更新操作的inode。

图3示意性地示出了根据本公开的一个实施例的用于源端缓存和目标端缓存的示例性数据结构300。

如上面所描述的,源端缓存和目标端缓存可以是存在于源端和目标端作为镜像的一种数据存储区域,在逻辑上可以通过数据结构300来表示。它们可以用于记录在源端的对数据的连续输入/输出I/O操作,并且将任何更新同步地镜像到远程的目标端。

如图3所示出的,示例性数据结构300可以包括头部310和主体320。头部301可以包括缓存指针311和inode链312。主体320可以包括源端基于ROFW(首写时重定向)技术所更新的数据(可以包括写入的新数据)以及必要的数据结构。

缓存指针311可以存储用于被更新的数据块的inode链312的入口地址,并且还可以包括指向源端数据的指针。在一个实施例中,除了系统预留的存储格(Cell)之外,缓存指针311可以起始于每个源端缓存或目标端缓存的第一个可用的存储格,缓存指针311的具体大小可以根据具体的存储环境和实际的需求进行确定。具体而言,缓存指针311可以由2N个存储格构成,存储格是操作系统访问源端 缓存或者目标端缓存的最小单元,即块存储(block device)中的一个块(block)空间或者文件存储(file device)中的一个页面(page)空间。比如,Linux访问文件存储的最小单元是4KB(即一个page),那么Cell大小就是4KB。也就是说,缓存指针311的大小=2N个Cell(N=0,1,2,…,并且N基于实施方式的要求),而Cell在块存储中是指1个block,在文件存储中是指一个page。

inode链312可以存储一系列的inode,这些inode可以使得用于源端缓存与原数据之间基于ROFW技术的更新的指针重定向。inode链312可以与高级快照功能使用相同的逻辑。

返回到参考图2,在一个实施例中,方法200还可以包括:响应于针对所述数据或者所述新数据的读取操作,从源端返回所述数据或者所记录的新数据。具体而言,在复制进程期间,用户可能还需要对正在进行复制的原有数据和在复制进程期间所写入的新数据进行读取的操作。由于原数据在复制期间仍然是可读的,并且用户所写入的新数据也已经被记录。因此,方法200可以根据相应的读取操作来返回用户所要读取的数据。如此,在复制进程期间,用户不仅可以进行对原有数据的更新操作和写入新的数据,还可以实现对原有数据以及所写入的新数据的读取操作。

继续参考图2,在步骤202之后,方法200可以前进至步骤203。在步骤203中,响应于所述复制进程的完成,在所述目标端利用同步记录的更新操作来更新所复制的数据。在复制进程完成之后,由于用户在复制进程期间可能对所复制的数据进行了更新操作,为了将这些更新操作体现在目标端所复制的数据上,方法200可以利用目标端同步记录的更新操作来更新所复制的数据。如此,在进行软切换之后,用户可以无缝地在原有更新操作的基础上继续对这些数据进行后续的读写操作。

在一个实施例中,方法200还可以包括:将所记录的更新操作作为所复制的数据的最新快照。在这个方面,更新操作可以基于快照技术来进行。方法200可以采用快照技术来记录这些更新操作, 从而在复制进程完成时,所记录的更新操作就是所复制的数据的最新快照。在目标端处,方法200将同步记录的所复制的数据的最新快照与所复制的数据进行关联,即实现了对所复制数据的更新操作。

接着,方法200可以前进至步骤204。在步骤204中,禁用对所述源端的数据访问并且启用对所述目标端的数据访问。在一个实施例中,方法200还可以包括:断开与所述源端的数据连接并且建立与所述目标端的数据连接,从而实现了禁用对所述源端的数据访问并且启用对所述目标端的数据访问。

在步骤204之后,方法200可以结束。

图4示意性地示出了根据本公开的一个实施例的用于存储系统中的软切换的装置400。

如图4中所示出的,装置400可以包括:复制单元401、记录单元402、更新单元403、以及切换单元404。根据本公开内容的实施例,复制单元401可以被配置为响应于软切换请求,将软切换的源端的数据设置为只读并且启动所述数据向软切换的目标端的复制进程。记录单元402可以被配置为在所述源端记录在所述复制进程期间针对所述数据的更新操作,并且将所述更新操作同步记录到所述目标端。更新单元403可以被配置为响应于所述复制进程的完成,在所述目标端利用所述同步记录的更新操作来更新所复制的数据。切换单元404可以被配置为禁用对所述源端的数据访问并且启用对所述目标端的数据访问。

在一个实施例中,记录单元402可以进一步被配置为:在所述源端还记录在所述复制进程期间写入的新数据,并且将所述写入的新数据同步记录到所述目标端。在一个实施例中,记录单元402可以进一步被配置为:在所述源端创建源端缓存并且在所述目标端创建目标端缓存,以用于在所述源端记录在所述复制进程期间针对所述数据的更新操作和写入的新数据并且同步记录到所述目标端。在一个实施例中,记录单元402可以进一步被配置为:通过所述源端缓存来记录在所述复制进程期间针对所述数据的更新操作和写入的 新数据,并且同步记录到所述目标端缓存。

在一个实施例中,源端缓存和所述目标端缓存在逻辑上通过互为镜像的数据结构来表示。在一个实施例中,数据结构包括头部和主体,所述头部包括缓存指针和inode链,所述主体至少包括所述写入的新数据。在一个实施例中,缓存指针至少存储所述inode链的入口地址,并且所述inode链存储记录所述更新操作的inode。

在一个实施例中,记录单元402可以进一步被配置为:响应于针对所述数据或者所述写入的新数据的读取操作,从所述源端返回所述数据或者所记录的新数据。

在一个实施例中,复制单元401可以进一步被配置为:根据所述复制进程的配置来确定软切换的目标端,并且配置所确定的目标端的存储空间以用于所述复制进程。在一个实施例中,复制单元401可以进一步被配置为:选择所述源端与所述目标端之间的内部连接,并且在所选择的内部连接上建立会话以作为用于所述复制进程的通信管道。

在一个实施例中,更新单元403可以进一步被配置为:将所记录的更新操作作为所复制的数据的最新快照。在一个实施例中,切换单元404可以进一步被配置为:断开与所述源端的数据连接并且建立与所述目标端的数据连接。

在下文中,参考图5-7,通过仅为示例的方式,将描述本公开的一种具体实施方式。本领域的技术人员将会理解,本公开的并不限于该具体实施方式中的具体细节,而是也可以采用不同于该具体实施方式的细节来实施。

图5示意性地示出了根据本公开的一个实施例的软切换的拓扑结构500。在图5中所示出的软切换的示例性拓扑结构500中,在远端和目标端分别形成了根据本公开的一个实施例的思想的软切换代理模块504和512,以用于实施根据本公开内容的用于存储系统中的软切换的方法。

在图5中所示出的示例性拓扑结构500中,源端的软切换代理 504可以放置在源端的数据路径管理器503与源端的复制引擎506之间。相应地,目标端的软切换代理512可以放置在目标端的数据路径管理器511与目标端的复制引擎514之间。系统中原有的模块使用虚线框来表示,而根据本公开的实施例新加入的模块,即源端软切换代理模块504和目标端软切换代理模块512以及源端缓存模块508和目标端缓存模块516,使用实线框来表示。各模块之间的交互过程在图5中可以使用箭头来表示,在软切换过程中已有的交互步骤由于对本领域的技术人员而言是熟知的,所以此处不再对这些交互操作进行赘述。

根据本公开的一个实施例,当软切换被调用时,源端的软切换代理504可以首先接收用户对源端数据输入/输出I/O操作。随后,源端缓存508和目标端缓存516可以被创建用于针对源端数据的连续的同步写入。然后,这两个缓存508和516可以接收来自源端的软切换代理模块504的对源端数据的同步输入/输出I/O操作,直到复制完成并且目标端的服务就绪。最后,在目标端数据路径建立之前,目标端的软切换代理模块512中对所复制的数据进行更新的模块可以将目标端缓存516作为目标端数据的最新快照。

图6示意性地示出了根据本公开的一个实施例的软切换代理模块600的示例性结构图。如图6中所示出的,软切换代理模块600可以包括映射管理模块610、连接管理模块620、以及数据传送模块630。

映射管理模块610可以保持源端与目标端之间的映射信息,它可以搜索目标端并且在数据传送之前建立源端与目标端之间的映射关系。如图6中所示出的,映射管理模块610可以包括目标端发现模块611和目标端选择模块612。目标端发现模块611可以用于根据当前的复制进程配置来发现并确定目标端。目标端选择模块612可以在确定目标端之后对目标端的存储空间进行配置。

连接管理模块620可以用于建立源端与目标端之间的内部连接。如图6中所示出的,连接管理模块620可以包括连接选择模块621 和连接管道模块622。连接选择模块621可以用于选择源端与目标端之间的内部连接并且完成为了在它们之间建立会话的准备工作。连接管道模块622可以用于在源端与目标端之间建立连接会话,该连接会话是源端与目标端之间的通信管道,该通信管道可以用于服务传送和数据同步。

数据传送模块630可以用于同步地将数据传送给源端缓存和目标端缓存。如图6中所示出的,数据传送模块630可以包括数据处置器631和缓存切换器632。数据处置器631可以用于处置所请求的输入/输出I/O操作,并且根据复制会话的状态返回来自源端或者目标端的数据。缓存切换器632可以用于将目标端缓存切换作为目标端资源的最新快照。

图7示意性地示出了根据本发明的一个实施例的软切换的示例性进程700。应当注意,进程700仅是本公开的一个实施例的一个示例性进程,本领域的技术人员可以根据具体的技术环境和技术要求以除了进程700之外的其他适当的方式来实施根据本公开的实施例的方法。

如图7中所示出的,进程700包括步骤a-k。在步骤a中,软切换代理模块可以选择复制进程的目标端。在步骤b中,软切换代理可以接收来自源端的软切换请求,包括与要进行的软切换相关联的参数等等。在步骤c中,软切换代理模块可以分别在源端和目标端创建源端缓存和目标端缓存以用于针对源端的连续的同步写入。在步骤d中,源端可以将数据(包括文件系统或者LUN)设置为只读并且使主机的数据访问脱离。在步骤e中,如果需要的话,源端可以在复制进程开始之前进行必要的同步数据操作。在步骤f中,系统可以执行到目标端的复制进程,同时源端缓存和目标端缓存从软切换代理接收记录了更新操作的同步的inode和数据输出/输出I/O操作,直到复制完成并且目标端的服务准备就绪。在步骤g中,系统可以从目标端所复制的数据和目标端缓存中准备最新的数据。在步骤h中,目标端缓存切换器可以将目标端缓存作为目标端数据的最 新快照。在步骤i中,软切换代理可以解除激活。在步骤j中,目标端可以建立数据路径。在步骤k中,目标端可以返回软切换请求。

图8示意性地示出了可以用来实现本公开的实施例的示例性计算机系统/服务器812的框图。应当注意,图8中所示出的计算机系统/服务器812仅是一种示例,不对本公开实施方式的功能和使用范围进行任何限制。

如图8中所示出的,计算机系统/服务器812以通用计算设备的形式表现。计算机系统/服务器812的组件可以包括但不限于:一个或者多个处理器或者处理单元816,系统存储器828,连接不同系统组件(包括系统存储器828和处理单元816)的总线818。

总线818表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机系统/服务器812典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器812访问的可用介质,包括易失性和非易失性介质,可移除的和不可移除的介质。

系统存储器828可以包括易失性存储器形式的计算机系统可读介质,例如存储器830和/或缓存器832。计算机系统/服务器812可以进一步包括其他可移除/不可移除的、易失性/非易失性计算机系统存储介质。尽管图8中未示出,可以提供用于对可移除非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移除非易失性光盘(例如CD-ROM、DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线818相连。存储器828可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施方式的功能。

具有至少一个程序模块842的程序/实用工具840,可以存储在例如存储器828中,这样的程序模块842包括但不限于:操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块842通常执行本公开所描述的实施方式中的功能和/或方法。

根据需要,计算机系统/服务器812也可以与一个或多个外部设备(例如显示设备824、存储设备814等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器812交互的设备通信,和/或与使得该计算机系统/服务器812能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口822进行。并且,计算机系统/服务器812还可以通过网络适配器820与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器820通过总线818与计算机系统/服务器812的其他模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器812使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

在对本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。

应当注意,本公开的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。

此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。

虽然已经参考若干具体实施例描述了本公开,但是应当理解,本公开不限于所公开的具体实施例。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1