This application contains subject matter which may relate to the commonly-assigned, co-pending application entitled, “Storage Configuration,” application No. 10/999,178 and filed Nov. 29, 2004.
Some storage systems comprising a plurality of storage devices may be operated according to any one of a variety of configurations. Such storage systems are configured prior to their use in accordance with the desired configuration. User friendly mechanisms and procedures for configuring the storage systems are desirable.
For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:
a-4j show various configuration options that may be displayed on an illustrative control device.
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections. The term “system” refers broadly to a collection of two or more components and may be used to refer to an overall system (e.g., a computer system or a network of computers) as well as a subsystem provided as part of a larger system (e.g., a subsystem within an individual computer).
The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any embodiment is meant only to be exemplary of that embodiment, and not intended to intimate that the scope of the disclosure, including the claims, is limited to that embodiment.
Referring now to
In addition to the storage devices 66, the storage unit 60 includes a storage controller 64. The storage controller 64 includes a central processing unit (“CPU”) 69 coupled to a read only memory (“ROM”) 68, to a random access memory (“RAM”) 72, and to an input/output (“I/O”) interface 74. The ROM 68 contains firmware 70 and a software application 71, each of which is executable by the CPU 69. During initialization of the storage unit 60, the firmware 70 and/or the software application 71 may be copied to RAM 72 and thus may be executed by the CPU 69 from the RAM. Either or both of the ROM 68 and RAM 72 comprise a storage medium on which executable code is stored and executed by the CPU 69. The firmware 70 and/or the software application 71 may be stored on other forms of storage as well. The storage controller 64 is capable of receiving service requests from an operating system (e.g., Windows, Linux) running on the server 52.
A user-activated I/O control device 76 is provided on a user-accessible outer surface of the storage unit 60. The storage controller 64 may be fabricated on a printed circuit board. If desired, the I/O control device 76 may be located on a surface of the printed circuit board that is accessible from outside the storage unit 60. Referring briefly to
Referring again to
The storage devices 66 can be configured to operate in any of a plurality of configurations such as any of a variety of Redundant Array of Independent Disks (“RAID”) configurations. Such configurations, also known as “levels,” include RAID0, RAID1+0, RAID1, RAID4, RAID5, RAID5+, RAID6, and other suitable configurations as desired. U.S. Pat. Nos. 6,694,479 and 6,643,822, both of which are incorporated herein by reference, provide various illustrative configurations. Using I/O control device 76, the user can select a predetermined RAID configuration or manually create a RAID configuration on the fly.
In a RAID configuration, a plurality of storage devices (e.g., hard disk drives, also known as physical drives) are provided and configured in a way that provides redundancy. Data is “striped” across multiple storage devices. The multiple storage devices form a “logical drive.” That is, a data set is divided up and stored across a logical drive comprising two or more storage devices. Data may be striped using a variety of stripe sizes (e.g., 16 KB, 64 KB, 256 KB). In a RAID1+0 configuration, storage devices are configured in a “mirrored” implementation in which data may be striped across two storage devices and the same data is also striped across two other storage devices. A RAID4 configuration includes a parity storage device in addition to data storage devices. Information stored on the parity storage device generally is the exclusive-OR (“XOR”) of the data on the data storage devices. In the event of a device failure, data on any of the data or parity storage devices can readily be recovered by computing the exclusive OR of the remaining storage devices. RAID5 is similar to RAID4, but parity information is rotated among the various data drives (i.e., there is no dedicated parity drive). RAID6 is similar to RAID5, except a second set of parity data is written across some or all data drives.
The mechanism by which the storage controller 64 configures the storage devices 66, in accordance with the selected or manually created configuration, can implement any suitable technique, examples of which are described in some or all of the following documents incorporated herein by reference: U.S. Pat. Nos. 6,058,489; 6,418,539; 6,269,453; and 6,061,752. For example, the firmware 70 included in ROM 68 or RAM 72 can be run on the storage controller's CPU 69 to cause the CPU 69 to configure the storage devices 66 in accordance with the user-selected storage device configuration. Such firmware generally performs a function such as creating storage volumes according to parameters such as size, fault tolerance (e.g., RAID), stripe size, sector size, and so on. The firmware also may be used to configure various array controller parameters including cache settings, rebuild priority, expand priority, surface scan delay, access control, etc. as described further below. As such, when a RAID configuration is selected using the keypad 80, an interrupt is asserted to the CPU 69 thereby causing the CPU to determine the nature of the interrupt and execute the firmware to configure the storage devices 66.
A user of the storage unit 60 interacts with the I/O control device 76 to configure the storage devices 66 to a desired RAID configuration such as those described above (or others). The I/O device 76 may be used to configure the storage devices 66 in at least two ways: the device 76 can be used to select from a list of RAID configurations preprogrammed in the storage controller 64 or the device 76 can be used to enable a user to manually create his or her own configuration. Both of these techniques are implemented on the I/O control device 76 by way of either a graphical user interface (“GUI”) or a command line interface (“CLI”). Manually creating a RAID configuration may include selecting various parameters from scratch or modifying (i.e., migrating) an existing configuration.
A main menu displayed on the display 78 enables the user to select one of the two options described above: the user may choose to select a pre-programmed configuration, or the user may choose to manually create his or her own configuration. In some embodiments, the main menu is initially displayed when the user boots up the storage unit 60. In other embodiments, the main menu is initially displayed when the user presses a key on the keypad 80, such as the Enter key. Before each of the two options is discussed in turn, reference is made to
Referring now to
Once the software application 71 has caused the CPU 69 to display one or more configuration options on the display 78, the process 300 comprises monitoring user input received from the keypad 80 (block 308). When the user presses an arrow key on the keypad 80 (block 310), an interrupt signal 75 is asserted by the I/O interface 74 to the CPU 69, which interrupt signal causes the software application 71 to update the options on the display 78, including the highlight bar, accordingly (block 312). For example, assume the display 78 shows five possible options 1-5, with option 1 highlighted as the option currently under consideration by the user. Pressing the “down” arrow key on the keypad 80 may cause the highlight bar to move from option 1 to option 2. In other embodiments, pressing the “right” arrow key on the keypad 80 causes the highlight bar to move from option 1 to option 2. Assuming option 2 is highlighted, pressing the “up” arrow key or the “left” arrow key causes the highlight bar to move from option 2 to option 1. In another example, assume the display 78 shows options 1-5, with option 5 highlighted. Pressing the “down” arrow key causes the display 78 to scroll down such that option 1 “falls off” the top of the display 78 and an option 6 appears at the bottom of the display. In yet other embodiments where only one option is shown on the display at a time, pressing one of the arrow keys on the keypad 80 causes a different option to be displayed. The scope of disclosure is not limited to assigning any particular action to any particular key on the keypad 80. After an arrow key is pressed (block 310), the process 300 resumes at block 306.
When presented with options on the display 78 at block 306, if the user presses the “Enter” key on the keypad 80 (block 314), then the option that is currently highlighted (in embodiments where multiple options are displayed at a time) or the option that is shown on the display 78 (in embodiments where only one option is displayed at a time) is selected. When the Enter key is pressed, the process 300 comprises asserting an interrupt signal 75 to the CPU 69 (block 316), which interrupt signal causes the CPU 69 to determine whether the item selected requires the user to make further selections (block 318). Execution of the software application 71 reveals whether additional data is required by the application 71 to configure the storage devices 66. For example, a subroutine in the application 71 may be dedicated to gathering input data from the user. After making a selection, a portion of the subroutine may have been executed, but additional portions of the subroutine may remain unexecuted, thus indicating to the CPU 69 that additional selections need to be made by the user.
As is described in further detail below, in case an item is selected that requires no further user selections, the process 300 comprises sending one or more commands to the firmware 70 from the software application 71 (block 320). The firmware 70 performs the received command(s), thereby updating the configuration of the storage devices 66 using the new configuration selected via the I/O device 76 (block 322). The software application 71 then displays the storage device 66 configuration status on the display 78. The user presses Enter to confirm the status of the storage devices 66 (block 324), and the process 300 resumes at block 304.
However, in case further selections are required (block 318), then another iteration of the process 300 is performed so that the user can make additional selections. Before another iteration of the process is performed, however, the selections that the user has made thus far are stored in the memory (e.g., RAM 72) so that the selections are not lost (block 326). Selections may be stored to the memory in this fashion with each iteration of the process 300 that is performed. Additional iterations of the process 300 are performed until no further selections are required. At this point, all user selections stored in memory are collectively used to configure the storage devices 66 using the steps in blocks 320-324. If, instead of pressing the Enter key or an arrow key, the user presses the Esc key (block 328), the process 300 comprises clearing any selections stored in memory (block 330) and control of the process 300 returns to block 304.
If the user chooses on the main menu to select a preprogrammed RAID configuration, the user is prompted to select from a list of preprogrammed RAID configurations. For example, the display 78 may prompt the user to select from a list comprising RAID6, RAID5, RAID1+0, and RAID0, although the scope of disclosure is not limited as such. If the user selects a preprogrammed RAID configuration using the keypad 80, the display 78 presents the user with the option of selecting a spare (i.e., backup) drive. A spare drive comprises a storage drive 66 (e.g., physical drive) that is already included in the storage unit 60 but has not yet been assigned to any particular RAID configuration or logical drive. The spare drive is added to the RAID configuration selected in block 350 and is used as a replacement (i.e., backup) drive in case a drive in the RAID array fails or becomes corrupted. In particular, if a physical drive in the RAID array fails or is corrupted, the spare drive is used in its place, and the data that was previously stored on the failed/corrupted drive is repopulated on the spare drive. After the user is finished making the appropriate selections, the display 78 returns to the main menu.
On the main menu, if the user chooses instead to create his or her own configuration, then the user is presented with another menu that displays at least two different ways for the user to create a configuration: the device 76 can guide the user through the process of creating a new or migrating an existing configuration, or the device 76 can be used to assemble a command line interface (“CLI”) command to create a new or migrate an existing configuration. Each of these two options is now discussed in turn.
To have the storage unit 60 guide the user through the process of generating a new RAID configuration or migrating a RAID configuration, a series of options as described below is presented on the display 78. Specifically, the display 78 prompts the user with a variety of possible actions, including:
The user may choose the “Create Array” option to generate a new RAID configuration. When the “Create Array” option is selected, the display 78 prompts the user to make further selections:
Create Array
The user may choose the “Expand Array” option described above to expand an existing array by adding physical drives to the array. When the user selects the “Expand Array” option, the user is prompted with further selections:
Expand Array
The user may choose the “Delete Array” subcategory to delete an entire array. Upon choosing the “Delete Array” subcategory, the user is prompted to select an array for deletion, and is further prompted for confirmation of the deletion request in order to avoid an unintentional deletion of an array. Some options available under the “Delete Array” subcategory are as follows:
Delete Array
The user may choose the “Add Spare to Array” subcategory from the list above in order to add spare drives to an existing array. Upon selecting the “Add Spare to Array” subcategory, the user may be prompted as follows:
Add Spare to Array
Likewise, the user may choose the “Remove Spare from Array” option to remove a spare drive from an existing array. The process of selecting an array and then selecting a spare for removal is similar to that described above in context of the “Add Spare to Array” option and thus is not repeated here.
The user may select the “Create Logical Drive” option to create a logical drive by selecting a RAID configuration, a stripe size, a sector number and a logical drive size. More specifically, upon selecting the “Create Logical Drive” option, the user is prompted with the following options:
Create Logical Drive
In addition to setting the stripe size, the user also may set a sector number:
Create Logical Drive-Set a Sector
The user may select the “Migrate Logical Drive” option to migrate (i.e., edit or modify) an existing logical drive. Upon selecting the “Migrate Logical Drive” option, the user is prompted as follows:
Migrate Logical Drive
The user may select the “Accelerate Logical Drive Array” option in order to enhance performance of a specific logical drive by providing the drive with a cache. By providing a cache to a drive selected for acceleration, data access from the drive is performed more quickly than from a drive without a cache, thus improving performance. When this option is selected, the display 78 prompts the user:
Accelerate Logical Drive Array
The user may extend (i.e., increase the size of) an existing logical drive by selecting the “Extend Logical Drive” option. Upon selecting this option, the user is prompted to select a specific logical drive or to exit the subcategory:
Extend Logical Drive
The user also has the option of deleting an existing logical drive by selecting the “Delete Logical Drive” option. When this option is selected, the user is prompted as follows:
Delete Logical Drive
The user may select the “Controller Settings” option to modify existing settings for the storage controller 64. Upon selecting this option, the user is prompted with the following options:
Controller Settings
The user also may select the “Selective Storage Presentation” (“SSP”) option. SSP is primarily used in applications where the storage unit 60 is coupled to more than one server. In some such storage units 60, it may be desirable to restrict access of certain logical drives to certain servers, so that each server can access only designated logical drives in the storage unit 60. Specifically, selecting this option produces the following list of options:
Selective Storage Presentation
The user also may select the “Show Configuration” option, in which case the display 78 shows the current configuration of the storage devices 66. This information is relayed to the display by the software application 71 being executed by the CPU 69. The configuration may be displayed on the display 78 in graphical or text format. Finally, the user also may select the “Clear Configuration” option in order to clear the current RAID configuration for a particular logical drive. The user may be prompted for a confirmation to clear the configuration.
As previously mentioned, if the user chooses to create his or her own configuration, then the I/O device 76 may be used to configure the storage devices 66 in at least two ways: the device 76 can guide a user through the process of creating a new or migrating an existing RAID configuration, or the device 76 can be used to assemble a command line interface (“CLI”) command to create a new or migrate an existing RAID configuration. Unlike a graphical user interface, a CLI comprises a textual, line-based interface where commands are specified in response to a prompt. Assuming proper command syntax is used, the CPU providing the CLI performs the function indicated by the CLI command.
In at least some embodiments, the CLI command assembled by the user comprises three components, although the scope of disclosure is not limited as such. Specifically, the device 76 is used to manually assemble the CLI command by selecting a target (e.g., the controller 64, an array, a logical drive, a physical drive), an action to perform on the target (e.g., create, modify, show, delete, add, remove), and command parameters that are associated with the action. The user selects the target, action and parameters from lists that are provided to the user via the display 78. As the user selects each component of the CLI command, the software application 71 causes the CPU 69 to receive the user's selection and to decode the user's selection into the appropriate CLI syntax. The CPU 69 decodes the user's selection using, for instance, a pre-programmed data structure stored on the controller 64 that correlates possible user selections with corresponding CLI syntax. In an exemplary embodiment, the display 78 shows the appropriate CLI command syntax as the command is being assembled by the user. In other embodiments, the CLI command is shown in a non-syntax (i.e., user-friendly) form as it is assembled by the user. After the CLI command is assembled, it is sent from the software application 71 to the firmware 70. The firmware 70 executes the command and configures the storage devices 66 as instructed by the command.
In particular, if the user selects the option to assemble a CLI command, the display 78 first prompts the user to select a target:
Select Target
Upon selecting a target for the CLI command being assembled, the user is prompted to select an action to perform on the selected target (some actions may not be available, depending on the target selected):
Select Action
Another action that the user may select is the “Modify” action. If the user selects the “Modify” action, the user is prompted to specify parameters associated with the action. An exemplary list of possible parameters are specified below in outline format for brevity and because most of the parameters are similar to options described above. The actual parameters may be presented to the user on the display 78 in any suitable format.
Modify-Set Parameter
The user also may select the “Show” or “Delete” options. However, these options do not require a parameter and thus once a target and one of these actions has been selected, the CLI command is complete and is sent to the firmware 70 for processing.
The user may further select the “Add” option. Like the “Modify” option above, the various options available under “Add” are reproduced in outline format below for brevity and because similar options have already been described above:
Add-Set Parameter
The user also may select the “Remove” option as an action. The outline for the “Remove” option is as follows:
Remove-Set Parameters
The user is able to make all necessary selections using only the I/O device 76. Specifically, whether the user chooses to select from a pre-programmed configuration or to create a new configuration, the user is able to do so using only the I/O device 76 and without having to use a QWERTY keyboard, the server 52, or any other device.
a-4j show a series of images of an illustrative I/O control device 76 as it is used to assemble a CLI command. Referring to
Once the Enter key is pressed and the “Create New” option is selected, the user is further prompted to select which method is desired to create a new configuration. Specifically, as shown in
Once the Enter key is pressed and the “Configuration CLI” option is selected, the user is prompted to select a target, as described above and as shown in
Once the “Controller” has been selected, the CPU 69 retrieves the appropriate CLI syntax corresponding to the “Controller” selection and begins to assemble the CLI command using the proper syntax. In some embodiments, such as that shown in
Also as shown in
As shown in
As described above and as shown in
In some embodiments, some or all of the storage unit 60 is automatically powered off by the CPU 69 so that the storage devices 66 may be configured as indicated by the user. After the storage devices 66 are configured, the CPU 69 automatically powers the storage unit back on. In other embodiments, the configuration may be changed while the system is operational, first quiescing the storage unit 60. For example, all storage device accesses may be buffered. While the storage devices 66 are quiesced, the configuration may be changed as explained above. In other embodiments, the configuration can be changed without quiescing accesses to the storage devices 66. U.S. Pat. No. 6,058,489, incorporated herein by reference, illustrates at least one technique for changing a RAID configuration while still permitting a storage system to be operational.
The status of the CLI command as it is executed is shown in the display 78 as in
When the user enables power to the storage unit for the first time, the display 78 may be made to indicate to the user a suggested storage device configuration. The user can elect to implement the suggested configuration by pressing the Enter key on the keypad 80. Alternatively, the user can select a different configuration provided on the display 78 by using the keypad 80. The configuration suggestion may be programmed during manufacturing of the storage unit and may be specific to the purchaser. For example, the storage unit manufacturer may cause the storage unit to suggest one configuration for one purchaser and a different configuration for another customer. The different configurations may be determined from knowledge of the purchasers' intended applications. In some embodiments, the storage unit 60 configuration may be implemented even in the absence of an affirmative choice by a user. That is, a default configuration will be implemented for the storage devices if the user does not actively make a choice. The default configuration may be implemented if user input via the keypad 80 is not detected within a predetermined amount of time following powering up of the storage unit 60 for the first time.
To safeguard against inadvertently pressing one of the keys on the keypad 80, the I/O interface 74 may be configured to only cause the interrupt 75 to be asserted if a key is activated for more than a threshold amount of time (for example, 2 seconds). Further still, mechanical switch guards may be included that prevent a key from being pressed absent the guards being released and moved out of the way. In some embodiments, the I/O interface 74 may be protected by an enclosure that is secured using a physical lock and key. In yet other embodiments, the software application 71 (or the firmware 70) may be configured to prompt a user for a password or PIN code upon boot up, thus protecting the storage unit 60 from being configured by unauthorized users.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.