Abstract:
A network storage controller for transferring data between a host computer and a storage device, such as a redundant array of inexpensive disks (RAID), is disclosed. The network storage controller includes at least one channel interface module which is connected to a passive backplane, and selectively transfers data between the host computer and storage device and the passive backplane. The network storage controller also includes at least one controller memory module (104, 108), which communicates with the channel interface module (136, 140) via passive backplane (116), and processes and temporarily stores data received from the host computer or storage device. In applications where redundancy is required, at least two controller memory modules and two channel interface modules are used. The controller memory modules may mirror data between one another using the passive backplane and a shared communication path on the channel interface modules, thereby substantially avoiding the use of host or disk channels to mirror data.
Abstract:
A network storage controller for transferring data between a host computer and a storage device, such as a redundant array of inexpensive disks (RAID), is disclosed. The network storage controller includes at least one channel interface module which is adapted to be connected to the host computer and storage device. The channel interface module is connected to a passive backplane (112), and selectively transfers data between the host computer and storage device and the passive backplane. The network storage controller also includes at least one controller memory module (104), attached to the passive backplane. The controller memory module communicates with the channel interface module via the passive backplane, and processes and temporarily stores data received from the host computer or storage device. In applications where redundancy is required at least two controller memory modules and at least two channel interface modules are used. The controller memory modules may mirror data between one onother using the passive backplane and a shared communication path on the channel interface modules, thereby substantially avoiding the use of host or disk channels to mirror data. The channel interface modules are operable to selectively connect the host computer or storage device to one or more controller memory modules. The controller memory modules may include a DMA engine (188) to facilitate the transfer of mirrored data.
Abstract:
A direct memory access (DMA) engine (70) has virtually all control in connection with data transfers that can involve one or both of primary and secondary controllers. The DMA engine receives a command related to a data transfer from a processor (78) associated with the primary controller. This command causes the DMA engine to access processor memory (74) to obtain medtdata therfrom. In performing a DMA operation, the metadata enables the DMA engine to conduct data transfers between local memory (82) and remote memory. In performing exclusive OR operations, the DMA engine is involved with conducting data transfers using local memory.
Abstract:
A direct memory access (DMA) engine has virtually all control in connection with data transfers that can involve one or both of primary and secondary controllers. The DMA engine receives a command related to a data transfer from a processor associated with the primary controller. This command causes the DMA engine to access processor memory to obtain medtdata therfrom. In performing a DMA operation, the metadata enables the DMA engine to conduct data transfers between local memory and remote memory. In performing exclusive OR operations, the DMA engine is involved with conducting data transfers using local memory.
Abstract:
The methodology of the present invention (100) automatically selects an unused id for a system component in a system where multiple other components with other ids are already present. In this manner, id conflicts are avoided.
Abstract:
A method for enhancing the performance on non-full stripe writes while closing the RAID5 write hole is disclosed. When a RAID controller receives data to be written to a disk array, the controller stores the data in nonvolatile memory, and opens a write operation. When the current write operation is initiated, the controller reads the old data from the disk array and checks for cached parity that corresponds to the stripe of data that is to be modified. If the parity is cached, the controller reads the cached parity, and if the parity is not cached the controller reads the old parity from the disk array. New parity is then computed. If the parity was cached, the controller will modify a parity log to show an outstanding data write. If the parity was not cached, the controller will open a parity log to show an outstanding data and parity write. The new parity is then cached in non-volatile memory. The controller then determines whether the following write operation is for the same stripe of data. If the following write operation is for the same stripe, the controller writes the new data to disk and opens a parity log for the following write operation to show an outstanding parity write, and terminates the current write operation. If the following write operation is not for the same stripe, the controller writes both the new data and new parity to disk, and terminates the current write operation.
Abstract:
A direct memory access (DMA) engine has virtually all control in connection with data transfers that can involve one or both of primary and secondary controllers. The DMA engine receives a command related to a data transfer from a processor associated with the primary controller. This command causes the DMA engine to access processor memory to obtain metadata therefrom. In performing a DMA operation, the metadata enables the DMA engine to conduct data transfers between local memory and remote memory. In performing exclusive OR operations, the DMA engine is involved with conducting data transfers using local memory.
Abstract:
A system and method for efficient parity mirroring between controllers of an active-active controller pair in a redundant array of inexpensive disks (RAID) system is disclosed. When a second controller in an active-active controller pair receives new data to be written to a disk array, it mirrors the new data to a first controller in the active-active controller pair. The second controller then computes new parity for the data stripe associated with the new data. The second controller then opens a parity log and mirrors logical block address (LBA) information for the new data to a first controller in the active-active controller pair. In the event of a failure of the second controller after mirroring the LBA information and prior to completing the write operation, the first controller uses the LBA information to complete the write operation, assuring that the new data and new parity are properly stored on the disk array. If a hard disk in the disk array fails, parity is mirrored between the first and second controllers, rather than just LBA information. If a hard disk and the second controller fail when the first controller contains LBA information, a list containing the LBAs is created and a media error is returned in the event that a host requests in the form of a read operation data contained in the listed LBAs.
Abstract:
A network storage controller (30) for transferring data between a host computer (50) and a storage device (54), such as a redundant array of inexpensive disks (RAID), is disclosed. The network storage controller includes at least one channel interface module (42) which is adapted to be connected to the host computer and storage device. The channel interface module (42) is connected to a passive backplane (38), and selectively transfers data between the host computer and storage device and the passive backplane. The network storage controller also includes at least one controller memory module, attached to the passive backplane (38). The controller memory module communicates with the channel interface module via the passive backplane (38), and processes and temporarily stores data received from the host computer or storage device. In applications where redundancy is required, at least two controller memory modules and at least two channel interface modules are used. The controller memory modules may mirror data between one another using the passive backplane and a shared communication path on the channel interface modules, thereby substantially avoiding the use of host or disk channels to mirror data. The channel interface modules are operable to selectively connect the host computer or storage device to one or more controller memory modules. The controller memory modules may include a DMA engine to facilitate the transfer of mirrored data.