EP1969454A2 - Procédés et appareil de reconfiguration d'un système de stockage - Google Patents
Procédés et appareil de reconfiguration d'un système de stockageInfo
- Publication number
- EP1969454A2 EP1969454A2 EP06849270A EP06849270A EP1969454A2 EP 1969454 A2 EP1969454 A2 EP 1969454A2 EP 06849270 A EP06849270 A EP 06849270A EP 06849270 A EP06849270 A EP 06849270A EP 1969454 A2 EP1969454 A2 EP 1969454A2
- Authority
- EP
- European Patent Office
- Prior art keywords
- controller
- content
- storage
- host
- oas
- 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.)
- Withdrawn
Links
Classifications
-
- 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/0661—Format or protocol conversion arrangements
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
- G06F11/2092—Techniques of failing over between control units
Definitions
- the invention relates to techniques for configuring a storage system.
- Content addressable storage is a technique by which a content unit stored on a storage system is accessed using an address or identifier that is at least partially derived from the content of the content unit.
- a content unit may be provided as input to a hashing function which generates a hash value that is used as at least part of the content address for the content unit.
- a hashing function suitable for generating content addresses is the message digest 5 (MD5) hashing algorithm.
- a host computer When a host computer sends a request to a content addressable storage system to retrieve a unit of data, the host computer provides the content address of the content unit.
- the storage system determines, based on the content address, the physical location of the content unit in the storage system, retrieves the content unit, and returns the content unit to the host computer.
- the host computer need not be aware of the physical location of the content on the storage system, as the task of determining the physical location of the content unit based on the content address may be performed by the storage system.
- One embodiment of the invention is directed to a method for use in a computer system comprising at least one host, at least one storage system and at least one communication medium that couples the at least one host to the at least one storage system, the at least one storage system comprising a first group of storage devices and a second group of storage devices, the storage system further comprising a first controller and a second controller, the first controller comprising a first file system that maps a first set of content units to storage locations on the first group of storage devices, the second controller comprising a second file system that maps a second set of content units to storage locations on the second group of storage devices, the at least one host accessing the first group of content units via the first controller and the second group of content units via the second controller.
- the method comprises an act of: (A) in response to a failure that prevents the at least one host from accessing the first group of content units via the first controller, mounting the first file system on the second controller to enable the at least one host to access the first group of content units via the second controller.
- Another embodiment is directed to at least one computer readable medium encoded with instructions that, when executed on a computer system, perform the above-described method.
- a further embodiment is directed to a storage system coupled to a host computer by at least one communication medium.
- the storage system comprises: a first group of storage devices; a second group of storage devices; a first controller comprising a first file system that maps a first set of content units to storage locations on the first group of storage devices; a second controller comprising a second file system that maps a second set of content units to storage locations on the second group of storage devices, wherein the first group of content units are accessible to the host via the first controller and the second group of content units are accessible to the host via the second controller; and at least one controller that, in response to a failure that prevents the at least one host from accessing the first group of content units via the first controller, mounts the first file system on the second controller to enable the at least one host to access the first group of content units via the second controller.
- Another embodiment is directed to a method for use in a computer system comprising at least one host, at least one object addressable storage (OAS) system and at least one communication medium that couples the at least one host to the at least one OAS system, the at least one OAS system having a plurality of storage devices and storing a plurality of content units on the plurality of storage devices, each of the at least one host and the at least one OAS system having software that provides a OAS interface so that each one of the content units stored on the OAS system is identified between the at least one host and the at least one OAS using an object identifier, wherein the computer system maps the object identifier for a first of the plurality of content units to at least one of the plurality of storage devices over at least one first path.
- OAS object addressable storage
- the method comprises an act of: (A) in response to a failure that prevents the at least one host from accessing the first content unit via the at least one first path, automatically reconfiguring the computer system to establish at least one previously non-established second path that enables the at least one host to access the first content unit using the object identifier for the first content unit.
- a further embodiment is directed to at least one computer readable medium encoded with instructions that, when executed on a computer system, perform the above-described method.
- OAS object addressable storage
- the OAS system comprises: a plurality of storage devices for storing a plurality of content units; an OAS interface through which each one of the content units stored on the OAS system is capable of being identified between the at least one host and the at least one OAS using an object identifier; a mapper that maps the object identifier for a first of the plurality of content units to at least one of the plurality of storage devices over at least one first path; and at least one controller that, in response to a failure that prevents the at least one host from accessing the first content unit via the at least one first path, automatically reconfigures the computer system to establish at least one previously non-established second path that enables the at least one host to access the first content unit using the object identifier for the first content unit.
- OAS object addressable storage
- a further embodiment is directed to an object addressable storage (OAS) system, comprising: a plurality of storage devices to store a plurality of content units; and at least one processor programmed to; provide an OAS interface so that each one of the content units stored on the OAS system can be accessed using an object identifier; discover the addition of newly added storage devices to the plurality of storage devices after the OAS system has been at least partially populated so that at least some of the plurality of storage devices have content units already stored thereon; and in response to the discovery of newly added storage devices, configure the newly discovered storage devices to increase the storage capacity of the OAS system and to enable content units to be stored thereon.
- OAS object addressable storage
- Another embodiment is directed to a method of increasing the storage capacity of an object addressable storage (OAS) system comprising a plurality of storage devices to store a plurality of content units, wherein the OAS system provides an OAS interface through which each one of the content units stored on the OAS system can be accessed using an object identifier.
- the method comprises: discovering the addition of newly added storage devices to the plurality of storage devices after the OAS system has been at least partially populated so that at least some of the plurality of storage devices have content units already stored thereon; and in response to the discovery of newly added storage devices, configuring the newly discovered storage devices to increase the storage capacity of the OAS system and to enable content units to be stored thereon.
- OAS object addressable storage
- a further embodiment is directed to at least one computer readable medium encoded with instructions that, when executed on a computer system, perform the above-described method.
- Another embodiment is directed to an object addressable storage (OAS) system to store a plurality of content units, the OAS system comprising: a plurality of access nodes that provide a content addressable interface for the OAS system so that each one of the content units can be accessed from the OAS system by providing to the OAS system an object identifier; and a non-0 AS storage resource that provides a plurality of storage locations to store the plurality of content units, the non-OAS storage resource providing a non-OAS interface to the plurality of access nodes so that the plurality of access nodes can access the plurality of content units via the non-OAS interface; wherein the plurality of access nodes share the non-OAS storage resource and each of the plurality of access nodes has metadata that maps the content address for each of the content units stored on the OAS system to corresponding ones of the plurality of storage locations on which
- a further embodiment is directed to a method of accessing one of a plurality of content units stored on an object addressable storage (OAS) system, the OAS system comprising a plurality of access nodes that provide a content addressable interface for the OAS system so that each one of the content units can be accessed from the OAS system by providing to the OAS system an object identifier; and a non-OAS storage resource that provides a plurality of storage locations to store the plurality of content units, the non-OAS storage resource providing a non-OAS interface to the plurality of access nodes so that the plurality of access nodes can access the plurality of content units via the non-OAS interface.
- OAS object addressable storage
- the method comprises: receiving, at one of the plurality of access nodes, a request to access the one of the plurality of content units, wherein the request identifies the one of the plurality of content units using an object identifier; and determining, using metadata available to each of the plurality of access nodes, a corresponding one of the plurality of storage locations at which the content unit is stored.
- Another embodiment is directed to at least one computer readable medium encoded with instructions that, when executed on a computer system, perform the above-described method.
- FIG 1 is a diagram of a computer system in which a content addressable storage (CAS) interface is provided on a plurality of storage devices, in accordance with one embodiment of the invention
- Figure 2 is a diagram of the controllers of Figure 1 disposed in the same storage system, in accordance with one embodiment of the invention
- Figure 3 is a flow chart of an illustrative process for adding additional devices to a storage system and automatically configuring the additional devices, in accordance with one embodiment of the invention
- Figure 4 is a diagram of a federation of multiple storage systems, in accordance with one embodiment
- FIG. 5 is a diagram of a storage system wherein a controller may trespass on the storage devices allocated to another controller, in accordance with one embodiment
- Figure 6 is a flow chart of an illustrative process for trespassing on storage devices allocated to a non-functional controller
- Figure 7 is a diagram of a storage system having a CAS interface that is not co- located with the storage disks and the disk manager, in accordance with one embodiment.
- Figure 8 is a diagram of storage system having a CAS interface that is not co- located with the storage disks and the disk manager and in which access nodes and storage nodes are coupled by a storage area network, in accordance with one embodiment.
- Content addressable storage (CAS) systems exist, as described in the patent applications listed below in Table 1 , and provide location independent access to content units stored thereon. That is, an entity accessing a content unit on a CAS system need not be aware of the physical or logical storage location of the content unit, but rather may access the content unit by providing a content address associated with the content unit to the CAS system. Many of these CAS systems are implemented as systems specifically configured for content addressable storage.
- a software interface may be used to provide content addressable storage, while employing the underlying storage resources of a non-CAS storage system (e.g., a block I/O storage system).
- a non-CAS storage system e.g., a block I/O storage system
- This allows a user to obtain the benefits of CAS without having to purchase a new storage system. That is, a user who already owns a block I/O storage system may use the software CAS interface to use the block I/O storage system as if it were a CAS system.
- aspects of the invention relate to techniques developed for providing a CAS interface in front of a block I/O storage system.
- new storage devices may be added to the storage system and automatically configured to enable content units to be stored thereon (e.g., via a CAS interface).
- the storage system may include a plurality of access nodes that provide a CAS interface to a non-CAS storage resource.
- the plurality of access nodes may share the non-CAS storage resource and each of the plurality of access nodes may be capable of mapping a content address of a content unit stored on the non- CAS storage resource to a storage location on the non-CAS storage resource at which the content unit is stored so that each access node can directly access each content unit on the storage system.
- a CAS interface 105 is provided to enable an application program 101 to access content units on disk arrays I l ia and 11 Ib by specifying the content addresses of the content units.
- Disk array 11 Ia is managed by controller 103a and disk array 1 1 Ib is managed by controller 103b.
- CAS interfaces 105a and 105b provide an interface that allows the application program 101 to access content units stored on disk arrays I l ia and 111b, respectively.
- CAS interface 105 a may receive a request from application program 101 to store a particular content unit.
- CAS interface 105a may store the content unit in a file (or in multiple files) in file system 107a.
- File system 107a may translate the file system location at which CAS interface 105a stored the content unit into a block storage address on disk array I l ia. As discussed in greater detail below, this block storage address may be either a physical storage address or a logical storage address. Disk manager 109a may then physically store the content unit on one or more of the disks in disk array I l ia.
- the file system in which CAS interface 105a stores content units may be organized in any suitable way, as the invention is not limited in this respect. For example, in one embodiment, the file system may be organized based on content addresses such that content units with similar content addresses are stored in the same directory.
- the file system may be organized based on time of storage, so that content units stored proximate in time to one another are stored in the same directory. Examples of file systems organized based on content addresses and time of storage are described in the applications listed in Table 1 below, but the embodiments of the invention are not limited to these or any specific file system schemes.
- CAS interface 105a may determine the file system location of the file in ' which the requested content unit is stored (e.g., using its content address).
- file system 107a may translate the file system location at which the file (or files) is stored into a block storage address (either physical or logical) at which the file that includes the content unit is stored.
- Disk manager 109a may then retrieve the content unit from disk array I lia.
- content units can be stored on an underlying storage system that provides protection against corruption of data and/or hardware failure. For example, if data stored on one of the disks in disk array I l ia or 1 11b becomes corrupted, it may be desirable to be able to reconstruct the corrupted data.
- disk array l l la or 11 1b or one of controllers 103a or 103b may fail (e.g., due to hardware failure)
- aspects of the present invention can be implemented on a storage system wherein disk managers 109a and 109b protect against corruptions using redundant array of independent disks (RAID) technology. That is, disk arrays I l ia and 1 1 1b may be RAID disk arrays.
- a RAID disk array is an array of physical storage devices (e.g., disks) that are combined into one logical unit.
- disk manager 109a (which may implement the RAID functionality) presents a single logical unit number (LUN) to file system 107a.
- RAID functionality also provides for the striping of data across multiple disks in the array and for the storage of parity information. That is, when processing a write operation, the content provided in the request may be striped across two or more disks in the array.
- parity information may be computed for the content and stored on the disk array.
- the parity information is information that may be used to re-construct one or more corrupted bits of the content to be written.
- file system 107a may determine a corresponding block address at which the content unit is to be stored. Because file system 107a views disk array 1 1 Ia as a single logical unit, and not as a collection individual storage devices, this block address may be a logical address that does not directly map to the physical blocks or sectors on the disks of disk array at which the content of the content unit is ultimately stored.
- Disk manager 109a may map the logical block address used by the file system to a set of block addresses on the disks of disk array I l ia across which the content of the content unit is striped.
- aspects of the invention may be implemented on a storage system that uses any suitable error correction and/or protection (including any level of RAID technology) or on a storage system that does provide an error correction and/or protection, as the invention is not limited in this respect.
- the error correction and/or protection may be relied on by the CAS interface. That is, storage systems that are originally implemented as CAS systems may provide mechanisms that protect against data corruption and/or loss.
- the error correction and/or protection mechanisms of the block I/O storage system may be used so that the CAS interface need not provide additional error correction and/or protection (although in some embodiments, it may).
- content units stored may be stored on a storage system wherein a disk array managed by one controller may be mirrored to another disk array managed by a different controller.
- This may be done in any suitable way, as the invention is not limited to use with a storage system that employs any particular type of mirroring technique, or to employing mirroring at all.
- controller 103a may then send a request to controller 103b to store the content on a disk array managed by controller 103b (e.g., disk array 1 1 Ib).
- the content may be asynchronously destaged by controller 103a from the cache to disk array I l ia.
- a mirror copy of the content unit stored on disk array 11 Ia is stored on disk array 1 11b.
- the content may be accessible through controller 111b and/or disk array 1 11b.
- aspects of the present invention may be employed on a multi-processor storage system, such as storage system 201 shown in Figure 2, wherein the storage system 201 includes both disk arrays I l ia and 1 1 1b, and controllers 103a and 103b, which may be implemented as separate processors or as separate processing cores of the same processor.
- both disk arrays may be physically accessible to each controller in the storage system (e.g., each disk in the storage system may be physically coupled to the same SCSI or Fibre Channel bus).
- controller 103a may be configured to only access storage devices in disk array I l ia and controller 103b may be configured to only access storage devices in disk array 111b. This may be done to prevent each controller from interfering with the I/O operations of the other controller. For example, if controller 103a attempts to read a block on disk at the same time that controller 103b is attempting to write the same block, then controller 103a may not read the correct data. This problem may be even more complex when disk arrays 11 Ia and 11 Ib are RAID disk arrays.
- controller 103a modifies a block in a stripe stored on one disk in the array at the same that controller 103b modifies a different block in the same stripe stored on a different disk
- both controllers may attempt to update the parity information for the stripe at the same time using different and incorrect parity values.
- controller 103b may read the new data written by controller 103a but read the old parity information that controller 103a has not yet updated. This may cause controller 103b to reconstruct the data on the non-functional disk incorrectly.
- the disks in the storage system may be allocated to each controller so that the one controller does not interfere with the disk operations of another controller.
- disk array I l ia may be allocated to controller 103a and disk array 1 11b may be allocated to controller 103b.
- Such an allocation may be accomplished in any suitable way, as the invention is not limited in this respect.
- a user or administrator may configure storage system 201 so that certain disks are allocated to each controller.
- each controller accesses only the disk arrays that are allocated to it.
- each of CAS interfaces 105a and 105b presents itself to application program 101 as a separate node. That is, each controller 103 is separately addressable and has its own network address (e.g., IP address) at which the CAS interface may receive access requests from the application program.
- the CAS interface is co-located with software that performs the underlying block I/O storage functionality (i.e, the disk manager).
- the CAS interface and the disk manager may be software entities that execute on the same controller (e.g., processor).
- a file system 107 may also be provided on each controller 103.
- the CAS interface may store content units in the file system, which is mapped to the underlying disk array that is managed by the controller on which the file system executes.
- an entity e.g., an application program or a host computer
- an entity accessing storage system 201 need not track which controller or which disk array of storage system 201 stores a content unit that was previously written to the storage system. This may be accomplished in any suitable way, as the invention is not limited in this respect.
- an entity e.g., application program 101 in Figure 1
- it may send the request to either controller 103a or 103b.
- the entity may select the controller to which to store the request in any suitable way, as the invention is not limited in this respect.
- the entity may use a load balancing scheme to select the controller, such as alternating the controller to which successive requests are sent (though any suitable load balancing scheme may be used).
- the controller 103 that receives the request may store it on its respective disk array 111. If the entity later desires to retrieve the content unit from storage system 201 , it may send a read request that specifies the content address of the content unit to either controller 103a or 103b.
- the controller that receives the read request may determine if the content unit is stored on its disk array. This may be done in any suitable way, as the invention is not limited in this respect. For example, the controller may search its file system 107 to determine if the content unit is stored therein. If the controller that receives the read request stores the requested content unit, then the controller may process the read request and return the requested content unit to the entity. If the controller that receives the read request does not store the requested content unit, the controller may cause the requested content unit to be read from the other controller. This may be done in any suitable way, as the invention is not limited in this respect. In one embodiment, to cause the requested content unit to be read from the other controller, the controller that received the read request may redirect the requesting entity to the proper controller. This may be done in any suitable way. For example, the receiving controller may send a response to the requesting entity to resend the read request to the other controller.
- the controller that received the read request may cause the requested content unit to be read from the other controller by instructing the other controller to respond to the access request. This may be done in any suitable way, as the invention is not limited in this respect. For example, if controller 103a receives a read request for a content unit that it does not store, it may relay the read request to controller 103b. Controller 103b may then retrieve the requested content unit and respond to the requesting entity directly or pass the content unit to the controller 103a that received the request, which can return it to the requesting entity.
- the disks in disk arrays I l i a and 1 11b may eventually reach capacity.
- Applicants have appreciated that it may be . desirable to increase the storage capacity of storage system 201 at a time when the storage system is populated with content units. This may be done in any suitable way, as the invention is not limited in this respect.
- a user must manually configure the storage system to accept and use additional storage devices.
- additional storage devices may be added to the storage system (e.g., by connecting the additional storage devices to the existing SCSI bus or Fibre Channel loop) and these additional storage devices may be detected and automatically configured by the storage system.
- the additional storage devices that have been added to the system may be detected by the storage system.
- Any suitable type of additional storage devices may be used, as the- invention is not limited in this respect.
- the added storage devices may be a disk array enclosure (DAE), which is a box of disks that has Fibre Channel connectivity.
- DAE disk array enclosure
- bus addresses may be configured for the additional storage devices. That is, each disk may be assigned a LUN and each LUN may be allocated to one of the controllers in the storage system.
- a LUN may be preconfigured for each disk in the DAE, and thus, it may not be necessary to configured a LUN for each disk.
- RAID may be configured for the additional storage devices (i.e., the storage devices may be grouped into RAID arrays and the level of RAID protection may be selected and a LUN for each new RAID array may be presented).
- a virtual LUN which serves as a LUN for the disks in the RAID array, may be configured and presented.
- the invention is not limited to use on a storage system that uses RAID, as other (or no) error correction and/or protection schemes can be employed.
- the process then continues to act 307 where a new file system may be created and mounted to allow content units to be stored, via the file system, on the additional storage devices.
- the configuration of the additional storage devices may be performed by any suitable entity.
- utility software that executes on the controllers 103a and 103b may be responsible for the configuration of additional storage devices.
- a new file system is created for storing content units on the additional storage devices.
- the invention is not limited to creating an additional file system to allow content units to be stored on the additional storage devices, as one or more of the existing file systems 107a and 107b may be expanded to use the additional storage devices. Any file system capable of being expanded to use the additional storage devices may be employed, as the invention is not limited in this respect. Many file systems have maximum object counts that limit the number of files that can be stored in the file system.
- additional storage devices may be used.
- application program 401 may store content units on either storage system 403a or 403b.
- Each storage system 403 may have two controllers (e.g., 405a and 407a in storage system 403a, and 405b and 407b in storage system 403b), and each controller may be allocated a plurality of storage devices (e.g., 409a, 41 1a, 409b, and 41 Ib).
- controllers e.g., 405a and 407a in storage system 403a, and 405b and 407b in storage system 403b
- each controller may be allocated a plurality of storage devices (e.g., 409a, 41 1a, 409b, and 41 Ib).
- the storage systems 403a and 403b comprise a federation of storage systems that allow an entity (e.g., application program 401) to send an access request to read a content unit to any controller in the system, regardless of on which storage device or disk array the content unit is stored.
- entity e.g., application program 401
- This may be accomplished in any suitable way, as the invention is not limited in this respect. Examples of creating federations of CAS systems are described in greater detail in the U.S. Patent Application serial nos. 10/787,337 and 10/787,670, listed below in Table 1.
- the controller may first determine if it stores the requested content unit. If it does, then it may process the access request. If it does not, then it may broadcast a message to the other controllers inquiring as to whether any of the other controllers store the requested content unit. The controller that stores the requested content unit may respond to the controller that issued the broadcast message (i.e., the controller that originally received that access request) indicating that it stores the requested content unit. The controller that originally received the access request may then send a response to the requesting entity instructing the requesting entity to re-send the request to the controller that stores the content unit.
- the controller that originally received the access request may relay the access request to the controller that stores the content unit and the controller that stores the content unit may return the content unit to the controller that originally received the access request.
- the controller that originally received the access request may then return the content unit to the requesting entity.
- the controller that stores the content unit may return the content unit directly to the requesting entity.
- Tn one embodiment of the invention, when one controller in a storage system fails, the content units stored on the storage devices allocated to the failed controller may be accessed through the other controller in the storage system. This may be done in any suitable way, as this aspect of the invention is not limited to any particular implementation technique.
- each controller in the storage system may monitor whether the other storage processor is still functional. This may be done in any suitable way, as the invention is not limited in this respect.
- each controller may have a heartbeat utility that periodically sends a "heartbeat" message to determine if the other controller is still functional. When a controller receives a heartbeat message, it may respond to the controller that issued the message to indicate that it is still functional. If a controller ceases to respond to "heartbeat" messages, the other controller may presume that the non-responding controller is no longer functional. Once a controller determines that the other controller in the storage system is no longer functional, it may "trespass" the storage devices that are allocated to the failed controller to continue to provide access to content units stored via the failed controller.
- storage system 501 includes controller 503a and controller 503b.
- Disk array 505 is initially allocated to controller 503a and disk array 507 is initially allocated to controller 503b.
- controller 503a Prior to any failures, the only active path for access to content units on disk array 505 is via controller 503a and the only active path for access to content units on disk array 507 is via controller 503b. If controller 503b fails (e.g., due to hardware failure) there is no longer an active path to disk array 507 via controller 503b (as indicated by the broken line between controller 503b and disk array 507).
- a previously non-active path to disk array 507 via controller 503a may be established (as indicated by the dashed line between disk array 507 and controller 503a). This may be done in any suitable way, as the invention is not limited in this respect. In one embodiment, this may be performed automatically (i.e., without the intervention of a user or administrator) and in a manner transparent to an entity accessing the content, but all aspects of the invention are not limited in this respect.
- Figure 6 is an example of a process for activating a path between a controller (e.g., 503a) and a disk array previously allocated to a failed controller (e.g., disk array 507), in accordance with one embodiment.
- the functional controller determines that the other controller (e.g., controller 503b) in the storage system is no longer functional. This may be done in any suitable way (e.g., using a heartbeat technique), as the invention is not limited in this respect.
- the process then continues to act 603, where the functional controller is reconfigured to allow it to access the storage devices (e.g., LUNs) allocated to the non-functional controller.
- the storage devices e.g., LUNs
- each storage device in the storage system is physically accessible to both controllers, as the physical connection to each storage device (e.g., the SCSI bus or Fibre Channel loop) is accessible to each controller.
- each controller may have been configured to only access the storage devices that are allocated to it to avoid interfering with operations of the other controller.
- this configuration may be overridden and the functional controller may be reconfigured to be permitted access to all storage devices (e.g., LUNs).
- the functional controller 503a may receive a CAS request to access a content unit stored on disk array 507.
- the controller 503a may determine the location of the content unit in the newly mounted file system (i.e.°the file system of non- functional controller 503b) using the content address specified in the request. The file system location may then be mapped to the physical location of the requested content unit on disk array 507.
- the CAS interface 105 and file system 107 may determine the location of the content unit in the newly mounted file system (i.e.°the file system of non- functional controller 503b) using the content address specified in the request.
- the file system location may then be mapped to the physical location of the requested content unit on disk array 507.
- Figure 1 are co-located (i.e., on the same controller) with the disk manager 109 ( Figure 1).
- the invention is not limited in this respect, as the CAS interface 105, file system 107, and disk manager 109 need not be co-located, as these entities may be located on different nodes and/or processors.
- CAS interface 705a and file system 707a are located on node 703a (Node A), which is a separate computer with separate processing resources from storage system 715 on which disk manager 709a is located.
- CAS interface 705b and file system 707b are located on node 703b (Node B), which is also a separate computer with separate processing resources from storage system 715.
- nodes 703a and 703b provide access to storage system 715 via a CAS interface, these nodes may be referred to herein as CAS interface nodes or access nodes. Because controllers 713a and 713b access the underlying storage devices 71 Ia and 711b, these controllers may be referred to herein as storage nodes.
- Nodes A and B may implemented in any suitable way. For example, the nodes may be implemented on separate processors in the same box or computer, separate processors in different boxes or computers, or even as a single processor.
- node 703a has a direct connection to controller 713a of storage system 715 and does not have a connection to controller 713b.
- node 703b has a direct connection to controller 713b and does not have a connection to controller 713a.
- Application program 701 may send access requests to either node 703a or node 703b and the node that receives the access request may determine if the requested content unit stored in the request is stored in the file system (707a or 707b) of that node.
- the node may map the file system location to a block address and send a request to the controller 713 to which it has a connection that results in retrieving the content unit from the storage device(s) (i.e., 71 Ia or 71 Ib) allocated to it. If the node that receives the access request does not store the requested content unit, then it may cause the other node to receive the request. This may be done in any suitable way, as the invention is not limited in this respect. For example, in one embodiment, the node that receives the request may send a response redirecting the entity that issued the request (e.g., application program 701) to the other node and the entity may then issue another request directly to the other node.
- the entity that issued the request e.g., application program 701
- the node that issued the request after determining that it does not store the content unit, may relay the request to the other node.
- the other node may return the requested content unit to the node that received the request, and the node that received the request may forward the content unit to the requesting entity.
- the node that stores the content unit may return the content unit directly to the request entity.
- the computer system of Figure 7 may also include a utility node (not shown) that aids in the configuration of additional storage devices.
- the utility node may, at intervals, poll disk managers 709a and 709b to determine if any new storage devices have been added to storage system 715. If there are new storage devices, the utility node may instruct disk manager 709a and/or disk manager 709b to configure new LUN(s). The utility node may then create and mount a new file system or multiple new file systems on node 703a and/or 703b, which map to the additional storage devices. This allows the access nodes to use the storage space provided by the new storage devices.
- each new storage system may be configured like those described above and have two controllers, and a separate node (e.g., a server) having a CAS interface and a file system may be added for each controller.
- each CAS interface node has a direct connection to one of the controllers so that access requests for content unit are processed by the controller that stored the content unit.
- CAS interface nodes may access one or more storage systems (although only one is shown in Figure 8) through a network (e.g., a storage area network (SAN)) that couples disk controllers (i.e., controllers 813a and 813b) of the storage system(s) to the CAS interface nodes and servers (i.e., nodes 801a, 801b, and 801c).
- SAN storage area network
- each node 801 may communicate with each controller 813.
- the nodes 801 may communicate with each other.
- nodes 801b and 801c may negotiate which of them is to take over for node 801a (e.g., by mounting the file system of node 801a).
- the nodes 801 may determine which node 801 may map a file system on to the additional storage devices.
- the file system 807 may be a distributed file system that is shared by multiple nodes over a network.
- each node mounts the same distributed file system and any modification to the file system by a single node (e.g., creation, deletion, or modification of a file or directory), is reflected in the file system that is mounted by every other node.
- every content unit stored in the distributed file system is accessible to each node 801.
- an accessing entity may send an access to request to any node 801 of the computer system and that node will be able to determine the file system location of the content unit, map the file system location to a block address (e.g., a LUN) and send an access request to the controller 813 of storage system 815 that presents that particular LUN.
- a block address e.g., a LUN
- each node 801 is capable of determining the file system location of every content unit and because each node 801 has access to each controller 813, the redirection or relay of access requests, described above in connection with other embodiments, are not necessary.
- the distributed file system may be implemented in any suitable way, including using any available distributed file system technology, as the invention is not limited in this respect.
- the example of Figure 8 includes three nodes 801 (i.e., access nodes) and one storage system having two controllers (i.e., storage nodes).
- access nodes i.e., access nodes
- storage nodes i.e., storage nodes
- the aspect of the invention that involves the use of a network between CAS access nodes and storage systems is not limited in this respect, as any suitable number of access nodes may be used and the computer system may include any suitable number of storage systems.
- an additional utility node may be included in the system that does not process access requests, but rather performs other operations on the content units accessed by the storage system to save processing resources of the access and/or storage nodes. For example, a copy of one or more content units stored on the storage system may be made and stored on the utility node.
- the utility node may perform operations on the data without using the processing resources of the access nodes or storage nodes.
- the utility node may perform any suitable operation on the data, as the invention is not limited in this respect. Such operations may include, for example, determining whether content units have been corrupted or modified, which may be done in any suitable way.
- the storage system provides one or more utilities (e.g., a SNAP copy) to efficiently produce a copy
- these utilities may be used to create a copy for the utility node.
- the computer system includes only a single utility node.
- the invention is not limited in this respect, as the system may include two, three, or any other suitable number of utility nodes.
- the utility node may re-compute the content address using the content of a content unit and determining if the re-computed content address matches the content address originally assigned to the content unit.
- garbage collection Another operation that may be performed by the utility node is garbage collection. That is, the utility node may determine if there are any content units that are no longer in use and should be deleted. Garbage collection may be performed in any suitable way. Examples of how garbage collection may be performed on content addressable content units are described in the applications listed below in Table 1. Another example of an operation that may be performed by the utility node is determining if retention periods have expired.
- a content unit may be assigned a retention period that specifies a period of time during which the content unit may not be deleted. Retention periods are described in greater detail in the applications listed below in Table 1. The utility node may determine which content units have expired retention periods and thus are available for deletion.
- content addressable storage techniques and content addresses are employed in storing and accessing content units.
- the invention is not limited in this respect, as any storage techniques and addresses may be used.
- object addressable storage and object identifiers may be used, wherein, as with CAS, a content unit is given an object address, though the object address need not be computed using the content of the content unit. That is, content addresses may be thought of as a specific type of object identifiers, wherein the addresses are computed using the content of the content unit.
- a content unit may be identified (e.g., by host computers requesting access to the content unit) using its object identifier and the object identifier may be independent of the physical or logical location at which the content unit is stored (thought it is not required to be). However, from the perspective of the host computer, the object identifier does not control where the content unit is stored.
- the above-described embodiments of the present invention can be implemented in any of numerous ways.
- the embodiments may be implemented using hardware, software or a combination thereof.
- the software code can be executed on any suitable processor or collection of processors, whether provided in a single computer or distributed among multiple computers.
- any component or collection of components that perform the functions described above can be generically considered as one or more controllers that control the above-discussed functions.
- the one or more controllers can be implemented in numerous ways, such as with dedicated hardware, or with general purpose hardware (e.g., one or more processors) that is programmed using microcode or software to perform the functions recited above.
- one implementation of the embodiments of the present invention comprises at least one computer- readable medium (e.g., a computer memory, a floppy disk, a compact disk, a tape, etc.) encoded with a computer program (i.e., a plurality of instructions), which, when executed on a processor, performs the above-discussed functions of the embodiments of the present invention.
- the computer-readable medium can be transportable such that the program stored thereon can be loaded onto any computer environment resource to implement the aspects of the present invention discussed herein.
- the reference to a computer program which, when executed, performs the above-discussed functions is not limited to an application program running on a host computer. Rather, the term computer program is used herein in a generic sense to reference any type of computer code (e.g., software or microcode) that can be employed to program a processor to implement the above-discussed aspects of the present invention.
- the computer implemented processes may, during the course of their execution, receive input manually (e.g., from a user).
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
Dans un mode de réalisation, l'invention concerne un système informatique comprenant au moins un hôte, au moins un système de stockage addressable par objet (OAS) et au moins un support de communication qui relie les hôtes aux systèmes OAS. Ces systèmes OAS, qui ont plusieurs dispositifs de stockage, stockent plusieurs unités de contenu dans les nombreux dispositifs de stockage. Chacun des hôtes et des systèmes OAS a un logiciel qui fournit une interface OAS de façon que chaque unité de contenu stockée dans le système OAS puisse être identifiée entre les hôtes et les OAS au moyen d'un identificateur d'objet. Le système informatique établit une correspondance de l'identificateur d'objet pour une première unité de contenu avec au moins un des dispositifs de stockage sur un au moins un premier chemin. En réponse à une défaillance qui empêche les hôtes d'accéder à la première unité de contenu via au moins un premier chemin, le système informatique est automatiquement reconfiguré de façon à établir au moins un seconde chemin antérieurement non établi qui permet aux hôtes d'accéder à la première unité de contenu au moyen de l'identificateur d'objet pour la première unité de contenu.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/324,728 US7529972B2 (en) | 2006-01-03 | 2006-01-03 | Methods and apparatus for reconfiguring a storage system |
US11/324,639 US20070157002A1 (en) | 2006-01-03 | 2006-01-03 | Methods and apparatus for configuring a storage system |
PCT/US2006/049593 WO2007081581A2 (fr) | 2006-01-03 | 2006-12-29 | Procédés et appareil de reconfiguration d'un système de stockage |
Publications (1)
Publication Number | Publication Date |
---|---|
EP1969454A2 true EP1969454A2 (fr) | 2008-09-17 |
Family
ID=38201067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP06849270A Withdrawn EP1969454A2 (fr) | 2006-01-03 | 2006-12-29 | Procédés et appareil de reconfiguration d'un système de stockage |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1969454A2 (fr) |
JP (1) | JP2009522656A (fr) |
WO (1) | WO2007081581A2 (fr) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7992037B2 (en) * | 2008-09-11 | 2011-08-02 | Nec Laboratories America, Inc. | Scalable secondary storage systems and methods |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826613B1 (en) * | 2000-03-15 | 2004-11-30 | 3Com Corporation | Virtually addressing storage devices through a switch |
JP3964212B2 (ja) * | 2002-01-16 | 2007-08-22 | 株式会社日立製作所 | 記憶装置システム |
US7117204B2 (en) * | 2003-12-03 | 2006-10-03 | International Business Machines Corporation | Transparent content addressable data storage and compression for a file system |
US7627617B2 (en) * | 2004-02-11 | 2009-12-01 | Storage Technology Corporation | Clustered hierarchical file services |
-
2006
- 2006-12-29 EP EP06849270A patent/EP1969454A2/fr not_active Withdrawn
- 2006-12-29 JP JP2008548770A patent/JP2009522656A/ja active Pending
- 2006-12-29 WO PCT/US2006/049593 patent/WO2007081581A2/fr active Application Filing
Non-Patent Citations (1)
Title |
---|
See references of WO2007081581A3 * |
Also Published As
Publication number | Publication date |
---|---|
WO2007081581A2 (fr) | 2007-07-19 |
JP2009522656A (ja) | 2009-06-11 |
WO2007081581A3 (fr) | 2007-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7529972B2 (en) | Methods and apparatus for reconfiguring a storage system | |
US20070157002A1 (en) | Methods and apparatus for configuring a storage system | |
US11262931B2 (en) | Synchronous replication | |
US10963289B2 (en) | Storage virtual machine relocation | |
US20220124149A1 (en) | Synchronous replication for storage | |
US9229646B2 (en) | Methods and apparatus for increasing data storage capacity | |
US10452489B2 (en) | Reconciliation in sync replication | |
US7089448B2 (en) | Disk mirror architecture for database appliance | |
US9830088B2 (en) | Optimized read access to shared data via monitoring of mirroring operations | |
US7337351B2 (en) | Disk mirror architecture for database appliance with locally balanced regeneration | |
US7539838B1 (en) | Methods and apparatus for increasing the storage capacity of a storage system | |
US20240184470A1 (en) | Composite aggregate architecture | |
US8972656B1 (en) | Managing accesses to active-active mapped logical volumes | |
US20160266810A1 (en) | Storage device health status synchronization | |
US8924656B1 (en) | Storage environment with symmetric frontend and asymmetric backend | |
US10423507B1 (en) | Repairing a site cache in a distributed file system | |
US12038817B2 (en) | Methods for cache rewarming in a failover domain and devices thereof | |
US8516023B1 (en) | Context based file system | |
EP1969454A2 (fr) | Procédés et appareil de reconfiguration d'un système de stockage | |
US10318426B1 (en) | Cloud capable storage platform with computation operating environment for storage and generic applications | |
US11695852B1 (en) | Managing overlapping communications between downtiering and invalidating cached data among nodes in a storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20070828 |
|
AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): DE GB |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN WITHDRAWN |
|
18W | Application withdrawn |
Effective date: 20081210 |