虚拟化的分布式网络存储系统的制作方法

文档序号:6412119阅读:137来源:国知局
专利名称:虚拟化的分布式网络存储系统的制作方法
技术领域
本发明涉及数据存储,尤其是涉及计算机网络上的数据存储的分布。
背景技术
传统的网络计算机系统是由其每一个均具有操作系统的多个计算机、用于在计算机之间传送数据的网络、以及与至少一个计算机关联(attached)但并不是与网络直接关联的至少一个数据存储设备组成的。在这种系统中,在数据存储设备与该系统中的除了与该设备相关的计算机之外的计算机之间传送数据需要与该数据存储设备相关的计算机的操作系统投入一定量的时间以对数据传送进行处理。因为计算机的操作系统典型地是服务于来自在该计算机上所执行的各种应用程序(例如字处理应用程序)的请求,因此操作系统典型的仅可投入极少量的时间以对数据传送进行处理。
虽然网络上的数据传输速率相对很慢,但是该操作系统典型地可很快地服务数据传送请求以足以将网络上的任何可用时间用于该系统中的计算机之间的数据传送。换句话说,网络由于其传递速率相对很低,成为了与系统中的一个计算机有关的数据存储设备和该系统中的其它计算机之间传送数据的瓶颈。然而,随着用于网络的数据传输速率的提高,操作系统变成了瓶颈,因此当网络可用于将数据传送到数据存储设备或可用于来自数据存储设备的数据传送时,操作系统典型地服务于来自各种应用程序的请求。
为了避免操作系统瓶颈,已发展了直接关联到网络的数据存储设备,即网络数据存储设备。由于该直接关联,因此网络计算机系统中的任何计算机可直接与网络存储设备进行通信。
进一步出现的是分布式网络数据存储的发展,其中利用两个或更多个网络数据存储设备并且存在用于定义在物理上遍布该两个或更多个数据存储设备的逻辑卷(volume),即数据存储的单元的机制。因此,对网络计算机系统中的计算机而言,逻辑卷看起来是单个存储器设备。采用分布式网络存储器的网络计算机系统的示例是由下述组成的(a)两个光纤信道磁盘驱动器;(b)计算机;以及(c)便于在该驱动器与计算机之间进行数据传送的网络。该计算机包括用于每个驱动器的驱动器(可使操作系统与设备进行通信的程序)以及用于控制驱动器以便对遍布两个光纤信道磁盘驱动器的逻辑卷或虚拟卷进行定义的逻辑卷管理器。

发明内容
本发明是一种用于实现网络上的分布式网络数据存储且提供灵活性以实现其它功能的系统,所述其它功能诸如是缩放(scale)数据存储、对数据进行分段(stripe)、复制数据、移植数据、快照(snapshot)数据及提供共享存取的能力。
在一个实施例中,该系统包括存储服务器系统,而该存储服务器系统又包括为网络计算机系统中的应用客户机提供数据存储及数据传送能力的一个或更多个数据存储服务器。应用客户机是网络计算机系统中执行或将执行需要或者将可能需要数据存储及传送能力的特定应用程序(例如数据库管理程序)的计算机。数据存储服务器是由数据存储设备(例如磁盘驱动器)和网络接口组成的,该网络接口通过网络与应用客户机及管理存储服务器进行通信。
该系统进一步包括管理存储服务器系统,而该管理存储服务器又包括一个或更多个管理存储服务器,该管理存储服务器的每一个均提供与任何应用客户机和存储服务器系统有关的特定存储管理功能。管理数据存储服务器包括用于通过网络与应用客户机以及该存储系统中的存储服务器进行通信的网络接口。管理数据存储服务器进一步包括数据存储设备(例如磁盘驱动器或磁带驱动器)。
每个管理存储服务器包括用于协调存储服务器的操作的数据存储配置标识符。标识符的值可指示出在特定时间点时存储服务器系统之中的数据存储的分配。在一个实施例中,该值是时间戳。其它类型的值也是可用的。存储服务器系统之内的数据存储的分配包括对每一个都在一个或更多个存储服务器上分布的任意数目的虚拟卷或逻辑卷进行定义。每个管理存储服务器可为应用客户机提供用于标识符的第一值。例如,管理存储服务器为应用客户机提供标识符的第一值以作为数据存储到应用客户机的分配的一部分。此外,在存储服务器系统之中的数据存储的分配发生了变化之后,每个管理存储服务器可为每个存储服务器提供标识符的更新值。
存储服务器使用该标识符确定是否执行来自应用客户机的与数据相关的请求。具体而言,存储服务器从应用客户机所接收到的与数据相关的请求包括该应用客户机所拥有的数据存储配置标识符的最新值。该存储服务器对其所拥有的标识符的最新值和与所接收到的请求有关的标识符值进行比较。如果该值相同,那么应用客户机和存储服务器这两者均知道数据存储分配是相同的。在这种情况下,存储服务器继续进行对与数据相关的请求的处理。然而,如果存储服务器所拥有的标识符值和与该请求有关的标识符值不同,那么应用客户机和存储服务器均知道数据分配是不同的。换句话说,应用客户机是基于过时的数据存储分配来进行操作的。在这种情况下,存储服务器不继续进行对该请求的处理,因为这样做可能会破坏数据。在一个实施例中,存储服务器可引起产生错误,该错误通过网络而被提供给管理存储服务器。做为响应,管理存储服务器为应用客户机提供更新的标识符,该应用客户机其后可利用该更新的标识符以重试(retry)与数据相关的请求,如果希望的话。


图1是采用本发明的分布式存储系统的一实施例的网络计算机系统的方框图;图2是网络计算机系统的方框图,在该网络计算机系统中应用客户机是并行数据库服务器并且其中采用了本发明的分布式存储系统的实施例;图3A说明了在验证当对数据进行复制时一个存储服务器中的数据页面与另一个存储服务器中的数据页面的拷贝相同步中位屏蔽(mask)的使用;图3B说明了指示当对数据进行复制时一个存储服务器中的数据页面与另一个存储服务器中的数据页面的拷贝失调(desynchronized)的位屏蔽的使用;图4A-4C说明了将数据从一个卷中的页面移植到另一个卷中的页面上的分层机制的使用示例;图5A-5C说明了实现快照操作的分层机制的使用示例;图6说明了由管理存储服务器所执行的用于对存储服务器系统进行管理的处理的实施例;图7A说明了由与应用客户机有关的驱动器所执行的用于执行读操作的处理的实施例;以及图7B说明了由与应用客户机有关的驱动器所执行的用于执行写操作的处理的实施例。
具体实施例方式
图1说明了网络计算机系统10的一实施例,该网络计算机系统10采用在下文中称为系统12的分布式存储系统12的一实施例。网络计算机系统10包括(a)应用客户系统14,该应用客户系统14包括一个或更多个应用客户机16(即运行或将运行应用程序的计算机);(b)系统12;以及(c)网络18,该网络18用于在应用客户机16与系统12之间以及在系统12的元件之间传送通信。在示意性实施例中,网络18是千兆位以太网。然而,本发明也适用于或适合于其它类型的网络。
继续参考图1,系统12包括存储系统20,该存储系统20为应用客户机上所执行的应用程序提供数据存储能力。存储系统20包括一个或更多个存储服务器22。每个存储服务器22包括至少一个数据存储设备以及用于与网络18进行通信的至少一个接口。在一个实施例中,数据存储设备是磁盘驱动器。然而,其它数据类型的存储设备是可用的。例如,磁带驱动器是可用的。典型的,当存储服务器22是由多个数据存储设备组成的时,该设备全部具有相同类型(例如磁盘驱动器)。然而,可行的是也可使用不同类型的数据存储设备(例如磁盘驱动器和磁带驱动器、不同类型的磁盘驱动器、不同类型的磁带驱动器、或其组合)。
继续参考图1,系统12进一步包括管理存储服务器系统24,该管理存储服务器系统24提供了与应用客户机与存储系统20之间的数据传送有关的管理功能。管理存储服务器系统24包括一个或更多个管理存储服务器26。通常,希望具有用于容错的多个管理存储服务器26。每个管理存储服务器26包括至少一个用于与网络18进行通信的接口以及至少一个数据存储设备(例如磁盘驱动器或磁带驱动器)。此外,至少一个管理存储服务器26包括接口28,该接口28允许用户与服务器26相交互以实现与应用客户机16和存储系统20之间的数据传送有关的特定功能。在示意性实施例中,接口28是图形用户界面(GUI),该图形用户界面允许用户通过传统的监视器以及键盘或鼠标而与服务器26相交互。与其它类型的外围设备(例如打印机、光笔、声音识别等等)进行通信的其它类型的接口或网络协议也是可用的。还应该明白的是管理存储服务器与存储服务器和/或驱动器处于同一位置(co-located)。
继续参考图1,系统12进一步包括驱动器29,该驱动器与每个应用客户机16有关并且有助于应用客户机16与系统12之间的通信。应该明白的是存在使用驱动器29的替代选择。例如,可以使用外设组件互连(PeripheralComponent Interconnect,PCI)卡或主机总线适配器(HBA)卡。
每个管理存储服务器26包括与存储配置图有关的数据存储配置标识符,所述存储配置图在一时间点将存储系统20的组成以及存储系统20上的数据存储分配反映给各种应用客户机16。数据存储配置标识符具有当存储系统20的组合改变或系统20之中的存储器分配改变时也改变的值。在一个实施例中,标识符值是当发生变化时单调增加的逻辑时间戳。其它类型的逻辑时间戳也是可以的。例如,递减的逻辑时间戳以及其值以可预测的方式而变化的逻辑时间戳也是可以的。另外,除了逻辑时间戳之外的时间戳也是可用的。例如,可反映出实际时间的时间戳也是可用的。
存储配置图对存储系统20中的每个存储服务器22进行标识。此外,该图对每个逻辑卷或虚拟卷进行标识,即对分布在分配给特定应用客户机16的多个存储服务器22中的两个之间的多个数据存储进行标识。此外,该图还对每个逻辑卷或虚拟卷的划分进行标识,即每个存储服务器22提供多少该卷的数据存储。
当管理存储服务器26将存储系统20之中的数据存储分配给应用客户机16时,服务器26将数据存储配置标识符的已更新值提供给相关的应用客户机16,并且尤其是将数据存储配置标识符的已更新值提供给应用客户机16之中的驱动器29。该标识符与应用客户机发出的自存储系统20的数据传送的所有的请求相关联。管理存储服务器26还将标识符的更新值提供给每个存储服务器22。然而,管理存储服务器不能将更新值提供给其它应用客户机。因此,其它应用客户机具有反映出过时配置的标识符的过时值。
接收来自应用客户机的数据传送请求的每个存储服务器22使用该标识符值以防止数据被破坏。更详细地描述,每个存储服务器22包括比较器,该比较器对最近从管理存储服务器26所接收到的标识符值与附加到来自应用客户机的数据传送请求上的标识符的值进行比较。如果值不等,那么存储系统20的组成或者存储服务器系统20之内的存储器分配发生了变化。在这种情况下,因为如果执行传送则会出现数据的破坏或者,将不正确的数据提供给应用客户机,所以存储服务器22至少忽略该请求。在一个实施例中,存储服务器22将一错误消息返回给所处理的相关应用客户机或管理存储服务器26以便将已更新的标识符值提供给相关应用客户机。一旦相关应用客户机具有标识符的当前值,那么该应用客户机可重新发出数据传送请求或知道它必须获得新的配置。
如果比较器确定出附加在该请求上的标识符的值等于管理存储服务器最近提供给存储服务器的标识符的值,那么存储系统20的组成或者系统20之内的存储器分配没有变化。在这种情况下,存储服务器22对相关应用客户机所请求的数据传送进行处理。
缩放。可很容易对系统12进行缩放以增加或减少存储系统20中的存储服务器22的数目。更详细地描述,用户可使用与至少一个管理存储服务器26有关的接口28以提议对配置图做出修改,该修改涉及将存储服务器添加到存储系统20上或从系统20上去掉存储服务器22。如果管理存储服务器系统24中存在其它管理存储服务器26,那么将所提议的对该配置的修改提供给每个服务器26。每个服务器26都能够对所提议修改的效果进行评估并且提供表示同意或不同意该修改的“表决”。如果所提议的修改对执行特定存储功能的能力产生了不利影响,那么管理存储服务器提供不同意表决。例如,如果管理存储服务器使得来自应用客户机的数据复制到两个存储服务器上,每个服务器均具有一拷贝,那么在没有添加另一个存储服务器的情况下从存储服务器中去掉一个很可能是不能接受的。如果管理存储服务器系统24中的管理存储服务器26同意了所提议的改变,那么改变该配置图,实现该改变所需的存储系统20之中的存储器的任何重新分配、进行存储系统20之中的任何数据拷贝、以及将数据存储配置标识符的更新值发布到每个存储服务器。
分段。系统12可实现分段,也就是说对两个或更多个存储服务器22上的逻辑卷或虚拟卷进行划分。更详细地描述,用户可使用与至少一个管理存储服务器26有关的接口28以提议(a)用于应用客户机的存储系统20之中的逻辑卷或虚拟卷;以及(b)对存储系统20中的两个或更多个存储服务器22之间的这种卷进行划分。将所提议的逻辑卷以及所提议的对该卷的划分提供给每个管理存储服务器26以对其影响进行存取并且提供同意或不同意表决。如果管理存储服务器系统24中的管理存储服务器26同意所提议的逻辑卷以及对其的划分,那么改变配置图、实现该改变所需的对存储系统20之内的存储器进行的任何重新分配、进行存储系统20之中的任何数据拷贝、以及将该数据存储配置标识符的更新值发布给每个存储服务器。
共享存取。参考图2,现在对包括有分布式存储系统12并且可实现共享存取的网络计算机系统10′的实施例进行描述。网络计算机系统10′进一步包括一特定应用客户系统,即诸如Oracle并行数据库服务器系统这样的并行数据库服务器系统14′。并行数据库服务器系统14′包括两个或更多个并行数据库服务器16′,该两个或更多个并行数据库服务器16′在存储在或将存储在存储系统20上的卷中的数据库的管理中彼此协同操作。并行数据库服务器系统14′进一步包括分布式锁定管理器系统30,该分布式锁定管理器系统30又包括一个或更多个分布式锁定管理器32,所述每个锁定管理器32进行操作以将“锁定”发布给并行数据库服务器16′。所述锁定与存储在或将存储在被分配给存储系统20中的并行数据库服务器系统的卷中的数据库的不同部分有关。将锁定发布给一个并行数据库服务器16′可提供对相对于其它并行数据库服务器而言该锁定与其有关的数据库的不同部分的专用写存取或共享读存取。通过提供对仅仅一个并行数据库服务器16′的专用写存取,可防止两个服务器同时对数据库的相同部分进行更新的情况。
应该明白的是,虽然分布式锁定管理器30被描述为与并行数据库服务器16′相分离,但是在一个实施例中,可实现分布式锁定管理器30为使每个分布式锁定管理器30与并行数据库服务器16′之一相关。在该实施例中,每个分布式锁定管理器30对可便于与分布式存储系统12进行通信的驱动器29进行存取(通过与并行数据库管理程序相关的通用接口)。假定每个锁定管理器能够与至少一个管理存储服务器26进行通信,那么其它可实现的分布式锁定管理器30也是可行的。
每个分布式锁定管理器30进行操作以便监视已向其发布了锁定的并行数据库服务器、从而确定是否能够返回该锁定以便将该锁定能够被发布到另一个并行数据库服务器16′。在某些情况下,分布式锁定管理程序30进行操作以取消发布到第一并行数据库服务器16的锁定。例如,如果分布式锁定管理器30确定出与锁定所发布到的第一并行数据库服务器进行通信的通信链路不再是有效的或不再是可用的或者确定出第一并行数据库服务器出现了故障,那么分布式锁定管理器30取消发布到第一并行数据库服务器的锁定。在这样的情况下,分布式锁定管理器30将该锁定重新发布到第二并行数据库服务器。
将锁定发布到第二并行数据库服务器的问题在于,当拥有该锁定时,第一并行数据库服务器可能已发出了直到锁定被取消并发布到第二并行数据库服务器时存储系统20还没有处理的对存储系统20上的卷的写请求。例如,如果在取消该锁定并且将其重新发布到第二并行数据库服务器时的这段时间期间写请求仍在遍历网络,那么将出现这种情况。在这种情况下,存在第一和第二并行数据库同时对数据库的卷的相同部分进行更新的可能性,这样一种情况是所不希望的。
为了解决该问题,分布式锁定管理器32之一通过其驱动器29与锁定正被取消的管理存储服务器26之一进行通信。作为响应,管理存储服务器对“锁定”图进行更新。对该“锁定”图的更新使数据存储配置标识符的值被更新。在已对该标识符值进行更新之后,管理存储服务器将数据存储配置标识符的更新值提供给存储系统20中的每个存储服务器22。随后,管理存储服务器将一通信发布到分布式锁定管理器授权锁定管理器重新发布锁定。
将数据存储配置标识符的更新值提供给存储服务器22可防止存储服务器对第一并行数据库服务器所发出的写请求进行处理。更详细地描述,与该写要求相关的是管理存储服务器26之一先前提供给并行数据库服务器的数据存储配置标识符的特定值。然而,由于对数据存储配置标识符的更新,因此存储服务器22具有与写请求相关的标识符值不同的数据存储配置标识符的更新值。因此,如果存储服务器22之一接收到写更新,那么存储服务器中的比较器检测数据存储配置标识符的值的差异,并且由于该差异而至少忽略对该写更新的请求。
复制。用户可使用与至少一个管理存储服务器26相关的接口28以使来自应用客户机的数据复制在专用于该应用客户机的存储系统20的卷上,以便该数据的一个拷贝驻留在存储服务器22之一上并且将该数据的一个或更多个其它拷贝均驻留在其它存储服务器22之一中。该冗余提供了容错。用户通过经接口28适当修改配置图来指示对该数据进行复制。对配置图的更新引起对数据存储配置标识符的值进行更新。将数据存储配置标识符的已更新值提供给每个存储服务器22以及与该复制相关的应用客户机的驱动器29。驱动器29还具有配置图或定义要应用到应用客户机数据上的复制的其它信息,例如,数据拷贝要驻留其上的相关卷及存储服务器。
对数据进行复制的问题在于数据的拷贝会变得失调,也就是说这些拷贝彼此不再相同。例如,在服务器上发生更新之前,当对存储服务器22之一上的数据的第一拷贝进行更新,但是具有数据的第二拷贝的其它存储服务器22之一出现故障时,数据的拷贝变得失调。
利用数据要复制到其上的存储服务器中的位屏蔽设备(也被称为同步位)解决该问题,所述位屏蔽设备有时由管理存储服务器来询问并且由管理存储服务器来使用以确定拷贝是否变得失调并且采取补救措施。参考图3A,对于将数据的页面拷贝复制到服务器“0”以及服务器“1”上的这种情况说明位屏蔽设备的操作。数据页面是存储系统20的分配单元,典型的大小为兆字节的数量级,但是其它大小也是可行的。与服务器“0”相关的是两位的位屏蔽40,其第一屏蔽位与服务器“0”有关,并且第二位与服务器“1”有关。与服务器“1”相关的是两位的位屏蔽42,其第一屏蔽位与服务器“0”有关并且第二位与服务器“1”有关。当两个服务器上的数据页面拷贝同步时,两个位屏蔽中的每个位的值均是逻辑“1”,这也被称为“清除(clean)”条件。每当两个位屏蔽中的每个位的值不是“1”时,那么存在拷贝失调这样的可能性。总是将数据的页面拷贝视为与其本身相同步。因此,总是将位屏蔽40的位“S0”设置为逻辑1,并且将屏蔽42的位“S1”设置为逻辑1。
当与其数据将要被复制的应用客户机有关的驱动器29将写请求发布给服务器“0”时,那么该写请求包括清除位屏蔽值以及恢复屏蔽值。清除位屏蔽值是在服务器“0”对写请求进行处理之前将位屏蔽40的位所设置为的值。恢复位值是在确认了对写请求进行处理之后将位屏蔽40的位所设置为的值。在服务器“0”的写请求处理之前,清除位屏蔽值用于对位屏蔽40进行更新。一旦服务器“0”对服务器“0”的写请求进行了处理,那么服务器将具有权标(token)的确认发布给客户机应用。
类似的,由驱动器29发布给服务器“1”的写请求包括清除位屏蔽值以及恢复位屏蔽值。在服务器“1”的写请求处理之前,清除位屏蔽值用于对位屏蔽42进行更新。一旦服务器“1”对服务器“1”的写请求进行了处理,那么服务器将具有权标的确认发布给客户机应用。
一旦驱动器29接收到来自服务器“0”和“1”两者的确认,那么驱动器29将该权标包括在被发布到其上数据正在被复制的每个存储服务器的下一命令中。典型的,下一命令是发布到服务器“0”以及服务器“1”的写请求以复制数据。存储服务器“0”通过将位屏蔽40中的位值改变为恢复值,即“11”来响应其命令。存储服务器“1”通过将位屏蔽42中的位值改变为恢复值,即“11”来响应其命令。此时,每个位屏蔽40、42中的每个位值是相同的,即都是逻辑“1”。因此,服务器“0”和服务器“1”上的数据的页面拷贝是同步的,即彼此相同。
参考图3B,对其中位屏蔽40,42被用于对数据页面的两个拷贝已变得失调的情况进行标识的情况进行描述。失调的原因是在发布来自客户应用的写请求之前服务器“1”被认为是出现了故障(也就是说,不能对请求或命令进行处理)。因此,当应用企图对服务器“0”和“1”上的数据页面进行复制时,仅对服务器“0”上的数据进行更新。因此,当服务器“1”恢复联机时,服务器“1”上的数据的页面拷贝相对于服务器“0”上的数据的页面拷贝而言是“旧的”。
继续参考图3B,最初假定服务器“0”和“1”上的数据的页面拷贝相同步。因此,位屏蔽40,42中的每个位值是相同的,即均是逻辑“1”。在将写请求发布给服务器“0”和“1”以执行复制操作之前,管理存储服务器26之一认为服务器“1”有故障。有时至少一个管理存储服务器26将请求发布给至少一个存储服务器22以确定存储服务器是否是可操作的。如果服务器是可操作的,那么存储服务器在预定的时间内将使某种形式的应答或确认发送到发布请求的管理存储服务器。如果在预定的时间内未接收到应答或确认,管理存储服务器假定存储服务器有故障。在这种情况下,管理存储服务器对配置图进行更新、对数据存储配置图标识符的值进行更新、并且将该图以及标识符提供给应用客户机以及存储服务器22。因为应用客户机知道服务器“1”有故障,因此没有写请求被发布到存储服务器“1”。发布到服务器“0”的写请求包括清除位值以及恢复位值。然而,由于服务器“1”出现故障而造成的且反映在数据存储配置标识符中的变化的存储系统20的变化,恢复位值,与图3A中不同,被设置为“10”。
在接收到写请求之后但是在对写请求进行处理之前,服务器“0”将位屏蔽40中的位值设置为清除位值,即设置为逻辑“01”。此后服务器对该写请求进行处理并且将包括有权标的确认发送到应用客户机。服务器“0”从应用所接收到的下一命令包括该权标。作为响应,服务器“0”将位屏蔽40的位修改为在伴随写请求的恢复位值中指定的恢复值,即逻辑“01”。此时,因为位屏蔽40,42中的每个位值不能为相同值(将位屏蔽40设置为“10”),因此位屏蔽反映出失调状态。至少一个管理存储服务器26对位屏蔽进行监视并且检测对数据的页面拷贝失调的指示。在管理存储服务器检测到该状况之后,管理存储服务器典型地采用补救措施。在这种情况下,管理存储服务器使服务器“0”上的数据的页面拷贝被写入到服务器“1”中,由此使数据的拷贝重新同步。应该明白的是位屏蔽可用于对其它原因所造成的失调进行检测。
参考图3A和3B所描述的位屏幕设备能够延伸至可适用于更多拷贝数目。此外,应该明白可以使用与参考图3A和3B所描述中的位值相反的位值。
移植。用户可使用与至少一个管理存储服务器26有关的接口28以将一个逻辑卷上的数据移植到另一个逻辑卷。这是通过建立使用“透明(translucent)”分层机制而完成的。更详细地描述,在用户开始或定义要发生的数据移植之后,管理存储服务器保存与其数据将要被移植的卷(旧卷)有关的数据存储配置图的部分,将这部分图标识为层,并且指令该层作为第一层或旧的层。此后对该数据存储配置图进行更新以反映出新的数据存储配置,并且尤其是对数据所要移植到的逻辑卷(新卷)进行标识。这使得数据存储配置标识符的值被更新。将新图以及标识符的值分配给存储服务器22以及相关应用客户机中的驱动器29。此外,将与数据所要移植到的新卷有关的配置图的部分标识为一层并且指令该层作为第二层或新层。
在定义及指令分层之后,通过两个可能的机制而使数据从旧卷移植到新卷。第一,至少一个管理存储服务器26主动地监视第一层或旧层中的每个页面以确定与旧卷中的每个页面有关的数据是否已移植到新卷。如果发现了其数据还未被移植到新卷的页面,那么管理存储服务器使来自旧卷的页面中的数据被读取,然后将该数据写入到新卷中,并且将旧卷中的页面标记为“删除”。当应用客户机努力写入新卷的一页面时,则发生用于将数据从旧卷移植到新卷的第二机制。在这种情况下,驱动器29在发布与该页面有关的写请求之前询问新的层以确定新层中的页面是否已接收到来自旧卷相应页面的数据。如果没有接收到,那么驱动器29可“看穿”涉及要对其写入数据的页面的新层的“透明”部分直到旧层,并且可“看到”仍未对相应页面从旧卷中移植数据。在这种情况下,驱动器29使从旧卷页面中读取数据,然后将该数据写入到新卷中,并且将旧卷中的页面标记为“删除”。此外,在旧卷页面中的数据已移植到新卷之后,驱动器29发布此后可使数据写入到新卷页面上的写请求。
通过在页面的数据已移植之后将旧卷每个页面标记为删除,可提供防止对移植产生不利影响的情况的机制。更详细地描述,在相同时段内并且当页面的数据仍未从旧卷中移植时,两个客户机应用程序试图写入新卷的页面是可能的。在这种情况下,与每个应用客户机有关的驱动器29努力使数据从旧卷页面移植到新卷的相应页面。与一个应用客户机有关的驱动器29将成功地使该页面的数据移植并且可通过写请求来对新卷页面中的数据进行更新。在没有附注标记的情况下,与另一个应用客户机有关的驱动器29不会知道该页面的数据已移植并且努力使该数据移植到新卷的相应页面。如果发生了这种情况,则另一个应用客户机所移植的数据可能覆盖通过由最初使数据移植的应用客户机发布的写请求而在该页面中建立的新数据。为了避免这种可能性,在采取任何措施以使数据移植之前,驱动器29对旧层的相关页面进行检查以确定该页面的数据是否已移植。如果该页面的数据已移植,那么驱动器29放弃当前的写请求并且重试写请求。
在旧卷每个页面的数据已移植到新卷之后,删除旧层。
参考图4A-4C,对移植的示例进行描述。图4A说明了在旧卷的任何数据移植到新卷之前由六个页面(0-5)所组成的旧卷以及新卷,并且旧卷的每个页面中有数据(A-E)。为了实施该移植,进一步将旧卷标识为层并指令为第一层或旧层。因为此时数据存在于旧卷的每个页面中,因此不存在与旧层相关的“透明性”。也将新卷标识为层并指令为第二层或新层。因为此时在新卷的任何页面中不存在数据,因此存在与新层每个页面相关的“透明性”。该“透明性”可使与应用客户机相关的驱动器“看到”页面的数据存在于第一层或旧层中。
图4B说明了在旧卷页面“1”中的数据(B)移植到新卷的页面“1”之后的旧卷和新卷。此时,不再存在与新层的页面“1”相关的任何“透明性”,这表明旧卷页面“1”中的数据已移植到新卷的页面“1”。仍存在与新层的其它页面相关的“透明性”,这意味着旧层相应页面的数据还未移植。应该注意的是旧层的页面“1”由于移植现在被标记为删除,由“X”表示。
图4C说明了在旧卷每个页面的数据已移植到新卷相应页面之后的旧卷和新卷。此时,不再存在与新层相关的任何“透明性”,这表明旧卷所有页面的数据均已移植到新卷。此外,旧层的每个页面由于已完成的移植现在被标记为删除。因此,不再需要旧层并且可删除旧层。
应该明白的是透明的分层机制可被延伸至需要附加层的多个移植。
快照。快照保留了特定时间点时的卷的状态,同时还可使所保留的卷即所快照的卷的页面数据移植到其中页面可以由多个应用客户机之一更新的新卷。为了保留所快照卷的状态,新卷不能与所快照的卷重叠。
用户可使用与至少一个管理存储服务器26有关的接口28以引起快照。一旦已开始了快照,那么管理存储服务器26建立与就移植处理所描述的机制相同的透明分层机制以便于使所快照卷的数据移植到新卷。通过使页面的数据移植作为从与应用有关的驱动器29发布的写请求的前奏而实现移植。然而,与移植处理形成对比,在使页面的数据从快照卷移植到新卷之后,不将快照卷上的页面标记为删除。因此,保留快照卷页面上的数据。
参考图5A-5C,对快照的示例进行描述。图5A说明了在快照卷的任何数据移植到新卷之前由六个页面(0-5)所组成的快照卷以及新卷,并且快照卷的每个页面中有数据(A-E)。为了实施该移植,进一步将快照卷标识为层并指令为第一层或旧层。因为此时数据存在于快照卷的每个页面中,因此不存在与旧层相关的“透明性”。也将新卷标识为层并指令为第二层或新层。因为此时在新卷的任何页面中不存在数据,因此存在与新层每个页面相关的“透明性”。该“透明性”允许与应用客户机相关的驱动器“看到”页面的数据存在于第一层或旧层中。
图5B说明了在快照卷页面“1”中的数据(B)已移植到新卷的页面“1”之后的快照卷和新卷。此时,不再存在与新层的页面“1”相关的任何“透明性”,这表明快照卷页面“1”中的数据已移植到新卷的页面“1”。仍存在与新层的其它页面相关的“透明性”,这意味着快照层相应页面的数据还未移植。应该注意的是移植之前快照卷页面“1”中的数据仍在快照卷的页面“1”中并且不能改变它。然而,已移植到新卷页面“1”中的数据可以被修改。
图5C说明了在快照卷每个页面的数据已移植到新卷相应页面之后的快照卷和新卷。此时,不再存在与新层相关的任何“透明性”,这表明旧卷所有页面的数据均已移植到新卷。此外,应该注意的是移植操作之前的快照卷每个页面中的数据仍存在且在移植结束后处于相同位置。因此,快照保留了特定时间点的初始卷的状态。快照卷每个页面中的数据也已移植到新卷并且作为对由应用客户机所发布的写请求进行处理的结果新卷的页面可以被修改。
管理存储服务器处理。参考图6,管理存储服务器每一个均执行具有两个主任务的处理在存储服务器出现故障或重新启动之后使数据重新同步;以及移植一卷数据。该处理具有两个阶段。第一个阶段涉及对卷及需要进行重新同步或移植的卷内的页面进行定位。管理存储服务器首先检查其对当前所管理的卷的配置图的设置。由此,服务器确定因为卷处于被移植到不同组存储服务器的处理中、或者因为用于存储卷数据的至少一个存储服务器已故障并且然后重新启动但是仍未完全重新同步哪些卷需要一些工作。在确定了需要工作的那组卷之后,此后管理存储服务器或随机的或根据某种优先级而选取其中之一。此后管理存储服务器请求每个存储服务器列举与移植或重新同步标准相匹配的若干固定数目的页面。管理存储服务器积累这些页面,丢弃复本。此后对于该处理的第二个阶段,一个接一个的或者可能几个并行地对页面从头至尾进行管理。
对于每个页面,管理存储服务器首先请求与相关存储服务器中的卷相关的所有层中页面的所有拷贝的状态。如果任何层中的页面的任何拷贝具有表示不同拷贝可以包括不同数据的同步位,那么选择该页面的这些层以使其重新同步。如下对它们进行重新同步。管理存储服务器选取被称为“权威(authoritative)拷贝”的一个服务器中的页面拷贝并且读取该拷贝的内容。管理存储服务器必须按照它们都选取相同拷贝以作为权威的方式来选取权威拷贝。这样做的一种方法是将选择基于配置图中的信息,但是其它方法也是可行的。在读取权威拷贝之后,此后管理存储服务器将页面的内容写入到那层的页面的其它拷贝中。此后管理存储服务器通过设置它们的同步位来将该页面的所有拷贝标记为清除。此时管理存储服务器暂时完成了对页面的处理(页面上可能仍存在一些额外工作要做,但是在这种情况下存储服务器将再次列举页面)。
如果没有页面的拷贝需要重新同步,但是存在需要移植的拷贝,那么管理存储服务器执行下列步骤。首先,管理存储服务器确定哪个层将是源层并且哪个层将是目的层。此后管理存储服务器从源层中读取一个拷贝。管理存储服务器将该数据写入到目的层的所有拷贝中。此后管理存储服务器通过设置它们的同步位来将目的层上的所有拷贝标记为清除。最后,管理存储服务器请求删除源层上的所有拷贝。此时,管理存储服务器完成了移植页面。
该处理自始至终的各个步骤,存储服务器可以产生指示管理存储服务器正在使用过时的数据存储配置标识符的值的错误。如果发生了这种情况,那么管理存储服务器重新开始该处理。如果在该处理期间发生了任何通信错误或该卷的配置图的任一方面发生变化,那么管理存储服务器也重新开始该处理。
客户机驱动器读取处理。参考图7A,驱动器29完成处理以读取卷的数据页面的一部分。该处理只有在驱动器对于该驱动器正在存取的卷已从管理存储服务器接收到当前配置图的拷贝以及数据存储配置标识符的值之后才开始。驱动器起始于最高层并且选取要从中读取的该层中的页面的一个拷贝。驱动器可以以任何方式来选取要读取的拷贝,包括随机的或根据性能负载量度(设法选取最小负载的存储服务器)。如果数据存在于该层中,那么驱动器将其所读取得数据返回至操作系统。否则,驱动器一层接一层的前进,试图读取每个层中的页面数据。如果驱动器到达最后一层而没有定位任何有效拷贝,那么驱动器将数据返回操作系统,好象存在数据,但是全部为零(“0”)。如果发现任何拷贝由于同步位的状态而可能是不同步的,那么驱动器通过读取“权威拷贝”、写入到该层的所有其它拷贝、将同步位设置为全部为1(“1”)、并且此后重新开始该处理而使该数据重新同步。如果在任何时候存储服务器在对请求的应答中指示驱动器所使用的数据存储配置标识符的配置值是旧的,那么驱动器从管理存储服务器请求新配置图并且重新开始该处理。如果管理存储服务器将新的配置图发送给驱动器、如果驱动器遇到了被标记为先前已经存在但是此后将被删除的页面、或者如果存在任何通信错误,那么该处理也重新开始。
驱动器写入处理。参考图7B,驱动器29执行处理以将数据写入到卷中页面的一部分。该处理只有在驱动器从管理服务器接收到驱动器的第一个配置图以及数据存储配置标识符之后才开始。
该处理首先将数据写入到最高或最近层的页面的所有拷贝中。如果所有的写入成功,那么此后驱动器将成功完成返回给操作系统。如果最高层中不存在任何拷贝,那么驱动器进行对向下层的扫描以寻找所有层中的数据的最上拷贝。如果数据不同步,那么驱动器使数据重新同步(使用与上述读取处理相同的步骤)。如果页面不存在于任何层中,那么将零写入到最上层的所有拷贝中,设置所有拷贝中的同步位,并且该处理重新开始。否则,选择最上层中的数据的一个拷贝,驱动器读取全部页面,将该驱动器写入到最高层的所有拷贝中,设置最高层中的同步位,并且此后重新开始该处理。
与其它处理中一样,如果存储服务器对任何请求应答驱动器的配置ID是旧的,那么客户机驱动器从管理存储服务器请求新配置图以及数据存储配置标识符并且此后重新开始该处理。如果管理存储服务器将新的配置图发送给驱动器,如果驱动器遇到被标记为先前已存在但是此后被删除的页面,或者如果存在任何通信错误,那么该处理也重新开始。
权利要求
1.一种用于实现计算机网络上的分布式网络数据存储的系统,该系统包括存储服务器系统,包括一个或更多个存储服务器,该存储服务器的每个都包括数据存储设备和网络接口,该网络接口用于与需要数据存储的应用客户机以及管理存储服务器进行通信;以及管理存储服务器系统,包括一个或更多个管理存储服务器,每个管理存储服务器包括网络接口,用于与需要数据存储的应用客户机以及所述一个或更多个存储服务器之一进行通信;其中所述管理存储服务器的每一个包括数据存储配置标识符,该数据存储配置标识符的值表示在一时间点上所述存储服务器系统内的数据存储的分配;其中所述存储服务器系统内的数据存储分配包括对一个或更多个所述存储服务器上所分布的数据存储的一个或更多个虚拟卷进行定义;其中所述管理存储服务器的每一个都能够将所述数据存储配置标识符的第一值提供给应用客户机;其中在所述存储服务器系统内的数据存储分配发生了变化之后,所述管理存储服务器的每一个都能够将所述数据存储配置标识符的第二值提供给所述存储服务器的每一个;其中所述存储服务器的每一个都包括比较器,该比较器能够比较(a)与从应用客户机所接收到的数据存储相关请求关联的所述数据存储配置标识符的第一值和(b)所述数据存储配置的所述第二值,并且(c)如果所述第一值与所述第二值不相等,那么忽略所述数据存储相关请求。
2.如权利要求1所述的系统,进一步包括驱动器,用于与应用客户机的操作系统相关联;其中所述驱动器能够将所述数据存储配置标识符的所述第一值与要经网络发送到所述存储服务器的数据存储相关请求相关联。
3.如权利要求1所述的系统,其中所述一个或更多个管理存储服务器的每一个包括配置图,该配置图能够标识所述存储服务器系统的所述一个或更多个存储服务器,所述一个或更多个管理存储服务器的每一个包括接口,该接口允许用户改变所述配置图以添加或去掉存储服务器。
4.如权利要求1所述的系统,其中所述一个或更多个管理存储服务器的每一个包括配置图,该配置图能够(a)标识所述存储服务器系统的所述一个或更多个存储服务器;(b)标识遍布两个或更多个所述存储服务器的虚拟卷;以及(c)标识两个或更多个所述存储服务器之间的所述虚拟卷的划分;以及所述一个或更多个管理存储服务器的每一个包括接口,该接口允许使用户改变所述配置图以定义所述虚拟卷的所述划分。
5.如权利要求1所述的系统,其中所述一个或更多个管理存储服务器的每一个均包括配置图。
6.如权利要求1所述的系统,其中所述一个或更多个管理存储服务器的每一个均包括配置图。
7.如权利要求1所述的系统,其中所述一个或更多个管理存储服务器的每一个均包括配置图。
8.如权利要求1所述的系统,其中所述一个或更多个管理存储服务器的每一个均包括配置图。
9.如权利要求1所述的系统,其中所述数据存储配置标识符的所述值是时间戳。
10.如权利要求9所述的系统,其中所述时间戳包括逻辑时间戳。
11.如权利要求1所述的系统,其中所述数据存储设备包括磁盘驱动器。
全文摘要
本发明公开了一种用于实现计算机网络上的分布式数据存储的系统,该数据存储系统的一个实施例包括由一个或更多个存储服务器组成的存储服务器系统,所述存储服务器的每一个都提供数据存储;由一个或更多个管理服务器组成的管理服务器系统,所述管理服务器的每一个都提供与存储服务器系统有关的管理功能;以及驱动器,该驱动器与使用该数据存储系统的每个应用客户机相关联。数据存储配置标识符结构用于对存储系统与应用客户机之间的数据传送进行管理,数据存储配置标识符结构的值在存储系统的组合或者存储系统内的存储分配发生变化时被更新。
文档编号G06F13/10GK1662903SQ03815013
公开日2005年8月31日 申请日期2003年5月30日 优先权日2002年5月31日
发明者马克·G·海登 申请人:莱夫特汉德网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1