Dot Hill Systems Corporation Patent applications |
Patent application number | Title | Published |
20150046605 | Method and apparatus for efficient processing of disparate data storage commands - 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. | 02-12-2015 |
20140365725 | Method and apparatus for efficiently destaging sequential I/O streams - A method for destaging write data from a storage controller to storage devices is provided. The method includes determining that a cache element should be transferred from a write cache of the storage controller to the storage devices, calculating that a dirty watermark is above a dirty watermark maximum value, identifying a first cache element to destage from the write cache to the storage devices, transferring a first data container including the first cache element to the storage devices, and incrementing an active destage count. The method also includes repeating determining, calculating, identifying, transferring, and incrementing if the active destage count is less than an active destage count maximum value. The active destage count is a current number of write requests issued to a virtual disk that have not yet been completed, and the virtual disk is a RAID group comprising one or more specific storage devices. | 12-11-2014 |
20140351527 | Method and apparatus for sequential stream I/O processing - A method for providing efficient processing for many concurrent streams of sequential I/O requests is provided. In response to receiving an I/O request, the method includes determining if the I/O request corresponds to an active stream. If the request corresponds to an active stream, then the method includes updating an existing active list entry of an active list corresponding to the active stream, and if the I/O request does not correspond to an active stream, then instead converting and configuring an inactive list entry of an inactive list into a new active list entry. The inactive list stores available but unallocated resources, and the active list stores allocated resources. The active list includes a head at one end of the active list and a tail at an opposite end. The active list head corresponds to a most recently used entry, and the tail corresponds to a least recently used entry. | 11-27-2014 |
20140265784 | Compliant drawer latch assembly - A compliant drawer latch is provided. The compliant drawer latch includes a first portion affixed to an inside surface of a chassis, and a second portion coupled to the first portion. The second portion includes a latch strike plate, a latch spring cap plate, and a latch return spring arranged between the latch strike plate and the latch spring cap plate. A drawer contacts the latch strike plate when the drawer is seated in the chassis. When the drawer over-travels the latch strike plate compresses the latch return spring up to a predetermined distance, and the compressed latch return spring applies force to the latch strike plate to return the latch strike plate to a latching position when the drawer rebounds from over-travel. | 09-18-2014 |
20140258638 | Method and apparatus for efficient read cache operation - 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. | 09-11-2014 |
20140258612 | Mirrored data storage with improved data reliability - 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. | 09-11-2014 |
20140258608 | Storage Controller Cache Synchronization Method and Apparatus - A method for a pair of redundant storage controllers to ensure reliable cached write data transfers to storage device logical volumes is provided. The method includes maintaining metadata including a first number identifying which controller currently owns the volume, a second number identifying which controller previously owned the volume, a third number identifying which controller is a preferred owner of the volume, and an indication if the volume is write protected. The method also includes determining if all volumes currently owned by the controller are write protected. If all volumes currently owned by the controller are write protected, then the method includes verifying that the second controller is working and transferring cache data from the second controller to the first controller. If all volumes currently owned by the first controller are not write protected, then the method includes updating the second number and placing all volumes online. | 09-11-2014 |
20140250268 | Method and apparatus for efficient cache read ahead - 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. | 09-04-2014 |
20140105676 | Self-latching storage device module - A latching device for latching a storage device module into a storage chassis is provided. The latching device includes a latch member having a latching end and a spring end opposite the latching end, the latch member slidingly disposed within a front bezel of the storage device module and being movable between a latching position and a releasing position. The latching device also includes a latch spring between a bearing surface of the front bezel and the spring end of the latch member. The latch spring is in increased compression when the latch member transitions from the latching position to the releasing position, and the latch spring is in decreased compression when the latch member transitions from the releasing position to the latching position. The latching end extends through a latch hole in a side member of the storage chassis for locking the storage device module in the chassis. | 04-17-2014 |
20140075136 | Efficient metadata protection system for data storage - A method for protecting page-level metadata in a storage system is provided. The method includes providing in a page table first protection data, receiving a command to read data from a page of the storage system corresponding to the page table, and comparing first protection data to second protection data. If the first protection data is different than the second protection data, then the method includes identifying third protection data in the storage system and comparing the third protection data to the first protection data. If the third protection data is different than the first protection data, then the method includes determining that the page-level metadata is inconsistent. | 03-13-2014 |
20130326149 | Write Cache Management Method and Apparatus - 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. | 12-05-2013 |
20130176677 | Storage device carrier ejection spring - A spring for ejecting a storage device module from a chassis is provided. The spring includes a first end, where the first end is held captive when the spring is installed in the chassis. The spring includes a second end, opposite the first end, and a body between the first and second ends. The body is formed with serpentine bends proceeding linearly between the first and second ends and in a common plane with the first end. The second end is oriented orthogonal to the common plane. The spring is in expansion when the storage device module is inserted into the chassis. The storage device module pushes against the second end when the storage device module is fully inserted into the chassis. The spring exerts force outward from the chassis when expanded. | 07-11-2013 |
20130176676 | Self-latching storage device module - A latching device for latching a storage device module into a storage chassis is provided. The latching device includes a latch member having a latching end and a spring end opposite the latching end, the latch member slidingly disposed within a front bezel of the storage device module and being movable between a latching position and a releasing position. The latching device also includes a latch spring between a bearing surface of the front bezel and the spring end of the latch member. The latch spring is in increased compression when the latch member transitions from the latching position to the releasing position, and the latch spring is in decreased compression when the latch member transitions from the releasing position to the latching position. The latching end extends through a latch hole in a side member of the storage chassis for locking the storage device module in the chassis. | 07-11-2013 |
20130080829 | Method and apparatus for isolating storage devices to facilitate reliable communication - A method for maintaining reliable communication on a link between an expander and a storage device is provided. The method includes detecting, by a processor coupled to the link, an error corresponding to the link, and maintaining a count of detected errors for the link, by the processor. The method also includes determining, by the processor, if the count of detected errors is above a first error threshold. If the count of detected errors is not above the first error threshold, then the method repeats the detecting, maintaining, and determining steps. If the count of detected errors is above the first error threshold, then the method provides the processor placing the storage device into a segregated zone. | 03-28-2013 |
20110307636 | Method and apparatus for dynamically allocating queue depth by initiator - A method for maximizing I/O requests to a target port is provided. The method includes a storage controller obtaining an initiator allowed queue depth, receiving an I/O request and a current sequence identifier from an initiator logged into the target port, and determining if the initiator allowed queue depth is equal to a first queue depth corresponding to the initiator. If the initiator allowed queue depth is equal to the first queue depth then returning a queue full indication and a maximum sequence identifier equal to the current sequence identifier to the initiator. If the initiator allowed queue depth is not equal to the first queue depth then placing the I/O request on a queue, incrementing the first queue depth, and adjusting the maximum sequence identifier. Adjusting the maximum sequence identifier includes adding the current sequence identifier to the initiator allowed queue depth and subtracting the first queue depth. | 12-15-2011 |
20110252218 | Method and apparatus for choosing storage components within a tier - A method for a storage controller to write a data block to one of a plurality of storage components is provided. The storage controller receives a write request from a host computer, and determines at least a portion of the data block includes a Logical Block Address (LBA) that is not currently mapped to a physical page of storage. The storage controller calculates availability for each storage component within the plurality of storage components, and selects the storage component with a highest calculated availability from the plurality of storage components. The storage controller next determines a next available physical page within the selected storage component. Finally, the storage controller writes the at least a portion of the data block including LBAs that are not currently mapped to a physical page of storage to the next available physical page. | 10-13-2011 |
20110252210 | Method and apparatus for rebalancing storage components within a storage tier - A method for a storage controller to rebalance storage components within a storage tier is provided. The method maintains a linked list for each component, and each component includes a plurality of pages. Each linked list is ordered according to hot and cold pages and includes an identifier for each page. The method calculates a percent range of hot and cold pages for each component, and identifies a fullest and least full component. The method compares a random percent to the hot and cold percent ranges for the fullest component. If the random percent falls within the hot range, the method moves a selected hot page from the fullest component to an empty page in the least full component. If the random percent falls within the cold range, the method moves a selected cold page from the fullest component to an empty page in the least full component. | 10-13-2011 |
20110239043 | Buffer management method and apparatus for power reduction during flash operation - A method for providing reduced power consumption in a computer memory system is provided. The method includes transferring, by a memory controller coupled to a volatile memory, a non-volatile memory, and a buffer, first data from the volatile memory to the buffer. The buffer stores less data than the volatile memory and the non-volatile memory. The method also includes placing the volatile memory into self-refresh mode after transferring the first data to the buffer. The method further includes conveying the first data from the buffer to the non-volatile memory, where the amount of first data exceeds a predetermined threshold. While conveying the first data, the memory controller takes the volatile memory out of self-refresh mode when the amount of first data in the buffer reaches the predetermined threshold. The volatile memory is ready to transfer second data to the buffer when the memory controller is finished transferring the first data. | 09-29-2011 |
20110239021 | Memory calibration method and apparatus for power reduction during flash operation - A method for providing reduced power consumption in a computer memory system is provided. The method includes calibrating, by a processor, a volatile memory of the computer memory system at a first and a second operating speed, where the second operating speed is higher than the first operating speed. The method also includes operating, by a memory controller coupled to the processor and the volatile memory, the volatile memory at the second operating speed if a main power source provides power to the computer memory system. The method further includes operating, by the memory controller, the volatile memory at the first operating speed if a backup power source provides power to the memory controller and the volatile memory. The backup power source provides power to the memory controller and the volatile memory when there is a loss of main power to the computer memory system. | 09-29-2011 |
20110191644 | Method and apparatus for SAS speed adjustment - A method for maintaining reliable communication on a bidirectional communication link is provided. A receiver on the bidirectional communication link detects an error and maintains a count of detected errors. The transmitter on the bidirectional communication link polls the receiver in order to determine the count of detected errors, and performs a downshift evaluation for the bidirectional communication link. In response to performing the downshift evaluation for the bidirectional communication link, the transmitter maintains a transmission speed of the bidirectional communication link if the downshift evaluation determines that forgoing transmission speed downshift is required for the bidirectional communication link, and reduces the transmission speed of the path if the downshift evaluation determines that transmission speed downshift is required for the bidirectional communication link. | 08-04-2011 |
20110191637 | Method and apparatus for SAS speed adjustment - A method for maintaining reliable communication between a command initiator and a target device is provided. After the command initiator detects an error corresponding to the target device and a path between the command initiator and the target device, the command initiator performs a downshift evaluation. The initiator maintains a transmission speed if the downshift evaluation determines that forgoing a transmission speed downshift is required, and reduces the transmission speed if the downshift evaluation determines that transmission speed downshift is required. The command initiator then logs the downshift evaluation result and reports any transmission speed change to a user. | 08-04-2011 |
20110087792 | Data replication method and apparatus - A data storage system, device, and method are provided for replicating data between different data storage systems or appliances. More specifically, the present invention affords communications between heterogeneous data storage systems that potential employ different communication protocols. A bridging communication protocol is utilized by one or both storage systems in order to accommodate different communication protocols. Alternatively, a storage appliance connecting the data storage systems may employ the bridging communication protocol. | 04-14-2011 |
20110072104 | Pull data replication model - A data storage system, device, and method are provided for replicating data between different data storage systems or appliances. More specifically, the present invention allows an initiating data storage device to pull data from a target data storage device. Thus, the storage device that is supplying the data can act as a target and does not require the additional software inherent in being an initiator. | 03-24-2011 |
20100322053 | CONTROLLER BASED SHOCK DETECTION FOR STORAGE SYSTEMS - A data storage system controller having a shock detection sensor and methods utilizing such a controller are provided. The data storage system controller receives information or signals regarding shock events from the associated shock sensor, enabling the data storage system controller to take remedial action. The particular remedial action taken may be dependent on the severity of the detected shock event. The data storage system controller may also receive information regarding shock events from shock sensors provided separately from the data storage system controller, allowing the data storage system controller to take remedial action that is tailored to the locale of a shock event. | 12-23-2010 |
20100321818 | METHOD AND APPARATUS UTILIZING SHOCK SENSORS ON STORAGE DEVICES - A data storage system with a controller that receives shock data from a shock detection sensor and methods utilizing such a controller are provided. The data storage system controller receives information or signals regarding shock events from a shock sensor, enabling the data storage system controller to take remedial action. The particular remedial action taken may be dependent on the severity of the detected shock event. The data storage system controller may receive information regarding shock events from shock sensors provided separately from the data storage system controller, allowing the data storage system controller to take remedial action that is tailored to the locale of a shock event. | 12-23-2010 |
20100223428 | Snapshot reset method and apparatus - A method, device, and system for resetting snapshots are provided. The reset of a snapshot incorporates the traditional snapshot delete and snapshot create operations into a single operation. Additionally, a snapshot created under the reset operation may receive an array partition from a snapshot being deleted under the same snapshot reset operation thereby retaining its identifying characteristics. | 09-02-2010 |
20100064169 | Network storage appliance with integrated server and redundant storage controllers - A network storage appliance is disclosed. The appliance includes a chassis enclosing a backplane, and a server enclosed in the chassis and coupled to the backplane. The appliance also includes storage controllers enclosed in the chassis, each coupled to the backplane, which control transfer of data between the server and storage devices coupled to the storage controllers. The storage controllers also control transfer of data between the storage devices and computers networked to the appliance and external to the appliance. The storage controllers and the server comprise a plurality of hot-replaceable blades. Any one of the plurality of blades may be replaced during operation of the appliance without loss of access to the storage devices by the computers. In one embodiment, the server executes storage application software, such as backup software for backing up data on the storage devices, such as to a tape device networked to the server. | 03-11-2010 |
20100049822 | Network, storage appliance, and method for externalizing an external I/O link between a server and a storage controller integrated within the storage appliance chassis - A network storage appliance is disclosed. The storage appliance includes a port combiner that provides data communication between at least first, second, and third I/O ports; a storage controller that controls storage devices and includes the first I/O port; a server having the second I/O port; and an I/O connector for networking the third I/O port to the port combiner. A single chassis encloses the port combiner, storage controller, and server, and the I/O connector is affixed on the storage appliance. The third I/O port is external to the chassis and is not enclosed therein. In various embodiments, the port combiner comprises a FibreChannel hub comprising a series of loop resiliency circuits, or a FibreChannel, Ethernet, or Infiniband switch. In one embodiment, the port combiner, I/O ports, and server are all comprised in a single blade module for plugging into a backplane of the chassis. | 02-25-2010 |
20090327568 | Data Replication method and apparatus - A data storage system, device, and method are provided for replicating data between different data storage systems or appliances. More specifically, the present invention affords communications between heterogeneous data storage systems that potential employ different communication protocols. A bridging communication protocol is utilized by one or both storage systems in order to accommodate different communication protocols. Alternatively, a storage appliance connecting the data storage systems may employ the bridging communication protocol. | 12-31-2009 |
20090307450 | Snapshot Preserved Data Cloning - A method and device for cloning snapshots is provided. A new snapshot can be created by cloning an existing snapshot. The clone snapshot may use the preserved data of the existing snapshot, thereby obviating the need to copy the preserved data. Additionally, the clone snapshot may be created with a data structure for storing write data. Since the clone snapshot initially has no write data to store, the creation of the entire clone snapshot can be accomplished without copying any preserved data or write data from the existing snapshot, thereby increasing the efficiency with which a clone snapshot can be created. | 12-10-2009 |
20090259882 | APPARATUS AND METHOD FOR IDENTIFYING DISK DRIVES WITH UNREPORTED DATA CORRUPTION - A RAID controller uses a method to identify a storage device of a redundant array of storage devices that is returning corrupt data to the RAID controller. The method includes reading data from a location of each storage device in the redundant array a first time, and detecting that at least one storage device returned corrupt data. In response to detecting corrupt data, steps are performed for each storage device in the redundant array. The steps include reading data from the location of the storage device a second time without writing to the location in between the first and second reads, comparing the data read the first and second times, and identifying the storage device as a failing storage device if the compared data has a miscompare. Finally, the method includes updating the location of each storage device to a new location and repeating the steps for the new location. | 10-15-2009 |
20090094620 | HIGH DATA AVAILABILITY SAS-BASED RAID SYSTEM - A storage system includes two RAID controllers, each having two SAS initiators coupled to a zoning SAS expander. The expanders are linked by an inter-controller link and create a SAS ZPSDS. The expanders have PHY-to-zone mappings and zone permissions to create two distinct SAS domains such that one initiator of each RAID controller is in one domain and the other initiator is in the other domain. The disk drives are dual-ported, and each port of each drive is in a different domain. Each initiator can access every drive in the system, half directly through the local expander and half indirectly through the other RAID controller's expander via the inter-controller link. Thus, a RAID controller can continue to access a drive via the remote path in the remote domain if the drive becomes inaccessible via the local path in the local domain. | 04-09-2009 |
20080282030 | DYNAMIC INPUT/OUTPUT OPTIMIZATION WITHIN A STORAGE CONTROLLER - A system and method for optimizing accesses to storage devices based on RAID I/O request characteristics is disclosed. A current I/O request processed by a storage controller is analyzed for relative locality to a previous I/O request, and adjusted over time such that storage device accesses will be efficiently conducted with respect to sequential or random workloads. A storage device access profile is maintained for each storage device based on sequential or random locality characteristics of previous RAID I/O requests. The chunk locations of the two most recent accesses are sampled according to predetermined criteria in order to create a storage device access profile, which governs queue depth and I/O size parameters used to communicate with storage devices. By managing I/O requests to storage devices using this invention, performance of such a storage controller will be optimized for changing random and sequential workloads. | 11-13-2008 |
20080228959 | METHOD AND APPARATUS FOR OPERATING STORAGE CONTROLLER SYSTEM IN ELEVATED TEMPERATURE ENVIRONMENT - A storage controller that operates under elevated temperature conditions includes a memory, a memory controller, and a CPU that detects a temperature of the memory controller has exceeded a threshold while operating at a first frequency and responsively places the memory into self-refresh mode, reduces the memory controller frequency to a second frequency, and then takes the memory out of self-refresh mode. The clock frequency of a bus bridge or communications link circuit may also be reduced when their temperatures exceed a threshold. The bus bridge may deny access to requestors of access to the memory while the frequency is being reduced. Message transfers on a communications link between redundant storage controllers in a system may be suspended while the link frequency is being reduced. Finally, the system may fail over to one controller while the other controller reduces the frequencies and then fail back. | 09-18-2008 |
20080215808 | RAID CONTROLLER USING CAPACITOR ENERGY SOURCE TO FLUSH VOLATILE CACHE DATA TO NON-VOLATILE MEMORY DURING MAIN POWER OUTAGE - A write-caching RAID controller includes a CPU that manages transfers of posted-write data from host computers to a volatile memory and transfers of the posted-write data from the volatile memory to a redundant array of storage devices when a main power source is supplying power to the RAID controller. A memory controller transfers the posted-write data received from the host computers to the volatile memory and transfers the posted-write data from the volatile memory for transfer to the redundant array of storage devices as managed by the CPU. The memory controller flushes the posted-write data from the volatile memory to the non-volatile memory when main power fails, during which time capacitors provide power to the memory controller, volatile memory, and non-volatile memory, but not to the CPU, in order to reduce the energy storage requirements of the capacitors. During main power provision, the CPU programs the memory controller with information needed to perform the flush operation, such as the location and size of the posted-write data in the volatile memory and various flush operation characteristics. | 09-04-2008 |
20080201616 | REDUNDANT STORAGE CONTROLLER SYSTEM WITH ENHANCED FAILURE ANALYSIS CAPABILITY - A redundant storage controller system that robustly provides failure analysis information (FAI) to an operator of the system is disclosed. The system includes first and second storage controllers in communication with one another, such as via a PCI-Express link. When one of the controllers fails, the FAI is transferred from the failed controller to the surviving controller over the link. The operator issues a command to the surviving storage controller, which responsively provides the FAI. In one embodiment, the failed storage controller writes the FAI to the second storage controller. In one embodiment, each storage controller periodically writes the FAI before there is a failure. In one embodiment, the second storage controller reads the FAI from the failed storage controller. The FAI may include boot logs, crash logs, debug logs, and event logs. The FAI may also be written to a disk drive connected to the controllers. | 08-21-2008 |