CN101506779A - 生成存储系统命令 - Google Patents
生成存储系统命令 Download PDFInfo
- Publication number
- CN101506779A CN101506779A CNA2007800311155A CN200780031115A CN101506779A CN 101506779 A CN101506779 A CN 101506779A CN A2007800311155 A CNA2007800311155 A CN A2007800311155A CN 200780031115 A CN200780031115 A CN 200780031115A CN 101506779 A CN101506779 A CN 101506779A
- Authority
- CN
- China
- Prior art keywords
- command
- group
- memory
- storage
- subregion
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Abstract
提出了用于生成存储系统命令的系统和方法。逻辑卷包括一个或多个存储区。该方法包括根据与组成该卷的存储区的类型相关的信息来提供逻辑卷的图。通过与逻辑卷中的存储区的类型相关联的命令处理器,将引用逻辑卷图的存储命令转换为存储区命令。存储系统包括通过利用与逻辑卷相关联的命令堆栈来访问存储区的客户机。
Description
本申请代表于2005年8月16日提交的,题为“DisaggregatedResources and Access Methods”的共有美国专利申请11/205,895号的部分续案。
技术领域
本发明的领域涉及生成用于存储设备的命令。
背景技术
虚拟化的存储系统为客户机提供对多个物理存储设备的访问,就像它们包括单个逻辑卷一样。一些存储系统以分布的方式运行,其中客户机直接访问物理存储设备,而不需要专用的管理服务器。Zetera公司的Z-SANTM技术代表了这样一种允许客户机直接与物理存储设备交互的实现方式。
虚拟存储系统应当为客户机提供对数据存储的鲁棒访问。当系统动态改变时,如果多个客户机能够共享对系统的访问,可认为系统是鲁棒的。另外,系统应当允许客户机相互独立地运行,并且还应当允许物理存储设备相互独立地运行。当独立的客户机可以适应系统中的改变,而不需要来自其它客户机的信息时,它们的效率是最高的。例如,在虚拟存储系统中共享一个逻辑卷的两个客户机可以有该逻辑卷的不同视图。有时一个客户机可以看到与该逻辑卷相关联的物理存储设备,而另一个客户机可能看不到相同的物理设备;然而,该逻辑卷仍然可以对两个客户机都有用。如果逻辑卷在不同的物理设备上包括冗余数据,则两个客户机仍然都可以对该逻辑卷进行读访问,而写访问可能需要限制以防止数据变得不同步。
客户机应当具有发现虚拟存储系统的要素的能力,其中要素包括逻辑设备、物理存储设备、分区、代理、服务,或虚拟存储系统的其它组件。在2005年8月16日提交的题为“Disaggregated Resources andAccess Methods”的共有美国专利申请11/205,895号中,描述了虚拟存储系统要素的发现,通过引用将该申请整体地结合于本文中。引用的申请描述了发现包括虚拟存储系统的逻辑设备的图的方面。这些图也可随着虚拟存储系统的改变而改变。与发现虚拟存储系统的图一起,虚拟存储系统还应当提供一种用于在动态环境中,特别是其中客户机或设备可以不通知地出现或消失的动态环境中,生成存储命令的方法。因为改变发生在虚拟存储系统的卷级视图之下,与逻辑卷相关联的高级存储命令可能没有必要随着虚拟存储系统或逻辑卷的改变而改变。然而,以物理设备为目标的低级存储命令更有可能为了反映系统的更新而改变。在所考虑的动态环境中需要解决这些和其它问题。
用于生成存储命令的优选的解决方案应当提供以下功能:
命令生成应当处理共享的存储区的部分对于一些客户机不可见,而对于其它客户机可见的情况。
客户机应当能够访问这样的数据集:即使存储数据集的逻辑卷的部分丢失,该数据集还是连贯的;就像丢失的物理设备镜像了一些数据那样。
系统应当扩展到具有更多数量的客户机或存储设备的更大配置,而没有必要引入额外的设备来管理存储服务。
应当以支持与包括RAID组的逻辑卷相关联的存储组类型的异构混合的方式来生产命令。
命令生成系统应当与命令传输无关,并且应当在包括采用标准协议或专用协议的环境的多种存储环境中工作。
其它人已经提到了虚拟存储的不同方面,包括在动态环境中处理逻辑卷的改变。例如,题为“Distributed network system withvirtualization”的美国专利第6,732,171号和同样题为“Distributednetwork system with virtualization”的美国专利申请第2005/00144199号通过使用存储在存储服务器和管理服务器上的存储配置标识符来教导存储虚拟化。这些标识符是时间标记,其在应用客户机和存储系统之间交换,以便指示存储系统的存储配置或分配中的改变发生的时间。当标识符改变时,应用客户机可随后更新他们的存储系统的视图。然而,这些引用文献并不教导存储系统应当如何通过与存储系统中的存储区域类型相关联的命令处理器(Commander Handler,CH)来生成命令。
除了以上引用文献,下面的引用文献反映了生成用于与不同的存储介质相关联的虚拟存储系统的图的不同的方法:美国未决专利申请2005/0270856、2005/0246401、2003/0172157、2003/0023811;以及已授权的美国专利6,775,673、6,755,672、6,772,161、6,732,230、5,758,050和5,129,088。尽管这些引用文献解决了它们要解决的特定问题,它们并没有解决利用作为组成逻辑卷的存储组类型的函数而建立的逻辑卷的图来生成存储命令的问题。在某些情况下,引用文献描述了命令或命令集,但是还没有教导如何生成命令。
因此,对于能够随着存储环境改变生成存储命令的虚拟存储中的方法和设备的需求还是很可观的。
发明内容
本发明主题涉及生成用于存储系统的命令的系统和方法。该存储系统具有一个或多个逻辑卷,其中逻辑卷包括第一存储设备上的第一存储区和第二存储设备上的第二存储区。通常存储区包括分区。该方法包括:根据与第一或第二存储区的存储区类型相关联的信息来提供逻辑卷的图。特别优选的实施例包括第一存储区类型不同于第二存储区类型的那些实施例。该方法还包括:根据存储区类型将命令处理器结合到逻辑卷的图中。命令处理器将以逻辑卷为目标的存储命令转换为以存储区之一为目标的存储命令。其它的实施例包括这种能力:当接收到逻辑卷已改变的指示时,通过更新图而对逻辑卷的改变进行响应。当生成命令时,一些实施例将根据图中的卷地址而引用的数据地址转换为根据存储区地址而引用的数据地址。
术语说明
以下说明涉及在本文中使用的术语。提供这些术语是为了在讨论本发明主题的不同方面时确保清楚,而不是意味着进行限制。
术语“存储组”表示一个或多个存储区的组,其提供一种其中存储区包括相关的分区或分区组的存储功能性。存储功能性包括RAID功能、跨接、提供奇偶校验,或与访问数据相关的功能性。
术语“存储命令”表示与数据访问相关并以存储区为目标的命令。存储命令通常包括描述存储命令的若干参数,这些参数包括数据地址、数据请求大小,或用于存储与命令相关联的数据的缓存。其它可能的参数包括存储区标识符、要执行的命令的指示,或其它在处理存储命令时有用的信息。在优选实施例中,数据地址是逻辑块地址(LBA)。缓冲用于在进行写时存储数据,或者用于在进行读时接收数据,并且缓存具有至少足以存储数据请求大小的空间。通常通过到存储器区的指针来引用缓存。存储区标识符用于寻址特定的存储区,并且可包括IP地址或逻辑单元号(LUN)。
存储产品或存储相关技术的开发人员可以方便地使用本文的教示。所公开的生成存储命令的方法可用于制造在虚拟环境中工作的存储产品,存储系统的要素可在该虚拟环境中动态改变。
根据本发明的优选实施例的以下详细说明以及相同数字代表相同组件的附图,本发明的不同目的、特征、方面和优点将更为明显。
附图说明
图1示例说明虚拟存储系统的示例性实施例。
图2示例说明包括多个分区的逻辑卷的示例性实施例。
图3示出逻辑卷可如何包括存储组的图例。
图4示出组类型的组织的示例性实施例。
图5示例说明存储组数据结构的示例性实施例。
图6示例说明由链接存储组的命令堆栈代表的逻辑卷图的示例性实施例。
图7A示出由镜像命令处理器进行的卷级命令的转换的示例性实施例。
图7B示例说明存储命令如何被转换为一个或多个条带级存储命令的示例性实施例。
图7C示例说明存储命令如何被转换为一个或多个跨接级存储命令的示例性实施例。
图7D示例说明存储命令如何被转换为一个或多个分区级存储命令的示例性实施例。
具体实施方式
以下详细说明描述了本发明主题的多个实例。尽管给出了特定实例以使题材清楚,这些实例不限制所描述概念的表达。读者应当以他们尽可能广的知识范围来理解这些概念。
虚拟存储系统
图1示例说明虚拟存储系统的示例性实施例。在一些实施例中,虚拟存储系统120包括一个或多个客户机100A到100N,它们通过通信链接115访问一个或多个存储设备110A到110M。优选的虚拟存储系统120允许每个客户机100A到100N直接访问与逻辑卷相关联的每个存储设备110A到110M。
客户机100A到100N代表访问或使用存储设备110A到110M上的数据存储的主机。客户机100A可以包括通用计算机系统或专用的计算设备。通用计算机系统运行到操作系统可能是或Linux,并且优选地包括文件系统。通用计算机系统能够运行可请求访问存储空间的多个不同类型的应用程序。专用的计算设备包括嵌入式系统,其包括应用程序的有限组,例如媒体播放器、媒体录音机、游戏控制台或其它类似的系统。优选实施例使用具有文件系统的通用计算机系统,该文件系统能够挂载遍布一个或多个存储设备110A到110M的逻辑卷。
存储设备110A、110B到110M代表提供对一个或多个存储介质的访问的物理组件。存储介质可以是磁性或非磁性的。磁性存储的实例包括磁盘驱动器或磁带,其中非磁性介质的实例包括光学系统、闪存、RAM或其它类型的存储器。不要求存储设备110A到110M是存储设备的同类混合,而是可以包括多个不同类型的存储设备。在优选实施例中,存储设备110A到110M是在磁盘驱动器上提供数据存储的专用存储设备。专用存储设备包括机架固定系统、桌上型机壳或其它类型的机壳。优选的机壳提供对多个磁盘驱动器的支持,例如,支持2、4、8、16或更多的磁盘驱动器。在一些实施例中,存储设备110A代表磁盘驱动器本身,其中磁盘与客户机100A结合在一起。另外,例如,如果客户机100A向客户机100N提供对客户机100A的存储介质的访问,客户机100A可表示存储设备。
通信链接115将客户机100A到100N通信地连接到存储设备110A到110M。在优选实施例中,通信链接115使用互联网协议(IP)网络,其中通过以太网交换数据报。然而,对于通信链接115,可能有其它的实施例。通信链接115可以是客户机100A中的内部链接,或相对于客户机100A的外部链接。内部链接代表包括ATA、SATA、SAS、SCSI、PCI或其它总线的到存储设备的接口。外部链接可包括有线或无线链接。有线链接的实例包括以太网、USB、光纤通道、火线接口、串行链接,或其它有线通信系统。无线链接的实例包括蓝牙、无线USB、802.11、IrDA,或其它非物理链接。
虚拟存储系统120的优选实施例使用ZeteraTM公司的Z-SANTM技术。Z-SAN技术提供基于IP的存储区网络(SAN)环境,其中每个客户机100A到100N通过基于UDP的存储协议与每个存储设备110A到110M通信,以传输存储命令。Z-SAN技术将IP地址分配给存储设备中的每个分区。因此,客户机可以与每个分区直接通信,而不需要另外的分区识别信息。客户机集合关于每个分区的信息,并随后使用这些信息来形成包括这些分区的逻辑卷的图。尽管优选实施例使用块级存储协议来传输存储命令,本发明主题独立于传输协议进行操作;因此,使用基于包括iSCSI、iFCP、FCIP,或者甚至包括ATA、SATA、SAS、SCSI,或其它存储设备协议的低级协议或接口的标准的其它存储协议,本发明主题也可以同样良好地操作。另外,认为所公开的技术还利用包括NFS、CIFS或其它面向文件的协议的文件系统级存储协议来进行操作。
在虚拟存储系统120中,客户机100A到100N通常以逻辑卷表现为本地连接的存储区的方式来挂载逻辑卷。例如,客户机100A可支持CIFS协议,并挂载存储设备110B上的磁盘。逻辑卷代表位于一个或多个存储设备110A到110M上的一个或多个存储区的虚拟表示。在本文的上下文中,术语“分区”表示存储设备中的存储区。例如,分区可以是硬盘驱动器中范围代表硬盘驱动器容量的一部分的单个部分。或者,分区可代表跨容纳多个磁盘驱动器的机架中的两个或两个以上磁盘的存储区。还认为分区可代表由代理提供的存储区,其中该存储区包括多个远程分区。机架或代理将集合存储区表现为单个存储区。
逻辑卷
图2示例说明包括多个分区的逻辑卷的示例性实施例。逻辑卷230包括分区220A到220M,其中这些分区分布在存储设备210A到210M之中。优选地,逻辑卷230代表分布在分区220A到220M上的从0跑到最大值的LBA的范围。在一些实施例中,用48位值来代表LBA;然而,其它的LBA大小也是可以考虑的。分区220A示例说明了一个实例,其中存储设备210A有单个存储区参加在逻辑卷230中。分区220B和220C提供一个实例,其示出存储设备210B可如何具有一个以上的属于逻辑卷230的存储区。另外,分区220M示出存储设备210M的全部都可向逻辑卷230提供存储区。
尽管所示的逻辑卷230示例说明了在分区220A到220M上的线性跨接,可由组成该卷的分区形成其它更复杂的结构。在优选实施例中,逻辑卷230包括多个不同类型的存储结构,包括提供镜像、条带化(striping)、跨接(spanning)、奇偶校验,或提供RAID功能性的存储结构。每种类型的存储结构包括一组分区。因此,可以认为逻辑卷230是一组存储组,其中以向系统提供一套用于管理逻辑卷230的通用规则的方式来组织这些存储组。
存储组
图3示出逻辑卷可如何包括存储组的图例。逻辑卷300包括一个或多个存储组,其中存储组最终包括一个或多个分区。在优选实施例中,存储组包括一个或多个成员,其中每个成员也是一个存储组。例如,组310A包括两个成员。组310A的第一成员是组310C,而组310A的第二成员是分区320。分区320代表具有单个成员的存储组,其基本上包含了存储设备上的分区的特征。如所示,逻辑卷组300有三个成员,包括组310A、310B和分区320。组310B包括组310D和分区320。
优选地,在分区是存储组的最小表示的意义上,分区320代表基本组。全部存储组必须最终具有至少一个分区,以便向客户机提供对设置在存储设备上的存储介质的访问。在一个实施例中,可以用存储在客户机存储器中的数据结构来表示分区320,其中该数据结构包括与存储设备上的该分区相关的信息。例如,数据结构优选地包括:用于寻址分区的分区标识符、分区预期的数据传输大小、与分区相关的属性,或其它在访问分区时有用的信息。在优选实施例中,分区标识符包括相对于客户机的外部地址,其包括IP地址(IPv4或IPv6)或LUN;然而,还认为分区标识符包括在客户机中访问分区的内部地址。SCSIID可代表内部地址。
存储组:组类型
优选地,根据存储组在逻辑卷中提供的存储功能性对它们进行分类。通过按类型来组织存储组有助于建立为虚拟存储系统的要素所理解的通用规则系统,使得全部客户机能够连贯地访问数据。由于每个组类型可独立于另一组类型处理存储命令,这些规则在产生用于逻辑卷的存储命令时帮助客户机。优选的存储组类型包括RAID组类型或非RAID组类型。RAID组类型包括的存储组中使用某种形式的冗余以保护存储在与存储组相关联的存储设备上的数据。示例性RAID组类型包括镜像组、奇偶校验组、Z-RAID组,或其它冗余配置。示例性非RAID组类型包括跨接组、条带组或分区组。
存储设备领域的技术人员将认可术语RAID的使用,该术语RAID表示独立磁盘的冗余阵列。尽管条带化常被归类为RAID级0,它不携带冗余信息,并且因此在本文中被归类为非RAID类型。还应当注意,RAID常与磁盘级的存储结构相关。为了本文的说明,在分区级应用RAID功能性。镜像组代表一种包括多个成员的存储组,其中镜像组的每个成员具有在其它组成员上的数据的副本。换句话说,每个镜像组成员具有逻辑卷的LBA的范围的副本。条带组代表一种包括多个成员的存储组,这些成员是单独的条带化的基本单元。奇偶校验组代表包括具有奇偶校验信息的多个成员的存储组。奇偶校验组可被实现为条带组的变形。Z-RAID组代表一种包括多个成员的存储组,这些成员形成交错镜像的基本单元,如题为“Topology Independent Storage Arrays and Methods”的共有美国专利申请11/173,765号中所述,通过引用将该申请整体地结合在本文中。如前所述,分区组就是其中组包括关于分区的信息的基本组。预期所有的存储组类型,包括存档组、备份组、延迟镜像组、QoS组,或者可以提供附加的存储功能性的其它存储组类型。
存储组:组类型组织
图4示出组类型的组织的示例性实施例。尽管可作为这些组所提供的功能性的函数将它们分为不同的类型,还优选的情况是通过建立一套通用规则而以方便生成存储命令的方式来组织存储组类型,所有的客户机都在该套通用规则下操作,并且在该套通用规则下在存储设备上实例化所有的分区。特别优选的组织包括存储组类型的分级结构。为了清楚起见,提供图4所示的实例,并且该实例集中在镜像、条带、跨接和分区上;然而,这些概念可被延伸来处理附加的存储组类型。在该实例中,镜像组400在逻辑上被放在分级结构的最高级。存储系统中的每个逻辑卷可包括具有一个或多个成员的镜像组。镜像组400的每个成员可以是镜像类型以外的另一其它的较低类型的组。另外,镜像组400的每个成员可代表逻辑卷的一个实例,从这个意义上来说,镜像组400的每个成员代表逻辑卷的一个副本。条带组410对跨接组420B上的数据进行镜像,跨接组420B也对分区组430F上的数据进行镜像。这示例说明了,对于组组织的该特定实施例来说,例如镜像组400的镜像组可包括其它的较低类型的组,不论它们是条带组类型、跨接组类型或分区组类型。
当存储命令被发送给包括镜像组的逻辑卷时,为镜像组的每个成员复制该存储命令。例如,当卷级存储命令被发送给镜像组400所代表的逻辑卷时,为该组的每个成员复制卷级存储命令:为条带组410复制一次,为跨接组420B复制份一次,并且为分区430F复制一次。从这个意义上来说,镜像组将单个存储命令转换为多个副本存储命令。
示例性存储组类型分级结构中的第二高级是条带类型,如条带组410所示。条带组包括两个或两个以上成员,如跨接组420A和分区430C所指示的,它们或是跨接组,或是分区。条带组410的每个成员表示完整条带的条带化的基本单元。因此,当数据存储在与条带组410相关联的分区上时,数据被条带化在代表条带基本单元0的跨接组420A上,然后到作为条带单元1的分区430C。
条带组包括一组描述条带组特征的参数。这些参数包括条带块大小,其代表在进行到下一个成员之前向每个成员写入的数据块的数量。当存储命令被发送给条带组时,该命令被转换为一个或多个以该组的每个成员为目标的条带级命令。像在传统条带化的RAID系统中所做的那样,通过利用关于条带块大小的模运算来计算数据访问大小,条带命令确保数据访问与该组的条带结构一致;然而,在组或分区级执行数据访问,而不是在磁盘级。条带化的组的每个成员提供相同的容量以确保均匀的条带化。
该示例性分级结构中的第三级是跨接类型,如跨接组420A和402B所示。跨接组将两个或两个以上成员组合在一起,成为0到该跨接组的最大值的LBA的范围所代表的单个线性逻辑存储区。例如,跨接组420A包括分区430A所指示的第一部分和分区430B所指示的第二部分,各自分别表示跨接组420A的跨接基本单元0和跨接基本单元1。类似地,跨接组420B包括形成单个逻辑存储区的分区430D和分区430E。
跨接组包括关于存储命令中的数据应当在哪里被分开以跨分区桥接的信息。当跨接组接收存储命令时,检查存储命令数据和数据大小,以了解是否数据访问需要将该命令发送给跨接组的一个以上的成员。如果是这样,以确保数据访问与成员边界一致的方式将该命令转换为一个或多个跨接命令。
分区组类型在示例性分级结构的最低级。分区430A到430F各自是具有一个成员的组,其中该一个成员基本单元代表存储设备上的单独分区。应当注意到,不要求每个分区是统一的大小,而可以是相对于彼此的任何大小。
尽管该优选实施例建立了具有镜像、条带、跨接和分区的分级结构;应当注意到,其它的分级结构也是可能的。例如,可以以每个分区被单独镜像而不是在卷级镜像的方式,将镜像类型放在分区之下。或者,条带和跨接可以交换在分级结构中的级别。
存储组:通用规则
形成用于逻辑卷中的存储组的组织结构为用于处理存储命令的一套规则提供了基础。再次参照图4中的示例性分级结构,如果在镜像级有任何存储组,则初始地在镜像级处理卷级命令。镜像级处理包括生成存储命令和将存储命令传递给较低级。如果有条带组的成员,则在条带级处理存储命令,以确保根据与条带组相关联的条带化规则来访问数据。例如,利用基于条带块大小和条带组成员数量的模运算来访问数据。条带级处理还包括生成存储命令和将存储命令传递给较低级。如果有跨接组,在跨接级处理存储命令,其中将数据访问对齐到跨接成员边界。最后,在分区级处理命令,以确保数据访问与分区特征一致。例如,形成具有用于分区的适当的传输大小的命令。本文将在后面更全面地描述存储命令处理。
存储组:组数据结构
在一些实施例中,用提供组之间的链接的组数据结构来代表存储组。优选地,存储组被链接在一起以形成父子关系或等同关系。父组代表具有一个或多个成员的组,其中认为每个成员是父组的子组。相同父组的每个子组是其它子组的对等组。在优选实施例中,父组在组分级结构中的级别高于子组;然而,对等组可以在相对于彼此相同或更低的级。例如,镜像组可包括三个子组。每个子组是逻辑卷的实例。子组可包括条带化的组、跨接组或分区组的任意组合,而每个子组被认为是镜像组中的对等组。
在优选实施例中,组数据结构包括代表到其它组的链接和函数指针的一般数据结构。然后,一般结构被结合到附加数据结构中,该附加数据结构包括用于特定组类型的信息:镜像、条带、跨接,或其它存储组类型。该方法对于嵌入式系统有助于以C实现;然而,计算机编程领域的技术人员将认识到,有大量的备选方案用于形成组数据结构,预期所有的这些方案,包括面向对象的方案。
图5示例说明存储组数据结构的示例性实施例。可用包括组参数510的组数据结构500来代表存储组,组参数510描述了与存储组相关联的存储组类型的特征。组参数510随着组类型或数据结构所代表的特定组的特征而不同。另外,数据结构500还包括若干指针。组指针形成组的链接列表,以便于处理存储命令。优选的组指针包括可选的父组指针520或可选的上一对等组指针530。父组指针520链接当前组与父组,存储组是该父组的成员。如果存储组是逻辑卷中的最高级组,则父组指针520有空值。在优选实施例中,父组代表组分级结构中级别较高的存储组。例如,如果存储组是分区,并且是条带组的成员,则父组指针520将链接回到条带组。上一对等组指针530链接回到与该存储组对等的组。例如,如果当前组是分区,并且是条带组的第三成员,则上一对等组指针530将链接回到条带组的第二成员。父组指针520和上一对等组指针530在优选实施例中是可选的。
特别优选的指针包括对等组指针540,子组指针550或函数指针560。对等组指针540链接存储组与同一父组中的下一成员。子组指针550指向存储组的第一成员。通过提供对等组指针540和子组指针550,在处理命令时可遍历组的链接的列表。
数据结构500中的每个组指针还可有空值,而不是指向另一组。空值指示已到达链接链的末端。例如,当处理与存储组相关联的存储命令时,将通过遍历对等组指针540链接来检查存储组的每个子组,直到到达空为止。空指示存储组的全部子组已被处理。
计算机编程领域的技术人员将认识到,在存储组之间建立关系的大量的实施例存在。例如,对等级别存储组的阵列可代替对等链接列表。考虑形成存储组关系的全部实施例。
函数指针560代表到特定于存储组类型的命令处理器的指针,该特定命令处理器处理用于该存储组类型的存储命令。在优选实施例中,存储组的每个类型有至少一个相关联的命令处理器。优选地,命令处理器使用组参数510来处理存储命令,并从而生成用于该组的存储命令。另外,当命令处理器执行时,其根据用于特定存储组类型的规则来转换存储命令,并生成将由用于每个子组成员的命令处理器来对其操作的一个或多个存储命令。
每个组代表一个逻辑存储区,从分区一直到形成单个逻辑卷的多个镜像。优选实施例通过与存储区相关联的数据寻址方案来访问每个逻辑存储区中的数据。优选的方案是使用块级寻址,其中在存储区中唯一地对每个数据块进行寻址。优选实施例使用LBA来寻址每个具有512字节大小的数据块。可认为存储组类型命令处理器是对命令的数据和与命令的数据相关联的LBA的转换。并且,在优选实施例中,存储组所代表的每个存储区具有范围从0到最大值的LBA范围。每个存储组的各LBA的范围也存储在参数510中。通过将每个存储组定义为单独的各LBA的范围,每个命令处理器可以以独立于它们的父组的方式来处理存储命令。该独立的程度支持将存储组或命令处理器按需要链接在一起以形成逻辑卷的能力。
命令处理器所提供的功能性反映了相关联的存储组类型的功能性;然而,这不是将命令处理器的行为限制于仅该存储组类型的功能性。命令处理器可执行附加的指令以辅助处理存储命令或提供其它功能性。例如,用于RAID-5系统的奇偶校验组命令处理器将包括对其组成员执行“读-修改-写”操作的指令,并且类似于条带组命令处理器地起作用。这样的指令包括计算用于奇偶校验组成员的XOR奇偶校验。另外,附加的指令可包括带外管理、监控虚拟存储系统、错误检查、调用或执行远程函数,或任何其它功能。
存储组:命令堆栈
使链接的存储组与同存储组类型相关联的命令处理器结合支持建立用于生成存储命令的命令堆栈。命令堆栈代表一种数据结构构造,其中数据结构包括到函数的指针。通过函数指针调用函数允许在运行期间通过改变指针来再分配函数,这支持可在运行中构造的动态调用链。使用命令处理器方案为主机提供了建立对于逻辑卷是特定的命令堆栈的能力,而不会导致用于处理其它逻辑卷的附加开销。换句话说,系统中的每个逻辑卷具有反映该卷拓扑的命令堆栈;然而,不论拓扑如何,每个命令堆栈访问同一组命令处理器。例如,如果有四个用于存储组的每个类型(镜像、条带、跨接或分区)的命令处理器,则系统只需要这四个命令处理器,因为存储组在它们的数据结构参数中携带它们的组的上下文。在优选实施例中,当客户机发现逻辑卷时,客户机遵循该分级结构的规则将存储组的链接的列表接合在一起。一旦存储组被链接在一起,具有用于每个存储组的参数和命令处理器的链接结构代表该逻辑卷的图。另外,链接结构代表用于逻辑卷的命令堆栈。那么,客户机在再次使用相同的命令处理器时可发现附加的逻辑卷,因为附加的逻辑卷通过它们自身的存储组链接结构携带了它们的图信息。
还应当注意到,当发现逻辑卷中的改变时,链接结构可以被快速更新。例如,如果加入了附加跨接,则在适当的点将附加存储组链接到该结构中,从而更新逻辑卷而几乎不会妨碍对逻辑卷的访问。
备选的链接
在存储组结构中还考虑了其它的链接。在一个实施例中,特别是在镜像组成员包括条带组时,提供备选的链接以交叉链接镜像组成员。这样的备选的链接允许建立类似于RAID 10的存储结构。在一些实施例中,还提供RAID 10命令处理器,以当条带组成员不一定可访问时,遍历备选的链接,来找到能够提供对所请求的数据的访问的备选的存储组。备选的链接还可以在分区级操作,以提供分区级镜像。
逻辑卷图:命令堆栈
在优选实施例中,逻辑卷命令堆栈将高级存储命令作为输入来接受。命令堆栈处理存储命令,将存储命令传递给最高级命令处理器。每个命令处理器将存储命令转换为适合于分级结构中的每个级的一个或多个存储命令。然后,这些存储命令的每一个被传递给下一级的命令处理器,直到在分区级到达最低级为止。分区级命令处理器生成分区级存储命令,并将它们放进队列中以用于后面的打包或向分区的传输。
图6示例说明由链接的存储组的命令堆栈表示的逻辑卷图的示例性实施例。为了清楚起见,该特定实例被构造为示出链接的存储组和命令处理器的概念如何结合在一起以形成命令堆栈所代表的逻辑卷的图。该实例并不复杂;然而,这些概念可以被推广到更大、复杂、异构的逻辑卷。逻辑卷映射到存储组,其中存储组映射到分区。在存储命令生成处理的每一步,可认为通过在把数据分成字节片时将高级数据地址转换到低级数据地址来转换存储命令。例如,逻辑卷LBA被转换为存储组LBA,存储组LBA随后被最终转换为分区LBA。在优选实施例中,存储设备随后将分区LBA转换为该存储设备的存储介质中的数据地址。
逻辑卷图:镜像级
在该实例中,用镜像组600来代表逻辑卷。在该实例中,有两个与逻辑卷相关联的镜像。用条带组620来代表第一镜像,而用分区组680来代表第二镜像。组数据结构被用于存储不同的存储组参数、它们的组链接以及它们的命令处理器指针。镜像组600包括指向镜像命令处理器的函数指针603、对等组指针605以及子组指针607。对等组指针605具有空值,该空值表示没有与该镜像组相关联的对等组。子组指针607指向条带组620,该条带组620开始代表镜像组600的成员的链接链。
当系统访问来自逻辑卷的数据时,系统发送卷级命令并通过函数指针603调用镜像命令处理器。如果命令是读命令,则卷命令可具有指向接收缓存而不是装满数据的缓存的指针。在优选实施例中,镜像命令处理器使用镜像组600的参数以处理命令。镜像命令处理器通过将到卷命令的指针传递给用于镜像组的每个子组的命令处理器来复制卷级命令。例如,它首先通过条带组620的函数指针623来调用条带命令处理器,将卷级命令传递给条带命令处理器。一旦条带命令处理器返回,镜像命令处理器接着通过分区组680的函数指针683来调用分区命令处理器,又将卷级命令传递给分区命令处理器。分区处理器处理卷级命令,并将其转换为一个或多个分区级命令,其中每个分区级命令符合用于与分区D通信的正确形式。如具有空值的对等组指针685所指示的,分区组680是对等链中的最后一个,并且没有子组,如子组指针687的空值所指示。分区命令处理器将卷级命令转换为分区级命令的链接列表,该链接列表可被打包或发送给目标分区。
优选的卷级命令是从文件系统发送的。预期文件系统包括多重存取启动(multi-initiator)文件系统或非多重存取启动文件系统。多重存取启动文件系统提供多个客户机共享的对存储设备上同一数据的访问,而不会损坏该数据。优选的多重存取启动文件系统的实例包括DataPlowTMSan文件系统(SFS)。非多重存取启动文件系统为单个客户机提供访问,例如NTFS。
逻辑卷图:条带级
在该实例中,条带组620是镜像组600的子组,并从而是逻辑卷的一个实例。对等组指针625指向下一镜像,该镜像在该实例中是分区组680。在该实施例中,条带组620包括两个条带化的单元:跨接组640和分区组670。也通过组数据结构将条带组620存储在存储器中。
当通过函数指针623调用条带命令处理器时,条带命令处理器接收卷级命令。通过利用条带的条带块大小将卷级命令的LBA映射到子组的LBA范围,条带命令处理器将卷级命令转换为一个或多个用于其每个子组的命令。在该实例中,条带命令处理器使用条带组的参数信息来将卷级命令的LBA转换为进入每个其子组的偏移量。回想起在优选实施例中,每个组具有从0跑到最大值的LBA范围,以保持每个组独立于其父组。对于条带组,条带命令处理器通过使用基于条带组块大小和条带组中成员数量的模运算来计算进入每个子组的偏移量。一旦为每个子组计算了偏移量并且必要时将数据分成字节片,条带命令处理器开始遍历用于其每个子组的命令处理器。条带命令处理器将向第一子组传递第一条带级存储命令,然后向第二子组传递第二条带级存储命令,等等。另外,条带命令处理器将在必要时环回第一子组。对于该实例,条带命令处理器通过函数指针643调用跨接命令处理器,随后通过与组670相关联的函数指针673来调用分区命令处理器,在必要时可能回到组640。函数指针673指向和函数指针683一样的分区命令处理器。该分区命令处理器使用包括分区的优选数据传输大小的分区组670参数信息,以将条带级命令转换为一个或多个具有适当的用于目标分区的传输大小的分区级命令。分区级命令被链接到准备好用于传输的分区级命令的队列。分区级命令基本上准备好用于提交给存储设备上的目标分区。通过通信链接发送的分组或数据报可需要其它可能用于避免拥塞的处理。
注意分区组670是跨接组640的最后一个成员。对等组指针675具有空值,其向条带命令处理器指示已没有用于处理的子组。另外,因为分区组670代表分区C,一基本成员,分区组670不具有任何子组;因此,子组指针677具有空值。因此,分区命令处理器不进行任何其它命令处理器调用,并且在条带命令处理器的每次调用之后返回到条带命令处理器。
逻辑卷图:跨接级
跨接组640是条带组620的子组,并且是条带组的单个条带化的单元。跨接组640包括分区组650和分区组660所代表的两个分区。正如镜像组600和条带组620那样,将跨接组640存储在存储器中为具有用于跨接组的参数的组数据结构。在该实例中,参数包括每个分区组的范围,以及数据访问应当在哪里在分区之间桥接。
在该实例中,当从条带命令处理器调用跨接命令处理器时,跨接命令处理器接收条带级命令。跨接命令处理器将条带级命令转换为以跨接组640的每个子组为目标的一个或多个跨接级命令。通过高级LBA到子组的LBA范围的映射来执行该转换。分区组650是第一子组,并且通过对等组指针655链接到分区组660。如对等组指针655的空值所指示的,分区组660是最后一个跨接组成员。跨接命令处理器比较高级命令的LBA加上数据请求的大小与子组的LBA范围,以确定必要时应当在哪里分开数据。然后,跨接命令处理器开始通过函数指针653和663调用子组的分区处理器,函数指针653和663也指向与函数指针673和683一样的分区命令处理器。如上所述,分区命令处理器将跨接级命令转换为用于分区A和B的分区级命令。分区组650和660在命令堆栈中的最后,因为它们的子组指针657和667分别有空值。分区处理器将分区级命令链接到分区级命令的队列,以便被发送给存储设备,并且一旦它们完成处理,将返回到跨接处理器。
图6所示的实例示例说明了命令堆栈通过首先下降到分区级来处理存储命令的实施例。该下降方案支持形成分区级命令的队列,并且支持最小的处理开销。
对于图6所示的实例,不要求分区A、B、C和D具有相同的结构,因为它们在逻辑卷中起到不同的功能存储作用。然而,对于该特定实例,它们应当具有彼此相关的容量。例如,分区D应当具有与分区A、B和C的组合容量相同的存储容量,因为分区D是逻辑卷的一个完整实例,而A、B和C形成逻辑卷的另一个完整实例。另外,分区C应当具有与分区A和B的组合容量相同的容量,因为分区C代表一个条带化的单元,而组合的分区A和B代表条带化的组的另一个条带化的单元。只要分区A和B的组合容量等于分区C,它们可以有不同的容量。该实例示例说明了逻辑卷可如何包括分区或存储组类型的异构混合。
尽管优选实施例使用链接列表来形成存储组之间的关系,计算机编程领域的技术人员将认识到,可能有其它的实施例。例如,可通过将分级结构中的相同级处的成员放在阵列内来代替成员之间的对等关系。因此,命令处理器可迭代通过阵列的索引,而不是遍历对等组链接链。预期命令堆栈的所有实施例。
命令处理器
命令处理器通过形成存储命令并向较低级的命令处理器传递这些存储命令来操作存储命令。存储命令被优选地存储在具有若干成员的数据结构中,这些成员包括:卷级LBA、代表进入存储组的偏移量的组LBA、数据请求大小或到用于在存储器中存储数据的缓存的指针。在优选实施例中,通过条带或跨接命令处理器将卷级LBA用于正确地计算如何操作存储命令,以生成以条带或跨接组子组为目标的存储命令。组LBA是代表从0进入组的偏移量的值。另外,存储组可包括到与存储命令相关联的分区级命令队列的链接。
与存储组类型相关联的命令处理器根据代表存储组的功能性的规则对存储命令进行转换。优选的命令处理器不携带它们所操作的命令的上下文,而是从存储组和传递给它们的命令获得上下文信息,从这个意义上来说,优选的命令处理器是通用的。下面的说明提供了关于优选的命令处理器如何操作存储命令的其它细节。命令处理器通过对与存储命令相关联的数据缓存进行分区来处理不同类型的存储命令,包括读或写。在优选实施例中,命令处理器负责将数据访问从高级分解成低级,使得低级存储命令可以被发送给存储组,或最终发送给分区。
命令处理器:镜像命令处理器
图7A示出由镜像命令处理器进行的卷级命令的转换的示例性实施例。镜像命令处理器725操作存储命令700。在优选实施例中,由于在逻辑上将镜像放在存储组类型分级结构的最高级,存储命令700代表用于镜像处理器725的卷级存储命令。换句话说,在优选实施例中,镜像处理器725将只接收卷级存储命令。每个命令处理器能够处理存储命令700所代表的存储命令;然而,该命令结构中的要素的值可以是不同的,如果有上一命令处理器,这取决于上一命令处理器如何操作存储命令。
存储命令700包括缓存指针703、卷LBA 705、组LBA 707、请求数据大小709、组指针711以及命令指针713。缓存指针703指向用于存储与存储命令700相关联的数据的缓存720的头。如果存储命令700代表数据写,则缓存720存储要写入的数据;然而,如果存储命令700代表数据读,则缓存720是用于存储从存储设备读取的数据的存储区。优选地,以数据块的形式组织缓存720。卷LBA 705代表与存储命令700相关联的卷级数据地址,并且为某些命令处理器所使用,例如条带和跨接命令处理器。组LBA 707代表进入当前存储组的偏移量,回想起每个存储组具有其自身的LBA范围,该范围从0到最大值。数据大小709代表缓存720中的块数。组指针711只是引用哪个组是正在通过其处理存储命令的当前存储组。命令指针713代表分区级命令队列的锚点,使得一旦命令堆栈完成处理一存储命令;系统可以开始传输分区级命令。
存储命令700代表以存储区为目标的任何类型的命令。命令700可以是读命令、写命令、检查状态命令,或其它可以以逻辑卷或逻辑卷的一部分为目标的命令。在优选实施例中,卷级存储命令源于文件系统,特别是多重存取启动文件系统。
镜像命令处理器725负责将卷级存储命令传递给与镜像组的每个子组相关联的命令处理器。因此,镜像命令处理器形成一个或多个存储命令700A到700N所表示的存储命令,这些存储命令基本上是存储命令700的副本。存储命令700A被形成并传递给第一镜像成员的命令处理器;并在随后当返回时,下一存储命令被形成并传递给下一镜像成员的命令处理器,等等,直到存储命令700N被处理为止。注意存储命令700A到700N基本相同,因为每个存储命令以逻辑卷的一个实例为目标,这是镜像卷的特性。例如,缓存指针703A到703N指向数据缓存720的第一块。并且,卷LBA 705A到705N具有和卷LBA 705相同的值,在该实例中为VLBA的值。另外,组LBA 707A到707N还具有和卷LBA 705相同的值,在该实例中为VLBA的值,因为镜像组的每个成员具有的组LBA范围和卷级LBA范围相同大小或范围。另外,数据大小709A到709N具有和存储命令700的数据大小709相同的值。组指针711A指向与第一成员相关联的组,而组指针711N指向与第N成员相关联的组。并且,注意命令指针713也和存储命令一起传输,使得当到达分区级时,分区命令处理器通过在分区级命令中链接到命令指针713来形成分区级命令队列。
镜像命令处理器725生成卷级存储命令,并为其每个子组调用命令处理器。当子组的命令处理器被调用时,镜像命令处理器725将新生成的存储命令传递给用于该子组的命令处理器。一旦子组命令处理器返回,不再需要发送给子组的存储命令;随后可形成和处理下一存储命令。不再需要存储命令,因为分区命令处理器生成了存储命令堆栈处理结果的分区命令队列。
命令处理器:条带命令处理器
图7B示例说明存储命令如何被转换为一个或多个条带级存储命令的示例性实施例。条带命令处理器745通过生成如存储命令730A到730N所指示的一个或多个条带级存储命令来操作存储命令700。在优选实施例中,存储命令700可源于镜像命令处理器,或者对于没有镜像的情况可直接来自文件系统。
存储命令处理器745使用包括条带块大小和条带成员数量的条带组特定信息,以形成要被条带组成员的命令处理器处理的存储命令730A、730B到730N。由于条带的布置,每个条带级命令730A、730B到730N代表以逻辑卷中不同的存储区部分为目标的不同的存储命令。因此,假设数据大小709指示有足够的数据,存储命令730A到730N代表跨条带组成员的数据访问。RAID系统,特别是条带化领域的技术人员将认识到,除了文中提出的简单实例,还有其它可能的数据访问布置;预期所有的这些布置。
存储命令730A代表与组指针741A所定位的条带组成员相关联的第一条带级存储命令。由于条带命令730A是要处理的第一条带级命令,缓存指针733A指向缓存720的开端。另外,由于条带存储命令730A是数据访问的第一部分,卷LBA 735A再次具有和卷LBA 705一样的值。组LBA 737A具有作为卷LBA 735A、条带成员数量和条带块大小的函数来计算的值,这和用传统条带化所做的一样,除了在存储组而不是在磁盘上对数据进行条带化。结果值代表进入条带组成员的LBA范围的偏移量。假设数据大小709大于或等于条带块大小,数据大小739A的范围将从0到条带块大小。命令指针713再次向下传递通过命令堆栈,以被分区级命令处理器所使用。
在存储命令730A被处理并且其命令处理器返回之后,条带命令处理器745形成存储命令730B,并调用下一条带组成员的命令处理器。缓存指针733B指向缓存720中的下一条带块大小的字节片。卷LBA 735B引用与下一数据条带块相关联的卷级LBA,并具有卷LBA 705加上块大小的值。还计算组LBA 737B,正如计算组LBA 737A那样。在该实例中,假设两个命令都访问在条带中的相同深度的数据,组737B具有和组737A相同的值。在该实例中,数据大小739B也具有条带块大小的大小。组指针741B指向与条带组成员相关联的目标组,并且最后存储命令730B携带命令指针713。
条带命令处理器745继续以该方式形成下一条带级命令并调用下一成员的命令处理器,直到到达最后的条带级存储命令730N。缓存指针733N指向缓存720的最后部分,其具有等于或小于如数据大小739N所指示的条带块大小的大小,该数据大小739N具有代表最后的字节片大小的值。并且,条带命令处理器745将卷LBA 735A作为在条带成员上写入多少块的函数来计算。组LBA 737N可包括不同值组LBA 737A,因为条带命令处理器745有可能可以完成命令的一完整条带并启动另一轮次,导致访问在条带组成员的LBA范围中更深的数据。类似地,组指针741N还可指向上次用过的组。对于熟悉多个存储设备上的数据条带化的人可以理解在该简单实例所描述的计算和方案之外的适当数据条带化所需要的不同的计算和不同的方案,所有的这些计算和方案都适用于本发明主题。
预期条带命令处理器745可被修改为执行奇偶校验计算,以提供用于支持RAID 4、RAID 5、RAID 6或其它奇偶校验配置的奇偶校验RAID处理器。优选地,奇偶校验命令处理器发送用于奇偶校验信息的读请求,然后基于任何写请求来修改奇偶校验值;并且随后向奇偶校验组的成员发送写命令。在一些实施例中,可通过设置在另一设备上的代理来处理用于奇偶校验的附加处理。
命令处理器:跨接命令处理器
图7C示例说明存储命令如何被转换为一个或多个跨接级存储命令的示例性实施例。跨接命令处理器765通过将存储命令700转换为一个或多个如存储命令750A和750B所指示的跨接级存储命令来操作存储命令700。在优选实施例中,跨接命令处理器765可直接从文件系统、从镜像命令处理器或从条带命令处理器接收存储命令700,因为在存储组类型组织中跨接命令处理器765在它们之下。
跨接命令处理器765使用关于其每个子组LBA范围的信息来计算跨接边界处于跨接组的LBA范围内的哪里。该信息随后被用于当存储命令700桥接分区时,形成存储命令750A和750B。存储命令750A代表访问来自第一分区的数据的第一跨接级存储命令,而存储命令750B代表访问来自接在第一分区之后的第二分区的数据的第二跨接级存储命令。
存储命令750A包括关于第一分区访问的信息。缓存指针753A指向缓存720的开端。由于卷LBA 755A表示数据访问的第一部分,它是和卷LBA 705相同的。组LBA 757A具有跨接处理器765所计算的值,并且代表进入跨接成员的组的偏移量。根据卷LBA 705和跨接组成员的LBA范围的每一个的范围来计算该值。类似地,也是根据相同的信息,特别是跨接边界相对于卷LBA 755A在哪里,计算数据大小759A。当然,该实例假设跨接边界的值在和卷级LBA范围相同的图空间内。组指针761A指向存储命令750A以其为目标的分区组,并且命令指针713被再次传递给分区级命令处理器。
一旦处理了存储命令750A,分区命令处理器返回;随后跨接命令处理器765处理存储命令750B。存储命令750B代表以下一分区为目标的存储命令700的第二部分。缓存指针753B指向缓存720中数据将在分区之间桥接的位置,如分区边界755所指示。卷LBA 755B具有前一分区的跨接边界加1的位置的值。另外,组LBA 757B将具有0值,指示将在分区的开端进行访问。还根据包括使用跨接边界的分区范围信息来计算数据大小759B。组指针761B指向存储命令750B针对的分区。
和在上一优选的命令处理器中一样,跨接命令处理器765生成存储命令750A,然后调用与组指针761A相关联的命令处理器。存储命令750A一旦被处理,将不再被需要。跨接命令处理器765随后前进以生成存储命令750B,并随后接着处理该存储命令750B.
命令处理器:分区命令处理器
图7D示例说明存储命令如何被转换为一个或多个分区级存储命令的示例性实施例。在优选实施例中,生成分区级命令代表存储组分级结构的底部,并提供用于生成分区级命令的实际结构,以访问以存储设备为目标的数据。分区命令处理器785将存储命令700转换为分区级存储命令770A、770B到770N所代表的一个或多个分区级命令。在优选实施例中,分区命令处理器785通过将分区命令770A到770N加到由命令指针713引用的命令列表来形成分区命令队列790。随着卷级存储命令被完全地处理通过逻辑卷的命令堆栈,该列表继续生长。优选地,在给定存储组的优选规定的分级结构的情况下,存储命令700代表卷级存储命令、条带级存储命令或跨接级存储命令。
分区命令处理器785使用与分区特征相关的信息,以确定如何生成存储命令770A到770N。在优选实施例中,分区命令略微不同于通用存储命令,因为它们特别以存储区为目标,并被打包或发送给存储设备。
与分区相关联的参数包括数据传输大小、块形式的分区大小或分区标识符。优选的传输大小以512字节块为单位,以符合通用存储设备上的块大小。特别优选的传输大小包括1、2、4、8、16、32或64数据块,以适应于单个数据报中的传输;然而,也考虑其它的块大小。命令处理器使用分区大小信息以将高级存储命令数据访问正确地映射到分区。如上所述,分区标识符被用于寻址特定分区。优选地,分区标识符是IP地址;然而,也可使用LUN或其它地址而不失去适用性。在一个使用iSCSI的实施例中,IP地址可被用于将存储命令定位到存储设备上,而LUN则被接着用于寻址在存储设备上的特定存储区。
分区命令处理器785使用传输大小信息来形成分区命令770A到770N中的每一个,这表示单个访问最多请求一个数据传输大小。分区命令770A代表第一分区命令。缓存指针773A指向缓存720的第一部分。由于先前的层已完成了全部卷级处理,分区命令770A在其请求中不需要卷LBA 707信息。组LBA 777A引用目标分区中的偏移量,并且数据大小779A指示所请求的数据访问是至少预期的分区传输大小。命令链接783A通过像命令链接783B那样链接到下一分区级命令来继续形成分区命令队列790。一旦分区命令处理器785完成分区命令770A的生成,分区命令处理器785生成分区命令770B。
以类似于生成分区命令770A的方式生成分区命令770B。缓存指针773B在位于下一数据字节片开端的深度为一个传输大小的位置指向缓存720。组LBA 777B具有比上一分区命令大一个传输大小的值,并且数据大小779B又是传输大小。分区命令处理器785继续生成分区命令,直到缓存720的全部数据被处理为止。分区命令770N所代表的最后一个分区命令通过使缓存指针773N指向缓存720的最后一部分来处理缓存720的结尾部分。组LBA 777N具有被计算为需要用来处理存储命令700的字节片数量的函数的值。数据大小779N具有小于或等于分区传输大小的值。最后,命令链接783N在必要时是以空结束的,这代表命令队列790的末端。
一旦存储设备接收到分区级命令,存储设备将分区级LBA转换成与物理存储设备相关联的设备级LBA。例如,存储命令770A具有相关联的组LBA 777A,该组LBA 777A具有范围从0到该目标分区的最大值的值。然而,当存储设备接收存储命令770A时,其有可能将组LBA 777A映射到实际硬盘驱动器中的绝对LBA索引。
命令处理器:命令堆栈处理
由链接存储组和命令处理器形成的命令堆栈将高级存储命令转换为低级存储命令,可由负责分区的存储设备来处理该低级存储命令。命令堆栈通过将高级命令映射到由不同的分区存储组提供的功能性来生成命令。计算机编程领域的技术人员将认识到,有很多种用于处理存储命令的可能的实施例。
在优选实施例中,通过命令数据结构的指针将存储命令传递给命令堆栈或组命令处理器。命令数据结构包括与命令属性相关的信息,命令属性包括请求的类型(读、写、状态、等)、数据请求的大小(如果有)或用于保持任何数据的缓存的指针。利用数据缓存的指针允许命令处理器基本以相同的方式处理写请求和读请求。当命令处理器将高级存储命令转换为低级存储命令时,命令处理器将低级存储命令放入存储命令的链接列表中,优选地在分区级。存储命令表最终导致只有一个分区级存储命令表可被打包并发送给存储设备。该表中的每一个分区级存储命令包括进入缓存的偏移量、请求大小、分区LBA、分区标识符,或者当对分区级存储命令进行打包时有用的其它信息。
尽管命令堆栈本身可以是复杂的结构,该结构只调用几个函数;存储组的每个类型用一个函数。这意味着如果逻辑卷支持四个存储组类型:镜像、条带、跨接或分区;命令堆栈将只调用四个函数:镜像命令处理器、条带命令处理器、跨接命令处理器或分区命令处理器。每个组在它们的供命令处理器使用的组数据结构中携带其进行定义的上下文信息。开发以该方式操作的命令堆栈减少使用递归的需求,这可有利于有内存限制的嵌入式系统。
打包存储命令
最后,低级存储命令被打包以传输到存储设备。在优选实施例中,根据为存储设备所理解的存储协议来打包分区级命令;然而,也有可能打包较高级的存储命令,并将它们发送给包括代理的其它设备,用于进一步的命令堆栈处理。例如,在Zetera的Z-SAN协议中,每个分区级命令被打包在具有z-SAN命令、适当的传输大小的数据有效载荷以及分区的IP地址的UDP数据报中。启用Z-SAN的设备可具有多个IP地址,每个分区用对其负责的一个IP地址。利用Z-SAN数据报的IP地址在IP层对分区进行区分。或者,可使用iSCSI协议来打包分区级命令。iSCSI使用IP地址来定位存储设备,而不是使用IP地址来识别分区,并随后使用LUN来寻址分区。iSCSI还通过iSCSI会话中的TCP/IP连接来传输分区级命令,该连接还可被用于传输较高级的存储命令。应当注意,分区级存储命令或其它存储命令的传输方法与它们的生成无关;因此,可使用任何协议,包括FCIP、iFCP、SATA、ATA、SAS、SCSI、USB、无线USB、IEEE 1394、802.11,或其它可携带存储命令的协议。
一个实施例支持分区处理器打包生成的存储命令,而不是将分区级存储命令链接到代表命令队列的链接列表中。一旦生成分区级存储命令,它们可被打包到数据包中并发送给分区。这是有利的,因为它提供了存储系统中的最快速响应;然而,对于预期对每个发送命令响应的执行协议,当没有提供回答时,系统将在等待响应时中断存储命令处理。
在分区处理器通过分区级存储命令的链接列表将命令排成队列以用于以后的传输的优选实施例中,打包和发送分区级存储命令。该方案的优点是命令处理与任何存储协议处理无关,因此命令生成不被处理存储协议中断。例如,如果每个打包在iSCSI协议中的分区级命令需要来自分区或存储设备的响应,则分区命令处理器没有必要在发送下一分区级存储命令之前等待响应。
构造逻辑卷图
链接存储组和命令处理器所代表的命令堆栈代表逻辑卷的图。在所考虑的预期客户机和存储设备不预先通知地出现和消失的分布式虚拟环境中,客户机不需要系统的先验知识。优选地,客户机通过发现一个或多个分区来访问存储系统。进入系统的客户机可能利用UDP广播向用分区信息响应的存储设备发送发现报文。分区信息包括代表客户机所使用的逻辑卷图信息的属性。然后,客户机能够将逻辑卷的图构造为发现的图数据的函数。例如,分区可以用描述其在存储组类型的分级结构中的组从属关系的属性来响应。包括例如名称的属性可包括关于分区所属组的分级结构信息。客户机分析来自分区的属性信息以获得对分区如何相互配合以形成逻辑卷的理解。该属性以客户机可以理解的方式对关于存储组组织的普通规则信息进行编码,因此客户机可以构造逻辑卷。然后,客户机根据组织规则和属性信息建立代表逻辑卷的图的命令堆栈。在某种意义上,可认为这些属性是发送给客户机的关于如何构造用于逻辑卷的命令堆栈的指令。题为“Disaggreted Resources and AccessMethods”的共有美国专利申请11/205,895号提供了关于客户机发现分区信息、分级结构名称或对存储组组织进行编码的属性的使用的细节。
当客户机在建立逻辑卷命令堆栈时理解属性信息时,使用可选的父组指针或可选的前一对等组指针是有利的。使用这些指针是为了遍历组结构,以确保没有漏洞或错误。
认为虚拟存储系统中的存储区单独地或集体地对发现请求响应。单独响应代表来自每个分区的单个响应,其中该响应包括分区信息。集体响应表示来自系统中的单元的响应,其包括与多个分区相关的信息。在一些实施例中,代理将集合来自很多分区的单独响应,并随后像单个存储区那样用单独响应对客户机发现进行响应。例如,如果代理集合条带存储组,代理可以将该条带存储组当作单个分区来处理,并且像单独分区的组那样向客户机提供发现响应。在其它实施例中,存储设备或其它设备收集关于分区的信息,并随后形成包括用于多个分区的信息的报文。例如,单个存储设备可用包括每个单独分区的名称或属性的报文来响应发现请求。
结果命令堆栈可以是简单或者复杂的。简单的命令堆栈代表使用用于逻辑卷中的全部存储组的单个命令处理器的命令堆栈。例如,直接映射到分区的逻辑卷只请求一个分区命令处理器。复杂的命令堆栈包括用于不同类型的存储组,包括镜像、条带、跨接、分区、奇偶校验,的多个命令处理器,或命令处理器的其它混合。
更新逻辑卷图
逻辑卷图包括存储组的链接结构。和在任何链接列表中一样,可通过调节列表中的指针来更新成员。通过在附加存储组中链接可将一些存储组加到逻辑卷上,或者通过解除存储组的链接可从逻辑卷移除一些存储组。
加上存储组的实例包括通过将附加分区加到逻辑卷上来增加逻辑卷的容量。例如,如果逻辑卷只包括具有三个成员的跨接组,逻辑卷可通过在第四成员中链接到跨接组的对等链接来增加其容量。客户机现在将察觉逻辑卷具有增加的容量而不必卸下逻辑卷。
移除存储组的实例包括处理丢失分区。如果卷包括具有一个以上成员的镜像组,则每个成员代表逻辑卷的一个实例。当客户机不再能访问与一个成员相关联的分区时,该客户机还能访问来自其它镜像组成员的一个或多个分区的数据。客户机可以通过移除对丢失分区的链接来更新逻辑卷图,或者通过以空结束对等链接或子组链接来更新与其相关联的任何组。命令堆栈还是有效的,并且正常地处理存储命令;然而,命令组只是不能进入被移除的存储组。认为客户机包括确定客户机是否应当继续向损坏的镜像卷写入的指令。
在优选实施例中,客户机获得与对于数据的逻辑卷的连贯性相关的分区信息。连贯性指的是,即使逻辑卷的部分不可以被访问,客户机也能够访问逻辑卷的LBA范围所代表的逻辑卷的完整实例。在一个实施例中,客户机周期性地向系统探查分区的属性,以确保与逻辑卷相关联的分区是可用的。当客户机通过分析属性信息而检测到逻辑卷结构中的改变时,它可以通过加上或移除适当的存储组来更新逻辑卷的图。
一旦客户机已形成对于LBA范围的连贯的逻辑卷图,它可以将逻辑卷挂载为本地连接的存储设备。在优选实施例中,当客户机检测到逻辑卷中的改变时,它更新逻辑卷图而不用卸下逻辑卷。不要求客户机卸下逻辑卷,因为存储组可被链接或被解除链接,而不影响操作系统或文件系统。
其它的考虑
尽管优选实施例对向存储设备传输的分区级存储命令进行打包,聪明的读者将认识到,对于打包来说,分区级存储命令和较高级的存储命令之间几乎没有差别。因此,本发明主题还包括对向存储设备或向存储设备上的存储区传输的任何级别的存储命令进行打包的概念。这样的方案支持建立分布式命令堆栈,其中命令处理器可跨对客户机、代理、存储设备或其它可在其存储器中存放命令处理器的设备进行连接的通信链接操作。代理代表一种设备,其对于另一的设备表现为一个或多个单独的存储区,同时集合来自其它存储设备的一个或多个存储区。对于存储设备来说,代理起到客户机的作用;然而,对于客户机来说,代理也起到存储设备的作用。
毫无疑问,与操作与一种类型存储组相关联的存储命令的命令处理器结合的存储组组织可被认为是描述LBA转换的“数学”。命令处理器代表将LBA和数据请求大小作为输入来接受的不同的运算符。然后,命令处理器输出一个或多个转换的LBA和数据请求大小。因此,预期对数据地址和请求大小进行转换的全部命令处理器。例如,本发明主题支持在命令处理器中增加功能,以反映用于一种类型的存储组的附加功能性。命令处理器充分地脱离逻辑卷的结构,对命令处理器功能性的修改不改变逻辑卷的拓扑。修改条带命令处理器以处理奇偶校验代表一个实例。
另一实例包括修改镜像命令处理器以改善逻辑卷的性能。具有包括两个或两个以上成员的镜像组的逻辑卷包括一组以上的逻辑卷数据,通过一组以上的LBA对它们进行访问。因此,镜像命令处理器可被修改为将读存储命令跨镜像组成员展开。当镜像命令处理器处理卷级读命令时,它可使存储命令或存储命令的部分转过每个镜像成员,以将载荷分配给多个存储设备。当与镜像成员相关联的分区被设置在不同的存储设备上时,读性能将好于从设置在统一存储设备上的镜像成员读数据。在一个实施例中,修改的镜像命令处理器就像镜像组成员属于条带组来处理镜像组成员上的数据。可以在具有内部存储设备的客户机中有利地配置这样的方案,包括有两个硬盘,其中一个硬盘对另一个硬盘进行镜像的计算机。另外,命令处理器可以区分请求类型。例如,命令处理器可以有差别地处理写或读请求,以获得附加的功能性。
本文所公开的结构可被用于存储以外的其它技术。可推广这些概念以提供用于分布式或集合式设备的命令处理。客户机可以发现集合式设备的结构,并随后基于发现信息形成命令堆栈。在其它的实施例中,客户机可以使用来自服务器的信息来构造通信堆栈,以确保只使用必要的通信基础设施。例如,如果客户机和服务器被链接在相同的以太网LAN上,可以想象的是,客户机可以根据服务器指令生成只使用以太网的通信堆栈,而不使用完整TCP/IP堆栈用于通信,以获得更有效的通信。这样的命令堆栈相当适用于原子的命令响应应用协议。
还考虑将命令堆栈链接在一起。如上所述,可在客户机、代理、存储设备,或存储系统中的其它单元之间散布命令堆栈。这包括了这样的概念:客户机与存储设备交互,该存储设备自身采用命令堆栈以访问其它的存储功能性。例如,客户机可以感知包括分区的跨接组的逻辑卷。然而,每个分区实际上是存储设备中的RAID-5条带组。存储设备使用RAID-5命令处理器以与本地分区交互,而客户机使用跨接命令处理器以与存储设备上的分区交互。基本上,跨接级命令被发送给把它们当作高级命令并且通过RAID-5命令处理器进一步处理它们的存储设备。
由于分区的LBA范围与存储组的范围无关,每个存储设备可以把每个分区当作具有LBA范围从0到存储区的最大LBA的存储区。这提供了存储设备上的快速处理,而不需要存储设备执行额外的计算。另外,这意味着存储设备不需要理解如何根据存储组组织的规则来操作的能力。当分区被实例化时,更新它们的名称或属性以携带客户机所使用的规则信息,以便构造逻辑卷图。分区只是以LBA的线性范围存储数据。
优点
通过根据包括命令处理器的逻辑卷图生成存储命令的使用,实现了很多优点。在每个客户机相互无关地运行的系统中,由于全部客户机采用相同的用于构造逻辑卷的通用规则,每个客户机具有基本相同的图,尽管如此,每个客户机建立其自身的逻辑卷视图。当一客户机看不到逻辑卷的一部分而引起更新其图时,不影响其它客户机。另外,在逻辑卷包括具有两个或两个以上成员的镜像组的情况下,即使当镜像成员的一部分不再可访问时,客户机也可以保持逻辑卷上数据的连贯视图。只要完整的数据组或LBA的卷级范围是可用的,即使通过是不同的镜像组成员可用,客户机保持访问数据的能力。通过解除不再可访问的组或分区与逻辑卷的链接,只从图移除不再可访问的组或分区,而不需要卸载逻辑卷。
使用本公开技术的存储系统可扩展为具有很多存储设备或很多客户机的更大的配置。如上所述,每个客户机独立地运行,并且能够共享存储设备而不加重其负担。系统可扩展到客户机和存储设备之间的通信链接带宽的极限。另外,可将逻辑卷命令堆栈从单个主机扩展到其它设备。例如,客户机可具有命令堆栈的一部分,该部分随后调用设置在继续生成存储命令的代理设备上的命令堆栈,有可能利用网络服务来执行远程功能。所公开的方法与用于传输存储命令的协议无关,这支持被专用的存储工具以及基于标准的包括iSCSI的工具所采用。
与存储组类型相关的命令处理器的使用支持存储组类型的同构混合。如上所述,镜像、条带、跨接或分区可以以不同的方式组合以建立单个逻辑卷。将存储组的同构混合与命令处理器的能力结合以有差别地处理多种请求,这支持建立具有特定特征的逻辑卷。例如,包括条带组和跨接组的逻辑卷可优先地从条带组读取,而同时向两个组写入,其中跨接组可被用于归档。
另外,由于逻辑卷命令堆栈生成与存储命令传输无关的存储命令,有可能支持传输协议的同构混合,其中每个协议以不同类型的存储设备为目标。在一个实施例中,例如,单个逻辑卷可包括设置在通过内部控制器访问的直接链接的设备上的分区,或者设置在通过网络存储协议访问的远程设备上的分区。分区命令处理器可适用于处理每种类型的协议的特定细节。特定的示例性实施例可包括一种逻辑卷,该逻辑卷包括直接链接的SATA磁盘驱动器上的分区、通过iSCSI访问的分区,以及通过Zetra的Z-SAN协议访问的分区。
由于根据与存储组类型的组织相关的规则来构造逻辑卷图,客户机可快速地生成存储命令。在优选实施例中,在最多四个级别的命令处理器中,高级卷命令在不使用递归的情况下被转换为一个或多个分区级命令。这支持存储命令的快速处理。
硬件
其它方面涉及与本发明主题相关的硬件。认为可以开发硬件用于存储、样机研究、制造、操纵、管理、封装、测试、物理控制或支持,或用于与本发明主题的物理方面相关的其它行为。因此,本发明主题包括用于开发、生产、制造或运行硬件的系统、方法或设备。从这个意义上来说,硬件属于本发明主题范围。
软件
在另一方面,认为可以编写这样的软件:配置、仿真或管理本发明主题的不同方面以及它们的相关基础构架。从这个角度来说,本发明主题包括以下方法:编写该软件,以机器可读的形式记录软件,授权、销售、分配、安装或在适当的硬件上操作该软件。另外,该软件本质上被认为属于本发明主题的范围。
因此,已公开了生成存储命令的特定构成和方法。然而,对于本领域的技术人员来说很明显的是,在不背离文中的本发明的概念的前提下,可能有除已描述的修改之外的很多其它修改。因此,除了将本发明主题限制于本公开的精神以外,不作其它的限制。另外,在理解本公开时,应当以与上下文一致的最大可能方式来理解所有术语。尤其是术语“包括”和“包含”,它们应当被理解为以非排除的方式涉及要素、组件或步骤,指示所引用的要素、组件或步骤可存在,或者被使用,或者与没有被明确引用的其它要素、组件或步骤组合。
Claims (29)
1.一种生成用于存储系统的存储命令的方法,所述存储系统具有包括位于第一存储设备上的第一分区和位于第二存储设备上的第二分区的逻辑卷,所述方法包括:
(a)提供所述逻辑卷的图,其中所述图构造为:
(i)与第一存储组相关联的第一存储组类型,所述第一分区是所述第一存储组的成员;以及
(ii)与第二存储组相关联的第二存储组类型,所述第二分区是所述第二存储组的成员;的函数,以及
(b)将分别用于所述第一和第二存储组类型的第一和第二命令处理器结合到所述图中;并且
其中所述第一命令处理器将与所述第一存储组相关联的第一存储命令转换为与所述第二组相关联的第二存储命令。
2.如权利要求1所述的方法,进一步包括当检测到所述逻辑卷结构中的改变时更新所述图的至少一部分。
3.如权利要求2所述的方法,进一步包括在保持所述逻辑卷挂载的同时执行所述逻辑图的所述更新。
4.如权利要求1所述的方法,进一步包括发现所述第一存储组类型。
5.如权利要求4所述的方法,其中所述第一存储组类型被包括在第一存储设备所生成的发现响应中。
7.如权利要求1所述的方法,进一步包括:通过利用第一命令处理器,将与所述第一存储命令相关联的卷级数据地址转换为与所述第一分区相关联的分区数据地址。
8.如权利要求7所述的方法,其中所述分区地址包括LBA。
9.如权利要求1所述的方法,其中所述第二存储命令包括分区标识符。
10.如权利要求9所述的方法,其中所述分区标识符包括IP地址和LUN中的至少一个。
11.如权利要求1所述的方法,其中所述卷级命令源于文件系统。
12.如权利要求11所述的方法,进一步包括利用存储协议将所述第二存储命令发送给所述第二存储设备。
13.如权利要求12所述的方法,其中所述存储协议使用以下协议至少之一:ATA、SATA、SAS、SCSI、USB、火线接口、光纤通道、iSCSI、FCIP、iFCP、NFS以及CIFS。
14.如权利要求1所述的方法,其中所述图包括存储在存储器中的数据结构,并且其中所述第一命令处理器或所述第二命令处理器是所述数据结构的成员。
15.如权利要求14所述的方法,其中所述第一命令处理器和所述的第二命令处理器在所述数据结构中形成命令堆栈。
16.如权利要求14所述的方法,其中分级地组织所述数据结构,其中所述第一存储组类型在逻辑上级别高于所述第二存储组类型。
17.如权利要求16所述的方法,其中与所述逻辑卷相关联的所述命令堆栈不同于与第二逻辑卷相关联的第二命令堆栈,所述第二逻辑卷与所述逻辑卷共享所述第一存储设备。
18.如权利要求1所述的方法,其中所述第一存储组类型是非RAID组类型。
19.如权利要求18所述的方法,其中所述非RAID组类型是以下存储组类型中的至少一个:跨接组、条带组和分区组。
20.如权利要求1所述的方法,其中所述第一存储组类型是RAID组类型。
21.如权利要求20所述的方法,其中所述RAID组类型包括以下存储组类型中的至少一个:镜像组、z-RAID组和奇偶校验组。
22.如权利要求1所述的方法,进一步包括通过通信链接将所述第二存储组命令发送给所述第二命令处理器。
23.一种存储系统,包括:
(a)客户机,其适用于访问所述存储系统中的逻辑卷;
(b)存储设备,其适用于向所述客户机提供对所述存储设备中的存储区的访问,其中所述存储区代表所述逻辑卷的至少一部分;以及
(c)存储器,其存储与命令堆栈相关联的指令,其中所述命令堆栈与所述逻辑卷有关,并将来自所述客户机的卷级存储命令转换为针对所述存储区的存储命令。
24.如权利要求23所述的系统,其中所述客户机包括所述存储器。
25.如权利要求23所述的系统,进一步包括包含所述存储器的代理。
26.如权利要求23所述的系统,进一步包括将所述客户机通信地连接到所述存储设备的通信链接。
27.如权利要求26所述的系统,其中所述通信链接在所述客户机的内部。
28.如权利要求26所述的系统,其中利用存储协议通过所述通信链接传输所述存储命令。
29.如权利要求23所述的系统,其中所述存储区与一种存储组类型相关联。
30.如权利要求28所述的系统,其中所述存储组类型是RAID组类型。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/472,198 US7743214B2 (en) | 2005-08-16 | 2006-06-20 | Generating storage system commands |
US11/472,198 | 2006-06-20 | ||
PCT/US2007/014572 WO2007149563A2 (en) | 2006-06-20 | 2007-06-20 | Generating storage system commands |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101506779A true CN101506779A (zh) | 2009-08-12 |
CN101506779B CN101506779B (zh) | 2012-01-04 |
Family
ID=38834145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800311155A Active CN101506779B (zh) | 2006-06-20 | 2007-06-20 | 生成存储系统命令 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7743214B2 (zh) |
EP (1) | EP2035933B1 (zh) |
JP (1) | JP5027877B2 (zh) |
KR (1) | KR101053967B1 (zh) |
CN (1) | CN101506779B (zh) |
AT (1) | ATE508414T1 (zh) |
CA (1) | CA2657221C (zh) |
DE (1) | DE602007014366D1 (zh) |
WO (1) | WO2007149563A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107888689A (zh) * | 2017-11-16 | 2018-04-06 | 无锡地铁集团有限公司 | 基于共享存储的加锁资源配置方法 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8005918B2 (en) | 2002-11-12 | 2011-08-23 | Rateze Remote Mgmt. L.L.C. | Data storage devices having IP capable partitions |
US7620981B2 (en) | 2005-05-26 | 2009-11-17 | Charles William Frank | Virtual devices and virtual bus tunnels, modules and methods |
US8819092B2 (en) | 2005-08-16 | 2014-08-26 | Rateze Remote Mgmt. L.L.C. | Disaggregated resources and access methods |
US20070143352A1 (en) * | 2005-12-21 | 2007-06-21 | International Business Machines Corporation | Method and system for implementing database migration using a staged approach |
US7683801B2 (en) * | 2007-05-28 | 2010-03-23 | Tyson York Winarski | Multicolor visual feedback for portable, non-volatile storage |
US9064132B1 (en) * | 2008-03-31 | 2015-06-23 | Symantec Operating Corporation | Method for writing hardware encrypted backups on a per set basis |
US20100146000A1 (en) * | 2008-12-04 | 2010-06-10 | International Business Machines Corporation | Administering Blade Servers In A Blade Center |
US8452934B2 (en) * | 2008-12-16 | 2013-05-28 | Sandisk Technologies Inc. | Controlled data access to non-volatile memory |
US8452846B2 (en) | 2010-08-12 | 2013-05-28 | Talari Networks Incorporated | Adaptive private network asynchronous distributed shared memory services |
US8555022B1 (en) | 2010-01-06 | 2013-10-08 | Netapp, Inc. | Assimilation of foreign LUNS into a network storage system |
EP2565791A4 (en) * | 2010-04-28 | 2013-12-25 | Nec Corp | STORAGE SYSTEM, CONTROL PROCEDURE FOR THE STORAGE SYSTEM AND COMPUTER PROGRAM |
US8874746B1 (en) | 2010-05-24 | 2014-10-28 | Datacore Software Corporation | Collaboration between discrete systems and a shared system to consolidate shared storage-related services |
US9069467B2 (en) * | 2011-06-01 | 2015-06-30 | Microsoft Technology Licensing, Llc | Isolation of virtual machine I/O in multi-disk hosts |
US8990536B2 (en) * | 2011-06-01 | 2015-03-24 | Schneider Electric It Corporation | Systems and methods for journaling and executing device control instructions |
JP5685210B2 (ja) * | 2012-01-30 | 2015-03-18 | 富士通フロンテック株式会社 | 記憶システム、バックアップ方法、および、データ復元方法 |
CN102868779B (zh) * | 2012-09-20 | 2016-01-20 | 北京锐安科技有限公司 | 一种IPv6数据分区及快速查找方法 |
CN103077098B (zh) * | 2012-12-25 | 2015-11-18 | 深圳市安云信息科技有限公司 | 基于iscsi卷的文件备份方法和装置 |
US9276973B2 (en) * | 2013-03-29 | 2016-03-01 | Philip Scott Lyren | Peer-to-peer data storage |
US9769062B2 (en) | 2013-06-12 | 2017-09-19 | International Business Machines Corporation | Load balancing input/output operations between two computers |
US9779003B2 (en) | 2013-06-12 | 2017-10-03 | International Business Machines Corporation | Safely mapping and unmapping host SCSI volumes |
US9940019B2 (en) | 2013-06-12 | 2018-04-10 | International Business Machines Corporation | Online migration of a logical volume between storage systems |
US8819317B1 (en) * | 2013-06-12 | 2014-08-26 | International Business Machines Corporation | Processing input/output requests using proxy and owner storage systems |
US9112890B1 (en) | 2014-08-20 | 2015-08-18 | E8 Storage Systems Ltd. | Distributed storage over shared multi-queued storage device |
US9274720B1 (en) * | 2014-09-15 | 2016-03-01 | E8 Storage Systems Ltd. | Distributed RAID over shared multi-queued storage devices |
US9519666B2 (en) | 2014-11-27 | 2016-12-13 | E8 Storage Systems Ltd. | Snapshots and thin-provisioning in distributed storage over shared storage devices |
US10613933B2 (en) | 2014-12-09 | 2020-04-07 | Hitachi Vantara Llc | System and method for providing thin-provisioned block storage with multiple data protection classes |
US9525737B2 (en) | 2015-04-14 | 2016-12-20 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect |
US9529542B2 (en) | 2015-04-14 | 2016-12-27 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect |
US9930116B2 (en) * | 2015-06-01 | 2018-03-27 | Oracle International Corporation | Method and system for selecting a transport mechanism and a storage process |
US10496626B2 (en) | 2015-06-11 | 2019-12-03 | EB Storage Systems Ltd. | Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect |
US10102138B2 (en) * | 2015-10-22 | 2018-10-16 | Western Digital Technologies, Inc. | Division of data storage in single-storage device architecture |
US9842084B2 (en) | 2016-04-05 | 2017-12-12 | E8 Storage Systems Ltd. | Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices |
US10031872B1 (en) | 2017-01-23 | 2018-07-24 | E8 Storage Systems Ltd. | Storage in multi-queue storage devices using queue multiplexing and access control |
US10685010B2 (en) | 2017-09-11 | 2020-06-16 | Amazon Technologies, Inc. | Shared volumes in distributed RAID over shared multi-queue storage devices |
CN110998509B (zh) * | 2018-07-16 | 2021-11-09 | 华为技术有限公司 | 获取光模块链路协商信息的方法、设备和系统 |
CN110572184B (zh) | 2019-08-02 | 2021-03-05 | 华为技术有限公司 | 发电系统及用于发电系统的通信装置 |
Family Cites Families (186)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6024647A (ja) | 1983-07-20 | 1985-02-07 | Hitachi Ltd | システムの自律化資源管理方式 |
US5129088A (en) | 1987-11-30 | 1992-07-07 | International Business Machines Corporation | Data processing method to create virtual disks from non-contiguous groups of logically contiguous addressable blocks of direct access storage device |
JPH0792775B2 (ja) | 1989-12-11 | 1995-10-09 | 株式会社日立製作所 | 外部記憶装置群のスペース管理方法 |
US5544347A (en) * | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
AU8683991A (en) | 1990-11-09 | 1992-05-14 | Array Technology Corporation | Logical partitioning of a redundant array storage system |
JPH05505263A (ja) | 1991-02-05 | 1993-08-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクション・コマンドの経路指定 |
EP0551009B1 (en) | 1992-01-08 | 2001-06-13 | Emc Corporation | Method for synchronizing reserved areas in a redundant storage array |
JP2868141B2 (ja) | 1992-03-16 | 1999-03-10 | 株式会社日立製作所 | ディスクアレイ装置 |
US5457683A (en) | 1993-05-07 | 1995-10-10 | Apple Computer, Inc. | Link and discovery protocols for a ring interconnect architecture |
AU1091295A (en) | 1993-11-09 | 1995-05-29 | Kenneth H. Conner | First come memory accessing without conflict |
JP3249868B2 (ja) | 1993-11-19 | 2002-01-21 | 株式会社日立製作所 | アレイ形式の記憶装置システム |
US5506969A (en) | 1993-11-29 | 1996-04-09 | Sun Microsystems, Inc. | Method and apparatus for bus bandwidth management |
EP1376329A2 (en) * | 1994-06-22 | 2004-01-02 | Hewlett-Packard Company, A Delaware Corporation | Method of utilizing storage disks of differing capacity in a single storage volume in a hierarchic disk array |
US5623605A (en) | 1994-08-29 | 1997-04-22 | Lucent Technologies Inc. | Methods and systems for interprocess communication and inter-network data transfer |
US5615352A (en) | 1994-10-05 | 1997-03-25 | Hewlett-Packard Company | Methods for adding storage disks to a hierarchic disk array while maintaining data availability |
US6396480B1 (en) * | 1995-07-17 | 2002-05-28 | Gateway, Inc. | Context sensitive remote control groups |
US5930786A (en) * | 1995-10-20 | 1999-07-27 | Ncr Corporation | Method and apparatus for providing shared data to a requesting client |
US5948062A (en) | 1995-10-27 | 1999-09-07 | Emc Corporation | Network file server using a cached disk array storing a network file directory including file locking information and data mover computers each having file system software for shared read-write file access |
US5758188A (en) | 1995-11-21 | 1998-05-26 | Quantum Corporation | Synchronous DMA burst transfer protocol having the peripheral device toggle the strobe signal such that data is latched using both edges of the strobe signal |
US5758050A (en) * | 1996-03-12 | 1998-05-26 | International Business Machines Corporation | Reconfigurable data storage system |
US5742604A (en) | 1996-03-28 | 1998-04-21 | Cisco Systems, Inc. | Interswitch link mechanism for connecting high-performance network switches |
US5901327A (en) * | 1996-05-28 | 1999-05-04 | Emc Corporation | Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring |
US6886035B2 (en) * | 1996-08-02 | 2005-04-26 | Hewlett-Packard Development Company, L.P. | Dynamic load balancing of a network of client and server computer |
US5949977A (en) * | 1996-10-08 | 1999-09-07 | Aubeta Technology, Llc | Method and apparatus for requesting and processing services from a plurality of nodes connected via common communication links |
US6202060B1 (en) | 1996-10-29 | 2001-03-13 | Bao Q. Tran | Data management system |
US6157935A (en) | 1996-12-17 | 2000-12-05 | Tran; Bao Q. | Remote data access and management system |
US5991891A (en) | 1996-12-23 | 1999-11-23 | Lsi Logic Corporation | Method and apparatus for providing loop coherency |
US6710786B1 (en) * | 1997-02-03 | 2004-03-23 | Oracle International Corporation | Method and apparatus for incorporating state information into a URL |
EP0962090A2 (en) * | 1997-02-18 | 1999-12-08 | Nortel Networks Limited | Sponsored call and cell service |
US5884038A (en) * | 1997-05-02 | 1999-03-16 | Whowhere? Inc. | Method for providing an Internet protocol address with a domain name server |
ID24894A (id) | 1997-06-25 | 2000-08-31 | Samsung Electronics Co Ltd Cs | Metode dan apparatus untuk pembangun tiga-oto suatu jaringan rumah |
US6295584B1 (en) * | 1997-08-29 | 2001-09-25 | International Business Machines Corporation | Multiprocessor computer system with memory map translation |
US6385638B1 (en) * | 1997-09-04 | 2002-05-07 | Equator Technologies, Inc. | Processor resource distributor and method |
US7237036B2 (en) | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
JPH11122301A (ja) * | 1997-10-20 | 1999-04-30 | Fujitsu Ltd | アドレス変換接続装置 |
US6101559A (en) * | 1997-10-22 | 2000-08-08 | Compaq Computer Corporation | System for identifying the physical location of one or more peripheral devices by selecting icons on a display representing the one or more peripheral devices |
US5937169A (en) | 1997-10-29 | 1999-08-10 | 3Com Corporation | Offload of TCP segmentation to a smart adapter |
US6081879A (en) * | 1997-11-04 | 2000-06-27 | Adaptec, Inc. | Data processing system and virtual partitioning method for creating logical multi-level units of online storage |
US6018779A (en) | 1997-12-15 | 2000-01-25 | Emc Corporation | System for encapsulating a plurality of selected commands within a single command and transmitting the single command to a remote device over a communication link therewith |
US6029168A (en) * | 1998-01-23 | 2000-02-22 | Tricord Systems, Inc. | Decentralized file mapping in a striped network file system in a distributed computing environment |
US6253273B1 (en) | 1998-02-06 | 2001-06-26 | Emc Corporation | Lock mechanism |
US6105122A (en) * | 1998-02-06 | 2000-08-15 | Ncr Corporation | I/O protocol for highly configurable multi-node processing system |
US6246683B1 (en) | 1998-05-01 | 2001-06-12 | 3Com Corporation | Receive processing with network protocol bypass |
KR100272165B1 (ko) | 1998-05-20 | 2000-11-15 | 윤종용 | 캐쉬 메모리 시스템 및 그의 운영 방법 |
US6330236B1 (en) | 1998-06-11 | 2001-12-11 | Synchrodyne Networks, Inc. | Packet switching method with time-based routing |
US6157955A (en) | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6260120B1 (en) | 1998-06-29 | 2001-07-10 | Emc Corporation | Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement |
US6542909B1 (en) * | 1998-06-30 | 2003-04-01 | Emc Corporation | System for determining mapping of logical objects in a computer system |
US6449607B1 (en) * | 1998-09-11 | 2002-09-10 | Hitachi, Ltd. | Disk storage with modifiable data management function |
US6330615B1 (en) * | 1998-09-14 | 2001-12-11 | International Business Machines Corporation | Method of using address resolution protocol for constructing data frame formats for multiple partitions host network interface communications |
EP0987917B1 (fr) | 1998-09-18 | 2006-11-02 | Newbridge Networks Corporation | Procédé de transmission de données organisées en cellules, cellule, système de communication et unité terminale de réseau correspondante |
US6473774B1 (en) | 1998-09-28 | 2002-10-29 | Compaq Computer Corporation | Method and apparatus for record addressing in partitioned files |
JP4412685B2 (ja) | 1998-09-28 | 2010-02-10 | 株式会社日立製作所 | 記憶制御装置及びこれを用いたデータ格納システムの取り扱い方法 |
US6618743B1 (en) * | 1998-10-09 | 2003-09-09 | Oneworld Internetworking, Inc. | Method and system for providing discrete user cells in a UNIX-based environment |
US6654891B1 (en) * | 1998-10-29 | 2003-11-25 | Nortel Networks Limited | Trusted network binding using LDAP (lightweight directory access protocol) |
US6502135B1 (en) | 1998-10-30 | 2002-12-31 | Science Applications International Corporation | Agile network protocol for secure communications with assured system availability |
US6571274B1 (en) * | 1998-11-05 | 2003-05-27 | Beas Systems, Inc. | Clustered enterprise Java™ in a secure distributed processing system |
US6360270B1 (en) * | 1998-11-16 | 2002-03-19 | Hewlett-Packard Company | Hybrid and predictive admission control strategies for a server |
FR2786892B3 (fr) * | 1998-12-07 | 2000-12-29 | Schneider Automation | Coupleur d'automate programmable |
JP2000242434A (ja) * | 1998-12-22 | 2000-09-08 | Hitachi Ltd | 記憶装置システム |
US6466571B1 (en) * | 1999-01-19 | 2002-10-15 | 3Com Corporation | Radius-based mobile internet protocol (IP) address-to-mobile identification number mapping for wireless communication |
US6470342B1 (en) * | 1999-03-12 | 2002-10-22 | Compaq Computer Corporation | Process of maintaining a distributed map of transaction identifiers and using hashing to access these maps |
IE20000203A1 (en) * | 1999-03-25 | 2001-02-21 | Converge Net Technologies Inc | Storage domain management system |
US6401183B1 (en) * | 1999-04-01 | 2002-06-04 | Flash Vos, Inc. | System and method for operating system independent storage management |
US6701432B1 (en) | 1999-04-01 | 2004-03-02 | Netscreen Technologies, Inc. | Firewall including local bus |
US6487555B1 (en) | 1999-05-07 | 2002-11-26 | Alta Vista Company | Method and apparatus for finding mirrored hosts by analyzing connectivity and IP addresses |
US6275898B1 (en) * | 1999-05-13 | 2001-08-14 | Lsi Logic Corporation | Methods and structure for RAID level migration within a logical unit |
JP3685651B2 (ja) * | 1999-06-04 | 2005-08-24 | 沖電気工業株式会社 | 相互接続装置及びアクティブQoSマッピング方法 |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
JP4331835B2 (ja) | 1999-09-22 | 2009-09-16 | パナソニック株式会社 | 画像データ伝送方法 |
US7333451B1 (en) * | 1999-10-18 | 2008-02-19 | Nortel Networks Limited | Buffer management for mobile internet protocol |
US6732230B1 (en) * | 1999-10-20 | 2004-05-04 | Lsi Logic Corporation | Method of automatically migrating information from a source to an assemblage of structured data carriers and associated system and assemblage of data carriers |
US6711164B1 (en) * | 1999-11-05 | 2004-03-23 | Nokia Corporation | Method and apparatus for performing IP-ID regeneration to improve header compression efficiency |
JP2001160828A (ja) * | 1999-12-03 | 2001-06-12 | Matsushita Electric Ind Co Ltd | セキュリティ・ゲートウェイ装置におけるvpn通信方法 |
US6389448B1 (en) | 1999-12-06 | 2002-05-14 | Warp Solutions, Inc. | System and method for load balancing |
JP3959583B2 (ja) * | 1999-12-10 | 2007-08-15 | ソニー株式会社 | レコーディングシステム |
JP2001166993A (ja) * | 1999-12-13 | 2001-06-22 | Hitachi Ltd | 記憶制御装置およびキャッシュメモリの制御方法 |
KR100682736B1 (ko) * | 2000-01-28 | 2007-02-15 | 엠 디솔루션 코포레이션 | 구성가능한 확산 스펙트럼 통신 장치를 위한 구성 발생 방법 |
FR2804816B1 (fr) | 2000-02-03 | 2003-10-31 | Gemplus Card Int | Transport d'unites de protocole d'objet electronique portable par protocole pour peripheriques de micro- ordinateur |
US6834326B1 (en) | 2000-02-04 | 2004-12-21 | 3Com Corporation | RAID method and device with network protocol between controller and storage devices |
US7324228B2 (en) * | 2000-02-25 | 2008-01-29 | Hewlett-Packard Development Company, L.P. | System and method for downloading and for printing data from an external content source |
US6601101B1 (en) | 2000-03-15 | 2003-07-29 | 3Com Corporation | Transparent access to network attached devices |
US6947430B2 (en) | 2000-03-24 | 2005-09-20 | International Business Machines Corporation | Network adapter with embedded deep packet processing |
US6882648B2 (en) * | 2000-03-29 | 2005-04-19 | Fujitsu Limited | Communication device |
US6629264B1 (en) | 2000-03-30 | 2003-09-30 | Hewlett-Packard Development Company, L.P. | Controller-based remote copy system with logical unit grouping |
US7463582B2 (en) | 2000-04-14 | 2008-12-09 | Hughes Network Systems, Llc | System and method for scaling a two-way satellite system |
US6826561B2 (en) | 2000-05-22 | 2004-11-30 | Broadcom Corporation | Method and apparatus for performing a binary search on an expanded tree |
US6718404B2 (en) * | 2000-06-02 | 2004-04-06 | Hewlett-Packard Development Company, L.P. | Data migration using parallel, distributed table driven I/O mapping |
JP4168574B2 (ja) | 2000-06-02 | 2008-10-22 | 株式会社日立製作所 | パケット転送装置、パケット転送制御方法、及びパケット転送装置の設定方法 |
US7051087B1 (en) * | 2000-06-05 | 2006-05-23 | Microsoft Corporation | System and method for automatic detection and configuration of network parameters |
US6681244B1 (en) | 2000-06-09 | 2004-01-20 | 3Com Corporation | System and method for operating a network adapter when an associated network computing system is in a low-power state |
JP3890856B2 (ja) | 2000-06-12 | 2007-03-07 | ヤマハ株式会社 | 無線オーディオ機器 |
US6894976B1 (en) * | 2000-06-15 | 2005-05-17 | Network Appliance, Inc. | Prevention and detection of IP identification wraparound errors |
US7966421B2 (en) | 2000-06-21 | 2011-06-21 | SAtech Group, A.B. Limited Liability Company | Method and apparatus for logically expanding the length of a search key |
US7260638B2 (en) * | 2000-07-24 | 2007-08-21 | Bluesocket, Inc. | Method and system for enabling seamless roaming in a wireless network |
US6754662B1 (en) | 2000-08-01 | 2004-06-22 | Nortel Networks Limited | Method and apparatus for fast and consistent packet classification via efficient hash-caching |
US7278142B2 (en) | 2000-08-24 | 2007-10-02 | Veritas Operating Corporation | Dynamic computing environment using remotely allocable resources |
JP3555568B2 (ja) * | 2000-09-04 | 2004-08-18 | 日本電気株式会社 | Ip電話録音システム |
US6928473B1 (en) * | 2000-09-26 | 2005-08-09 | Microsoft Corporation | Measuring network jitter on application packet flows |
US6854021B1 (en) * | 2000-10-02 | 2005-02-08 | International Business Machines Corporation | Communications between partitions within a logically partitioned computer |
US6853382B1 (en) * | 2000-10-13 | 2005-02-08 | Nvidia Corporation | Controller for a memory system having multiple partitions |
US6901497B2 (en) * | 2000-10-27 | 2005-05-31 | Sony Computer Entertainment Inc. | Partition creating method and deleting method |
US6862648B2 (en) * | 2000-10-30 | 2005-03-01 | Sun Microsystems, Inc. | Interface emulation for storage devices |
US6978271B1 (en) | 2000-10-31 | 2005-12-20 | Unisys Corporation | Mechanism for continuable calls to partially traverse a dynamic general tree |
US6985956B2 (en) * | 2000-11-02 | 2006-01-10 | Sun Microsystems, Inc. | Switching system |
US6434683B1 (en) * | 2000-11-07 | 2002-08-13 | Storage Technology Corporation | Method and system for transferring delta difference data to a storage device |
ITBO20000653A1 (it) * | 2000-11-14 | 2002-05-14 | Sichera Di Sichera Gianni | Metodo per l'inserimento di un foglio di copertina tra una pellicola trsparente e un contenitore con apertura a libro e dispositivo che attu |
US6601135B1 (en) * | 2000-11-16 | 2003-07-29 | International Business Machines Corporation | No-integrity logical volume management method and system |
US7406523B1 (en) * | 2000-11-21 | 2008-07-29 | Microsoft Corporation | Client-server communications system and method using a semi-connectionless protocol |
US7065568B2 (en) | 2000-11-30 | 2006-06-20 | Microsoft Corporation | System and method for managing states and user context over stateless protocols |
US6757845B2 (en) | 2000-11-30 | 2004-06-29 | Bitmicro Networks, Inc. | Method and apparatus for testing a storage device |
US6876657B1 (en) | 2000-12-14 | 2005-04-05 | Chiaro Networks, Ltd. | System and method for router packet control and ordering |
US7234029B2 (en) * | 2000-12-28 | 2007-06-19 | Intel Corporation | Method and apparatus for reducing memory latency in a cache coherent multi-node architecture |
US7200641B1 (en) * | 2000-12-29 | 2007-04-03 | Emc Corporation | Method and system for encoding SCSI requests for transmission using TCP/IP |
JP3392828B2 (ja) * | 2001-01-10 | 2003-03-31 | 株式会社東芝 | 分散処理システム、該システムにおける描画命令転送方法、及びコンピュータ読み取り可能な記憶媒体 |
WO2002057917A2 (en) * | 2001-01-22 | 2002-07-25 | Sun Microsystems, Inc. | Peer-to-peer network computing platform |
US7260633B2 (en) * | 2001-01-25 | 2007-08-21 | Microsoft Corporation | System and method for processing requests from newly registered remote application consumers |
US7203730B1 (en) * | 2001-02-13 | 2007-04-10 | Network Appliance, Inc. | Method and apparatus for identifying storage devices |
WO2002065329A1 (en) * | 2001-02-14 | 2002-08-22 | The Escher Group, Ltd. | Peer-to peer enterprise storage |
JP2002252880A (ja) | 2001-02-26 | 2002-09-06 | Sanyo Electric Co Ltd | 液晶プロジェクタ |
US7145866B1 (en) | 2001-03-01 | 2006-12-05 | Emc Corporation | Virtual network devices |
JP3470756B2 (ja) * | 2001-03-06 | 2003-11-25 | 日本電気株式会社 | 主装置アドレス制限通知システム |
JP3972596B2 (ja) | 2001-04-20 | 2007-09-05 | 株式会社日立製作所 | ディスクアレイシステム |
US20020165978A1 (en) | 2001-05-07 | 2002-11-07 | Terence Chui | Multi-service optical infiniband router |
US20020184327A1 (en) | 2001-05-11 | 2002-12-05 | Major Robert Drew | System and method for partitioning address space in a proxy cache server cluster |
US7145919B2 (en) * | 2001-06-01 | 2006-12-05 | Telefonaktienbolaget Lm Ericsson (Publ) | Method and apparatus for transporting different classes of data bits in a payload over a radio interface |
US20030026246A1 (en) | 2001-06-06 | 2003-02-06 | Zarlink Semiconductor V.N. Inc. | Cached IP routing tree for longest prefix search |
US7613806B2 (en) * | 2001-06-28 | 2009-11-03 | Emc Corporation | System and method for managing replication sets of data distributed over one or more computer systems |
KR100392382B1 (ko) * | 2001-07-27 | 2003-07-23 | 한국전자통신연구원 | 동적 크기 변경 및 메타 데이터 양의 최소화를 위한 논리볼륨 관리 방법 |
US7363310B2 (en) | 2001-09-04 | 2008-04-22 | Timebase Pty Limited | Mapping of data from XML to SQL |
US7437493B2 (en) * | 2001-09-28 | 2008-10-14 | Dot Hill Systems Corp. | Modular architecture for a network storage controller |
US20030069995A1 (en) | 2001-10-05 | 2003-04-10 | Fayette Brad K. | Method and system for communicating among heterogeneous systems |
US6775673B2 (en) * | 2001-12-19 | 2004-08-10 | Hewlett-Packard Development Company, L.P. | Logical volume-level migration in a partition-based distributed file system |
US6775672B2 (en) * | 2001-12-19 | 2004-08-10 | Hewlett-Packard Development Company, L.P. | Updating references to a migrated object in a partition-based distributed file system |
US6772161B2 (en) * | 2001-12-19 | 2004-08-03 | Hewlett-Packard Development Company, L.P. | Object-level migration in a partition-based distributed file system |
US7599360B2 (en) * | 2001-12-26 | 2009-10-06 | Cisco Technology, Inc. | Methods and apparatus for encapsulating a frame for transmission in a storage area network |
EP1329809B1 (en) | 2002-01-18 | 2008-08-06 | Hewlett-Packard Company, A Delaware Corporation | Distributed computing system and method |
US7283527B2 (en) * | 2002-02-27 | 2007-10-16 | International Business Machines Corporation | Apparatus and method of maintaining two-byte IP identification fields in IP headers |
US7539991B2 (en) * | 2002-03-21 | 2009-05-26 | Netapp, Inc. | Method and apparatus for decomposing I/O tasks in a raid system |
US7149769B2 (en) | 2002-03-26 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | System and method for multi-destination merge in a storage area network |
US6912622B2 (en) * | 2002-04-15 | 2005-06-28 | Microsoft Corporation | Multi-level cache architecture and cache management method for peer-to-peer name resolution protocol |
US7188194B1 (en) * | 2002-04-22 | 2007-03-06 | Cisco Technology, Inc. | Session-based target/LUN mapping for a storage area network and associated method |
US6895461B1 (en) | 2002-04-22 | 2005-05-17 | Cisco Technology, Inc. | Method and apparatus for accessing remote storage using SCSI and an IP network |
US7146427B2 (en) | 2002-04-23 | 2006-12-05 | Lsi Logic Corporation | Polling-based mechanism for improved RPC timeout handling |
US20030202510A1 (en) | 2002-04-26 | 2003-10-30 | Maxxan Systems, Inc. | System and method for scalable switch fabric for computer network |
US20030204611A1 (en) | 2002-04-29 | 2003-10-30 | Mccosh John C. | Communications tester and method of using same |
US6732171B2 (en) * | 2002-05-31 | 2004-05-04 | Lefthand Networks, Inc. | Distributed network storage system with virtualization |
US7111303B2 (en) * | 2002-07-16 | 2006-09-19 | International Business Machines Corporation | Virtual machine operating system LAN |
US7263108B2 (en) * | 2002-08-06 | 2007-08-28 | Netxen, Inc. | Dual-mode network storage systems and methods |
US6741554B2 (en) * | 2002-08-16 | 2004-05-25 | Motorola Inc. | Method and apparatus for reliably communicating information packets in a wireless communication network |
US20040047367A1 (en) | 2002-09-05 | 2004-03-11 | Litchfield Communications, Inc. | Method and system for optimizing the size of a variable buffer |
JP4202709B2 (ja) * | 2002-10-07 | 2008-12-24 | 株式会社日立製作所 | ストレージ装置を有するネットワークにおける、ボリューム及び障害管理方法 |
US7152069B1 (en) | 2002-10-15 | 2006-12-19 | Network Appliance, Inc. | Zero copy writes through use of mbufs |
US7774325B2 (en) * | 2002-10-17 | 2010-08-10 | Intel Corporation | Distributed network attached storage system |
US7120666B2 (en) | 2002-10-30 | 2006-10-10 | Riverbed Technology, Inc. | Transaction accelerator for client-server communication systems |
US7616638B2 (en) * | 2003-07-29 | 2009-11-10 | Orbital Data Corporation | Wavefront detection and disambiguation of acknowledgments |
US8005918B2 (en) | 2002-11-12 | 2011-08-23 | Rateze Remote Mgmt. L.L.C. | Data storage devices having IP capable partitions |
US7170890B2 (en) * | 2002-12-16 | 2007-01-30 | Zetera Corporation | Electrical devices with improved communication |
US20040181476A1 (en) * | 2003-03-13 | 2004-09-16 | Smith William R. | Dynamic network resource brokering |
US20040184455A1 (en) * | 2003-03-19 | 2004-09-23 | Institute For Information Industry | System and method used by a gateway for processing fragmented IP packets from a private network |
US6904470B1 (en) * | 2003-03-26 | 2005-06-07 | Emc Corporation | Device selection by a disk adapter scheduler |
US7130975B2 (en) * | 2003-06-27 | 2006-10-31 | Hitachi, Ltd. | Data processing system |
JP4124348B2 (ja) * | 2003-06-27 | 2008-07-23 | 株式会社日立製作所 | 記憶システム |
US7526577B2 (en) * | 2003-09-19 | 2009-04-28 | Microsoft Corporation | Multiple offload of network state objects with support for failover events |
US7415018B2 (en) * | 2003-09-17 | 2008-08-19 | Alcatel Lucent | IP Time to Live (TTL) field used as a covert channel |
GB2406742B (en) | 2003-10-03 | 2006-03-22 | 3Com Corp | Switching fabrics and control protocols for them |
US7436789B2 (en) | 2003-10-09 | 2008-10-14 | Sarnoff Corporation | Ad Hoc wireless node and network |
JP4397675B2 (ja) * | 2003-11-12 | 2010-01-13 | 株式会社日立製作所 | 計算機システム |
US7333994B2 (en) | 2003-12-18 | 2008-02-19 | Microsoft Corporation | System and method for database having relational node structure |
US20050166022A1 (en) * | 2004-01-28 | 2005-07-28 | Hitachi, Ltd. | Method and apparatus for copying and backup in storage systems |
KR100600862B1 (ko) * | 2004-01-30 | 2006-07-14 | 김선권 | 인터넷상의 정보자원에 대한 접근 경로를 체계적으로수집하고 검색하는 방법, 및 이 방법을 실행할 수 있는컴퓨터 프로그램을 수록한 기록매체 |
US8990430B2 (en) * | 2004-02-19 | 2015-03-24 | Cisco Technology, Inc. | Interface bundles in virtual network devices |
WO2005086850A2 (en) | 2004-03-09 | 2005-09-22 | The University Of North Carolina At Chapel Hill | Methods, systems, and computer program products for modeling and simulating application-level traffic characteristics in a network based on transport and network layer header information |
JP2005265914A (ja) | 2004-03-16 | 2005-09-29 | Ricoh Co Ltd | ズームレンズ、カメラおよび携帯情報端末装置 |
US7409494B2 (en) | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Extension of write anywhere file system layout |
US7886299B2 (en) | 2004-06-01 | 2011-02-08 | Hitachi, Ltd. | Method of dynamically balancing workload of a storage system |
US20050270856A1 (en) | 2004-06-03 | 2005-12-08 | Inphase Technologies, Inc. | Multi-level format for information storage |
US8155117B2 (en) | 2004-06-29 | 2012-04-10 | Qualcomm Incorporated | Filtering and routing of fragmented datagrams in a data network |
US20060036602A1 (en) * | 2004-08-13 | 2006-02-16 | Unangst Marc J | Distributed object-based storage system that stores virtualization maps in object attributes |
US20060077902A1 (en) * | 2004-10-08 | 2006-04-13 | Kannan Naresh K | Methods and apparatus for non-intrusive measurement of delay variation of data traffic on communication networks |
US7564843B2 (en) * | 2004-12-16 | 2009-07-21 | International Business Machines Corporation | Method, system and article for improved network performance by avoiding IP-ID wrap-arounds causing data corruption on fast networks |
US7467189B2 (en) * | 2005-01-21 | 2008-12-16 | Microsoft Corporation | Resource identifier zone translation |
CN101185283A (zh) * | 2005-03-24 | 2008-05-21 | 诺基亚公司 | 向接收设备通知到来的传输会话 |
US20070101023A1 (en) * | 2005-10-28 | 2007-05-03 | Microsoft Corporation | Multiple task offload to a peripheral device |
US20070208760A1 (en) * | 2006-03-06 | 2007-09-06 | Reuter James M | Data-state-describing data structures |
-
2006
- 2006-06-20 US US11/472,198 patent/US7743214B2/en active Active
-
2007
- 2007-06-20 CN CN2007800311155A patent/CN101506779B/zh active Active
- 2007-06-20 CA CA2657221A patent/CA2657221C/en active Active
- 2007-06-20 AT AT07809803T patent/ATE508414T1/de not_active IP Right Cessation
- 2007-06-20 WO PCT/US2007/014572 patent/WO2007149563A2/en active Application Filing
- 2007-06-20 KR KR1020097001054A patent/KR101053967B1/ko active IP Right Grant
- 2007-06-20 DE DE602007014366T patent/DE602007014366D1/de active Active
- 2007-06-20 EP EP07809803A patent/EP2035933B1/en active Active
- 2007-06-20 JP JP2009516584A patent/JP5027877B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107888689A (zh) * | 2017-11-16 | 2018-04-06 | 无锡地铁集团有限公司 | 基于共享存储的加锁资源配置方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2035933A2 (en) | 2009-03-18 |
DE602007014366D1 (de) | 2011-06-16 |
US7743214B2 (en) | 2010-06-22 |
WO2007149563A2 (en) | 2007-12-27 |
CA2657221A1 (en) | 2007-12-27 |
KR101053967B1 (ko) | 2011-08-04 |
JP5027877B2 (ja) | 2012-09-19 |
ATE508414T1 (de) | 2011-05-15 |
CA2657221C (en) | 2012-11-20 |
EP2035933A4 (en) | 2009-07-08 |
KR20090026342A (ko) | 2009-03-12 |
US20070168396A1 (en) | 2007-07-19 |
WO2007149563A3 (en) | 2008-08-14 |
EP2035933B1 (en) | 2011-05-04 |
JP2009541854A (ja) | 2009-11-26 |
CN101506779B (zh) | 2012-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101506779B (zh) | 生成存储系统命令 | |
CN101582915B (zh) | 存储系统以及使用管理装置的存储系统的管理方法 | |
CN101799742B (zh) | 用于在存储系统之间转移精简配置卷的方法和装置 | |
US7631157B2 (en) | Offsite management using disk based tape library and vault system | |
CN102469025B (zh) | 多存储系统上的多路径交换 | |
JP4175764B2 (ja) | 計算機システム | |
US7660946B2 (en) | Storage control system and storage control method | |
US7930506B2 (en) | Information processing system and management device for managing relocation of data based on a change in the characteristics of the data over time | |
US9003145B2 (en) | Management server and data migration method | |
US8983822B2 (en) | Operating a storage server on a virtual machine | |
US9280555B1 (en) | Unified data protection for block and file objects | |
US20060218367A1 (en) | Computer system, data management method, and program | |
EP4139802B1 (en) | Methods for managing input-ouput operations in zone translation layer architecture and devices thereof | |
US20070050575A1 (en) | Storage system and control method thereof, and computer program product | |
US20070067670A1 (en) | Method, apparatus and program storage device for providing drive load balancing and resynchronization of a mirrored storage system | |
CN101799743A (zh) | 用于逻辑卷管理的方法和装置 | |
EP1903427A2 (en) | Storage apparatus and configuration setting method | |
CN107729536A (zh) | 一种数据存储方法和装置 | |
US20130031570A1 (en) | Sas virtual tape drive | |
US20090006802A1 (en) | Virtual storage space with cyclical wrapping grid function | |
CN102457547A (zh) | 多控制器的储存区域网络设备的升级方法 | |
US9641613B2 (en) | Volume hierarchy download in a storage area network | |
Syrewicze et al. | Connecting Hyper-V Hosts to Storage Infrastructure |
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 |