Using multiple sidefiles to buffer writes to primary storage volumes to transfer to corresponding secondary storage volumes in a mirror relationship

Provided are an article of manufacture, method, and system for using multiple sidefiles to buffer writes to primary storage volumes to transfer to corresponding secondary storage volumes in a mirror relationship. Information is provided on a mirror relationship for primary storage volumes and corresponding secondary storage volumes, wherein writes to the primary storage volumes are transferred to the secondary storage volumes according to the mirror relationship. A plurality of sidefiles are associated with the primary storage volumes in the mirror relationship. A write is received to one of the primary storage volumes in the mirror relationship. One of the sidefiles associated with the primary storage volume for which the write is received is selected and the write is buffered in the selected sidefile. Writes to the primary storage volumes buffered in the sidefiles are transferred to the corresponding secondary storage volumes.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a method, system, and program for using multiple sidefiles to buffer writes to primary storage volumes to transfer to corresponding secondary storage volumes in a mirror relationship.

2. Description of the Related Art

Disaster recovery systems typically address two types of failures, a sudden catastrophic failure at a single point in time or data loss over a period of time. In the second type of gradual disaster, updates to volumes may be lost. To assist in recovery of data updates, a copy of data may be provided at a remote location. Such dual or shadow copies are typically made as the application system is writing new data to a primary storage device. Different copy technologies may be used for maintaining remote copies of data at a secondary site, such as International Business Machine Corporation's (“IBM”) Extended Remote Copy (XRC), Coupled XRC (CXRC), Global Copy, and Global Mirror Copy.

In data mirroring systems, data is maintained in volume pairs. A volume pair is comprised of a volume in a primary storage device and a corresponding volume in a secondary storage device that includes an identical copy of the data maintained in the primary volume. Primary and secondary storage controllers may be used to control access to the primary and secondary storage devices.

A primary storage controller may manage multiple volumes in the primary storage. Volumes in the primary storage may be assigned to a session, which may be in a mirror copy relationship with secondary volumes maintained at a secondary storage controller. In current systems, the primary storage controller maintains one sidefile for each session to buffer updates to data in the primary volumes in the session to mirror to corresponding secondary volumes in the mirror relationship. A system data mover that runs in a host system may spawn a process for each sidefile in the primary storage controller to read updates for the session from the sidefile and transfer those updates to the corresponding secondary volumes.

There may be many write streams creating record sets in a single sidefile, but only one read stream to read the entries back out to transfer to the secondary file system. As the size of volumes is increased and number of Input/Output (I/O) requests increases, there may be many write streams to even a single device. This can cause a disparity between the rate at which sidefile entries are created and the rate at which they are read and removed, resulting in the sidefile size increasing. Eventually, the size may reach a point where it is necessary to either slow down the write rate to the primary volumes in the session associated with the sidefile or suspend the session.

Write pacing or device blocking may be used to limit the rate at which writes are allowed and the sidefile is filled to balance the reads. Suspending the session may cause the mirroring operations to stop for some period of time until later resumed after the peak write rate period has ended.

One technique to balance the read and write streams involves providing multiple sessions for a set of volumes, also known as a logical subsystem (LSS). The system data mover may then maintain a separate reader for each of these physical sessions comprising a portion of the primary volumes in the LSS. Each session for a portion of the LSS has a separate sidefile and reads from separate sidefiles may be performed in parallel.

There is a need in the art to provide improved techniques for provisioning sidefiles to use to mirror updates to a primary volume to a secondary volume.

SUMMARY

Provided are an article of manufacture, method, and system for using multiple sidefiles to buffer writes to primary storage volumes to transfer to corresponding secondary storage volumes in a mirror relationship. Information is provided on a mirror relationship for primary storage volumes and corresponding secondary storage volumes, wherein writes to the primary storage volumes are transferred to the secondary storage volumes according to the mirror relationship. A plurality of sidefiles are associated with the primary storage volumes in the mirror relationship. A write is received to one of the primary storage volumes in the mirror relationship. One of the sidefiles associated with the primary storage volume for which the write is received is selected and the write is buffered in the selected sidefile. Writes to the primary storage volumes buffered in the sidefiles are transferred to the corresponding secondary storage volumes.

DETAILED DESCRIPTION

FIG. 1illustrates an embodiment of a network computing environment. A primary storage controller2manages Input/Output (I/O) requests to a primary storage4in which primary storage volumes6are configured. The primary storage controller2includes a storage manager8program that manages I/O requests to the primary storage volumes6and may maintain mirror storage policies to mirror data in the primary storage volumes to corresponding secondary storage volumes10in a secondary storage12. A secondary storage controller14includes a storage manager16program to manage I/O access to the secondary storage12.

The primary2and secondary14storage controllers include a cache18and20, respectively, to buffer read and write data to their corresponding storage volumes6and10. The primary2and secondary14storage controllers may receive read and write requests from host systems (not shown).

The primary storage manager8may maintain information on a mirror relationship22indicating primary storage volumes6and secondary storage volumes10in a mirror relationship22.

To manage a mirror relationship22, the storage manager8in the primary storage controller2may buffer updates to primary storage volumes6in a sidefile24in the cache18. After the system data mover28controls the making of an initial copy of the primary storage volumes6to the secondary storage volumes10in the mirror relationship, any subsequent updates to the primary storage volumes6included in the mirror policy relationship are buffered in the sidefile24maintained for the primary storage volumes6in the mirror relationship22and then transferred over to the secondary storage volumes10to mirror. In certain embodiments, the System Data Mover (SDM)28may control the initial copy by reading all of the tracks from the primary and writing them to the secondary. The SDM28may indicate to the primary storage controller2when to create sidefile24entries for updates. In further embodiments, each recordset of a write contains a timestamp of when it was created. The SDM28may use this timestamp to determine whether the update occurred before or after the track read it performed as part of the initial copy.

A host26including a system data mover28program may read data from the side files24and write the data to a corresponding secondary storage volume10indicated in the mirror relationship22. The system data mover28may also maintain mirror relationship information indicating primary storage volumes6and secondary storage volumes10in the mirror relationship22. In one embodiment, the system data mover28may spawn a separate operating system process for each sidefile24in the cache18to read write data to primary storage volumes6in a mirror relationship from the sidefile24and write to the corresponding secondary storage volume10indicated in the mirror relationship. In this way, the system data mover28may concurrently read and transfer write data in different sidefiles24. In an alternative embodiment, the storage manager8may spawn one process for each sidefile24to read writes from the sidefile24to transfer to corresponding secondary storage volumes10in the mirror relationship22.

The primary2and secondary14storage controllers and host26may communicate over a network32. The network32may comprise a Storage Area Network (SAN), Local Area Network (LAN), Intranet, the Internet, Wide Area Network (WAN), peer-to-peer network, wireless network, arbitrated loop network, etc. The storages4and12may each comprise an array of storage devices, such as a Just a Bunch of Disks (JBOD), Direct Access Storage Device (DASD), Redundant Array of Independent Disks (RAID) array, virtualization device, tape storage, flash memory, etc.

In certain embodiments, volumes6and10in the storage systems4and12maintained by a storage controller may be assigned to one or more sessions. Volumes may be organized in a logical subsystem (LSS), and the volumes in a LSS maintained by a primary storage controller2may be assigned to a session.

In one embodiment, multiple sidefiles24may be associated with the primary storage volumes6in one session, which are part of a mirror relationship.FIG. 2illustrates an embodiment of a session control block50having information on one session, including a session identifier (ID)52, session volumes54included in the session50, and session sidefiles56indicating one or more sidefiles24associated with the session. In one embodiment, if there are multiple sidefiles associated with a session, then a write to a primary storage volume6in a mirror relationship22may be stored in any of the sidefiles24associated with that session, as indicated in field56. Thus, if one process is spawned (by the system data mover28or some other component) to read writes for each sidefile24, then writes for primary storage volumes6in a session that is in a mirror relationship22may be concurrently read from the multiple sidefiles24in which they are stored by the processes spawned to process writes in the sidefiles56. In this way, a write to a set of primary storage volumes6may be buffered in any one of the sidefiles associated with those volumes6or session including such volumes.

In an additional embodiment, a group of primary storage volumes6may be assigned to a plurality of sessions, where each session has one sidefile24. In this way, writes to one of the primary storage volumes assigned to a plurality of sessions may be buffered in any of the sidefiles associated with the sessions to which the group of primary storage volumes is assigned. In one embodiment, multiple sessions may be assigned to a group of volumes by including the group of volumes in a primary session and one or more auxiliary sessions associated with the primary sessions. Each primary and auxiliary session may have their own sidefile, so writes to any of the primary storage volumes6in the group may be buffered in the sidefiles24for any primary and auxiliary session in which the group of primary storage volumes6is included.

FIGS. 3 and 4illustrate an alternative embodiment toFIG. 2for associating a group of volumes with a plurality of sidefiles by including the group of volumes in primary and auxiliary sessions.

FIG. 3illustrates an embodiment of a primary session control block70including a session identifier (ID)72, session volumes74included in the primary session70, auxiliary sessions76associated with the primary session70, and a session sidefile78used to buffer writes for the primary session volumes74.

FIG. 4illustrates an embodiment of an auxiliary session control block80having a session identifier (ID)82, session volumes84included in the auxiliary session80, a primary session86with which the auxiliary session80is associated, and a session sidefile78used to buffer writes for the auxiliary session volumes84. There may be multiple auxiliary session control blocks80associated with one primary session control block70to provide multiple sidefiles for a session.

In the embodiments ofFIGS. 3 and 4, if the primary storage volumes are associated with primary and auxiliary sessions, each having their own sidefile, then a write to a primary storage volume6in a mirror relationship22may be stored in any of the sidefiles24of the primary and auxiliary sessions. Thus, if one process is spawned to read writes for each sidefile24that may be used for the primary storage volumes6, then writes for those primary storage volumes6may be concurrently read from the multiple sidefiles24in which they are stored by the processes spawned to process writes in the sidefiles78and88. In this way, a write to a set of primary storage volumes6may be buffered in any one of the sidefiles associated with those volumes6or primary and auxiliary sessions including such volumes.

FIG. 5illustrates an embodiment of operations performed by the storage manager8to provide multiple sidefiles24for use with primary storage volumes6in a mirror relationship22using the session control block50ofFIG. 2. Upon initiating (at block100) an operation to establish a mirror relationship22, the storage manager8assigns (at block102) primary storage volumes6to a session by creating (at block104) a session control block50for the session indicating a session ID52, one or more sidefiles56associated with session, and primary storage volumes in the session54, which are also in the mirror relationship. Updates to the primary storage volumes6in the session54are buffered in the sidefiles56associated with the session and transferred to the corresponding secondary storage volumes10in the mirror relationship22.

FIG. 6illustrates an alternative embodiment of operations performed by the storage manager8to provide multiple sidefiles for use with primary storage volumes6in a mirror relationship22using the primary70and secondary80session control blocks ofFIGS. 3 and 4. Upon initiating (at block150) an operation to establish a mirror relationship22of primary6and secondary10storage volumes, the storage manager8assigns (at block152) a group of primary storage volumes6in the mirror relationship22to a primary session and multiple auxiliary sessions. The storage manager8creates (at block154) a primary session control block70indicating a session ID72, the group of primary storage volumes in the primary session74, a sidefile78associated with the session74, and one or more auxiliary sessions76associated with the primary session to provide additional sidefiles for the primary storage volumes6in the mirror relationship22. The storage manager8further creates (at block156) an auxiliary session control block80for each auxiliary session indicating a session ID82, primary volumes84associated with the auxiliary session, the primary session86with which the auxiliary session is associated, and a sidefile88used by the auxiliary session.

As discussed, the system data mover28may spawn a separate process for each sidefile24with which the primary storage volumes are associated, via a single session50(FIG. 2) or primary70(FIG. 3) and auxiliary80(FIG. 4) sessions, to allow concurrent reading and transferring of writes from the sidefiles24to the corresponding secondary storage volumes10in the mirror relationship22.

FIG. 7illustrates an embodiment of operations performed by the storage manager8and system data mover28to process writes to primary storage volumes6in a mirror relationship22. Upon receiving (at block200) a write request directed to a primary storage volume6in a mirror relationship22, the storage manager8selects (at block202) one of the sidefiles24associated with the primary storage volume for which the write is received. For instance, with the embodiment ofFIG. 2, the primary storage volume to which the write is directed may be part of a session50having a plurality of sidefiles56. Alternatively, in the embodiment ofFIGS. 3 and 4, the primary storage volume to which the write is directed may be assigned to primary70and auxiliary80sessions to be associated with multiple sidefiles78,88. The storage manager8may select one of the sidefiles that may be used for the primary storage volume6by using a suitable load balancing technique known in the art, such as a technique based on the number of writes currently present in each sidefile24that may be used, a round robin selection technique, etc. The storage manager8then writes (at block204) the received write data to the selected sidefile24in the cache18.

The system data mover28(or storage manager8) may spawn a process for each sidefile24to read (at block206) the writes to the sidefile24in order to transfer the buffered writes to the secondary storage controller14to store in the corresponding secondary storage volumes10in the mirror relationship22.

Described embodiments provide techniques to associate multiple sidefiles with a group of primary storage volumes in a mirror relationship to allow for concurrent reading and transferring of writes to the primary storage volumes buffered in the sidefiles to the corresponding secondary storage volumes in the mirror relationship.

Additional Embodiment Details

The described operations may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The described operations may be implemented as code maintained in a “computer readable medium”, where a processor may read and execute the code from the computer readable medium. A computer readable medium may comprise media such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, DVDs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash Memory, firmware, programmable logic, etc.), etc. The code implementing the described operations may further be implemented in hardware logic implemented in a hardware device (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.). Still further, the code implementing the described operations may be implemented in “transmission signals”, where transmission signals may propagate through space or through a transmission media, such as an optical fiber, copper wire, etc. The transmission signals in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The “article of manufacture” may comprise a transmitting station and a receiving station for transmitting and receiving transmission signals in which the code or logic is encoded, where the code or logic encoded in the transmission signal may be decoded and stored in hardware or a computer readable medium at the receiving and transmitting stations or devices. An “article of manufacture” comprises computer readable storage medium, hardware logic, and/or transmission transmitters or receivers in which code may be implemented. Those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention, and that the article of manufacture may comprise suitable information bearing medium known in the art.