摘要:
A plurality of arrays of storage devices, each providing dual storage device redundancy, is provided. The plurality of arrays of storage devices includes a plurality of mirrored sets of primary storage devices, each including an even number of at least two or more primary storage devices. Each of the mirrored sets of primary storage devices stores a first and a second copy of data. The plurality of arrays of storage devices also includes a secondary storage device, which is a single physical storage device that stores a third copy of the data stored on each of the plurality of mirrored sets of primary storage devices. The secondary storage device has at least the capacity to store the data stored on the plurality of mirrored sets of primary storage devices. Dual storage device redundancy preserves data if data cannot be read from one or two physical storage devices in any array.
摘要:
A plurality of arrays of storage devices, each providing dual storage device redundancy, is provided. The plurality of arrays of storage devices includes a plurality of mirrored sets of primary storage devices, each including an even number of at least two or more primary storage devices. Each of the mirrored sets of primary storage devices stores a first and a second copy of data. The plurality of arrays of storage devices also includes a secondary storage device, which is a single physical storage device that stores a third copy of the data stored on each of the plurality of mirrored sets of primary storage devices. The secondary storage device has at least the capacity to store the data stored on the plurality of mirrored sets of primary storage devices. Dual storage device redundancy preserves data if data cannot be read from one or two physical storage devices in any array.
摘要:
A method for improving I/O performance by a storage controller is provided. The method includes receiving a command completion from a storage device and checking for a command stored in a command queue for more than a predetermined time period. If a command has been in the command queue for more than the predetermined time period, then issuing the command and removing the command from the command queue. If no commands have been stored in the command queue for more than the predetermined time period, then determining if there are any uncompleted commands previously issued to the storage device. If there are not any uncompleted commands previously issued to the storage device, then processing a next command in the command queue and removing the next command from the command queue.
摘要:
A method for providing efficient use of a read cache by a storage controller is provided. The method includes the storage controller receiving a read request from a host computer and determining if a host stream size is larger than a read cache size. The host stream size is a current cumulative size of all read requests in the host stream. If the host stream size is larger than the read cache size then migrating data to a first area of the read cache containing data that has been in the read cache for the longest time. If the host stream size is not larger than the read cache size then migrating data to a second area of the read cache containing data that has been in the read cache for the shortest time. The host stream is a consecutive group of sequential read requests from the host computer.
摘要:
A method for destaging data from a memory of a storage controller to a striped volume is provided. The method includes determining if a stripe should be destaged from a write cache of the storage controller to the striped volume, destaging a partial stripe if a full stripe write percentage is less than a full stripe write affinity value, and destaging a full stripe if the full stripe write percentage is greater than the full stripe write affinity value. The full stripe write percentage includes a full stripe count divided by the sum of the full stripe count and a partial stripe count. The full stripe count is the number of stripes in the write cache where all chunks of a stripe are dirty. The partial stripe count is the number of stripes where at least one chunk but less than all chunks of the stripe are dirty.
摘要:
A method for providing improved sequential read performance in a storage controller is provided. In response to the storage controller receiving a host read request from a host computer, the method includes identifying, by the storage controller, a largest burst length of a plurality of burst lengths in a memory of the storage controller, and determining a maximum number of consecutive times between bursts having a value less than a predetermined value. A burst includes a consecutive group of sequential host read requests from the same host computer. The method also includes multiplying the largest burst length of the plurality of burst lengths by the maximum number of consecutive times between bursts having a value less than the predetermined value to obtain an effective burst length and reading into a storage controller cache memory at least the effective burst length of data from storage devices coupled to the storage controller.
摘要:
A method for providing efficient use of a read cache by a storage controller is provided. The method includes the storage controller receiving a read request from a host computer and determining if a host stream size is larger than a read cache size. The host stream size is a current cumulative size of all read requests in the host stream. If the host stream size is larger than the read cache size then migrating data to a first area of the read cache containing data that has been in the read cache for the longest time. If the host stream size is not larger than the read cache size then migrating data to a second area of the read cache containing data that has been in the read cache for the shortest time. The host stream is a consecutive group of sequential read requests from the host computer.
摘要:
A method for providing improved sequential read performance in a storage controller is provided. In response to the storage controller receiving a host read request from a host computer, the method includes identifying, by the storage controller, a largest burst length of a plurality of burst lengths in a memory of the storage controller, and determining a maximum number of consecutive times between bursts having a value less than a predetermined value. A burst includes a consecutive group of sequential host read requests from the same host computer. The method also includes multiplying the largest burst length of the plurality of burst lengths by the maximum number of consecutive times between bursts having a value less than the predetermined value to obtain an effective burst length and reading into a storage controller cache memory at least the effective burst length of data from storage devices coupled to the storage controller.
摘要:
A method for improving I/O performance by a storage controller is provided. The method includes receiving a command completion from a storage device and checking for a command stored in a command queue for more than a predetermined time period. If a command has been in the command queue for more than the predetermined time period, then issuing the command and removing the command from the command queue. If no commands have been stored in the command queue for more than the predetermined time period, then determining if there are any uncompleted commands previously issued to the storage device. If there are not any uncompleted commands previously issued to the storage device, then processing a next command in the command queue and removing the next command from the command queue.
摘要:
A method for destaging data from a memory of a storage controller to a striped volume is provided. The method includes determining if a stripe should be destaged from a write cache of the storage controller to the striped volume, destaging a partial stripe if a full stripe write percentage is less than a full stripe write affinity value, and destaging a full stripe if the full stripe write percentage is greater than the full stripe write affinity value. The full stripe write percentage includes a full stripe count divided by the sum of the full stripe count and a partial stripe count. The full stripe count is the number of stripes in the write cache where all chunks of a stripe are dirty. The partial stripe count is the number of stripes where at least one chunk but less than all chunks of the stripe are dirty.