System and method for providing data redundancy after reducing memory writes

A system, method, and computer program product are provided for providing data redundancy in a plurality of storage devices. In operation, a number of writes to a plurality of storage devices is reduced. Additionally, after the reducing, data redundancy is provided utilizing a data redundancy scheme.

FIELD OF THE INVENTION

The present invention relates to data storage, and more particularly to data redundancy in storage devices.

BACKGROUND

The storage system is one of the most limiting aspects of performance of modern enterprise computing systems. Performance of hard drive based storage is determined by seek time and time for half rotation. The performance is increased by decreasing seek time and decreasing rotational latency. However, there are limits on how fast a drive may spin. The fastest contemporary drives are reaching 15,000 rpm.

FIG. 1illustrates a system100in accordance with the prior art. In the system100, at least one computer102-108is coupled to a host controller110and112. The host controllers110and112are coupled to a plurality of disks114-120.

Often, the system100is configured as redundant array of independent disks (RAID)-1, storing mirrored content of the disks114-116in the disks118-120. The disks114-116are said to be mirrored by the disks118-120.

Increased reliability of the computer system is achieved by duplicating the disks114-116, the host controllers110and connections therebetween. Therefore, a reliable computer system is able operate at least in presence of single failure of the disks114-120, the RAID controllers110and112, the computers102-108, and the connections therebetween. However, storage system performance may still be inadequate using the system100. Additionally, increasing the performance of such system is currently costly and often times is not feasible.

Furthermore, one limiting aspect of current storage systems is the fact that many types of storage devices exhibit a limited lifetime. For example, a lifetime of non-memory volatile memory such as flash is reduced each time it is erased and re-written. Over time and thousands of erasures and re-writes, such storage systems may become less and less reliable.

SUMMARY

A system, method, and computer program product are provided for providing data redundancy in a plurality of storage devices. In operation, a number of writes to a plurality of storage devices is reduced. Additionally, after the reducing, data redundancy is provided utilizing a data redundancy scheme.

DETAILED DESCRIPTION

FIG. 2Ashows a system280for providing data redundancy in a plurality of storage devices, in accordance with one embodiment. As shown, the system280includes at least one computer285-288. The computers285-288are in communication with at least one controller290-291. As shown further, the controllers290-291are in communication with a storage system292which includes a plurality of disk controllers293-294and a plurality of storage devices296-299. It should be noted that, although the controllers290-291are shown separately, in another embodiment such controllers290-291may be one unit. Additionally, the plurality of disk controllers293-294may be one unit or independent units in various embodiments.

In operation, storage commands are received for providing data redundancy in accordance with a first data redundancy scheme. Additionally, the storage commands are translated for providing the data redundancy in accordance with a second data redundancy scheme. Furthermore, the translated storage commands are outputted for providing the data redundancy in the plurality of storage devices296-299.

In the context of the present description, storage commands refer to any command, instruction, or data to store or facilitate the storage of data. Additionally, in the context of the present description, a data redundancy scheme refers to any type of scheme for providing redundant data or a fault tolerance in a system. For example, in various embodiments, the data redundancy scheme may include, but is not limited to, a redundant array of independent disks (RAID) 0 data redundancy scheme, a RAID 1 data redundancy scheme, a RAID 10 data redundancy scheme, a RAID 3 data redundancy scheme, a RAID 4 data redundancy scheme, a RAID 5 data redundancy scheme, a RAID 50 data redundancy scheme, a RAID 6 data redundancy scheme, a RAID 60 data redundancy scheme, square parity data redundancy schemas, any non-standard RAID data redundancy scheme, any nested RAID data redundancy scheme, and/or any other data redundancy scheme that meets the above definition.

In one embodiment, the first data redundancy scheme may include a RAID 1 data redundancy scheme. In another embodiment, the second data redundancy scheme may include a RAID 5 data redundancy scheme. In another embodiment, the second data redundancy scheme may include a RAID 6 data redundancy scheme.

Further, in the context of the present description, the plurality of storage devices296-299may represent any type of storage devices. For example, in various embodiments, the storage devices296-299may include, but are not limited to, mechanical storage devices (e.g. disk drives, etc.), solid state storage devices (e.g. dynamic random access memory (DRAM), flash memory, etc.), and/or any other storage device. In the case that the storage devices296-299include flash memory, the flash memory may include, but is not limited to, single-level cell (SLC) devices, multi-level cell (MLC) devices, NOR flash memory, NAND flash memory, MLC NAND flash memory, SLC NAND flash memory, etc.

FIG. 2Bshows a storage subsystem250for providing data redundancy in a plurality of storage devices, in accordance with one embodiment. As an option, the storage subsystem250may be viewed in the context of the details ofFIG. 2A. Of course, however, the storage subsystem250may be implemented in the context of any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.

As shown, the storage subsystem250includes a plurality of primary storage devices231-232and at least one additional storage device233-234utilized to increase storage capacity for inclusion of redundant information. The amount of data storage of the storage subsystem250may be considered as the sum of the storage capacities of the plurality of primary storage devices231-232. As an option, the storage capacity may also be expanded through the additional storage device233-234. Of course, in one embodiment, the additional storage device233-234may be used solely to store redundant information computed from stored data.

As shown further, a first disk controller210includes at least one port201. In operation, at least one of the ports201may serve as a first port of the storage subsystem250. Additionally, at least one of the ports201may serve as a port of the first disk controller210to a disk controller bus203, power supply connections275, and internal connections211-214coupling the first disk controller210to corresponding busses241-244of the storage devices231-234.

The bus203couples the first disk controller210to a second disk controller220. In operation, the bus203may be used to monitor operation of the first disk controller210with the second disk controller220. When the second disk controller220detects a failure of the first disk controller210, the disk controller220may disconnect the internal connections211-214from the corresponding busses241-244by issuing a disconnect request to the first disk controller210via the disk controller bus203.

The bus203coupling the first disk controller210to the second disk controller220may also be used to monitor operation of the second disk controller220using the first disk controller210. When the first disk controller210detects a failure of the second disk controller220, the first disk controller210may disconnect internal connections221-224from the corresponding busses241-244by issuing a disconnect request to the second disk controller220via the disk controller bus203.

In one embodiment, the first disk controller210may detect internal incorrect operation, or incorrect operation associated with the first disk controller210. In this case, the first disk controller210may disconnect the connections211-214from the corresponding busses241-244when an internal incorrect operation is detected. Similarly, the second disk controller220may detect internal incorrect operation, or incorrect operation associated with the second disk controller220. In this case, the second disk controller220may disconnect the connections221-224from the corresponding busses241-244when an internal incorrect operation is detected.

Additionally, in one embodiment, the first and second disk controllers210and220may detect a failure of the disk controller bus203. In this case, the second disk controller220may disconnect the connections221-224from the corresponding busses241-244and the first disk controller210may remain active. In another embodiment, the first disk controller210may disconnect the connections211-214from the corresponding busses241-244and the second disk controller220may remain active. In still another embodiment, the disk controller that is to remain active may disconnect the connections of the controller that is to be inactive.

It should be noted that the disconnection of the buses211-214and221-224may be implemented through three state circuits, multiplexers, or any other circuits for disconnecting the busses211-214and221-224. For example, in one embodiment, the disconnection may be accomplished by placing three state bus drivers associated with the disk controllers210or220into a high impedance state. In another embodiment, the disconnection may be accomplished by controlling multiplexers on an input of the storage devices231-234.

As shown further, the second disk controller220includes at least one port202. In operation, at least one of the ports202may serve as a second port of the storage subsystem250. Additionally, at least one of the ports202may serve as a port of the second disk controller220to the disk controller bus203, power supply connections276, and internal connections221-224coupling the second disk controller220to the corresponding busses241-244of the storage devices231-234.

In the case that a single redundant storage device233is provided, with no additional redundant storage devices234, the storage subsystem250may operate without a loss of data in the presence of a single failure of any of the storage devices231-233. In one embodiment, the organization of data and redundant information may be in accordance with RAID 5. In another embodiment, the organization of data and redundant information may be in accordance with RAID 6, RAID 10, RAID 50, RAID 60, square parity redundancy schemas, etc.

In the case that two redundant storage devices233and234are provided, the storage subsystem250may continue to operate without loss of any data in presence of failure of any two of the storage devices231-234. In operation, the ports201and202may present data stored in the storage subsystem250as two conventional independent mirrored disks. In this case, such conventional independent mirrored disks may appear as RAID 1, RAID 10, RAID 50, RAID 60, square parity redundancy schemas, etc.

The power to the storage subsystem250may be supplied through a first power connector251coupled to a first power supply unit253via electric connections252. The power to storage subsystem250may also be supplied through a second power connector261coupled to a second power supply unit263via connections262. As an option, the output of the first power supply253and the output of the second power supply263may be joined and distributed to the disk controllers210and220and the storage devices231-234through an electric power distribution network270. The storage devices231-234are coupled to the power distribution network270via corresponding connections271-274. The disk controllers210and220are coupled to the power distribution network270via the power supply connections275and276.

In the case that power to the power connector251fails, the power to the storage subsystem250may be supplied through the power connector261. Similarly, in the case that power to the power connector261fails, the power to the storage subsystem250may be supplied through the power connector251. In the case that the connections252fail, the power to the storage subsystem250may be supplied through the connections262. In the case that the connections262fail, the power to the storage subsystem250may be supplied through the connections252.

In the case that the power supply253fails, power to the storage subsystem250may be supplied by the power supply263. If the power supply263fails, power to the storage subsystem250may be supplied by the power supply253. Similarly, when the connections254fail, the power to the storage subsystem250may be supplied through the connections264. Likewise, when the connections264fail the power to the storage subsystem250may be supplied through the connections254. Thus, the storage subsystem250allows for failure of various components, without rendering the storage subsystem250inoperable.

In one embodiment, the disk controllers210and/or220may contain circuits to detect that power to the power supplies253and263are disconnected. Additionally, such circuits may provide power to save a state of the disk controllers210and220into the storage devices231-234such that no loss of data occurs. For example, a disconnection of the power supply253and/or263may be detected.

In this case, power may be supplied to the storage devices231-234, in response to the detection of a disconnection of the power supply253and263. The power supplies253and263may supply power to the storage subsystem250for enough time such that after power to both of the power supplies253and263is disconnected, writing of the state of the disk controllers210and220into the storage devices231-234may be completed. Thus, power may be provided to the storage devices231-234until at least a point when no data loss will occur as a result of the disconnection of the power supplies253and263. In various embodiments, the power supplies253and263may include a battery, a capacitor, and/or any other component to provide power to the storage subsystem250when the power to the power supplies253and263is disconnected.

It should be noted that the storage subsystem250may continue to operate, without a loss of data, in the presence of any single failure of any element illustrated inFIG. 2B. It should also be noted that, in various embodiments, the storage devices231-234may be mechanical storage devices, non-mechanical storage devices, volatile or non-volatile storage. Furthermore, it various embodiments, the storage devices231-234may include, but is not limited to, DRAM or flash storage (e.g. SLC devices, MLC devices, NOR gate flash devices, NAND gate flash storage devices, etc.).

Furthermore, in one embodiment, the disk controllers210and220may be implemented as two independent chips. In another embodiment, the disk controllers210and220may be implemented on one chip or die. Such implementation may be determined based on packaging concerns, for example.

FIG. 3shows a disk assembly300, in accordance with one embodiment. As an option, the disk assembly300may be implemented in the context of the functionality and architecture ofFIGS. 1-2. Of course, however, the disk assembly300may be implemented in the context of any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.

As shown, the disk assembly300includes a printed circuit board302including a disk drive (not shown), a power connector with primary port as part of a SATA (Serial Advanced Technology Attachment) connector304and a power connector with a secondary port as part of a second SATA connector306. In one embodiment, the disk assembly300may include SAS (Serial Attached SCSI) connectors. For example, the disk assembly300may include the printed circuit board302including a disk drive (not shown), a power connector with primary port as part of a SAS connector304and a power connector with a secondary port as part of a second SAS connector306.

As an option, the connectors304and306may expose the disk assembly300as a certain data redundancy configuration. For example, an SATA interface may expose the disk assembly300as a pair of disks configured in a RAID 1 mode. In another embodiment, an SAS interface may expose the disk assembly300as pair of disks configured in a RAID 1 mode. In still another embodiment, an SATA and an SAS interface may expose the disk assembly300as plurality of disks configured in a RAID 0 mode.

FIG. 4shows a disk assembly400, in accordance with another embodiment. As an option, the disk assembly400may be implemented in the context of the functionality and architecture ofFIGS. 1-3. Of course, however, the disk assembly400may be implemented in the context of any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.

As shown, the disk assembly400includes two or more disks assemblies410and420. As an option, the disk assemblies410and420may include the disk assembly300fromFIG. 3. In this case, each disk assembly410and420may include a printed circuit board, and connectors430.

Optionally, each disk assembly410and420may be interconnected via an electrical connection401. In this case, the electrical connection401may represent a disk controller bus, such as the disk controller bus203ofFIG. 2B, for example. In operation, the disk assembly400may increase storage performance of a system by allowing more than one disk (e.g. disks assemblies410and420) to occupy a space of a conventional or primary storage (e.g. a disk drive, etc.).

FIG. 5shows a method500for operating a redundant disk controller, in accordance with one embodiment. As an option, the present method500may be implemented in the context of the functionality and architecture ofFIGS. 1-4. Of course, however, the method500may be carried out in any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.

As shown, a storage system (e.g. a disk assembly, etc.) is powered up. See operation510. A disk controller of the storage system is monitored. See operation520. As an option, the disk controller may be monitored by another disk controller. Such monitoring may include monitoring the disk controller via a bus between the two disk controllers (e.g. the disk controller bus203ofFIG. 2B, etc.), and/or monitoring activity on busses corresponding to storage devices of the storage system (e.g. busses241-244of the corresponding storage devices231-234, etc.).

The storage system continues to operate, monitoring the disk controller, until it is determined that the monitored disk controller has failed. See operation530. If the monitored disk controller fails, the monitored disk controller is disconnected. See operation540.

In one embodiment, the disconnection of the disk controller may be implemented by issuing a disconnect command through the bus between the two disk controllers (e.g. the disk controller bus203ofFIG. 2B, etc.). In this case, the disconnect command may include disconnecting busses linking the monitored disk controller to the storage devices (e.g. connections211-214or221-224ofFIG. 2B). In one embodiment, a plurality of disk controllers may be monitored by other disk controllers. In this case, each disk controller in the plurality of disk controllers may be considered a monitored disk controller.

FIG. 6shows a method600for operating a redundant disk controller, in accordance with another embodiment. As an option, the present method600may be implemented in the context of the functionality and architecture ofFIGS. 1-5. Of course, however, the method600may be carried out in any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.

As shown, a storage system (e.g. a disk assembly, etc.) is powered up. See operation610. A link between at least two disk controllers of the storage system is monitored. See operation620. In one embodiment, the link between the disk controllers may include the disk controller bus203ofFIG. 2B. Additionally, the link between the disk controllers may be monitored by at least one of the disk controllers (e.g. the first and second disk controller210and220ofFIG. 2B, etc.).

The storage system continues to operate, monitoring the link, until it is determined that the link has failed. See operation630. If the link fails, then one disk controller is disconnected. See operation640.

In one embodiment, the disconnection may include disconnecting busses linking a disk controller to the storage devices (e.g. connections211-214or221-224ofFIG. 2B, etc). In this case, commands received by a port associated with the disconnected controller may not be processed. As an example, a second of two disk controllers may be disconnected upon a failure of the link between a first and the second disk controller. In this case, the first controller may continue operating and commands from the ports of the second disk controller may not be processed.

FIG. 7shows a system700for operating a redundant disk controller, in accordance with another embodiment. As an option, the system700may be implemented in the context of the functionality and architecture ofFIGS. 1-6. Of course, however, the system700may be implemented in any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.

As shown, at least one computer702-706is provided. The computers702-706are coupled to a plurality of RAID controllers712-714. The controllers712-714are in communication with a plurality of storage devices716-722. Such communication may include utilizing ports associated with the storage devices716-722.

Reliability of the system700may be achieved by using storage devices716-722with intra-drive redundancy (e.g. the storage system250ofFIG. 2B). Furthermore, all connections (e.g. busses, etc.) may be duplicated to ensure reliability of the system700. As an option, the storage devices716-722may each include two ports per device, providing twice as much bandwidth compared to use of a storage device with a single port. Furthermore, each storage device716-722may simulate two disks by utilizing a redundancy system such as RAID 5, RAID 6, RAID 10, RAID 50, RAID 60, square parity redundancy schemas, etc.

As an option, write reduction logic708-710may be utilized to reduce a number of writes to the storage devices716-722. In this case, translating storage commands for providing data redundancy may be performed after the reducing. For example, storage commands may be received for providing data redundancy in accordance with a first data redundancy scheme (e.g. RAID 5, RAID 6, RAID 10, RAID 50, RAID 60, square parity redundancy schemas, etc.) of the controllers712-714.

The write reduction logic708-710may then be utilized to reduce a number of writes to the storage devices716-722. The storage commands may then be translated (e.g. by a circuit) for providing the data redundancy in accordance with a second data redundancy scheme associated with the storage devices716-722. In one embodiment, the second data redundancy scheme may be the same as the first data redundancy scheme (e.g. RAID 5, RAID 6, RAID 10, RAID 50, RAID 60, square parity redundancy schemas, etc.). In another embodiment, the second data redundancy scheme may be different than the first data redundancy scheme (e.g. RAID 1, RAID 6, RAID 10, RAID 50, RAID 60, square parity redundancy schemas, etc).

In one embodiment, the write reduction logic708-710may be utilized to format storage commands that are received for providing data redundancy in accordance with a first data redundancy scheme into a format compatible with the second data redundancy scheme. Strictly as an option, the RAID controllers712-714may include a system with intra-drive redundancy as described in the context of the storage devices716-722. In this way, a number of writes to the storage devices716-722may be reduced. Thus, the storage commands may be translated for providing the data redundancy in accordance with a second data redundancy scheme associated with the storage devices716-722after the reduction of the number of writes. In this way, randomization of data may be avoided.

FIG. 8illustrates an exemplary system800in which the various architecture and/or functionality of the various previous embodiments may be implemented. As shown, a system800is provided including at least one host processor801which is connected to a communication bus802. The system800also includes a main memory804. Control logic (software) and data are stored in the main memory804which may take the form of random access memory (RAM).

The system800also includes a graphics processor806and a display808, i.e. a computer monitor. In one embodiment, the graphics processor806may include a plurality of shader modules, a rasterization module, etc. Each of the foregoing modules may even be situated on a single semiconductor platform to form a graphics processing unit (GPU).

The system800may also include a secondary storage810. The secondary storage810includes, for example, a hard disk drive and/or a removable storage drive, representing a floppy disk drive, a magnetic tape drive, a compact disk drive, etc. The removable storage drive reads from and/or writes to a removable storage unit in a well known manner.

Computer programs, or computer control logic algorithms, may be stored in the main memory804and/or the secondary storage810. Such computer programs, when executed, enable the system800to perform various functions. Memory804, storage810and/or any other storage are possible examples of computer-readable media.

In one embodiment, the architecture and/or functionality of the various previous figures may be implemented in the context of the host processor801, graphics processor806, secondary storage810, an integrated circuit (not shown) that is capable of at least a portion of the capabilities of both the host processor801and the graphics processor806, a chipset (i.e. a group of integrated circuits designed to work and sold as a unit for performing related functions, etc.), and/or any other integrated circuit for that matter.

Further, while not shown, the system800may be coupled to a network [e.g. a telecommunications network, local area network (LAN), wireless network, wide area network (WAN) such as the Internet, peer-to-peer network, cable network, etc.) for communication purposes.