Highly available external storage system

An information system includes a primary storage system (PSS), a host, an external storage system (ESS), and a management host. The PSS uses virtual devices to treat logical devices in the ESS as if they were logical devices in the PSS. The ESS logical devices are configured using multiple disks for providing redundancy, such as in a RAID configuration, to enable migration of data following hardware failure in the ESS. When a disk forming part of an ESS logical device fails, the management host detects the failure and judges whether the ESS logical device is used by the PSS to form a virtual device. If the ESS logical device is used to form a virtual device, then the management host issues a migration request. In response to the migration request, the PSS migrates data from the ESS logical device to a logical device in the PSS to avoid data loss.

BACKGROUND OF THE INVENTION

The present invention relates generally to managing the availability of data in a storage system. More particularly the present invention relates to a method, apparatus and computer program for managing the availability of data in an external storage system such that the data remains in a highly available state even if a failure occurs in the external storage system.

Storage virtualization is the software implementation that combines multiple network storage devices into what appears to be a single storage unit. Storage virtualization is used, for example, in a Storage Area Network (SAN) which is a high-speed sub-network of shared storage devices. The SAN makes tasks such as archiving, back-up, and recovery easier and faster. Examples of storage virtualization are provided by U.S. Pat. No. 6,721,841 and “TagmaStore Universal Storage Platform”, Hitachi Data Systems Corporation, December 2004

U.S. Pat. No. 6,721,841 discloses a kind of virtualization method in which Input/Output (I/O) subsystems A and B are connected via a communication link. When the I/O subsystem A receives a read request from a host, the request is converted so as to read data in the I/O subsystem B. The data read from I/O subsystem B by I/O subsystem A is then supplied to the host from I/O subsystem. Thus, from the host point of view the data is being retrieved from I/O subsystem A.

“TagmaStore Universal Storage Platform” discloses a storage virtualization function in which a plurality of storage systems connected to the TagmaStore Universal Storage Platform are presented as if they were just internal storage devices.

A disadvantage of conventional storage virtualization is that the storage system enabling virtualization (primary storage system) cannot manage hardware failures that may occur in external storage systems such as hard disk drives. Therefore, in conventional storage virtualization if the external storage systems are not as reliable as the primary storage system, then data in the external storage systems may be lost even though the primary storage system is very reliable.

SUMMARY OF THE INVENTION

The present invention provides a method, apparatus and computer program for managing the availability of data in an external storage system such that the data remains in a highly available state even if a failure occurs in the external storage system.

An information system according to the present invention includes a primary storage system, a host, at least one external storage system, and a management host. Each of the primary and external storage systems may be a different kind of storage system (e.g. manufactured by the different vendors) from the other storage system. The primary storage system treats logical devices in the external storage system as if they were logical devices in the primary storage system. When a disk that forms at least a part of a logical device in the external storage systems fails, the management host detects the failure and judges whether the logical device is used by the primary storage system to form a virtual device. If the logical device is used by the primary storage system to form a virtual device, then the management host issues a migration request to the primary storage system. In response to the migration request, the primary storage system migrates data from the logical device of the external storage system in which the disk failed to a logical device in the primary storage system to avoid data loss, such as might occur due to loss of redundancy and in the event of failure of another disk forming at least part of the logical device in the external storage system.

DETAILED DESCRIPTION OF THE INVENTION

The present invention, as will be described in greater detail below provides an apparatus, method and computer program, particularly, for example, a method, apparatus and computer program for managing the availability of data in an external storage system such that the data remains in a highly available state even if a failure occurs in the external storage system. The present invention provides various embodiments including 1st, 2ndand 3rdembodiments as described below. However it should be noted that the present invention is not limited to the embodiments described herein, but could extend to other embodiments as would be known or as would become known to those skilled in the art.

A. System Configuration

FIG. 1andFIG. 2show an example of an information system in which the method, apparatus and computer program of the present invention is applied. Particularly,FIG. 1shows the physical components andFIG. 2shows the logical components that are used in the present embodiment.

As illustrated inFIG. 1a host1includes a Central Processing Unit (CPU)11, a memory13and a Host Bus Adapter (HBA)12. A primary storage2is provided that includes a disk controller20and a plurality of disks27. Disk controller20includes a Central Processing Unit (CPU)21, a backend interface22, a memory23, a plurality of ports24-1and24-2, a cache memory25, and a network interface card (NIC)26. The ports24-1and24-2(generally called “ports24”) may be used for connecting with HBA12of host computer1or an external storage4. The ports24may be of the Fibre Channel, Ethernet, or other interface type. The number of ports24is not limited to two. More than two ports24may exist. The NIC26is used for communicating with elements connected to a Local Area Network (LAN)5. Thus, the NIC26could be of the Ethernet type for use with the LAN5. It is possible that another kind of medium may be used for conducting communications in place of the LAN5.

An external storage4, similar to the primary storage2, is also provided. The external storage4includes a disk controller40and a plurality of disks47. Disk controller40includes a Central Processing Unit (CPU)41, a backend interface42, a memory43, a plurality of ports44-1and44-2, a cache memory45, and a network interface card (NIC)46. Port44-1may be used for connecting with primary storage2. The ports44may be of the Fibre Channel, Ethernet, or other interface type. The NIC46is used for communicating with elements connected to LAN5. Thus, the NIC46could be of the Ethernet type for use with the LAN5. A plurality of external storages4can be provided in the information system as illustrated inFIG. 16as will be discussed below.

A management host3is provided in the information system that is used for managing the primary storage2and the external storage4, to configure logical devices, to monitor the operation of various hardware components of the storages, to detect failures in the hardware components, and so on. Management host3includes a CPU31, a memory33and a NIC32for enabling communication with LAN5.

The LAN5is used by the management host3to communicate with and thereby manage the primary storage2and the external storage4. A data transmission line7is provided for connecting the external storage4to the primary storage2. In the present embodiment, for example, the primary storage2issues an Input/Output (I/O) command to the external storage4via the data transmission line7in accordance with the Fibre Channel protocol. The external storage4can respond to such I/O command using the data transmission line7.

FIG. 2shows a functional diagram of the information system, the physical configuration of which is illustrated inFIG. 1.FIG. 2illustrates the functions in the form of processes and a manager that reside in the primary storage2, the external storage4and the management host3. The processes include I/O process211, virtualization process212, migration process213and management process214included in the controller20of the primary storage2, and I/O process411and management process414included in the controller40of the external storage4. The manager includes a storage manager36included in the management host3. The processes and the manager as illustrated inFIG. 2each can, for example, be implemented by hardware and/or computer programs. If implemented by computer programs each of the processes and the manager can, for example, correspond to computer program code or instructions executed by a processor.

As described above the storage manager36resides in the management host3and the processes211-214reside in the disk controller20. Thus, for example, if the storage manager36is a computer program, then the computer program could be stored in memory33of the management host3and executed by CPU31of the management host3. Further, for example, if the processes211-214are computer programs, then the computer programs could be stored in the memory23and executed by the CPU21of primary storage2.

The I/O process211processes host I/O requests from host1. The I/O process211also creates logical devices271from the plurality of disks27. Details will be described below.

The virtualization process212creates virtual devices272in primary storage2using logical devices421created in the external storage4using disks47. By using the virtualization process212, the disk controller20treats the logical device421in the external storage4as if it were a logical device in the primary storage2.

The migration process213copies data in a logical device271in the primary storage2to another logical device271in the primary storage2while receiving host I/O requests. The logical devices to and from which the data is copied may also be virtual devices272. Details of the above will be described below in connection withFIGS. 13-15.

The management process214communicates with storage manager36in the management host3and operates the processes in the disk controller20in accordance with instructions from the storage manager36.

In the external storage4, I/O process411, and management process414reside in the disk controller40. The management process414monitors the status of hardware components of the external storage4such as disks47. If a failure occurs in one of the disks47, the management process414notifies the failure to the storage manager36in the management host3.

Also, to manage logical devices and virtual devices, disk controllers20,40, and management host3manages configuration information215,415, and35respectively. Details of the configuration information215,415, and35are described below.

B. Logical Volume Configuration

In the present embodiment, external storage4constructs a Redundant Array of Inexpensive Disks (RAID) configuration using the plurality of disks47. Within the RAID configuration, one or more logical devices421are created. Also, primary storage2constructs a RAID configuration and maintains a plurality of logical devices271using disks27. However, in another embodiment, the external and primary storages4and2, respectively, do not necessarily construct a RAID configuration.

The followings are terms and definitions that are used to describe features of the present embodiment:

RAID group: A set of disks47that construct a RAID configuration is called RAID group. InFIG. 3, a set of disks47-1,47-2,47-3, and474that construct a RAID-5 configuration are managed as a RAID group.

Stripe: Each storage device has a plurality of fixed-length regions where data is stored. In the present embodiment, a fixed-length region is called a stripe. The length of the stripe is defined in a RAID Configuration Table500as illustrated inFIG. 4, the details of which are described below. The length of a stripe is multiples of a disk block which is usually 512 bytes.FIG. 3illustrates an example of a RAID group that constructs a RAID-5 configuration. InFIG. 3small blocks having identification numbers1,2,3, etc. and P1, P2, P3, etc. are stripes. If the size of each small block is 512 bytes, the stripe size of the RAID group could, for example, be 512 bytes.

Stripe number: Each stripe has its own unique identification number in the present embodiment. Thus, numerals1,2,3. . . x each identify a data stripe within which data is stored. Further, letters P1, P2. . . Px each identify a parity stripe within which parity is stored.

Logical device (LDEV): At least one logical device is formed by the management process414from a RAID group based on the disks47which are not shown to the host computers.FIG. 3shows an example of three logical devices being formed in a RAID group.

Logical device number: Each logical device has a unique number within each storage system, namely the primary storage2and the external storage4, so that the storage system can manage the logical device. The unique number is called a logical device number. Also, each virtual device, described below, in the primary storage2has logical number.

Port number and Logical Unit Number (LUN): When host1writes data (object) to a logical device in the primary storage2, it designates the logical device by specifying identification numbers of the logical device in accordance with the protocol that is used between the host1and the primary storage2. If data transmission between the host1and the primary storage2is in accordance with Fibre Channel, then two kinds of identification numbers are used, namely port number and Logical Unit Number. In the present embodiment, port number corresponds to World Wide Name (WWN) of Fibre Channel that is assigned to each port24and LUN is a unique identifier assigned to each logical device. By specifying these two identification numbers, one logical device is determined. Therefore, to enable host1to access particular logical devices, a port number and a LUN must be specified.

Disk number: The primary storage2and the external storage4manage the disks27and47by assigning a unique number to each disk. These unique numbers assigned to the disks are called disk numbers.

InFIG. 4, for example, information regarding a first RAID group (group1) is provided in a RAID Configuration Table500. The details of the RAID Configuration Table500are described below.

C. External Storage Connecting Function

The virtualization process212causes the primary storage2to form a virtual device272using the logical devices421in the external storage4. This function is hereinafter called the external storage connecting function.

The following are terms and definitions used in describing this embodiment:

Internal device: is a logical device271that resides in the primary storage2.

External device: is a logical device421that resides in the external storage4.

Virtual device: is a device formed based on at least one logical device421that exists in the external storage4. Each virtual device272is associated with one of the external devices of the external storage4. In another embodiment, some of a plurality of virtual devices272may be associated with more than one logical device421of the external storage4to construct large size virtual devices272.

Map external device to virtual device: “Map” means that the virtualization process212creates a virtual device272in the primary storage2associated with a logical device421of the external storage4. After the mapping procedure, when the host1issues an I/O request to the virtual device272, the virtualization process212translates the I/O request and issues the I/O request to the logical device421of the external storage4associated with the virtual device272according to the map.

D. Configuration Information

FIGS. 4-9show a series of tables containing information used to define the configuration of the storages. The information contained in the tables represents configuration information215,415, or35as illustrated inFIG. 2.

FIG. 4shows the structure of a RAID Configuration Table500of a RAID group (group1) having a plurality of entries or rows. Primary storage2and external storage4each maintain this table to manage their disks27and47respectively. In the RAID Configuration Table500each row contains information of each RAID group. Columns501,502,503and504of the RAID Configuration Table500respectively contain a RAID group number of each group, disk numbers that identify disks that correspond to each group, a RAID level for each group and stripe size information of a size of a stripe corresponding to each group. A stripe is a number of consecutively addressed blocks in a disk device within which data is stored.

The RAID group number501identifies each RAID group with a unique number within the storage system. Disk number502indicates disk numbers that construct the RAID group. Thus, for example, the RAID group1(the row whose Group501is 1) is composed of four disks, disk1,2,3, and4. RAID level503represents the RAID level being implemented in the group. Thus, RAID 1 through 6 are supported. Stripe size504indicates the stripe size of the RAID group.

FIG. 5shows the structure of a Logical Device (LDEV) Configuration Table550having a plurality of entries or rows. The LDEV Configuration Table550is used to define the configuration of logical devices in the storage system. In the Logical Device Configuration Table550each row contains information regarding the logical devices of each RAID group. Columns551,552,553and554of the logical Device Configuration Table550respectively contain a RAID group number of each group, logical device numbers that identify logical devices that correspond to each group, starting stripe information indicating a stripe at which the logical device begins and ending stripe information indicating a stripe at which the logical device ends.

The RAID group number551identifies each RAID group with a unique number within the storage system. LDEV number552is an identification number of a logical device in the RAID group. Each LDEV number is a unique number within the storage system. Start553and End554are two parameters which show the starting stripe number and ending stripe number in the RAID group that construct the logical device. For example, LDEV1(the second row) starts from stripe number 0x7800000 and ends at stripe number 0xC7FFFFF.

FIG. 6shows the Path Configuration Table600having a plurality of entries or rows. The Path Configuration Table600defines the path to be used to access a particular logical device. In the Path Configuration Table600each row contains information regarding the path which must be set for in an I/O request to access a particular logical device. Columns601,602and603of the Path Configuration Table600respectively contain port IDs identifying ports through which particular logical devices are to be accessed, Logical Unit Number (LUN) which are renumbered IDs of the particular logical devices and LDEV which identifies the particular logical devices.

Port601and LUN602are two parameters that when specified in an I/O request causes access to a particular LDEV. Thus, for example, when host1issues an I/O request to the primary storage2specifying a Port and LUN, the primary storage2permits access to the LDEV corresponding to the Port and LUN. LDEV603identifies by number particular logical devices.

FIG. 7shows a Disk Status Table650having a plurality of entries or rows. The Disk Status Table650provides information regarding the status of each of the disks of the storage system, particularly with regard to whether the disk has failed and been replaced. In the Disk Status Table650each row contains information regarding the status of a particular disk and its corresponding spare disk. Columns651,652and653of the Disk Status Table650respectively contain disk numbers that identify particular disks, information indicating the status of the disk and information regarding the spare disks corresponding to the disks.

Disk651shows disk numbers. Status652and Spare Disk653show the status of the disks27or47specified in the column651, wherein “OK” indicates that a corresponding disk27or47is operating normally, “NG” indicates that a corresponding disk27or47has failed, and “REPLACE” indicates that a corresponding disk27or47is a hot standby disk and will be used as a replacement disk when another disk27or47fails.

Disk controller20or40periodically checks the status of each disk27or47and manages the disk status table650to update the status of each disk when its status changes. Thus, when one of the disks27or47fails, disk controller20or40changes the status of the disk27or47into “NG”, and assigns one of the replacement disks, whose status is “REPLACE”, as a replacement disk. When disk controller20or40assigns a replacement disk, the disk controller20or40records the disk number in the column Spare Disk653to indicate which of the disks is being used as the replacement disk of the failed disk. The Disk Status Table650as shown inFIG. 7shows that disk controller20or40has assigned the disk number “j” as the replacement disk of the disk3since the disk3has failed.

FIG. 8is a Port Configuration Table400having a plurality of entries or rows. The Port Configuration Table400defines the configuration of the ports of the primary storage2, wherein for example, each Fibre Channel (FC) interface (I/F) (port) has one of two kinds of configurations. In the Port Configuration Table400each row contains information regarding the configuration of each port. Columns401, and402of the Port Configuration Table400respectively contain port IDs identifying ports to which a particular configuration is to be applied and information regarding the state of the current configuration of the ports.

Port401shows port IDs of particular ports. Status402shows the status of the configuration of the particular as having at least two states of configuration, namely TARGET AND EXTERNAL. TARGET indicates that the corresponding port is a FC I/F and is used for receiving host I/O requests. EXTERNAL indicates that the corresponding port is a FC I/F and is used for an external storage connecting function.

Thus, inFIG. 8according to the Port Configuration Table400, in the primary storage2, the first row having port number 31:02:c2:60:35:01 corresponds to the FC I/F24-1, and the second row having port number 31:02:c2:60:35:02 corresponds to the FC I/F24-2. Therefore, FC I/F24-1is used for receiving host I/O requests, and FC I/F24-2is connected to the external storage4to use the external storage connecting function described above. Since the Port Configuration Table400is related to the virtualization process212, it is not maintained in the external storage4.

FIG. 9shows a Virtual Device Configuration Table250having a plurality of entries or rows. The Virtual Device Configuration Table250maps virtual devices272of the primary storage2to logical devices421of the external storage4. Thus, when a virtual device272is mapped to an external logical device421, information of the mapping is registered in the Virtual Device Configuration Table250. Since the Virtual Device Configuration Table250is used by the virtualization process212, it is maintained, for example, by the primary storage2. In the Virtual Device Configuration Table250each row contains information regarding the mapping of each virtual device272to a logical device421. Columns251,252and253of the Virtual Device Configuration Table250respectively contain logical device numbers of the virtual devices272and information of the logical devices421corresponding to the virtual devices272.

LDEV251shows the LDEV number of the virtual device that is created in the primary storage2. World Wide Name (WWN)252and LUN253show the WWN and LUN of the logical device of the external storage4which is mapped to the virtual device specified with LDEV number251.

Also, to enable a virtual device to be accessed from host1, port number and LUN must be assigned with the virtual device and the combination of the LDEV number of the virtual device, port number and LUN are registered to the path configuration table600.

The above described RAID, Logical Device, Path and Disk Status Configuration Tables500,550,600, and650, respectively shown inFIGS. 4-9are stored in the configuration information215and415of the primary storage2and the external storage4, respectively. However, the Port Status and Virtual Device Configuration Tables400and250, respectively are not stored in the configuration information415of the external storage4. Also a copy of the configuration information215and415is stored in the configuration information35of the management host3.

E. Process Flow

FIGS. 10,11and13-15each illustrate various processes performed as a result of execution of the functions of the storage manager36, the virtualization process212and the migration process213. The flow chart illustrated in each ofFIGS. 10,11and13-15can, for example, be implemented by hardware and/or software. If implemented by software each of the steps of the flow chart can, for example, correspond to computer program code or instructions executed by a processor.

When the various processes are performed as will be described below, the information system is caused to operate in a reliable manner even though each of the primary and external storages2and4are of a different kind of storage system (e.g. manufactured by the different vendors) from the others having different rates of reliabilities. Thus, the present invention is intended to account for such situations by having the primary storage2treat logical devices421in the external storage4as if they were logical devices in the primary storage2. According to the present invention when a disk47that forms at least a part of a logical device421in the external storages4fails, the management host3detects the failure and judges whether the logical device421is used by the primary storage2to form a virtual device. If the logical device421is used by the primary storage2to form a virtual device, then the management host3issues a data migration request to the primary storage2. In response to the data migration request, the primary storage2migrates data from the failed logical device of the external storage4to a logical device271in the primary storage2to avoid data loss. For example, if a disk47that fails is part of a RAID-1, 3, 4, or 5 group, then the RAID group loses redundancy. In this state, if another disk47fails, data will be lost. To avoid this situation, the primary storage2migrates data from any logical devices421at risk of data loss due to the failure of the disk47.

The following description of the flowcharts ofFIGS. 10,11and13-15is of the processes which implement the above described operation of the present invention.

As perFIG. 10the flow of the process illustrated therein shows the flow of process of the storage manager36when a failure of a hardware component in the external storage4occurs. When a failure occurs in the external storage4, a notification is sent to the storage manager36. In another embodiment, however storage manager36periodically inquires of the external storage4to check whether a failure has occurred in the external storage4. Some of the failures in the external storage4, upon occurrence, may decrease the reliability of data in the logical device. For example, if one of the disks47that fails is part of the RAID-1, 3, 4, or 5 groups, then the RAID group loses redundancy. In this state, if another disk47fails, data will be lost. To avoid this situation, the primary storage2migrates data in the logical device having the disk that failed to another logical device.

As illustrated inFIG. 10, the storage manager36judges whether a disk or any other such hardware component has failed and whether the hardware component failure decreases the reliability of the logical device in the external storage4, namely loss of redundancy (Step1001). If a failure has been detected and a loss of redundancy occurs, then the process proceeds to step1002. However, if the failure does not affect the reliability of the logical devices, then the process goes to step1005. A failure of a hardware component that does not affect the reliability of the logical devices could, for example, be a situation where an unused port44of the external storage4fails. A failure in the unused port44does not affect the reliability of the logical devices.

After step1001the process selects or specifies the LDEVs that are affected by the failure (Step1002). After step1002the process judges whether the selected LDEVs are mapped to external devices, specifically whether virtual devices corresponding to the external devices exist in the primary storage2(Step1003). If virtual devices corresponding to the external devices exist, then the process proceeds to step1004. If virtual devices corresponding to the external devices do not exist, then the process proceeds to step1005. Based on the Virtual Device Configuration Table250, the process specifies the virtual devices to be migrated (Step1004). Also, the process issues a data migration request to the primary storage2by specifying the virtual devices to be migrated. Details of the steps performed to implement step1004will be described below. After the data migration request has been issued, status information is displayed on a display screen of, for example, the management host3(Step1005).

Thus, for example, the storage manager36displays the state of the external storage4on a Graphical User Interface (GUI) of the display screen. The storage manager36also displays information regarding the hardware component that failed, and if data migration occurs at step1004, the storage manager36displays that the migration is in progress. Upon sending the data migration request as per step1004, the process proceeds to step1005immediately without waiting for completion of data migration.

FIG. 11shows the details of steps to implement the process flow of data migration that is executed when a data migration request is issued at step1004. The process checks whether logical devices that are not in use, as indicated by not being contained in the Path Configuration Table600, exists and whether a virtual device having a size the same as the external device to be migrated in the external storage4exists in the primary storage2(Step1501). If such a LDEV exists, the process proceeds to step1502. If not, the process returns an error message to the storage manager36and terminates the process. The process stops receiving/processing I/O requests from host1(Step1502). The process de-allocates port number601and602in the Path Configuration Table600from the virtual device to be migrated; specifically the logical device information is deleted from the Path Configuration Table600(Step1503). The process selects one of the unused LDEVs from the set of LDEVs that were found at step1501, and assigns the port number and LUN that are de-allocated from the virtual device to the selected LDEV (Step1504). The process instructs the migration process213to start data copy operation from the virtual device to the selected LDEV. After the operation starts, the process immediately proceeds to step1506without waiting for the completion of the copy operation (Step1505). The primary storage2resumes receiving/processing I/O requests from host1(Step1506). From the perspective of host1, due to the steps1503,1504and1505, the selected LDEV can be seen as if the same data is stored in it as the failed LDEV. The virtualization process212waits for completion of the copy operation and when the copy finishes, the virtualization process212deletes the virtual device in the primary storage2. Specifically, the process deletes the corresponding entry from the virtual device configuration table250(Step1507).

In the present embodiment, the process is executed in the primary storage2using the management process214and the migration process213. However, in another embodiment, the process may be executed in the storage manager36in the management host3.

FIG. 12shows an example of a Bitmap Table700. The Bitmap Table700provides an indication whether data corresponding to a particular logical block address (LBA) has been copied to a particular logical device. Thus, a bit702is provided in the Bitmap Table700to indicate whether data of a corresponding LBA has been copied to a destination logical device. Accordingly, if the bit702corresponding to a LBA is ‘1’, then the data in the LBA has been copied to the destination logical device and if the bit corresponding to the LBA is ‘0’, then the data in the LBA has not been copied to the destination logical device.

FIG. 13shows the details of the process flow of the data copy operation that is executed in the migration process213when the start data copy operation of step1505as perFIG. 11has been invoked. When the migration process213executes the data copy operation of step1505, the Bitmap Table700is prepared and is assigned to a target logical device. The process sets the count N of a counter to a particular number. (Step2001). At first, the count N of the counter is set to 0. The process copies data in each logical block. The process searches the Bitmap Table700to determine whether the N-th logical block has already been copied (Step2002). If the logical block has been copied, then the process proceeds to step2005. If the logical block has not been copied, then the process proceeds to step2003. The process copies the logical block in the virtual device, whose logical block address is specified by the number N of the counter, to the corresponding logical block address (typically the same LBA) in the destination logical device (Step2003). The process sets the bit702of the Bitmap Table700corresponding to the LBA to ‘1’. The process checks the Bitmap Table700to determine whether all logical blocks have been copied to the destination logical device (Step2005). If the copy operation has finished, then the process ends. If the copy operation has not been finished, then the process proceeds to step2006. In order to copy the next logical block, 1 is added to the count N of the counter (Step2006). Then the process proceeds back to step2002.

During the data copy/migration operation, the host1is enabled to access the data in the virtual volume. To accomplish the above, the migration process213provides a mechanism to process read/write I/Os, while the copy process is running. There are a couple of ways to enable processing of read/write I/Os during the copy process. Described below is an example of such ways.

FIG. 14shows the process flow of the migration process213when a read request to the destination logical device arrives, andFIG. 15shows the process flow of the migration process213when a write request to the destination logical device arrives.

As perFIG. 14, when the read request comes to the destination logical device, at step2201the migration process213checks the Bitmap Table700to determine whether the logical block designated by the LBA included in the read request has already been copied from the virtual device to the destination logical device. If the logical block has been copied, then the process proceeds to step2204. If the logical block has not been copied, then the process proceeds to step2202.

If the logical block has not been copied, then the process copies the data of the designated logical block address in the virtual device to the corresponding LBA in the destination logical device (Step2202). The process then sets the bit702of the corresponding LBA in the Bitmap Table700to ‘1’ (Step2203). The data of the designated logical block address now being in the destination logical device, allows for the transfer of read data from the destination logical device to the host1(Step2204).

As perFIG. 15, when a write request comes to the destination logical device, at step2301the migration process213checks the Bitmap Table700to determine whether the logical block designated by the LBA in the write request has already been copied from the virtual device to the destination logical device. If the logical block has been copied, then the process proceeds to step2303. If the logical block has not been copied, then the process proceeds to step2302.

If the logical block has not been copied, then the process sets the bit702of the corresponding LBA in the Bitmap Table700to ‘1’ (Step2302). The process then writes data from host1to the destination logical device (Step2303).

The above description mainly refers to the case where one external storage4exists in the information system and the data in the external storage4is migrated to the primary storage2if a hardware component error occurs in the external storage4.

However, in another embodiment, there is a case where a plurality of external storages exist.FIG. 16illustrates an example of a configuration of an information system where two external storages4and4′ exist. Access to the respective external storages4and4′ are routed by a switch8which could be a Fibre Channel (FC) switch. In the information system as illustrated inFIG. 16, when a hardware component in the external storage4fails and the redundancy of the logical device421of the external storage4is lost, data in the logical device421of the external storage4can be migrated to the logical device421′ of the external storage4′, by migrating from a virtual device272-1corresponding to logical device421to a virtual device272-2corresponding to logical device421′. In such an information system it is also possible for the data in the logical device421to be migrated to an internal device in the primary storage2.

A. System Configuration

FIG. 17shows a functional diagram of an information system of a 2ndembodiment of the present invention. The configuration of an information system to which the 2ndembodiment is applied is almost the same as the information system of the 1stembodiment as illustrated inFIG. 1with the exception that the management host3does not exist.

FIG. 17illustrates the functions of the 2ndembodiment in the form of processes and a manager that reside in the primary storage2′ and the external storage4″. The processes include I/O process211, virtualization process212, migration process213and management process214′ included in the controller20of the primary storage2′, and I/O process411and management process414′ included in the controller40of the external storage4″. The processes as illustrated inFIG. 17each can, for example, be implemented by hardware and/or computer programs. If implemented by computer programs each of the processes can, for example, correspond to computer program code or instructions executed by a processor.

According to the 2ndembodiment, when a hardware component failure occurs in the external storage4″, a report of such failure is transmitted to the primary storage2′ directly from the external storage4″ via LAN5. In another implementation, the primary storage2′ periodically inquires of the external storage4″ via a data transmission line7to determine whether any hardware component failure has occurred.

The process flow for the 2ndembodiment that is executed when a hardware component failure has occurred in the external storage4″ is almost the same as the process flow as illustrated inFIGS. 10-15for the 1stembodiment. The difference between the process flows is that the process flow for the 2ndembodiment, particularly the process illustrated inFIG. 17, is executed in the management process214′ in the primary storage2′ rather than the storage manager36as per the process illustrated inFIG. 10.

B. How to Detect Hardware Component Error

If the external storage4″ does not have means for informing the primary storage2′ that a hardware component failure has occurred, then the primary storage2′ can not readily know when a hardware component failure has occurred. Thus, the primary storage2′ must make assumptions as to whether a hardware component failure has occurred using other means.

For example, when one of the disks that form a logical device in the external storage4″ has failed, the read performance (response time or throughput) of the external storage4″ tends to decrease since the external storage4″ needs to reconstruct data using parity information to retrieve data. Being aware of this phenomenon, the primary storage2′ periodically checks the I/O performance of the external storage4″ by periodically accessing the logical device. If the primary storage2′ determines that a degradation of performance of the logical device has occurred, then the primary storage2′ can assume that one of the disks that form the logical device in the external storage4″ has failed. It is difficult for this method to detect other hardware component failures such as power source or cache memory. Also, even if performance degradation has been detected, disk failure may not necessarily have occurred. However, this method is still highly useful since it is one of the good ways to prevent data loss due to disk failure.

FIG. 18shows the process flow of the management process214′ when it is assumed that a disk drive failure in the external storage4″ has occurred. This process is similar to the process illustrated inFIG. 10of the 1stembodiment. This process is periodically executed, for example, once an hour, once a day, etc.

As perFIG. 18, if the management process214′ detects performance degradation of the virtual devices in the primary storage2′, then the process proceeds to step1004′. If the management process does not detect performance degradation, then the process ends normally (Step1001′). If the management process214′ detects degradation in the performance of the virtual devices, then the management process214′ performs the same step of issuing a data migration request as in step1004of the 1stembodiment (Step1004). If the primary storage2′ has a management terminal, such as a laptop, PC or information panel, the management process214′ displays the state of the virtual volume on the display screen thereof. The state of the virtual volume being displayed indicates that the data migration operation is in progress.

A. System Configuration

FIG. 19shows a functional diagram of an information system of a 3rdembodiment of the present invention. The configuration of information system to which the 3rdembodiment is applied is almost the same as the information system of the 1stand 2ndembodiments as illustrated inFIG. 1with the exception that the primary storage2″ maintains cache devices and that write/update of data to the virtual volume is not transferred to the external device. Instead, the write/update of data is stored in the cache devices.

FIG. 19illustrates the functions of the 3rdembodiment in the form of processes and a manager that reside in the primary storage2″ and the external storage4and the management host3. The processes include I/O process211′, virtualization process212, migration process213and management process214included in the controller20of the primary storage2″, and I/O process411and management process414included in the controller40of the external storage4. The processes as illustrated inFIG. 19each can, for example, be implemented by hardware and/or computer programs. If implemented by computer programs each of the processes can, for example, correspond to computer program code or instructions executed by a processor.

As illustrated inFIG. 19and as discussed above, the difference between the 1stand 3rdembodiments is that a cache device273exists in the primary storage2″ and that the I/O process211′ handles the cache device273. The cache device273is a kind of logical device and a user defines one or more of the cache devices273from the logical devices271defined in the primary storage2″.

FIG. 20shows the Logical Device Configuration Table550′ that is used in the 3rdembodiment. It is similar to the Logical Device Configuration Table550as illustrated inFIG. 5and used in the 1stor 2ndembodiments of the present invention. The differences between the Logical Device Configuration Table550′ and the Logical Device Configuration Table550are a column555is added to the Logical Device Configuration Table550′. Cache555indicates whether the corresponding logical device is defined as a cache device273. Thus, when the value of the cache555is ‘1’, the corresponding logical device is defined as the cache device273. A logical device271can be defined as a cache device273by users from the storage manager36.

In the 3rdembodiment, when a virtual device272is defined, a Cache Bitmap Table700′ as illustrated inFIG. 21is generated with respect to the virtual device272. The Cache Bitmap Table700′ is similar to the Bitmap Table700as illustrated inFIG. 12in the 1stor 2ndembodiment of the present invention with the exception of columns703and704. Also, the Cache Bitmap Table700′ is always used when read or write I/O requests comes to the virtual device272.

The Cache Bitmap Table700′ provides an indication whether data corresponding to a particular logical block address (LBA) of the cache device274has been allocated. Thus, with respect to BIT702, if the value is 1, it means the data block specified in the LBA701has been written or updated. Therefore, in this case, the data block of the cache device274is allocated. With respect to LDEV703and LBA704, when a data block of the cache device274is allocated, the corresponding logical device number of the cache device274and the LBA is set. If the data block of the cache device274is not allocated, then the value ‘−1’ is set.

B. Process Flow of Read/Write Operation

FIG. 22shows the process flow of the I/O process211′ when a read request comes to the primary storage2″ from host1. The process judges whether the read request is targeted to the virtual device272(Step3001). The judging by the process as to whether the read request is targeted to the virtual device is performed by referring to the Path Configuration Table600and the Virtual Device Configuration Table250. If the read request is not targeted to the virtual device, then the process reads the data from the internal device of the primary storage2″ (Step3005). However, if the read request is targeted to the virtual device, then the process refers to the Cache Bitmap Table700′ to check if cache device274is allocated to the block address of the virtual device designated by the read request (Step3002). If the cache274is allocated to the block address of the virtual device, then the process reads data from the cache device274(Step3006). The address LBA is determined by referring to the LDEV703and LBA704in the Cache Bitmap Table700′. If data block of cache device274is not allocated, then the process reads the data from the external device of the external storage4(Step3003). Thereafter the data is transferred to the host1(Step3004).

FIG. 23shows the process flow of the I/O process211′ when a write request comes to the primary storage2″ from the host1. The process judges whether the write request is targeted to the virtual device272(Step3101). If the write request is not targeted to the virtual device, then the process writes the data to the internal device of the primary storage2″ (Step3106). However, if the write request is targeted to the virtual device, then the process refers to the Cache Bitmap Table700′ to check if cache device274is allocated to the block address of the virtual device designated by the write request (Step3102). If the cache device274is allocated to the block address of the virtual device, then the process writes data to the designated LBA of the cache device274(Step3105). The LBA is determined by referring to the LDEV703and LBA704in the Cache Bitmap Table700′ data to the cache device274. If data block of cache device274is not allocated, then the process allocates the data block in the cache device274to the corresponding LBA designated in the write request. LDEV703and LBA704information are registered to the Cache Bitmap Table700′ (Step3103). Also, BIT702of the corresponding LBA701of the Cache Bitmap Table700′ is set to 1 (Step3104). Thereafter the process writes data to the designated LBA of cache device (Step3105).

In the 3rdembodiment, the migration process that is described in the 1stembodiment may be executed when a hardware component failure occurs. In this case, when the data is copied from the virtual device to the internal device, and when reading data from the virtual device and writing data to the destination internal device, the read process that is described inFIG. 22is used when the data is read from the virtual device.

Therefore, according to the present invention as describe above, an information system is provided having a primary storage system, a host, at least one external storage system, and a management host. Alternatively the present invention could provide an information system that does not include the management host.

Each of the primary and external storage systems may be a different kind of storage system from the other storage system. As per the present invention the primary storage system treats logical devices in the external storage system as if they were logical devices in the primary storage system. When a disk that forms at least a part of a logical device in the external storage systems fails, the management host detects the failure and judges whether the logical device is used by the primary storage system to form a virtual device. Alternatively the functions performed by the management host could be performed by the primary storage system if the management host is not included in the information system.

If the logical device is used by the primary storage system to form a virtual device, then the management host issues a migration request to the primary storage system. In response to the migration request, the primary storage system migrates data from the failed logical device of the external storage system to a logical device in the primary storage system to avoid data loss.

While the invention has been described in terms of its preferred embodiments, it should be understood that numerous modifications may be made thereto without departing from the spirit and scope of the present invention. It is intended that all such modifications fall within the scope of the appended claims.