The present invention is related data storage and more particularly to systems and methods for storing data using a RAID configuration.
Balancing cost and performance benefits in data storage remains a large concern for computer users. One example of a data storage system may include a Redundant Array of Inexpensive Disk (RAID) system. Some RAID configurations provide data protection with varying degrees of risk and cost. Additionally, RAID configurations may occur in different levels with each different level giving different trade-offs including protection against data loss, speed, and capacity. RAID 5, for example, may provide resiliency from drive failure by performing parity generation for WRITE operations. This parity may be stored on a different area of a RAID disk separate from a WRITE operation area. When a disk fails in the RAID 5 configuration, the READ from the missing drive may be generated from the data on other RAID drives.
The present technology is related to an apparatus for storage of data in a RAID system.
A system and method for preventing data corruption after power failure is described. The system may include a host server, a disk array, a journaling disk, and/or a RAID controller. A method for preventing data corruption after power failure may include receiving at least one of a read command or a write command, storing information on an array of disk drives at least partially based on receiving the at least one of a read command or a write command, and storing persistent information on a journaling drive.
It is to be understood that both the foregoing generat description and the following detailed description are exemplary and explanatory only and are not necessarily restrictive of the invention as claimed. The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate embodiments of the invention and together with the general description, serve to explain the principles of the invention.
The numerous advantages of the disclosure may be better understood by those skilled in the art by reference to the accompanying figures in which:
Reference will now be made in detail to the subject matter disclosed, which is illustrated in the accompanying drawings.
Referring generally to
System 100 may include a disk array 104. A disk array 104 may include at least two disk drives 110. A disk drive may include a peripheral computer storage device upon which data may be stored. Some examples of a disk drive may include, for example, a hard disk, a floppy disk, and/or an optical disk. Additionally, a disk drive may include a solid state drive. For example, a disk array 104 may include a Redundant Array of Independent Disks (RAID) with multiple hard disk drives. A RAID configuration may include two or more disk drives to achieve better performance, reliability, and/or larger data volume sizes. Further, a RAID system may include a system with the ability to divide and/or replicate data among multiple hard disk drives. Data may be written on disk drives in the RAID such that failure of one of the disk drives will not result in the loss of data. Generally, a failed disk drive may be replaced and reconstructed with data from other disk drives in the array, often while the system is operating.
A RAID system may include different combinations of disk drives with different trade-offs of protection against speed, capacity, and/or data loss. Different combinations of disk drives in a RAID system may include mirroring, striping, and/or error correction. Mirroring may include the replication of a disk volume to more than one disk drive 110. Striping may include segmenting logically sequential data for assigning the data to multiple physical devices, such as separate disk drives 110. Error correction may include the ability to detect errors caused from, for example, a read and/or write operation. One example of error correction may include utilizing a parity bit. A parity bit may include a bit added to ensure the number of bits with a value of one in a given set of bits is always even or odd.
One example of a disk array 104 may include a RAID 5. A RAID 5 may utilize block-level striping with parity data distributed among each of the minimum of three disk drives 110. Some other examples of a disk array 104 may include RAID 3, RAID 4, and/or RAID 6. A RAID 3 system may include utilizing byte-level striping with a dedicated parity disk. A RAID 4 system may include utilizing block-level striping with a dedicated parity disk. A RAID 6 system may include block-level striping with two parity blocks distributed across all the disk drives 110.
System 100 may include a journaling disk 106. A journaling disk 106 may include a disk drive in addition to the disk array 104. The journaling disk 106 may be configured to store metadata while servicing a host WRITE command in a degraded RAID configuration. The volume size of the journating disk 106 may be much smaller than the size of the disk drives 110 included in the RAID configuration. The volume size of the journaling disk 106 may be smaller because the ratio of outstanding WRITE commands versus the size of a RAID volume may be very small. Additionally, a journaling disk 106 may include a flash memory-based disk drive. A flash memory-based disk drive may be advantageous because only 1 flash memory disk drive may be required to create resiliency irrespective of number of disks in a traditional RAID configuration. In one embodiment, a RAID system may include multiple hard disk drives having one terabyte of storage and a journaling hard disk drive with ten gigabytes of storage.
System 100 may include a RAID controller 108. A RAID controller 108 may include a disk array controller, which may manage the physical disk drives 110 in a disk array. A disk array controller may present the disk drives 110 to a host server 102, or host computer, as logical units. A host server 102 may include a host computer. The host server 102 may interface with the RAID controller 108 and/or a disk array 104.
In one embodiment, illustrated in
Referring to
Referring to
After a start operation, the operational flow 500 moves to a receiving operation 510, where receiving at least one of a read command or a write command may occur. For example, as generally shown in
Then, in a storing operation 520, storing information on an array of disk drives at least partially based on receiving the at least one of a read command or a write command may occur. For example, as shown in
Then, in a storing operation 530, storing persistent information on a journaling drive may occur. For example, as shown in
At operation 610, receiving a command from a host server may occur. For example, receiver module 410 may receive a command from a host server. In one embodiment, receiver module 410 may receive a command from a host server to write data to a hard drive in a RAID configuration. In some instances, receiver module 410 may include a computer processor, computer memory, and/or a computer controller.
At operation 620, storing information in a redundant array of independent disks (RAID) may occur. For example, storer module 420 may store information in a redundant array of independent disks (RAID). In one embodiment, storer module 420 may store information in a RAID configuration. In some instances, storer module 420 may include a computer processor, a RAID controller, and/or computer memory.
At operation 630, storing information in a RAID 5 configuration may occur. For example, storer module 420 may store information in a RAID 5 configuration. In one embodiment, storer module 420 may store information in a RAID 5 configuration. In some instances, storer module 420 may include a computer processor, a RAID controller, and/or computer memory.
At operation 640, storing information in at Least one of a RAID 3 configuration, a RAID 4 configuration, or RAID 6 configuration may occur. For example, storer module 420 may store information in a RAID 3 configuration, a RAID 4 configuration, or RAID 6 configuration. In one embodiment, storer module 420 may store information in a RAID 6 configuration. In some instances, storer module 420 may include a computer processor, a RAID controller, and/or computer memory.
At operation 710, storing information in a journaling drive configured to have a smaller storage capacity than the at least one disk drive may occur. For example, storer module 420 may store information in a journaling drive configured to have a smaller storage capacity than the at least one disk drive. In one embodiment, storer module 420 may store information in a journaling drive with a much smaller storage capacity than a RAID configuration. In this embodiment, the journaling disk may, for example, have a 5 gigabyte storage capacity while the RAID configuration may have a one terabyte storage capacity. In some instances, storer module 420 may include a computer processor, a RAID controller, and/or computer memory.
At operation 720, storing information in a flash memory-based journaling drive may occur. For example, storer module 420 may store information in a flash memory-based journaling drive. In one embodiment, storer module 420 may store information in a flash memory-based journating drive. Flash-based memory may include non-volatile computer memory that can be electrically erased and reprogrammed. In some instances, storer module 420 may include a computer processor, a RAID controller, and/or computer memory.
At operation 730, storing information on a journating drive configured for servicing a host command in a degraded at least one disk drive configuration may occur. For example, storer module 420 may store information on a journaling drive configured for servicing a host command in a degraded at least one disk drive configuration. In one embodiment, storer module 420 may store information on a journating drive that services a host command in a degraded RAID configuration. In some instances, storer module 420 may include a computer processor, a RAID controller, and/or computer memory.
At operation 740, correcting parity from persistent data on the journating drive subsequent to degradation of the at least one disk drive may occur. For example, correcter module 430 may correct parity from persistent data on the journating drive subsequent to degradation of the at least one disk drive. In one embodiment, correcter module 430 may correct parity from persistent data on the journaling drive after a RAID system experiences a power failure during a write operation. In some instances, correcter module 430 may include a computer processor and/or a RAID controller.
In the present disclosure, the methods disclosed may be implemented as sets of instructions or software readable by a device. Further, it is understood that the specific order or hierarchy of steps in the methods disclosed are examples of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the method can be rearranged while remaining within the disclosed subject matter. The accompanying method claims present elements of the various steps in a sample order, and are not necessarily meant to be limited to the specific order or hierarchy presented.
It is believed that the present disclosure and many of its attendant advantages will be understood by the foregoing description, and it will be apparent that various changes may be made in the form, construction and arrangement of the components without departing from the disclosed subject matter or without sacrificing all of its material advantages. The form described is merely explanatory, and it is the intention of the following claims to encompass and include such changes.