DATA SEEK TECHNIQUE
Provided are techniques for locating data in a storage area. Upon receiving a request for data, a search for the data is simultaneously initiated on at least two storage devices, the search being performed on a first storage device using a top down search and on a second storage device using a bottom up search. In response to receiving an indication from at least one of the storage devices that the data was located, the search is terminated on each of the other storage devices.
This application is a continuation of U.S. patent application Ser. No. 10/813,244, filed on Mar. 29, 2004, which is incorporated herein by reference in its entirety.
BACKGROUNDConventional systems may include storage configurations with two Redundant Array of Independent Disks (RAID) devices, which may be referred to as RAID devices Level 1. Disk mirroring refers to a technique in which data is written to two duplicate disks simultaneously so that if one of the disk drives controlling one of the disks fails, another disk drive controlling the other disk may access a copy of the data. Thus, one of the RAID devices mirrors (i.e., stores copies of) the data of the other RAID device.
A software interface to a disk controller will tell the disk controller which track and sector to read from. To perform the read, the disk controller has to move a read/write head in or out to an appropriate track. The time that it takes to do this is called the seek time. Once the head is correctly positioned, the controller has to wait for the desired sector to spin around so it is under the head. This time is called the rotational delay.
Since the disk drive may receive many requests for reads and writes, the requests are queued. Then, there are several strategies for scheduling I/O events on a disk. For example, one strategy may be referred to as “Shortest Seek Time First”, in which case when a new request arrives, seek distance of the new request from the current request being processed is calculated and the new request is placed into the queue accordingly. Then, the next closest access is serviced when the current request has been serviced. Another strategy may be referred to as “first come first served”, in which case requests are processed in the order that they are received. Yet another strategy may be referred to as an “elevator algorithm,” in which case requests come in to go to a particular track on a more or less random basis, and the read/write head goes in one direction as long as there are requests in that direction, and then goes in the other direction as long as there are requests in the other direction. At any given instant, the read/write head is either moving in toward the center of the disk or out toward the outside. If the read/write head can satisfy a new request by moving in the same direction, the read/write head does so, but if the read/write head has to switch directions and there are additional requests that could be satisfied without changing direction, the read/write head will not satisfy the new request until the read/write head turns around.
In order to locate data today, conventional systems implement a strategy for scheduling an I/O event on a disk on one of the RAID devices, while ignoring the other one of the RAID devices.
BRIEF DESCRIPTION OF THE DRAWINGSReferring now to the drawings in which like reference numbers represent corresponding parts throughout:
In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments. It is understood that other embodiments may be utilized and structural and operational changes may be made.
The server computer 120 includes a Central Processing Unit (CPU) 122 system memory 124, which may be implemented in volatile and/or non-volatile devices. A data seek controller 132 executes in the system memory 124. In certain embodiments, the data seek controller 132 is disk controller hardware and software (e.g., RAID controller hardware with firmware). Additionally, one or more server applications 160 execute in system memory 124.
The server computer 120 provides the client computer 100 with access to data in a data stores 170a . . . 170n (where a, n, and the ellipses indicate that that are two or more data stores). Although data stores 170a . . . 170n are illustrated for ease of understanding, any number of data stores may be connected directly or indirectly (e.g., connected to another computer that is connected to server computer 120) to server computer 120.
The data stores 170a . . . 170n may each comprise a storage device or an array of storage devices, such as Direct Access Storage Devices (DASDs), Just a Bunch of Disks (JBOD), Redundant Array of Independent Disks (RAID), virtualization device, etc. Additionally, each data store 170a . . . 170n includes one or more storage areas.
In block 304, the data seek controller 132 simultaneously initiates a search for the requested data on at least two of the storage areas using a different search technique on each storage area. In alternative embodiments, a different search technique is used for each storage area in varying storage environments made up of one or more storage areas (e.g., different SANs, JBODs, NAS devices, etc.), but a same search technique may be used in more than one storage environment. In certain embodiments, the data seek controller 132 selects the particular search technique to be applied based on, for example, a round robin technique. In certain embodiments, the particular search techniques to be used are user specified. In certain embodiments, at least two storage areas reside on two RAID Level 1 (also referred to as “RAID 1) storage devices accessible by the data seek controller 132, and a top down search is performed on one RAID 1 device while a bottom up search is performed on the other RAID 1 device.
In block 306, the data seek controller 132 receives an indication from at least one of the storage areas that the data was located. In block 308, the data seek controller 132 terminates the searches for the data on the other storage areas. In block 310, the data seek controller 132 returns the requested data.
In certain embodiments, a client application 110 sends a request for data to CPU 122 via CPU 102. The CPU 122 invokes the data seek controller 132 to retrieve the data. The data seek controller 132 retrieves and returns the data to the CPU 122, which returns the data to the client application 110 via CPU 102.
Thus, embodiments reduce seek time for storage configurations in which multiple copies of data are stored in different storage areas (e.g., in storage configurations that use RAID1 devices). Embodiments allow the search for data to occur simultaneously on multiple storage areas using different search techniques. For example, with two RAID1 devices, a bottom-up search is performed on one RAID1 device and a top-down search is performed on the other RAID1 device, which results in decreasing seek time by 50% on average.
Additional Embodiment DetailsThe described embodiments may be implemented as a method, apparatus or article of manufacture using programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term “article of manufacture” and “circuitry” as used herein refers to a state machine, code or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.) or a computer readable medium, such as magnetic storage medium (e.g., hard disk drives, floppy disks,, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.). Code in the computer readable medium is accessed and executed by a processor. When the code or logic is executed by a processor, the circuitry may include the medium including the code or logic as well as the processor that executes the code loaded from the medium. The code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network. In such cases, the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. Thus, the “article of manufacture” may comprise the medium in which the code is embodied. Additionally, the “article of manufacture” may comprise a combination of hardware and software components in which the code is embodied, processed, and executed. Of course, those skilled in the art will recognize that many modifications may be made to this configuration, and that the article of manufacture may comprise any information bearing medium known in the art. Additionally, the devices, adaptors, etc., may be implemented in one or more integrated circuits on the adaptor or on the motherboard.
The illustrated operations of
The foregoing description of various embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or limiting. Many modifications and variations are possible in light of the above teachings.
Claims
1. A method comprising:
- upon receiving a request for data, simultaneously initiating a search for the data on at least two storage devices, the search being performed on a first storage device using a top down search and on a second storage device using a bottom up search; and
- in response to receiving an indication from at least one of the storage devices that the data was located, terminating the search on each of the other storage devices.
2. The method of claim 1, wherein the storage devices comprise storage arrays.
3. The method of claim 1, wherein the first storage device and the second storage device each comprise a Redundant Array of Independent Disks (RAID) Level 1 storage device.
4. The method of claim 1, wherein the first storage device and the second storage device are each part of a Redundant Array of Independent Disks (RAID) Level 1 volume.
5. The method of claim 1, further comprising:
- identifying the at least two storage devices storing copies of the requested data.
6. The method of claim 5, further comprising:
- identifying the at least two storage devices to be searched based on at least one of a location of the storage devices relative to a data seek controller, data transfer rate between the storage devices and the data seek controller, and type of transmission medium between the storage device and the data seek controller.
7. The method of claim 1, wherein the number of storage devices to be searched is user specified.
8. The method of claim 1, further comprising:
- returning the data in response to the request.
9. A system, comprising:
- a first storage device;
- a second storage device;
- circuitry operable to: upon receiving a request for data, simultaneously initiate a search for the data on the first storage device and the second storage device, the search being performed on the first storage device using a top down search and on the second storage device using a bottom up search; and in response to receiving an indication from one of the storage devices that the data was located, terminate the search on the other storage device.
10. The system of claim 9, wherein the first and second storage devices comprise storage arrays.
11. The system of claim 9, wherein the first storage device and the second storage device each comprise a Redundant Array of Independent Disks (RAID) Level 1 storage device.
12. The system of claim 9, wherein the first storage device and the second storage device are each part of a Redundant Array of Independent Disks (RAID) Level 1 volume.
13. The system of claim 9, wherein the circuitry is operable to:
- identify the first storage device and the second storage device storing copies of the requested data.
14. The system of claim 13, wherein the circuitry is operable to:
- identify the first storage device and the second storage device to be searched based on at least one of a location of the storage devices relative to the circuitry, data transfer rate between the storage devices and the circuitry, and type of transmission medium between the storage device and the circuitry.
15. The system of claim 9, wherein the number of storage devices to be searched is user specified.
16. The system of claim 9, wherein the circuitry is operable to:
- return the data in response to the request.
17. An apparatus comprising:
- a data seek controller, the data seek controller to simultaneously initiate a search for the data on at least two storage devices upon receiving a request for data, the search to be performed on a first storage device using a top down search and on a second storage device using a bottom up search and, in response to receiving an indication from at least one of the storage devices that the data was located, to terminate the search on each of the other storage devices.
18. The apparatus of claim 17, wherein the first and second storage devices comprise storage arrays.
19. The apparatus of claim 17, wherein the first storage device and the second storage device each comprise a Redundant Array of Independent Disks (RAID) Level 1 storage device.
20. The apparatus of claim 17, wherein the first storage device and the second storage device are each part of a Redundant Array of Independent Disks (RAID) Level 1 volume.
21. The apparatus of claim 17, comprising:
- data seek controller to identify the first storage device and the second storage device storing copies of the requested data.
22. The apparatus of claim 21, comprising:
- the data seek controller to identify the first storage device and the second storage device to be searched based on at least one of a location of the storage devices relative to the circuitry, data transfer rate between the storage devices and the circuitry, and type of transmission medium between the storage device and the circuitry.
23. The apparatus of claim 17, wherein the number of storage devices to be searched is user specified.
24. The apparatus of claim 17, comprising:
- the data seek controller to return the data in response to the request.
25. An article of manufacture embodied as one of hardware logic and a computer readable medium for locating data in a storage device, wherein the article of manufacture is operable to:
- upon receiving a request for data, simultaneously initiate a search for the data on at least two storage devices, the search being performed on a first storage device using a top down search and on a second storage device using a bottom up search; and
- in response to receiving an indication from at least one of the storage devices that the data was located, terminate the search on each of the other storage devices.
26. The article of manufacture of claim 25, wherein the storage devices comprise storage arrays.
27. The article of manufacture of claim 25, wherein the first storage device and the second storage device each comprise a Redundant Array of Independent Disks (RAID) Level 1 storage device.
28. The article of manufacture of claim 25, wherein the first storage device and the second storage device are each part of a Redundant Array of Independent Disks (RAID) Level 1 volume.
29. The article of manufacture of claim 25, wherein the article of manufacture is operable to:
- identify the at least two storage devices storing copies of the requested data.
30. The article of manufacture of claim 29, wherein the article of manufacture is operable to:
- identify the at least two storage devices to be searched based on at least one of a location of the storage devices relative to a data seek controller, data transfer rate between the storage devices and the data seek controller, and type of transmission medium between the storage device and the data seek controller.
31. The article of manufacture of claim 25, wherein the number of storage devices to be searched is user specified.
32. The article of manufacture of claim 25, wherein the article of manufacture is operable to:
- return the data in response to the request.
Type: Application
Filed: Oct 11, 2006
Publication Date: Jun 14, 2007
Inventors: William SUNDERLAND (Chandler, AZ), Ricky KEAHEY (Vancouver, WA), Dominick MACCHIONE (Freehold, NJ)
Application Number: 11/548,672
International Classification: G06F 13/00 (20060101);