Embedded scale-out aggregator for storage array controllers
Summary by NHIP
Dynamic Storage Tiering Aggregator
The method discovers remote virtual drives, advertises local drives, and receives client IO requests addressed to the remote drives. It transmits command descriptor block requests to allocate local cache space and sends IO requests via Remote Direct Memory Access.
Claim Score by NHIP
Abstract
Methods and systems for dynamic storage tiering may comprise: discovering one or more remote virtual drives associated with one or more remote storage arrays; advertising one or more local virtual drives associated with a local storage array; receiving one or more IO requests from a client addressed to one or more remote virtual drives associated with one or more remote storage arrays; transmitting one or more command descriptor block (CDB) requests to one or more remote storage arrays associated with the one or more virtual drives to allocate local cache space and transmitting the one or more IO requests to the one or more remote storage arrays via Remote Direct Memory Access (RDMA).

Term
3.9 yearsleft in the term
Expires 3 August 2030, including 455 days of term adjustment.
- Priority
- Filed
- Granted
- Today
- Expires
21 claims: 3 independent, 18 dependent
- 1Broadest claimClaim Score 51, average(NHIP)A method for aggregating remote storage array resources comprising:discovering one or more remote virtual drives associated with one or more remote storage arrays;advertising one or more local virtual drives associated with a local storage array;receiving one or more IO requests from a client addressed to one or more remote virtual drives associated with one or more remote storage arrays;and transmitting one or more command descriptor block (CDB) requests to one or more remote storage arrays associated with the one or more virtual drives to allocate local cache space.
- 8A system for aggregating remote storage array resources comprising:means for discovering one or more remote virtual drives associated with one or more remote storage arrays;means for advertising one or more local virtual drives associated with a local storage array;means for receiving one or more IO requests from a client addressed to one or more remote virtual drives associated with one or more remote storage arrays;means for transmitting one or more command descriptor block (CDB) requests to one or more remote storage arrays associated with the one or more virtual drives to allocate local cache space.
- 15A computer-readable medium comprising computer readable instructions which, when executed on a processor, cause the processor to execute a process, the process comprising:discovering one or more remote virtual drives associated with one or more remote storage arrays;advertising one or more local virtual drives associated with a local storage array;receiving one or more IO requests from a client addressed to one or more remote virtual drives associated with one or more remote storage arrays;and transmitting one or more command descriptor block (CDB) requests to one or more remote storage arrays associated with the one or more virtual drives to allocate local cache space.
Independent claims3
60 paragraphs in 5 sections, as filed
CROSS REFERENCE
The present application claims priority to U.S. Provisional Patent Application No. 61/106,309, filed on Oct. 17, 2008, which is hereby incorporated in its entirety.
BACKGROUND
Current technologies surrounding storage device aggregation are commonly based on Block level virtualization techniques using a Storage Virtualization Manager-like (SVM) appliance. Presently, clustering across multiple arrays require dedicated specialized hardware and/or a proprietary software solution on the IO path in order to present aggregated resources from multiple arrays in a clustered environment.
Such solutions may work only across storage arrays that have common protocols across IO paths. Further, current technologies may require either client agents and/or Data Path Modules (DPM) for provisioning IO path management in a virtualized environment. As such, aggregated resources having diverse protocols may require complex setup and management operations by an end-user.
SUMMARY
This invention disclosure describes a system and methodology by which diverse storage resources spread across multiple storage systems configured in a cluster may be aggregated and presented as one or more devices to the end user using an embedded scale out aggregator mechanism residing within the storage array controllers.
The present disclosure describes a system for device aggregation from Data Protection Layer (DPL) using Storage Management Initiative-Specification (SMI-S) based discovery spanning across multiple clustered storage arrays. An SMI-S based user interface with an abstraction layer may be provided in order to present common tasks to a user.
BRIEF DESCRIPTION OF THE DRAWINGS
The numerous advantages of the disclosure may be better understood by those skilled in the art by reference to the accompanying figures in which:
<figref idrefs="DRAWINGS">FIG. 1</figref> shows a high-level block diagram of a system for configuring a storage network.
<figref idrefs="DRAWINGS">FIG. 2</figref> is a high-level logic flowchart of a process.
<figref idrefs="DRAWINGS">FIG. 3</figref> is a high-level logic flowchart of a process.
<figref idrefs="DRAWINGS">FIG. 4</figref> is a high-level logic flowchart of a process.
<figref idrefs="DRAWINGS">FIG. 5</figref> is a high-level logic flowchart of a process.
<figref idrefs="DRAWINGS">FIG. 6</figref> is a high-level logic flowchart of a process.
<figref idrefs="DRAWINGS">FIG. 7</figref> is a high-level logic flowchart of a process.
<figref idrefs="DRAWINGS">FIG. 8</figref> is a high-level logic flowchart of a process.
DETAILED DESCRIPTION
In the following detailed description, reference may be made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims may be not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here.
Referring to <figref idrefs="DRAWINGS">FIG. 1</figref>, an illustrative representation of a system <b>100</b> for scale-aggregation is presented. The system <b>100</b> may include at least one client <b>101</b> employing Storage Management Initiative-Specification (SMI-S) protocols. Such protocols have been developed and maintained by the Storage Networking Industry Association (SNIA). SMI-S is based upon the Common Information Model and the Web-Based Enterprise Management standards defined by the Distributed Management Task Force, Management via TCP/IP.
The system <b>100</b> may include two or more RAID storage devices <b>102</b> (e.g. RAID storage device <b>102</b>A and RAID storage device <b>102</b>B). A RAID storage device <b>102</b> (e.g. a first storage device of heterogeneous array of storage devices) may include a RAID controller <b>104</b> (e.g. RAID controller <b>104</b>A and RAID controller <b>104</b>B) configured to provided aggregation functionality in concert with another RAID storage device <b>102</b> (e.g. a second storage device of heterogeneous array of storage devices) which also includes a RAID controller <b>104</b>.
The embedded scale-out aggregator architecture employed by the RAID controller <b>104</b> may be layered on top of a Data Protection Layer (DPL) provider interface <b>107</b>. The DPL <b>107</b> may include storage array controller firmware responsible for guarding against loss of stored data using Redundant Array of Independent Disks (RAID) techniques as well as initiator and target drivers and management interfaces.
The embedded scale-out aggregator architecture employed by the RAID controller <b>104</b> may further include a Block Virtualization Layer (BVL) <b>104</b>A-<b>1</b> providing the core functionality and supporting user interfaces associated with a Storage Virtualization Manager (SVM) <b>104</b>-<b>1</b>-<b>1</b>. The BVL module <b>104</b>A-<b>1</b> may be responsible for management of IO path access to virtual volumes and replication objects.
Referring to <figref idrefs="DRAWINGS">FIGS. 2-3</figref>, high-level interactions between core blocks that constitute the scale-out architecture are presented. The core blocks may include one or more modules that may be implemented within RAID controller <b>104</b> firmware. The RAID controller <b>104</b>A may include one or more input/output drivers (IOD) <b>104</b>-<b>6</b>-<b>1</b>, <b>104</b>-<b>8</b>-<b>1</b>. The IODs may provide initiator (e.g. IOD (Init)) and/or target (e.g. IOD (target)) modes of operation and may be multi-protocol capable (FC, SAS, iSCSI, and the like).
The RAID controller <b>104</b>A may include one or more internal RAID engines <b>104</b>-<b>7</b>-<b>1</b>. The RAID engines may expose one or more RAID volumes (i.e. virtual drives) including one or more RAID drives <b>103</b> (e.g. RAID drives <b>103</b>A and <b>103</b>B). The RAID volumes may be exposed via IODs.
The RAID controller <b>104</b>A may include one or more Storage Virtualization Manager (SMV) modules <b>104</b>-<b>1</b>-<b>1</b>. An SVM <b>104</b>-<b>1</b>-<b>1</b> may push virtualization definitions (e.g. pools, volumes, etc.) to a virtualization agent (VA) module <b>104</b>-<b>2</b>-<b>1</b>. A VA module <b>104</b>-<b>2</b>-<b>1</b> may read and/or update mapping metadata corresponding to virtual storage pools including RAID drives <b>103</b>A associated with the RAID controller <b>104</b>A as well as other remote storage devices (e.g. RAID drives <b>103</b>B associated with RAID controller <b>104</b>B). The VA module <b>104</b>-<b>2</b>-<b>1</b> may further provide maps to a Fast Path (FP) module <b>104</b>-<b>3</b>-<b>1</b>.
The FP module <b>104</b>-<b>3</b>-<b>1</b> may maintain a rapid-access mapping cache that maintains direct mappings for directly servicing IO requests directed to various back-end devices (e.g. RAID drives <b>103</b>). This reduces the need for VA <b>104</b>-<b>2</b>-<b>1</b> involvement in IO request servicing.
The RAID controller <b>104</b>A may manage scale-out entities (e.g. RAID storage device <b>102</b>B via SMI-S via an embedded SMI-S agent <b>104</b>-<b>4</b>-<b>1</b>. The embedded SMI-S agent <b>104</b>-<b>4</b>-<b>1</b> may interact with the SVM <b>104</b>-<b>1</b>-<b>1</b> (e.g. via path B) and the RAID engine <b>104</b>-<b>7</b>-<b>1</b> (via path A) to gather all component information, including logical and physical attributes.
The RAID controller <b>104</b>A may conduct local and/or remote device discovery using the various scale-out architectural blocks. The RAID controller <b>104</b>A utilizes the capabilities of the BVL module <b>104</b>A-<b>1</b> components to aggregate the back-end storage. An extension of this concept may allow storage pools to be spread across multiple storage arrays.
Such scale-out aggregation may provide the system <b>100</b> the ability to combine multiple storage arrays to form a larger, more capable aggregate system (e.g. a “storage cluster”). IO path access to any array allows access to all storage resources in a cluster. Administrators manage the cluster as a unified single-system, not a collection of independent components. Storage pools may then be built using virtual drives from multiple arrays.
Several methods may be employed in configuring a scale-out connectivity path from a local BVL to remote storage arrays.
Referring to <figref idrefs="DRAWINGS">FIG. 2</figref>, in a first method, a Private Scale-Out Network (PSON) <b>105</b> may be used. The PSON <b>105</b> may utilize Peripheral Component Interconnect Express (PCI-e) connectivity to provide high-speed inter-aggregator links.
Referring to <figref idrefs="DRAWINGS">FIG. 3</figref>, in a second method, a client-side IO network fabric (HNF) <b>106</b> may be used. The HNF <b>106</b> may employ a switch-based connectivity (e.g. Fibre Channel, Infiniband, iSCSI, and the like) that is used to connect clients <b>101</b> for driving IO to the storage arrays and to provide inter-aggregator links.
Following are descriptions relating to a series of flowcharts depicting various exemplary implementations. For ease of understanding, the flowcharts are organized such that the initial flowcharts present implementations via an example implementation and thereafter the following flowcharts present alternate implementations and/or expansions of the initial flowchart(s) as either sub-component operations or additional component operations building on one or more earlier-presented flowcharts. Those having skill in the art will appreciate that the style of presentation utilized herein (e.g., beginning with a presentation of a flowchart(s) presenting an example implementation and thereafter providing additions to and/or further details in subsequent flowcharts) generally allows for a rapid and easy understanding of the various process implementations. In addition, those skilled in the art will further appreciate that the style of presentation used herein also lends itself well to modular and/or object-oriented program design paradigms.
<figref idrefs="DRAWINGS">FIG. 4</figref> illustrates an operational flow <b>400</b> representing example operations related to configuring a storage network. In <figref idrefs="DRAWINGS">FIG. 4</figref> and in following figures that include various examples of operational flows, discussion and explanation may be provided with respect to the above-described examples of <figref idrefs="DRAWINGS">FIGS. 1-2</figref>, and/or with respect to other examples and contexts. However, it should be understood that the operational flows may be executed in a number of other environments and contexts, and/or in modified versions of <figref idrefs="DRAWINGS">FIGS. 1-2</figref>. Also, although the various operational flows are presented in the sequence(s) illustrated, it should be understood that the various operations may be performed in other orders than those that are illustrated, or may be performed concurrently.
After a start operation, the operational flow <b>400</b> moves to an operation <b>410</b>. Operation <b>410</b> depicts discovering one or more remote virtual drives associated with one or more remote storage arrays. For example, as shown in <figref idrefs="DRAWINGS">FIG. 2</figref>, the FP module <b>104</b>-<b>3</b>-<b>1</b> of BVL module <b>104</b>A-<b>1</b> of a local RAID storage device <b>102</b>A may cause an associated PSON IOD (Init) <b>104</b>-<b>6</b>-<b>1</b> to transmit a query to a PSON IOD (target) <b>104</b>-<b>6</b>-<b>2</b> of a BVL <b>104</b>B-<b>1</b> of a remote RAID storage device <b>102</b>B. The query may be transmitted via a PSON <b>105</b>. The PSON <b>105</b> may employ PCI-e connectivity. The BVL module <b>104</b>B-<b>1</b> of the remote RAID storage device <b>102</b>B may transmit status data associated with virtual volumes maintained by the BVL module <b>104</b>A-<b>1</b> in response to the query by the BVL module <b>104</b>A-<b>1</b> of the local BVL module <b>104</b>A-<b>1</b>.
Alternately, as shown in <figref idrefs="DRAWINGS">FIG. 3</figref>, the FP module <b>104</b>-<b>3</b>-<b>1</b> of BVL module <b>104</b>A-<b>1</b> of a local RAID storage device <b>102</b>A may cause an associated PSON IOD (Init) <b>104</b>-<b>6</b>-<b>1</b> to transmit a query to a PSON IOD (target) <b>104</b>-<b>6</b>-<b>2</b> of a BVL <b>104</b>B-<b>1</b> of a remote RAID storage device <b>102</b>B. The query may be transmitted via a HNF <b>106</b>. The HNF <b>106</b> may employ a fibre channel switch-based connectivity that is used to connect clients <b>101</b> for driving IO to the storage arrays and to provide inter-aggregator links. The BVL module <b>104</b>B-<b>1</b> of the remote RAID storage device <b>102</b>B may transmit status data associated with virtual volumes maintained by the BVL module <b>104</b>B-<b>1</b> in response to the query by the BVL module <b>104</b>A-<b>1</b> of the local RAID storage device <b>102</b>A.
Operation <b>420</b> depicts advertising one or more local virtual drives associated with a local storage array. For example, as shown in <figref idrefs="DRAWINGS">FIG. 2</figref>, the FP module <b>104</b>-<b>3</b>-<b>1</b> of the BVL module <b>104</b>A-<b>1</b> of the local RAID storage device <b>102</b>A may cause an associated IOD (Init) <b>104</b>-<b>6</b>-<b>1</b> to advertise the status of the virtual volumes associated with the BVL module <b>104</b>A-<b>1</b> via the PSON <b>105</b> to a BVL module <b>104</b>B-<b>1</b> of a remote RAID storage device <b>102</b>B to allow discovery of those associated virtual volumes by the BVL module <b>104</b>B-<b>1</b>.
Alternately, as shown in <figref idrefs="DRAWINGS">FIG. 3</figref>, the FP module <b>104</b>-<b>3</b>-<b>1</b> of the BVL module <b>104</b>A-<b>1</b> of the local RAID storage device <b>102</b>A may cause an associated IOD (Init) <b>104</b>-<b>6</b>-<b>1</b> to advertise the status of the virtual volumes associated with the BVL module <b>104</b>A-<b>1</b> via the HNF <b>106</b> to a BVL module <b>104</b>B-<b>1</b> of a remote RAID storage device <b>102</b>B to allow discovery of those associated virtual volumes by the BVL module <b>104</b>B-<b>1</b>.
Operation <b>430</b> depicts receiving one or more IO requests from a client addressed to one or more remote virtual drives associated with one or more remote storage arrays. For example, as shown in <figref idrefs="DRAWINGS">FIG. 2</figref>, the IOD (Target) <b>104</b>-<b>8</b>-<b>1</b> of the BVL module <b>104</b>A-<b>1</b> of the local RAID storage device <b>102</b>A may receive a IO request from a client <b>101</b> to access (e.g. read from and/or write to) data maintained in one or more virtual drives maintained by BVL module <b>104</b>B-<b>1</b> associated with remote RAID storage device <b>102</b>B.
Alternately, as shown in <figref idrefs="DRAWINGS">FIG. 3</figref>, the IOD (Target) <b>104</b>-<b>8</b>-<b>1</b> of the BVL module <b>104</b>A-<b>1</b> of the local RAID storage device <b>102</b>A may receive a IO request from a client <b>101</b> via the HNF <b>106</b> to access (e.g. read from and/or write to) data maintained in one or more virtual drives maintained by BVL module <b>104</b>B-<b>1</b> associated with remote RAID storage device <b>102</b>B.
Operation <b>440</b> depicts transmitting one or more command descriptor block (CDB) requests to one or more remote storage arrays associated with the one or more virtual drives to allocate local cache space. For example, as shown in <figref idrefs="DRAWINGS">FIG. 2</figref>, the FP module <b>104</b>-<b>3</b>-<b>1</b> of the BVL module <b>104</b>A-<b>1</b> of the local RAID storage device <b>102</b>A may cause an associated PSON IOD (Init) <b>104</b>-<b>1</b>-<b>6</b> to transmit one or more CDB requests via the PSON <b>105</b> directing the BVL module <b>104</b>B-<b>1</b> associated with remote RAID storage device <b>102</b>B to allocate cache space with in the BVL module <b>104</b>B-<b>1</b> logic.
Alternately, as shown in <figref idrefs="DRAWINGS">FIG. 3</figref>, the FP module <b>104</b>-<b>3</b>-<b>1</b> of the BVL module <b>104</b>A-<b>1</b> of the local RAID storage device <b>102</b>A may cause an associated IOD (Init) <b>104</b>-<b>1</b>-<b>6</b> to transmit one or more CDB requests via the HNF <b>106</b> directing the BVL module <b>104</b>B-<b>1</b> associated with remote RAID storage device <b>102</b>B to allocate cache space with in the BVL module <b>104</b>B-<b>1</b> logic. Further, the BVL module <b>104</b>A-<b>1</b> of the local RAID storage device <b>102</b>A may also allocate cache space upon receiving the IO request from the client <b>101</b> so as to independently drive data transfers from the remote RAID storage device <b>102</b>B.
<figref idrefs="DRAWINGS">FIG. 5</figref> illustrates alternative embodiments of the example operational flow <b>400</b> of <figref idrefs="DRAWINGS">FIG. 4</figref>. <figref idrefs="DRAWINGS">FIG. 5</figref> illustrates example embodiments where the operational flow <b>400</b> may include at least one additional operation. Additional operations may include an operation <b>502</b>.
Operation <b>502</b> depicts transmitting the one or more IO requests to the one or more remote storage arrays via Remote Direct Memory Access (RDMA). For example, as shown in <figref idrefs="DRAWINGS">FIG. 2</figref>, a BVL module <b>104</b>A-<b>1</b> receiving an IO request from a client <b>101</b> that addresses data maintained in a virtual volume associated with a remote RAID storage device <b>102</b>B may pass that IO request to the BVL module <b>104</b>B-<b>1</b> associated with remote RAID storage device <b>102</b>B so as to process the IO request via RDMA on the PSON <b>105</b>.
<figref idrefs="DRAWINGS">FIG. 6</figref> illustrates alternative embodiments of the example operational flow <b>400</b> of <figref idrefs="DRAWINGS">FIG. 4</figref>. <figref idrefs="DRAWINGS">FIG. 6</figref> illustrates example embodiments where the operational flow <b>400</b> may include at least one additional operation. Additional operations may include an operation <b>602</b>.
Operation <b>602</b> depicts designating an active storage virtualization manager module and one or more passive storage virtualization manager modules. For example, as shown in <figref idrefs="DRAWINGS">FIG. 3</figref>, SVM <b>104</b>-<b>1</b>-<b>1</b> of the local RAID storage device <b>102</b>A may communicate with SVM <b>104</b>-<b>1</b>-<b>2</b> of a remote RAID storage device <b>102</b>B via the HNF <b>106</b> network. SVM <b>104</b>-<b>1</b>-<b>1</b> may recognize the local VA module <b>104</b>-<b>2</b>-<b>1</b> and FP module <b>104</b>-<b>3</b>-<b>1</b> as well as a remote VA module (not shown) and a remote FP module (not shown) associated with a remote RAID storage device <b>102</b>B via the IOD (Init) <b>104</b>-<b>6</b>-<b>1</b> and HNF <b>106</b> network operably coupling SVM <b>104</b>-<b>1</b>-<b>1</b> and SVM <b>104</b>-<b>1</b>-<b>2</b>. This connection allows the SVM <b>104</b>-<b>1</b>-<b>1</b> and SVM <b>104</b>-<b>1</b>-<b>2</b> to designate one SVM <b>104</b>-<b>1</b> as the active SVM for the cluster and all other SVMs as passive members. For example, SVM <b>104</b>-<b>1</b>-<b>1</b> and SVM <b>104</b>-<b>1</b>-<b>2</b> may remain in constant communication via the HNF <b>106</b> network. Resources and applications for a cluster may be organized into functional units called resource groups. Each resource group may be assigned to a particular SVM <b>104</b>-<b>1</b> and can only be owned by that SVM <b>104</b>-<b>1</b> at any point in time. A cluster administrator (via an SMI-S client) may have the capability to set a particular SVM <b>104</b>-<b>1</b> as active (e.g. SVM <b>104</b>-<b>1</b>-<b>1</b>) and the remaining SVM <b>104</b>-<b>1</b> (e.g. SVM <b>104</b>-<b>1</b>-<b>2</b>) may be set as passive for a particular resource or application. The cluster management process may include SVM <b>104</b>-<b>1</b> failover capabilities. A failover may occur if a active SVM <b>104</b>-<b>1</b> (e.g. SVM <b>104</b>-<b>1</b>-<b>1</b>) in a cluster is unavailable as a result of a failure. Should such a failure occur, another SVM <b>104</b>-<b>1</b> (e.g. SVM <b>104</b>-<b>1</b>-<b>2</b>) may begins providing service as the active SVM <b>104</b>-<b>1</b>.
<figref idrefs="DRAWINGS">FIG. 7</figref> illustrates alternative embodiments of the example operational flow <b>400</b> of <figref idrefs="DRAWINGS">FIG. 4</figref>. <figref idrefs="DRAWINGS">FIG. 7</figref> illustrates example embodiments where the operational flow <b>400</b> may include at least one additional operation. Additional operations may include an operation <b>702</b>.
Operation <b>702</b> depicts aggregating RAID device data for export to an SMI-S client. For example, as shown in <figref idrefs="DRAWINGS">FIG. 2</figref>, a single-system image (SSI) aggregator <b>104</b>-<b>5</b>-<b>1</b> may be layered over the SMI-S agent <b>104</b>-<b>4</b>-<b>1</b> so as to export the component data, including logical attributes associated the SVM <b>104</b>-<b>1</b>-<b>1</b> (e.g. logical components, e.g. LUN maps, Pools, Volumes) and physical attributes associated with the RAID engine <b>104</b>-<b>7</b>-<b>1</b> (e.g. physical components, Virtual Drives, etc.). The component data gathered by the SMI-S agent <b>104</b>-<b>4</b>-<b>1</b> may be provided to the BVL module <b>104</b>B-<b>1</b> of a remote RAID storage device <b>104</b>B such that the BVL module of each RAID storage device (e.g. RAID storage devices <b>102</b>A and <b>102</b>B may maintain an aggregated view of the status of the SVM and RAID engines of all RAID storage devices <b>102</b>. The status data associated the SVM <b>104</b>-<b>1</b>-<b>1</b> and RAID engine <b>104</b>-<b>7</b>-<b>1</b> may be exported to peer devices via the PSON IOD (Init) <b>104</b>-<b>6</b>-<b>1</b> and associated PSON <b>105</b> network. Once the local BVL module <b>104</b>A has an aggregated view of the status data of all SVM and RAID engines of all remote RAID storage devices <b>102</b>, this data may be exported to the SMI-S client <b>101</b> so as to provided a single clustered image to the SMI-S client <b>101</b>.
<figref idrefs="DRAWINGS">FIG. 8</figref> illustrates alternative embodiments of the example operational flow <b>400</b> of <figref idrefs="DRAWINGS">FIG. 4</figref>. <figref idrefs="DRAWINGS">FIG. 8</figref> illustrates example embodiments where the operational flow <b>400</b> may include at least one additional operation. Additional operations may include an operation <b>802</b>, an operation <b>804</b>, and/or an operation <b>806</b>.
Operation <b>802</b> depicts providing one or more block virtualization layer (BVL) elements to a data protection layer (DPL). For example, as shown in <figref idrefs="DRAWINGS">FIGS. 1-3</figref>, the BVL module <b>104</b>A-<b>1</b> (e.g. a CORBA server implementing SMV) of the RAID controller <b>104</b>A may pass aggregated device data (e.g. data aggregated per operation <b>504</b>) to a DPL <b>107</b> (e.g. a SYMbol server).
Operation <b>804</b> depicts translating the one or more BVL elements into one or more DPL elements. As shown in <figref idrefs="DRAWINGS">FIGS. 1-3</figref>, the DPL scale-out aggregator <b>108</b> (e.g. an SMI-S cluster server) of the RAID controller <b>104</b>A may translate one or more BVL elements (e.g. logical components, e.g. LUN maps, storage pools, individual distributed virtual volumes, and the like) aggregated by the BVL module <b>104</b>A-<b>1</b> into one or more DPL elements (e.g. physical components, virtual drives, and the like) which may be directly managed by a SMI-S client <b>101</b>. For example, a virtual volume spanning across multiple storage arrays as maintained by the BVL can be represented as one single DPL virtual drive so that the underlying details are masked from the user accessing the system via an SMI-S client.
Operation <b>806</b> depicts transmitting the one or more DPL elements to one or more SMI-S clients. For example, as shown in <figref idrefs="DRAWINGS">FIGS. 1-3</figref>, the DPL scale-out aggregator <b>108</b> may pass the translated BVL elements to the SMI-S client <b>101</b> as a single aggregated image of the clustered RAID storage devices <b>102</b>.
Those having skill in the art will recognize that the state of the art has progressed to the point where there is little distinction left between hardware, software, and/or firmware implementations of aspects of systems; the use of hardware, software, and/or firmware is generally (but not always, in that in certain contexts the choice between hardware and software can become significant) a design choice representing cost vs. efficiency tradeoffs. Those having skill in the art will appreciate that there are various vehicles by which processes and/or systems and/or other technologies described herein can be effected (e.g., hardware, software, and/or firmware), and that the preferred vehicle will vary with the context in which the processes and/or systems and/or other technologies are deployed. For example, if an implementer determines that speed and accuracy are paramount, the implementer may opt for a mainly hardware and/or firmware vehicle; alternatively, if flexibility is paramount, the implementer may opt for a mainly software implementation; or, yet again alternatively, the implementer may opt for some combination of hardware, software, and/or firmware. Hence, there are several possible vehicles by which the processes and/or devices and/or other technologies described herein may be effected, none of which is inherently superior to the other in that any vehicle to be utilized is a choice dependent upon the context in which the vehicle will be deployed and the specific concerns (e.g., speed, flexibility, or predictability) of the implementer, any of which may vary. Those skilled in the art will recognize that optical aspects of implementations will typically employ optically-oriented hardware, software, and or firmware.
In some implementations described herein, logic and similar implementations may include software or other control structures. Electronic circuitry, for example, may have one or more paths of electrical current constructed and arranged to implement various functions as described herein. In some implementations, one or more media may be configured to bear a device-detectable implementation when such media hold or transmit a device detectable instructions operable to perform as described herein. In some variants, for example, implementations may include an update or modification of existing software or firmware, or of gate arrays or programmable hardware, such as by performing a reception of or a transmission of one or more instructions in relation to one or more operations described herein. Alternatively or additionally, in some variants, an implementation may include special-purpose hardware, software, firmware components, and/or general-purpose components executing or otherwise invoking special-purpose components. Specifications or other implementations may be transmitted by one or more instances of tangible transmission media as described herein, optionally by packet transmission or otherwise by passing through distributed media at various times.
Alternatively or additionally, implementations may include executing a special-purpose instruction sequence or invoking circuitry for enabling, triggering, coordinating, requesting, or otherwise causing one or more occurrences of virtually any functional operations described herein. In some variants, operational or other logical descriptions herein may be expressed as source code and compiled or otherwise invoked as an executable instruction sequence. In some contexts, for example, implementations may be provided, in whole or in part, by source code, such as C++, or other code sequences. In other implementations, source or other code implementation, using commercially available and/or techniques in the art, may be compiled/implemented/translated/converted into high-level descriptor languages (e.g., initially implementing described technologies in C or C++ programming language and thereafter converting the programming language implementation into a logic-synthesizable language implementation, a hardware description language implementation, a hardware design simulation implementation, and/or other such similar mode(s) of expression). For example, some or all of a logical expression (e.g., computer programming language implementation) may be manifested as a Verilog-type hardware description (e.g., via Hardware Description Language (HDL) and/or Very High Speed Integrated Circuit Hardware Descriptor Language (VHDL)) or other circuitry model which may then be used to create a physical implementation having hardware (e.g., an Application Specific Integrated Circuit). Those skilled in the art will recognize how to obtain, configure, and optimize suitable transmission or computational elements, material supplies, actuators, or other structures in light of these teachings.
The foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, flowcharts, and/or examples. Insofar as such block diagrams, flowcharts, and/or examples contain one or more functions and/or operations, it will be understood by those within the art that each function and/or operation within such block diagrams, flowcharts, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof. In one embodiment, several portions of the subject matter described herein may be implemented via Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), digital signal processors (DSPs), or other integrated formats. However, those skilled in the art will recognize that some aspects of the embodiments disclosed herein, in whole or in part, can be equivalently implemented in integrated circuits, as one or more computer programs running on one or more computers (e.g., as one or more programs running on one or more computer systems), as one or more programs running on one or more processors (e.g., as one or more programs running on one or more microprocessors), as firmware, or as virtually any combination thereof, and that designing the circuitry and/or writing the code for the software and or firmware would be well within the skill of one of skill in the art in light of this disclosure. In addition, those skilled in the art will appreciate that the mechanisms of the subject matter described herein are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the subject matter described herein applies regardless of the particular type of signal bearing medium used to actually carry out the distribution. Examples of a signal bearing medium include, but are not limited to, the following: a recordable type medium such as a floppy disk, a hard disk drive, a Compact Disc (CD), a Digital Video Disk (DVD), a digital tape, a computer memory, etc.; and a transmission type medium such as a digital and/or an analog communication medium (e.g., a fiber optic cable, a waveguide, a wired communications link, a wireless communication link (e.g., transmitter, transceiver, transmission logic, reception logic, etc.).
In a general sense, those skilled in the art will recognize that the various aspects described herein which can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, and/or any combination thereof can be viewed as being composed of various types of “electrical circuitry.” Consequently, as used herein “electrical circuitry” includes, but is not limited to, electrical circuitry having at least one discrete electrical circuit, electrical circuitry having at least one integrated circuit, electrical circuitry having at least one application specific integrated circuit, electrical circuitry forming a general purpose computing device configured by a computer program (e.g., a general purpose computer configured by a computer program which at least partially carries out processes and/or devices described herein, or a microprocessor configured by a computer program which at least partially carries out processes and/or devices described herein), electrical circuitry forming a memory device (e.g., forms of memory (e.g., random access, flash, read only, etc.)), and/or electrical circuitry forming a communications device (e.g., a modem, communications switch, optical-electrical equipment, etc.). Those having skill in the art will recognize that the subject matter described herein may be implemented in an analog or digital fashion or some combination thereof.
With respect to the use of substantially any plural and/or singular terms herein, those having skill in the art can translate from the plural to the singular and/or from the singular to the plural as is appropriate to the context and/or application. The various singular/plural permutations are not expressly set forth herein for sake of clarity.
The herein described subject matter sometimes illustrates different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely exemplary, and that in fact many other architectures may be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being “operably connected”, or “operably coupled”, to each other to achieve the desired functionality, and any two components capable of being so associated can also be viewed as being “operably couplable”, to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and/or physically interacting components, and/or wirelessly interactable, and/or wirelessly interacting components, and/or logically interacting, and/or logically interactable components.
In some instances, one or more components may be referred to herein as “configured to,” “configured by,” “configurable to,” “operable/operative to,” “adapted/adaptable,” “able to,” “conformable/conformed to,” etc. Those skilled in the art will recognize that such terms (e.g. “configured to”) can generally encompass active-state components and/or inactive-state components and/or standby-state components, unless context requires otherwise.
While particular aspects of the present subject matter described herein have been shown and described, it will be apparent to those skilled in the art that, based upon the teachings herein, changes and modifications may be made without departing from the subject matter described herein and its broader aspects and, therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of the subject matter described herein. It will be understood by those within the art that, in general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as “open” terms (e.g., the term “including” should be interpreted as “including but not limited to,” the term “having” should be interpreted as “having at least,” the term “includes” should be interpreted as “includes but is not limited to,” etc.). It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases “at least one” and “one or more” to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim recitation to claims containing only one such recitation, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an” (e.g., “a” and/or “an” should typically be interpreted to mean “at least one” or “one or more”); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should typically be interpreted to mean at least the recited number (e.g., the bare recitation of “two recitations,” without other modifiers, typically means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). In those instances where a convention analogous to “at least one of A, B, or C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, or C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). It will be further understood by those within the art that typically a disjunctive word and/or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase “A or B” will be typically understood to include the possibilities of “A” or “B” or “A and B.”
With respect to the appended claims, those skilled in the art will appreciate that recited operations therein may generally be performed in any order. Also, although various operational flows are presented in a sequence(s), it should be understood that the various operations may be performed in other orders than those that are illustrated, or may be performed concurrently. Examples of such alternate orderings may include overlapping, interleaved, interrupted, reordered, incremental, preparatory, supplemental, simultaneous, reverse, or other variant orderings, unless context dictates otherwise. Furthermore, terms like “responsive to,” “related to” or other past-tense adjectives are generally not intended to exclude such variants, unless context dictates otherwise.
Although specific dependencies have been identified in the claims, it is to be noted that all possible combinations of the features of the claims are envisaged in the present application, and therefore the claims are to be interpreted to include all possible multiple dependencies.
Contents5
9 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US9910800B1 | Cited by | United States of America | Search report |
| US2021357333A1 | Cited by | United States of America | Search report |
| US8621603B2 | Cited by | United States of America | Applicant |
| US11757795B2 | Cited by | United States of America | Applicant |
| US9977760B1 | Cited by | United States of America | Applicant |
| US2017039150A1 | Cited by | United States of America | Pre-grant |
| US8984222B2 | Cited by | United States of America | Applicant |
| US8583840B1 | Cited by | United States of America | Search report |
| US10540307B1 | Cited by | United States of America | Search report |
| US8751741B2 | Cited by | United States of America | Applicant |
| US11829297B2 | Cited by | United States of America | Search report |
| US9052829B2 | Cited by | United States of America | Applicant |
| US11677687B2 | Cited by | United States of America | Applicant |
| US12160372B2 | Cited by | United States of America | Applicant |
| US8756338B1 | Cited by | United States of America | Search report |
| US2023325331A1 | Cited by | United States of America | Search report |
| US11681640B2 | Cited by | United States of America | Search report |
| US9134913B2 | Cited by | United States of America | Applicant |
| US9026696B1 | Cited by | United States of America | Search report |
| US8898385B2 | Cited by | United States of America | Applicant |
| US8806124B2 | Cited by | United States of America | Applicant |
| US2022050797A1 | Cited by | United States of America | Search report |
| US8839030B2 | Cited by | United States of America | Applicant |
| US9892071B2 | Cited by | United States of America | Search report |
| US8793443B2 | Cited by | United States of America | Applicant |
| US2007113016A1 | Cites | United States of America | Search report |
| US2007299951A1 | Cites | United States of America | Search report |
| US2009228676A1 | Cites | United States of America | Search report |
| US2010030960A1 | Cites | United States of America | Search report |
| US6983303B2 | Cites | United States of America | Search report |
10 members in 6 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 10630908 | United States of America | P | |
| 10630908 | United States of America | P | |
| 38761009 | United States of America | A | |
| 61106309 | – | – | – |
| US20080106309P | – | – | – |
| US20090387610 | – | – | – |
Members10
| Document | Office | Kind | |
|---|---|---|---|
| EP2177985A2 | European Patent Office (EPO) | A2 | |
| US2010100679A1 | United States of America | A1 | |
| KR20100043006A | Republic of Korea | A | |
| JP2010097614A | Japan | A | |
| TW201017419A | Taiwan Province of China | A | |
| CN101923443A | China | A | |
| EP2177985A3 | European Patent Office (EPO) | A3 | |
| US8190816B2This record | United States of America | B2 | |
| CN101923443B | China | B | |
| EP2177985B1 | European Patent Office (EPO) | B1 |
36 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Correspondence Address ChangeC.ADB | C.ADB | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 08190816
- Publication, DOCDB
- 8190816
- Publication, EPODOC
- US8190816
- Application
- 12387610
- Application, DOCDB
- 38761009
- Application, EPODOC
- US20090387610
Titles
- English
- Embedded scale-out aggregator for storage array controllers
Patent term adjustment
- A delay
- +431 daysthe office missed an examination deadline
- B delay
- +24 dayspendency past three years
- Net adjustment
- 455 days
Classification
- CPC, 9
- G06F3/0631
- G06F3/0605
- G06F3/0667
- G06F3/067
- G06F3/0689
- G06F12/0871
- G06F12/0873
- G06F2212/263
- H04L67/1097
- IPC, 2
- G06F12 00
- G06F12 08
- USPC, 6
- 711114000
- 710022000
- 710074000
- 711118000
- 711170000
- 711E12001