The present invention pertains generally to the updating of system configuration information for a computer system and more particularly without limitation to multiple-processor updating for atomicity.
Computer systems can comprise input devices, output devices, one or more CPUs and storage devices that can include semiconductor RAM, EEPROM, disc drives, CD drives, other storage media, and can include intelligent controllers. An operating system can control configuration of various peripherals, such as display adapters and network interfaces, for example, and provides an application environment and a data system that allocates or de-allocates storage capacity as files are created, modified, or deleted. Specialized computer systems, such as servers and storage arrays, also employ a system for allocating storage capacity that can be accessed through a network or other connection. Data can be stored across a plurality of disc drives in redundant storage formats such as RAID, for example. User data, and any mirror data or parity data, is mapped to one or more areas on one or more disc drives. Configuration information describing the manner in which data is stored to one or more disc drives is contained in tables or other data structures termed metadata. As files are created, modified, or deleted, the metadata is updated to reflect the allocation or de-allocation of storage capacity.
The manner in which metadata describes storage mapping and how metadata is processed within a data storage system can have a significant impact upon storage system performance. As the storage capacity of a system grows, the amount of configuration information employed to manage the system can also grow, as does the amount of time needed to process information. The rate at which storage can be allocated or de-allocated, the number of concurrent processes supported, and the storage capacity of a system directly affects the marketability and value of the system.
As embodied herein and as claimed below, the present invention is generally directed to a device and associated method for updating computer system configuration information.
In some embodiments a method is provided comprising identifying candidate system configuration information associated with the configuration change request by a first processor; sending an update request incident with the configuration change request to a second processor; and updating the candidate system configuration information by the second processor in response to the update request and independently of the first processor.
In some embodiments a data storage system is provided comprising system configuration information associated with allocation of a memory space; a first processor adapted for identifying a portion of the system configuration information in response to a configuration change request to the memory space; and a second processor adapted for updating the portion in response to an update request incident with the configuration change request and independently of the first processor.
In some embodiments a data processing system is provided comprising system configuration information defining allocation of a memory space; and means for updating the system configuration information by sharing operations associated with a configuration update request across multiple processors.
These and various other features and advantages which characterize the embodiments of the claimed invention will become apparent upon reading the following detailed description and upon reviewing the associated drawings.
Operating systems 100 each contain at least one central processing unit (CPU), a plurality of data storage devices 101 defining a data storage capacity, and metadata describing the configuration of the data storage capacity. By “configuration” it is meant that a description is provided to the system 100 regarding whether particular portions of the storage capacity are being used to store data, or “allocated” space, as opposed to the portions that are available for storing data, or “allocatable” space.
Other operating systems suited for use with various embodiments of the present invention include additional data storage devices 101, additional data storage arrays, additional data storage device controllers or network interface controllers, and the like, that are not depicted in
To illustrate an exemplary environment in which presently preferred embodiments of the present invention can be advantageously practiced,
The system 100C includes a number of host computers 102, respectively identified as hosts A, B, and C. The host computers 102 interact with each other as well as with a pair of data storage arrays 104 (denoted A and B, respectively) via a fabric 106. The fabric 106 is preferably characterized as fibre-channel based switching network, although other configurations can be utilized as well including the Internet.
Each array 104 includes a pair of controllers 108 (denoted A1, A2 and B1, B2) and a set of data storage devices 101 preferably characterized as disc drives operated as a RAID. The controllers 108 and data storage devices 101 preferably utilize a fault tolerant arrangement so that the various controllers 108 utilize parallel, redundant links and at least some of the user data stored by the system 100C is stored in a redundant format within at least one set of the data storage devices 101.
It is further contemplated that the A host computer 102 and the A data storage array 104 can be physically located at a first site, the B host computer 102 and B storage array 104 can be physically located at a second site, and the C host computer 102 can be yet at a third site, although such is merely illustrative and not limiting.
A fabric interface (I/F) circuit 118 communicates with the other controllers 108 and the host computers 102 via the fabric 106, and a device I/F circuit 122 communicates with the storage devices 101. The I/F circuits 118, 122 and a path controller 120 form a communication path to pass commands and data between the storage array 104 and the host 102, such as by employing the cache memory 124. Although illustrated discretely, it will be understood that the path controller 120 and the I/F circuits 118, 122 can be unitarily constructed.
The data storage capacity of an array 104, defined by the extent of the data storage devices 101 in a given array 104, is organized into logical devices that can be written to and read from the array 104. System configuration information defines the relationship between user data, including any associated parity and mirror data, with the respective storage locations. The system configuration information furthermore identifies the relationship between blocks of storage capacity allocated to user data and the memory storage locations, such as logical block addresses (LBA). The system configuration information can furthermore include virtualization by defining virtual block addresses that are mapped to logical block addresses.
System configuration information is changed in response to a configuration change request from the system 100C. In response, storage capacity can be allocated, such as when saving new files or enlarging existing files, or storage capacity can be deallocated, such as when deleting files or reducing the size of existing files. For purposes of this description and the appended claims, the term “allocation” means either an allocation or deallocation of storage capacity. System metadata is resultant data defining file allocation information states and other data structures that support allocation processes.
Continuing with the illustrative embodiments of
Other equivalent embodiments of the present invention can include additional or other system components, such as additional data storage devices 101, additional arrays 104, and disc controllers or interface controllers, for example, that are not explicitly depicted herein. For example, in some embodiments processor 130 can be part of an intelligent controller such as a data storage device controller, interface controller, or other controller. Some embodiments can comprise the processor 112 and multiple intelligent controllers, each having an associated memory.
Again, system configuration information defining the allocation of storage capacity can be stored in the array 104. The form and content of the system configuration information can vary depending upon the organization of storage capacity into LDs and the manner in which user data and redundant data, such as mirror data or parity data, are distributed among the data storage devices 101.
Embodiments of the present invention furnish an architecture and methods for creating and modifying system configuration information. The system configuration information can control hardware configurations, such as operating modes of devices and peripherals, and/or software configurations including file systems and allocation of storage capacity in data storage systems. The following figures provide examples of system configuration information and processing thereof for a grid architecture storage system. However, applications of embodiments of the present invention are not limited to specific storage system or system configuration information formats.
A grid 146 containing only user data 142 is termed a storage unit (SU). Fault tolerance can be provided for data stored in an SU through redundant information, such as parity data or mirror data, which is preferably stored in other grids 146. An SU that is associated with fault tolerance information contained in one or more other grids 146 is termed a “reliable storage unit” (RSU). For purposes of this description and the appended claims, the term “SU” contemplates a preselected user data storage capacity with or without associated fault tolerance information. That is, the term “SU” can mean an SU containing user data without any associated fault tolerance information, and the term “SU” can in equivalent alternative embodiments mean an RSU.
A plurality of grids 146 can be grouped into a grid group (sometimes referred to as a “sheet”) 148. Preferably, the sheet 148 can be allocated to a logical device (LD), and individual grids 146 within the allocated sheet 148 can further be assigned/unassigned to/from the LD in response to system configuration change requests. Grids 146 in the array map 140 can be sequentially numbered or otherwise assigned a number or identifier that uniquely identifies them. As such, the array map 140 can be viewed as comprising a plurality of sheets 148, with each sheet 148 comprising a plurality of grids 146. User data 142, including redundant data, if any, and system configuration information 144 can be stored within the grids 146, and thus within the sheets 148.
A plurality of array maps 140 can be employed if the system 100C has a plurality of arrays 104 or other organization of data storage devices 101. For such a plurality of arrays 104, system metadata can be stored in one or more arrays 104.
The LDGT 182 is a listing of grids 146 assigned to the respective LD. In some embodiments the LDAM 180 can be implemented as a flat map with an offset into the map determined from an LD number to locate the LDGT 182 for that LD number. Alternatively, the LDAM 180 can be implemented as a list of indices each pointing to an LDGT 182. Other addressing methods can be used as well. The LDAM 180 is not limited to a specific number of LDGTs 182.
Each LDGT 182 can include a grid entry descriptor 184 that specifies a grid number 186, and can contain additional information such as RAID level 188, array ID 190 (such as if the storage system comprises a plurality of arrays 104) and other information, such as illustrated. The LDAM 180 can also contain an RBit Array (RBA) 192 for each LD that contains RBits 194 that can be employed to indicate if a portion of a grid 146 has been accessed or utilized. For example, Rbits 194 can be employed to indicate if a portion of a grid 146 has been copied.
When system configuration information is updated, data structures or portions of data structures, otherwise referred to as metadata, stored in array 104 are transferred to memory 134 (
The update record 236 can comprise memory allocation information comprising that portion of the candidate system configuration information that is changed as a result of completing the configuration update request. The memory allocation information can be combined with the prior state of the system configuration information to obtain the subsequent state of the system configuration information. Alternatively, the subsequent state of the system configuration information can be ascertained by viewing the prior state of the system configuration information as modified by the memory allocation information.
Processor 112 identifies the candidate system configuration information associated with the configuration change request, by determining which data structures, or portions thereof, are paged into memory 134.
At step 244 the processor 112 selects candidate system configuration information stored in array 104 that will include the system configuration information affected by processing the configuration change request. This can include selecting an LDGT 182 from LDAM 180 and LDAD entry 202 from LDAD 200 using the LD number of the LD to be created. At step 246 the candidate system configuration information stored in array 104 is transferred to memory 134 under control of processor 112. This can comprise programmed I/O, programming a DMA controller, configuring or instructing another processor to perform the transfer, or any other transfer methods. In some embodiments memory 134 is a cache memory and the candidate system configuration information is paged into the cache.
At step 248 an update request is created, such as by processor 112, and issued to processor 130. The update request specifies the type of operation to be performed by processor 130 and can be in the form, as illustrated in
At step 260 the processor 130 identifies allocatable storage capacity that is sufficient to satisfy the configuration change request, such as by reading allocatable grid group zone counts 168, 170 (
At step 262 an update record can be created. For example, for each sheet 148 selected in step 260, a GGAT entry 222 is created and stored in update record 236 (
At step 264 the processor 130 updates system configuration information data structures stored in memory 134 using the update record 236. Preferably, this updating is an atomic process that is not interrupted by any other process. For example, in some embodiments the processor 130 disables processing of input-output interrupts during the updating process. At step 266 the processor 130 can return a completion response to processor 112 indicating that the update request has been processed.
Other opcodes 252 can be defined for other operations. LD number 254 can comprise an LD number or other LD identifier. Storage format 256 specifies the storage format that can include, but is not limited to, RAID formats. Storage capacity 258 specifies an amount of storage to be allocated. Storage capacity 258 can be specified in blocks, bytes, grids, grid groups, or other units.
Advantageously, embodiments of the present invention provide a system and method for updating system configuration information that reduces the workload on a first processor by performing some tasks on a second processor. Preloading a memory accessible by the second processor with configuration information to be updated allows updates to be performed in an atomic manner since no other I/Os are required. Computer program code for the second processor can be simplified by transferring types of system configuration information to predefined locations within the cache memory. Frequently accessed system configuration information, such as SAM 160 and SAD 162, for example, can be kept resident in the cache. Use of a write-back cache memory allows updated system configuration information to be quickly available to the system for file access without the delay of I/Os to write configuration information back to the array.
Accordingly, very efficient and atomic methodology for manipulating metadata is provided by the embodiments of the present invention. Preferably, the metadata can be highly organized in the write-back cache memory. Some elements of the metadata can be preloaded and always existent, while other elements can be paged into cache as needed by high level policy software. The high level policy software determines what metadata is needed in cache, and then coordinates the I/Os to accomplish the determination. Then the high level policy software can issue the request packet in very dense form (such as virtualization active context entry (VACE)) to the operational processor (such as MAP). The operational processor carries out the actual metadata manipulation, updating discontiguous pieces of metadata with only memory references, and without needing to understand how the high level policy software will use the metadata changes. The atomicity is achieved by processing only a single metadata update at a time, which is possible because by definition no I/Os are necessary for the operational processor to perform a request.
While the preceding examples illustrate configuration information updates related to allocation of storage capacity, configuration change requests can be employed to update other system configuration information including but not limited to hardware device configuration and software configurations, such as passwords, for example.
It is to be understood that even though numerous characteristics and advantages of various embodiments of the present invention have been set forth in the foregoing description, together with details of the structure and function of various embodiments of the invention, this detailed description is illustrative only, and changes may be made in detail, especially in matters of structure and arrangements of parts within the principles of the present invention to the full extent indicated by the broad general meaning of the terms in which the appended claims are expressed. For example, the particular elements may vary depending on the particular metadata structure without departing from the spirit and scope of the present invention.
Number | Name | Date | Kind |
---|---|---|---|
4847807 | Yule | Jul 1989 | A |
5285451 | Henson et al. | Feb 1994 | A |
5325363 | Lui | Jun 1994 | A |
5412661 | Hao et al. | May 1995 | A |
5519844 | Stallmo | May 1996 | A |
5537567 | Galbraith et al. | Jul 1996 | A |
5544339 | Baba | Aug 1996 | A |
5568629 | Gentry et al. | Oct 1996 | A |
5632027 | Martin et al. | May 1997 | A |
5671349 | Hashemi et al. | Sep 1997 | A |
5682509 | Kabenjian | Oct 1997 | A |
5708769 | Stallmo | Jan 1998 | A |
5729763 | Leshem | Mar 1998 | A |
5774643 | Lubbers et al. | Jun 1998 | A |
5790775 | Marks et al. | Aug 1998 | A |
5812754 | Lui et al. | Sep 1998 | A |
5960169 | Styczinski | Sep 1999 | A |
6101615 | Lyons | Aug 2000 | A |
6154853 | Kedem | Nov 2000 | A |
6154854 | Stallmo | Nov 2000 | A |
6195695 | Cheston et al. | Feb 2001 | B1 |
6219753 | Richardson | Apr 2001 | B1 |
6247157 | Edirisoorija | Jun 2001 | B1 |
6327672 | Wilner | Dec 2001 | B1 |
6338126 | Ohran et al. | Jan 2002 | B1 |
6353895 | Stephenson | Mar 2002 | B1 |
6453428 | Stephenson | Sep 2002 | B1 |
6457140 | Lindberg et al. | Sep 2002 | B1 |
6473830 | Li et al. | Oct 2002 | B2 |
6502166 | Cassidy | Dec 2002 | B1 |
6529994 | Bleidt et al. | Mar 2003 | B1 |
6557123 | Wiencko, Jr. et al. | Apr 2003 | B1 |
6574687 | Teachout et al. | Jun 2003 | B1 |
6675176 | Shinkai et al. | Jan 2004 | B1 |
6675318 | Lee | Jan 2004 | B1 |
7353259 | Bakke et al. | Apr 2008 | B1 |
20040049770 | Chrysanthakopoulos et al. | Mar 2004 | A1 |
20040133506 | Glodjo et al. | Jul 2004 | A1 |
Number | Date | Country | |
---|---|---|---|
20060085626 A1 | Apr 2006 | US |