WO2017007528A1 - Processing io requests in multi-controller storage systems - Google Patents

Processing io requests in multi-controller storage systems Download PDF

Info

Publication number
WO2017007528A1
WO2017007528A1 PCT/US2016/029999 US2016029999W WO2017007528A1 WO 2017007528 A1 WO2017007528 A1 WO 2017007528A1 US 2016029999 W US2016029999 W US 2016029999W WO 2017007528 A1 WO2017007528 A1 WO 2017007528A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage
snapshot
controller
request
read
Prior art date
Application number
PCT/US2016/029999
Other languages
French (fr)
Inventor
Narendra CHIRUMAMILLA
Keshetti MAHESH
Govindaraja Nayaka B
Ranjith Reddy BASIREDDY
Taranisen Mohanta
Aravinda Babu REVURI
Original Assignee
Hewlett Packard Enterprise Development Lp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Publication of WO2017007528A1 publication Critical patent/WO2017007528A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated

Definitions

  • Multi-controller storage systems may include storage controllers and backend storage to store data volumes.
  • ownership of the data volumes may be distributed in an even manner between the storage controllers.
  • a storage controller may process input-output (IO) requests to read the stored data volumes owned by that storage controller.
  • IO input-output
  • FIG. 1 depicts an example multi-controller storage system
  • FIG. 2 depicts an example dual controller storage system
  • FIG. 3 depicts a flow chart of an example method to read snapshots of data volumes in a multi-controller storage system
  • FIG. 4 depicts an example block diagram showing a non-transitory computer-readable medium that stores instructions to read snapshots of data volumes in a multi-controller storage system.
  • a storage controller may process input-output (IO) requests to read snapshots of stored data volumes owned by that storage controller.
  • the storage controller may represent any combination of device, circuitry and executable instructions to control the IO to and from the backend storage in reply to the IO request from an information processing device such as a host/client device.
  • a snapshot may detail a state of a data volume stored in a backend storage at a particular point in time.
  • the snapshot may represent the data stored in the data volume at a particular point in time.
  • Example snapshots can include read-only snapshots.
  • the read-only snapshots may refer to snapshots which are read-only accessible and their contents may not be modified.
  • Example multi-controller storage systems may include dual controller storage systems.
  • a dual controller storage system may include a master storage controller and a peer storage controller.
  • the master storage controller may refer to a storage controller that receives 10 requests for reading the snapshots owned by the storage controller.
  • the peer storage controller may refer to a storage controller that receives 10 requests for reading the snapshots owned by other storage controllers.
  • Multi-controller storage systems may support active-active state.
  • a host/client device may send 10 requests to both the storage controllers because of the active-active state.
  • An 10 request may refer to a request to perform a read/write operation from/to the backend storage.
  • the 10 request may include information which can be used to read a snapshot from the backend storage.
  • the peer storage controller may pass the read 10 request to the master storage controller for processing the read 10 request.
  • the master storage controller may send response data and response status to the peer storage controller.
  • the peer storage controller may then send the response data and response status to the host/client device.
  • the master storage controller and the peer storage controller may not simultaneously process the 10 requests targeted to same snapshots. This may result in an additional communication between the master storage controller and the peer storage controller and may consume additional peer storage controller resources (e.g., dynamic random-access memory, network bandwidth, CPU and so on).
  • the present application discloses techniques to assign multiple ownerships for snapshot in a multi-controller storage system.
  • the term "ownership” may refer to an authorization provided to a storage controller (e.g., master controller) for accessing storage objects (e.g., snapshots and/or data volume).
  • Ownership information may be derived from metadata persistently written to storage devices, such as Disk Data Format (DDF) information.
  • DDF Disk Data Format
  • Ownership information may also be shared between storage controllers in a multi-controller storage system. For example in dual controller storage systems, a dual ownership may be assigned to both the storage controllers such that both the storage controllers can process the IO requests to read the snapshots of the data volumes directly from the backend storage.
  • a first storage controller may be assigned a secondary ownership of the snapshots for which a second storage controller may have a primary ownership.
  • the secondary ownership may refer to an authorization provided to any other storage controller for accessing the storage objects (e.g., read-only snapshots) owned by the master controller.
  • the secondary ownership is assigned by synchronization of snapshot metadata with any other storage controller, which enables the other controller to read the snapshot using the snapshot metadata.
  • the first storage controller may receive an 10 request for reading a snapshot of a data having an ownership with the second storage controller and may process the 10 request to directly read the snapshot from the backend storage (i.e., without sending the 10 request to the second storage controller).
  • the first storage controller and the second storage controller may receive the IO requests targeted to a same snapshot.
  • the first storage controller and the second storage controller may process the IO requests to simultaneously read the snapshot from the backend storage when the dual ownerships of the snapshot of the data volume are assigned to both the storage controllers. If any of the storage controllers fails to process the IO request, the other storage controller may process the IO request.
  • the example multi-controller storage system may improve response times for the IO requests.
  • the example multi- controller storage system may also improve performance of the system as both the storage controllers can simultaneously process the IO requests targeted to the same snapshots.
  • Fig. 1 depicts an example multi-controller storage system 100.
  • the multi- controller storage system 100 may include storage controllers 102A to 102N and a backend storage 104.
  • the backend storage 104 may include Hard Disk Drives (HDD), fiber channel (FC) Storage, enclosures, solid state drives (SSD), flash storage media, tapes, and the like.
  • the storage controllers 102A to 102N may include virtual storage controllers, disk array controllers, internet small computer system interface (ISCSI) controllers, fiber channel controllers, distributed storage controllers, and the like.
  • ISCSI internet small computer system interface
  • the backend storage 104 may be provided to store snapshots 106 (e.g., read only snapshot) of data volumes for later use.
  • Each of the storage controllers 102A to 102N may be communicatively connected to the backend storage 104 and share the same backend storage 104. Further, the storage controllers 102A to 102N may be communicatively connected to each other (e.g., a mirror path between the controllers for fault tolerance).
  • multiple ownerships of a snapshot may be provided to the storage controllers in a multi-controller storage system. For example, a secondary ownership of snapshots owned by each storage controller may be assigned to at least one other storage controllers.
  • the storage controller may receive an IO request for reading a snapshot of a data volume having an ownership with other storage controller and process the IO request to read the snapshot directly from the backend storage without sending the IO request to the other storage controller.
  • a secondary ownership of the snapshot of the data volume is assigned to the storage controller.
  • multiple storage controllers can simultaneously read the snapshot from the backend storage, upon receiving the IO request to read the snapshot by each storage controller when the multiple ownerships of the snapshot of the data volume are assigned to the multiple storage controllers.
  • a secondary ownership of a snapshot owned by the storage controller 102A may be assigned to the storage controller 102B.
  • the storage controller 102B may process the IO request to read the snapshot directly from the backend storage 104 as the storage controller 102B has a secondary ownership of the same snapshot.
  • Fig. 2 depicts an example dual controller storage system 200.
  • the dual controller storage system 200 may include a first storage controller 202A and a second storage controller 202B. Both the first storage controller 202A and the second storage controller 202B may be communicatively connected to a backend storage 206 which stores snapshots 208A of data volumes. The backend storage 206 may also store other data 208B along with the snapshots 208A.
  • the ownership of snapshots 208A may be distributed equally between the first storage controller 202A and the second storage controller 202B.
  • a dual ownership of the snapshots 208A may be assigned to both the first storage controller 202A and the second storage controller 202B.
  • the second storage controller 202B may have a secondary ownership of the snapshots 208A owned by the first storage controller 202A and vice versa.
  • the first storage controller 202A may assign the secondary ownership of the snapshot to the second storage controller 202B as follows.
  • the first storage controller 202A may flush the cache associated with the data volume to the backend storage 206.
  • the storage controller 202A may create a snapshot of the data volume along with snapshot metadata and modify volume metadata associated with the data volume to include the snapshot metadata.
  • the snapshot metadata may define where and how the snapshots 208A are stored in the backend storage 206.
  • the snapshot metadata may include structural metadata and/or descriptive metadata of the snapshots 208A.
  • the first storage controller 202A may synchronize snapshot metadata with the second storage controller 202B and assign the second storage controller 202B as a secondary owner of the snapshot.
  • the secondary ownership of the second storage controller 202B may be revoked when a change in the snapshot metadata occurs.
  • the snapshot metadata may be periodically synchronized with the second storage controller 202B for assigning the secondary ownership of the snapshot.
  • the first storage controller 202A may include intelligence (e.g., computer readable instructions) for assigning the secondary ownership of the snapshot to the second storage controller 202B.
  • the second storage controller 202B may process the IO request to read the snapshot directly from the backend storage 206 as the second storage controller 202B has a secondary ownership of the same snapshot.
  • the second storage controller 202B may read the snapshot directly from the backend storage 206 using the snapshot metadata synchronized with the second storage controller 202B.
  • the IO request may be received from a host/client device 204.
  • FIG. 3 depicts an example flow chart 300 of an example method for reading snapshots stored in a backend storage.
  • an IO request may be received by a storage controller of a plurality of storage controllers for reading a snapshot of a data volume.
  • the data volume may have an ownership with any other storage controller of the plurality of storage controllers.
  • the IO request may be processed to read the snapshot directly from the backend storage by the storage controller.
  • the 10 request may be sent to the other storage controller (e.g., having either the primary or secondary ownership) by the storage controller for reading the snapshot from the backend storage.
  • the 10 request may be then processed by the other storage controller to read the snapshot.
  • the data related to snapshot may be sent to storage controller by the other storage controller.
  • Fig. 3 shows an example method and it should be understood that other configurations can be employed to practice the techniques of the present application.
  • method above may be employed for a plurality of host/client devices communicating with the plurality of storage controllers.
  • Fig. 4 is an example block diagram showing a non-transitory, computer- readable medium that stores code for operation in accordance with an example of the techniques of the present application.
  • the non-transitory, computer-readable medium is generally referred to by the reference number 402 and may be included in a computing system 400 in relation to Fig. 1 .
  • the non-transitory, computer-readable medium 402 may correspond to any storage device that stores computer-implemented instructions, such as programming code or the like.
  • the non-transitory, computer-readable medium 402 may include non-volatile memory, volatile memory, and/or storage devices.
  • non-volatile memory examples include, but are not limited to, electrically erasable programmable Read Only Memory (EEPROM) and Read Only Memory (ROM).
  • volatile memory examples include, but are not limited to, Static Random Access Memory (SRAM), and dynamic Random Access Memory (DRAM).
  • SRAM Static Random Access Memory
  • DRAM dynamic Random Access Memory
  • storage devices include, but are not limited to, hard disk drives, compact disc drives, digital versatile disc drives, optical drives, and flash memory devices.
  • a processor 404 generally retrieves and executes the instructions stored in the non-transitory, computer-readable medium 402 to operate the present techniques in accordance with an example.
  • the tangible, computer-readable medium 402 can be accessed by the processor 404 over a bus.
  • block 406 provides instructions which may include instructions to enable a storage controller of a plurality of storage controllers to receive an IO request for reading a snapshot of a data volume.
  • the data volume may have an ownership with any other storage controller of the plurality of storage controllers.
  • block 408 provides instructions which may include instructions to determine a secondary ownership of the snapshot, as described herein. In one example, the instructions may include instructions to determine whether the secondary ownership of the snapshot is assigned to the storage controller, as described herein.
  • block 410 provides instructions which may include instructions to enable the storage controller to process the IO request to read the snapshot directly from the backend storage, if the secondary ownership of the snapshot is assigned to the storage controller.
  • block 412 provides instructions which may include instructions to enable the storage controller to process the IO request to read the snapshot from the backend storage via the other storage controller.
  • the machine readable instructions can be stored in any order or configuration.
  • the non-transitory, computer- readable medium 402 is a hard drive
  • the machine readable instructions can be stored in non-contiguous, or even overlapping, sectors.
  • a "processor” may include processor resources such as at least one of a Central Processing Unit (CPU), a semiconductor-based microprocessor, a Graphics Processing Unit (GPU), a Field-Programmable Gate Array (FPGA) to retrieve and execute instructions, other electronic circuitry suitable for the retrieval and execution instructions stored on a computer-readable medium, or a combination thereof.
  • the processor fetches, decodes, and executes instructions stored on computer- readable medium 402 to perform the functionalities described below.
  • the functionalities of any of the instructions of computer- readable medium 402 may be implemented in the form of electronic circuitry, in the form of executable instructions encoded on a computer-readable storage medium, or a combination thereof.
  • a "computer-readable medium” may be any electronic, magnetic, optical, or other physical storage apparatus to contain or store information such as executable instructions, data, and the like.
  • any computer-readable storage medium described herein may be any of Random Access Memory (RAM), volatile memory, non-volatile memory, flash memory, a storage drive (e.g., a hard drive), a solid state drive, any type of storage disc (e.g., a compact disc, a DVD, etc.), and the like, or a combination thereof.
  • RAM Random Access Memory
  • volatile memory volatile memory
  • non-volatile memory flash memory
  • a storage drive e.g., a hard drive
  • solid state drive any type of storage disc (e.g., a compact disc, a DVD, etc.)
  • any computer-readable medium described herein may be non-transitory.
  • a computer-readable medium or media is part of an article (or article of manufacture).
  • An article or article of manufacture may refer to any manufactured single component or multiple components.
  • the medium may be located either in the system executing the computer-readable instructions, or remote from but accessible to the system (e.g., via a computer network) for execution.
  • computer- readable medium 402 may be implemented by one computer-readable medium, or multiple computer-readable media.
  • the host/client device may communicate with components implemented on separate devices or system(s) via a network interface device of the host.
  • the host/client device may communicate with the storage controllers 202A to 202N via a network interface device of the host/client device.
  • a "network interface device" may be a hardware device to communicate over at least one computer network.
  • a network interface may be a Network Interface Card (NIC) or the like.
  • NIC Network Interface Card
  • a computer network may include, for example, a Local Area Network (LAN), a Wireless Local Area Network (WLAN), a Virtual Private Network (VPN), the Internet, or the like, or a combination thereof.
  • a computer network may include a telephone network (e.g., a cellular telephone network).
  • instructions may be part of an installation package that, when installed, may be executed by processor 404 to implement the functionalities described herein in relation to instructions.
  • computer- readable medium 402 may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed.
  • instructions may be part of an application, applications, or component(s) already installed on the computing system 400 including processor 404.
  • the computer-readable medium 402 may include memory such as a hard drive, solid state drive, or the like.
  • functionalities described herein in relation to Figs. 1 through 4 may be provided in combination with functionalities described herein in relation to any of Figs. 1 through 4.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

In one example, a multi-controller storage system is described which includes a backend storage to store snapshots of data volumes and storage controllers communicatively connected to each other and to the backend storage. A storage controller of the storage controllers receives an input-output (IO) request to read a snapshot of a data volume assigned an ownership with other storage controller and process the IO request to read the snapshot directly from the backend storage.

Description

PROCESSING 10 REQUESTS IN MULTI-CONTROLLER STORAGE SYSTEMS
BACKGROUND
[0001] Multi-controller storage systems may include storage controllers and backend storage to store data volumes. In multi-controller storage systems, ownership of the data volumes may be distributed in an even manner between the storage controllers. A storage controller may process input-output (IO) requests to read the stored data volumes owned by that storage controller.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Examples are described in the following detailed description and in reference to the drawings, in which:
[0003] Fig. 1 depicts an example multi-controller storage system;
[0004] Fig. 2 depicts an example dual controller storage system;
[0005] Fig. 3 depicts a flow chart of an example method to read snapshots of data volumes in a multi-controller storage system; and
[0006] Fig. 4 depicts an example block diagram showing a non-transitory computer-readable medium that stores instructions to read snapshots of data volumes in a multi-controller storage system.
DETAILED DESCRIPTION
[0007] In multi-controller storage systems, ownership of data volumes may be distributed in an even manner between the storage controllers. A storage controller may process input-output (IO) requests to read snapshots of stored data volumes owned by that storage controller. The storage controller may represent any combination of device, circuitry and executable instructions to control the IO to and from the backend storage in reply to the IO request from an information processing device such as a host/client device. A snapshot may detail a state of a data volume stored in a backend storage at a particular point in time. The snapshot may represent the data stored in the data volume at a particular point in time. Example snapshots can include read-only snapshots. The read-only snapshots may refer to snapshots which are read-only accessible and their contents may not be modified. Example multi-controller storage systems may include dual controller storage systems. A dual controller storage system may include a master storage controller and a peer storage controller. The master storage controller may refer to a storage controller that receives 10 requests for reading the snapshots owned by the storage controller. The peer storage controller may refer to a storage controller that receives 10 requests for reading the snapshots owned by other storage controllers.
[0008] Multi-controller storage systems may support active-active state. For example in dual controller storage systems, a host/client device may send 10 requests to both the storage controllers because of the active-active state. An 10 request may refer to a request to perform a read/write operation from/to the backend storage. The 10 request may include information which can be used to read a snapshot from the backend storage.
[0009] In this case, when the peer storage controller receives the 10 request for reading a snapshot (i.e., not owned by the peer storage controller), the peer storage controller may pass the read 10 request to the master storage controller for processing the read 10 request. After processing the read 10 request, the master storage controller may send response data and response status to the peer storage controller. The peer storage controller may then send the response data and response status to the host/client device. In the example dual storage controller system, the master storage controller and the peer storage controller may not simultaneously process the 10 requests targeted to same snapshots. This may result in an additional communication between the master storage controller and the peer storage controller and may consume additional peer storage controller resources (e.g., dynamic random-access memory, network bandwidth, CPU and so on).
[00010] The present application discloses techniques to assign multiple ownerships for snapshot in a multi-controller storage system. The term "ownership" may refer to an authorization provided to a storage controller (e.g., master controller) for accessing storage objects (e.g., snapshots and/or data volume). Ownership information may be derived from metadata persistently written to storage devices, such as Disk Data Format (DDF) information. Ownership information may also be shared between storage controllers in a multi-controller storage system. For example in dual controller storage systems, a dual ownership may be assigned to both the storage controllers such that both the storage controllers can process the IO requests to read the snapshots of the data volumes directly from the backend storage. For example, a first storage controller may be assigned a secondary ownership of the snapshots for which a second storage controller may have a primary ownership. For example, the secondary ownership may refer to an authorization provided to any other storage controller for accessing the storage objects (e.g., read-only snapshots) owned by the master controller. For example, the secondary ownership is assigned by synchronization of snapshot metadata with any other storage controller, which enables the other controller to read the snapshot using the snapshot metadata. In this example, the first storage controller may receive an 10 request for reading a snapshot of a data having an ownership with the second storage controller and may process the 10 request to directly read the snapshot from the backend storage (i.e., without sending the 10 request to the second storage controller).
[00011] In another example, the first storage controller and the second storage controller may receive the IO requests targeted to a same snapshot. Upon receiving the IO requests, the first storage controller and the second storage controller may process the IO requests to simultaneously read the snapshot from the backend storage when the dual ownerships of the snapshot of the data volume are assigned to both the storage controllers. If any of the storage controllers fails to process the IO request, the other storage controller may process the IO request. Thus, the example multi-controller storage system may improve response times for the IO requests. The example multi- controller storage system may also improve performance of the system as both the storage controllers can simultaneously process the IO requests targeted to the same snapshots.
[00012] Fig. 1 depicts an example multi-controller storage system 100. The multi- controller storage system 100 may include storage controllers 102A to 102N and a backend storage 104. For example, the backend storage 104 may include Hard Disk Drives (HDD), fiber channel (FC) Storage, enclosures, solid state drives (SSD), flash storage media, tapes, and the like. The storage controllers 102A to 102N, for example, may include virtual storage controllers, disk array controllers, internet small computer system interface (ISCSI) controllers, fiber channel controllers, distributed storage controllers, and the like.
[00013] The backend storage 104 may be provided to store snapshots 106 (e.g., read only snapshot) of data volumes for later use. Each of the storage controllers 102A to 102N may be communicatively connected to the backend storage 104 and share the same backend storage 104. Further, the storage controllers 102A to 102N may be communicatively connected to each other (e.g., a mirror path between the controllers for fault tolerance). In accordance with the present application, multiple ownerships of a snapshot may be provided to the storage controllers in a multi-controller storage system. For example, a secondary ownership of snapshots owned by each storage controller may be assigned to at least one other storage controllers.
[00014] In operation, the storage controller may receive an IO request for reading a snapshot of a data volume having an ownership with other storage controller and process the IO request to read the snapshot directly from the backend storage without sending the IO request to the other storage controller. In this case, a secondary ownership of the snapshot of the data volume is assigned to the storage controller. Also, multiple storage controllers can simultaneously read the snapshot from the backend storage, upon receiving the IO request to read the snapshot by each storage controller when the multiple ownerships of the snapshot of the data volume are assigned to the multiple storage controllers.
[00015] For example, consider a secondary ownership of a snapshot owned by the storage controller 102A may be assigned to the storage controller 102B. In this case, when the storage controller 102B receives an IO request 108 for reading the snapshot, the storage controller 102B may process the IO request to read the snapshot directly from the backend storage 104 as the storage controller 102B has a secondary ownership of the same snapshot.
[00016] Fig. 2 depicts an example dual controller storage system 200. The dual controller storage system 200 may include a first storage controller 202A and a second storage controller 202B. Both the first storage controller 202A and the second storage controller 202B may be communicatively connected to a backend storage 206 which stores snapshots 208A of data volumes. The backend storage 206 may also store other data 208B along with the snapshots 208A. The ownership of snapshots 208A may be distributed equally between the first storage controller 202A and the second storage controller 202B. Also, a dual ownership of the snapshots 208A may be assigned to both the first storage controller 202A and the second storage controller 202B. For example, the second storage controller 202B may have a secondary ownership of the snapshots 208A owned by the first storage controller 202A and vice versa.
[00017] In one example, the first storage controller 202A may assign the secondary ownership of the snapshot to the second storage controller 202B as follows. When a snapshot creation request for a data volume is received by the first storage controller 202A, the first storage controller 202A may flush the cache associated with the data volume to the backend storage 206. Further, the storage controller 202A may create a snapshot of the data volume along with snapshot metadata and modify volume metadata associated with the data volume to include the snapshot metadata. The snapshot metadata may define where and how the snapshots 208A are stored in the backend storage 206. In one example, the snapshot metadata may include structural metadata and/or descriptive metadata of the snapshots 208A. Furthermore, the first storage controller 202A may synchronize snapshot metadata with the second storage controller 202B and assign the second storage controller 202B as a secondary owner of the snapshot. In one example, the secondary ownership of the second storage controller 202B may be revoked when a change in the snapshot metadata occurs. In this case, the snapshot metadata may be periodically synchronized with the second storage controller 202B for assigning the secondary ownership of the snapshot. In one example, the first storage controller 202A may include intelligence (e.g., computer readable instructions) for assigning the secondary ownership of the snapshot to the second storage controller 202B.
[00018] In operation, when the second storage controller 202B receives an IO request for reading a snapshot of a data volume having an ownership with the first storage controller 202A, the second storage controller 202B may process the IO request to read the snapshot directly from the backend storage 206 as the second storage controller 202B has a secondary ownership of the same snapshot. In one example, the second storage controller 202B may read the snapshot directly from the backend storage 206 using the snapshot metadata synchronized with the second storage controller 202B. In one example, the IO request may be received from a host/client device 204.
[00019] The technique to assign multiple ownerships for snapshot is described with reference to a dual controller storage system for the purpose of explanation; however, this technique may be implemented using a multi-controller storage system including multiple storage controllers.
[00020] Fig. 3 depicts an example flow chart 300 of an example method for reading snapshots stored in a backend storage. At block 302, an IO request may be received by a storage controller of a plurality of storage controllers for reading a snapshot of a data volume. The data volume may have an ownership with any other storage controller of the plurality of storage controllers.
[00021] At block 304, it may be determined whether a secondary ownership of the snapshot is assigned to the storage controller. If the secondary ownership of the snapshot is assigned to the storage controller, at block 306, the IO request may be processed to read the snapshot directly from the backend storage by the storage controller.
[00022] At block 308, if the secondary ownership of the snapshot is not assigned to the storage controller, the 10 request may be sent to the other storage controller (e.g., having either the primary or secondary ownership) by the storage controller for reading the snapshot from the backend storage. The 10 request may be then processed by the other storage controller to read the snapshot. After reading the snapshot, the data related to snapshot may be sent to storage controller by the other storage controller.
[00023] The method of Fig. 3 shows an example method and it should be understood that other configurations can be employed to practice the techniques of the present application. For example, method above may be employed for a plurality of host/client devices communicating with the plurality of storage controllers.
[00024] Fig. 4 is an example block diagram showing a non-transitory, computer- readable medium that stores code for operation in accordance with an example of the techniques of the present application. The non-transitory, computer-readable medium is generally referred to by the reference number 402 and may be included in a computing system 400 in relation to Fig. 1 . The non-transitory, computer-readable medium 402 may correspond to any storage device that stores computer-implemented instructions, such as programming code or the like. For example, the non-transitory, computer-readable medium 402 may include non-volatile memory, volatile memory, and/or storage devices. Examples of non-volatile memory include, but are not limited to, electrically erasable programmable Read Only Memory (EEPROM) and Read Only Memory (ROM). Examples of volatile memory include, but are not limited to, Static Random Access Memory (SRAM), and dynamic Random Access Memory (DRAM). Examples of storage devices include, but are not limited to, hard disk drives, compact disc drives, digital versatile disc drives, optical drives, and flash memory devices.
[00025] A processor 404 generally retrieves and executes the instructions stored in the non-transitory, computer-readable medium 402 to operate the present techniques in accordance with an example. In one example, the tangible, computer-readable medium 402 can be accessed by the processor 404 over a bus.
[00026] For example, block 406 provides instructions which may include instructions to enable a storage controller of a plurality of storage controllers to receive an IO request for reading a snapshot of a data volume. The data volume may have an ownership with any other storage controller of the plurality of storage controllers. [00027] For example, block 408 provides instructions which may include instructions to determine a secondary ownership of the snapshot, as described herein. In one example, the instructions may include instructions to determine whether the secondary ownership of the snapshot is assigned to the storage controller, as described herein.
[00028] For example, block 410 provides instructions which may include instructions to enable the storage controller to process the IO request to read the snapshot directly from the backend storage, if the secondary ownership of the snapshot is assigned to the storage controller.
[00029] For example, block 412 provides instructions which may include instructions to enable the storage controller to process the IO request to read the snapshot from the backend storage via the other storage controller.
[00030] Although shown as contiguous blocks, the machine readable instructions can be stored in any order or configuration. For example, if the non-transitory, computer- readable medium 402 is a hard drive, the machine readable instructions can be stored in non-contiguous, or even overlapping, sectors.
[00031] As used herein, a "processor" may include processor resources such as at least one of a Central Processing Unit (CPU), a semiconductor-based microprocessor, a Graphics Processing Unit (GPU), a Field-Programmable Gate Array (FPGA) to retrieve and execute instructions, other electronic circuitry suitable for the retrieval and execution instructions stored on a computer-readable medium, or a combination thereof. The processor fetches, decodes, and executes instructions stored on computer- readable medium 402 to perform the functionalities described below. In other examples, the functionalities of any of the instructions of computer- readable medium 402 may be implemented in the form of electronic circuitry, in the form of executable instructions encoded on a computer-readable storage medium, or a combination thereof.
[00032] As used herein, a "computer-readable medium" may be any electronic, magnetic, optical, or other physical storage apparatus to contain or store information such as executable instructions, data, and the like. For example, any computer-readable storage medium described herein may be any of Random Access Memory (RAM), volatile memory, non-volatile memory, flash memory, a storage drive (e.g., a hard drive), a solid state drive, any type of storage disc (e.g., a compact disc, a DVD, etc.), and the like, or a combination thereof. Further, any computer-readable medium described herein may be non-transitory. In examples described herein, a computer-readable medium or media is part of an article (or article of manufacture). An article or article of manufacture may refer to any manufactured single component or multiple components. The medium may be located either in the system executing the computer-readable instructions, or remote from but accessible to the system (e.g., via a computer network) for execution. In the example of Fig. 4, computer- readable medium 402 may be implemented by one computer-readable medium, or multiple computer-readable media.
[00033] In examples described herein, the host/client device may communicate with components implemented on separate devices or system(s) via a network interface device of the host. For example, the host/client device may communicate with the storage controllers 202A to 202N via a network interface device of the host/client device. In examples described herein, a "network interface device" may be a hardware device to communicate over at least one computer network. In some examples, a network interface may be a Network Interface Card (NIC) or the like. As used herein, a computer network may include, for example, a Local Area Network (LAN), a Wireless Local Area Network (WLAN), a Virtual Private Network (VPN), the Internet, or the like, or a combination thereof. In some examples, a computer network may include a telephone network (e.g., a cellular telephone network).
[00034] In some examples, instructions may be part of an installation package that, when installed, may be executed by processor 404 to implement the functionalities described herein in relation to instructions. In such examples, computer- readable medium 402 may be a portable medium, such as a CD, DVD, or flash drive, or a memory maintained by a server from which the installation package can be downloaded and installed. In other examples, instructions may be part of an application, applications, or component(s) already installed on the computing system 400 including processor 404. In such examples, the computer-readable medium 402 may include memory such as a hard drive, solid state drive, or the like. In some examples, functionalities described herein in relation to Figs. 1 through 4 may be provided in combination with functionalities described herein in relation to any of Figs. 1 through 4.
[00035] The foregoing describes a novel and previously unforeseen approach for assigning multiple ownerships for snapshot in a multi-controller storage system. While the above application has been shown and described with reference to the foregoing examples, it should be understood that other forms, details, and implementations may be made without departing from the spirit and scope of this application.

Claims

WHAT IS CLAIMED IS:
1 . A multi-controller storage system comprising:
a backend storage to store snapshots of data volumes; and
a plurality of storage controllers communicatively connected to each other and to the backend storage, wherein a storage controller of the plurality of storage controllers to:
receive an input-output (IO) request to read a snapshot of a data volume assigned an ownership with other storage controller of the plurality of storage controllers; and
process the IO request to read the snapshot directly from the backend storage.
2. The multi-controller storage system of claim 1 , wherein the storage controller is assigned a secondary ownership of the snapshot of the data volume.
3. The multi-controller storage system of claim 1 , wherein the plurality of storage controllers simultaneously read the snapshot from the backend storage, upon receiving the IO request to read the snapshot by each of the plurality of storage controllers when multiple ownerships of the snapshot of the data volume are assigned to the plurality of storage controllers.
4. The multi-controller storage system of claim 1 , wherein the storage controller receives the IO request from a client device to read the snapshot of the data volume.
5. The multi-controller storage system of claim 1 , wherein the snapshot comprises a read only snapshot.
6. A method to read snapshots of data volumes in a multi-controller storage system, comprising:
receiving an input-output (IO) request by a storage controller of a plurality of storage controllers to read a snapshot of a data volume assigned an ownership with other storage controller of the plurality of storage controllers;
determining whether a secondary ownership of the snapshot is assigned to the storage controller;
if so, processing the IO request to read the snapshot directly from a backend storage by the storage controller; and
if not, processing the IO request to read the snapshot from the backend storage by the storage controller via the other storage controller.
7. The method of claim 6, wherein processing the IO request to read the snapshot from the backend storage by the storage controller via the other storage controller comprises:
sending the IO request to the other storage controller by the storage controller.
8. The method of claim 6, further comprising:
processing the IO request by the other storage controller to directly read the snapshot; and
sending data related to the snapshot to the storage controller based on the processed IO request.
9. The method of claim 6, wherein the processing the IO request to directly read the snapshot from the backend storage by the storage controller comprises: simultaneously processing the IO request by the plurality of storage controllers, upon receiving the IO request to read the snapshot by each of the plurality of storage controllers when multiple ownerships of the snapshot of the data volume are assigned to the plurality of storage controllers.
10. A non-transitory computer-readable medium having computer executable instructions stored thereon to read snapshots of data volumes stored in a backend storage, the instructions are executable by a processor to: enable a storage controller of a plurality of controllers to receive an input-output (IO) request to read a snapshot of a data volume assigned an ownership with a other storage controller;
determine whether a secondary ownership of the snapshot is assigned to the storage controller;
if so, enable the storage controller to process the IO request to read the snapshot directly from the backend storage; and
if not, enable the storage controller to process the IO request to read the snapshot from the backend storage via the other storage controller.
1 1 . The non-transitory computer-readable medium of claim 10, further comprising instructions that if executed cause the processor to:
enable the storage controller to send the IO request to the other storage controller, if the secondary ownership of the snapshot is not assigned to the storage controller.
12. The non-transitory computer-readable medium of claim 10, further comprising instructions that if executed cause the processor to: enable the other storage controller to:
process the IO request to read the snapshot from the backend storage; and
send data related to the snapshot to the storage controller based on the processed IO request.
13. The non-transitory computer-readable medium of claim 10, further comprising instructions that if executed cause the processor to:
enable the plurality of storage controllers to simultaneously process the IO request, upon receiving the IO request to read the snapshot by each of the plurality of storage controllers when multiple ownerships of the snapshot of the data volume are assigned to the plurality of storage controllers.
PCT/US2016/029999 2015-07-03 2016-04-29 Processing io requests in multi-controller storage systems WO2017007528A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN3423/CHE/2015 2015-07-03
IN3423CH2015 2015-07-03

Publications (1)

Publication Number Publication Date
WO2017007528A1 true WO2017007528A1 (en) 2017-01-12

Family

ID=57685980

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/029999 WO2017007528A1 (en) 2015-07-03 2016-04-29 Processing io requests in multi-controller storage systems

Country Status (1)

Country Link
WO (1) WO2017007528A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050033929A1 (en) * 2003-08-05 2005-02-10 Burton David Alan Snapshot management method apparatus and system
US20060047926A1 (en) * 2004-08-25 2006-03-02 Zheng Calvin G Managing multiple snapshot copies of data
US20070156794A1 (en) * 2003-10-22 2007-07-05 Kisley Richard V Incremental data storage method, apparatus, interface, and system
US20080256141A1 (en) * 2007-04-11 2008-10-16 Dot Hill Systems Corp. Method and apparatus for separating snapshot preserved and write data
WO2010042109A1 (en) * 2008-10-07 2010-04-15 Hewlett-Packard Development Company, L.P. Creating snapshots of data using a selected one of different snapshot algorithms

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050033929A1 (en) * 2003-08-05 2005-02-10 Burton David Alan Snapshot management method apparatus and system
US20070156794A1 (en) * 2003-10-22 2007-07-05 Kisley Richard V Incremental data storage method, apparatus, interface, and system
US20060047926A1 (en) * 2004-08-25 2006-03-02 Zheng Calvin G Managing multiple snapshot copies of data
US20080256141A1 (en) * 2007-04-11 2008-10-16 Dot Hill Systems Corp. Method and apparatus for separating snapshot preserved and write data
WO2010042109A1 (en) * 2008-10-07 2010-04-15 Hewlett-Packard Development Company, L.P. Creating snapshots of data using a selected one of different snapshot algorithms

Similar Documents

Publication Publication Date Title
CN107422983B (en) Method and apparatus for tenant-aware storage sharing platform
US9223609B2 (en) Input/output operations at a virtual block device of a storage server
US20180011913A1 (en) Data replication management
US9223612B1 (en) Object-based commands with quality of service identifiers
EP3105684B1 (en) Data storage device with embedded software
US9251233B2 (en) Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation
CN109274752A (en) The access method and device, electronic equipment, storage medium of block chain data
WO2017113888A1 (en) Device and method for data writing
US20180275919A1 (en) Prefetching data in a distributed storage system
US8984027B1 (en) Systems and methods for migrating files to tiered storage systems
US10380074B1 (en) Systems and methods for efficient backup deduplication
US20170083419A1 (en) Data management method, node, and system for database cluster
US10339053B2 (en) Variable cache flushing
US9235588B1 (en) Systems and methods for protecting deduplicated data
US20160100027A1 (en) Mechanism for universal parallel information access
US20150355978A1 (en) Systems and methods for backing up storage volumes in a storage system
US10749921B2 (en) Techniques for warming up a node in a distributed data store
US11157198B2 (en) Generating merge-friendly sequential IO patterns in shared logger page descriptor tiers
US20180314543A1 (en) Data locality for hyperconverged virtual computing platform
WO2017007528A1 (en) Processing io requests in multi-controller storage systems
JP5963324B2 (en) Virtual sequential access volume data copy method and system
US20170091257A1 (en) Systems and methods for improving the efficiency of point-in-time representations of databases
US9967337B1 (en) Corruption-resistant backup policy
US20140281300A1 (en) Opportunistic Tier in Hierarchical Storage
US11977785B2 (en) Non-volatile memory device-assisted live migration of virtual machine data

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16821768

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16821768

Country of ref document: EP

Kind code of ref document: A1