Patents Assigned to Nimble Storage, Inc.
  • Patent number: 9697133
    Abstract: A storage device made up of multiple storage media is configured such that one such media serves as a cache for data stored on another of such media. The device includes a controller configured to manage the cache by consolidating information concerning obsolete data stored in the cache with information concerning data no longer desired to be stored in the cache, and erase segments of the cache containing one or more of the blocks of obsolete data and the blocks of data that are no longer desired to be stored in the cache to produce reclaimed segments of the cache.
    Type: Grant
    Filed: July 25, 2016
    Date of Patent: July 4, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventor: Umesh Maheshwari
  • Patent number: 9684467
    Abstract: Methods, systems, and programs are presented for managing a storage device memory. One method includes an operation for receiving a request to pin a volume stored in the storage device. The device includes disk storage and a solid state drive (SSD) cache, where pinned volumes in the storage device have all active volume data in the SSD cache. Further, the method includes an operation for determining the maximum amount of pinnable space in the SSD cache, the maximum amount of pinnable space being calculated based on the sizes of the disk storage and the SSD cache. Further, the method includes operations for determining the available pinning space, which is the maximum amount of pinnable space minus the current amount of pinned data in the SSD cache, and for granting the request to pin the volume when the available pinning space is greater than or equal to a size of the volume.
    Type: Grant
    Filed: July 29, 2015
    Date of Patent: June 20, 2017
    Assignee: Nimble Storage, Inc.
    Inventors: Senthil Kumar Ramamoorthy, Pradeep Shetty, Mukul Kumar Singh, Hy Vu
  • Patent number: 9665440
    Abstract: Techniques are described herein which minimize the impact of virtual machine snapshots on the performance virtual machines and hypervisors. In the context of a volume snapshot which may involve (i) taking virtual machine snapshots of all virtual machines associated with the volume, (ii) taking the volume snapshot, and (iii) removing all the virtual machine snapshots, the virtual machine snapshots may be created in a first order and removed in a second order. Specifically, snapshots for busy virtual machines (i.e., virtual machines with higher disk write activity) may be created last and removed first. Consequently, snapshots of busy virtual machines are retained for shorter periods of time, thereby minimizing the effect of virtual machine snapshots on those virtual machines (and their associated hypervisors) that would be most negatively impacted by virtual machine snapshots.
    Type: Grant
    Filed: July 25, 2016
    Date of Patent: May 30, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventors: Raja Shekar Chelur, Juhsun Wang, Gaurav Ranganathan
  • Patent number: 9665495
    Abstract: A storage device includes a flash memory-based cache for a hard disk-based storage device and a controller that is configured to limit the rate of cache updates through a variety of mechanisms, including determinations that the data is not likely to be read back from the storage device within a time period that justifies its storage in the cache, compressing data prior to its storage in the cache, precluding storage of sequentially-accessed data in the cache, and/or throttling storage of data to the cache within predetermined write periods and/or according to user instruction.
    Type: Grant
    Filed: November 10, 2016
    Date of Patent: May 30, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventors: Umesh Maheshwari, Varun Mehta
  • Patent number: 9665497
    Abstract: A storage device made up of multiple storage media is configured such that one such media serves as a cache for data stored on another of such media. The device includes a controller configured to manage the cache by consolidating information concerning obsolete data stored in the cache with information concerning data no longer desired to be stored in the cache, and erase segments of the cache containing one or more of the blocks of obsolete data and the blocks of data that are no longer desired to be stored in the cache to produce reclaimed segments of the cache.
    Type: Grant
    Filed: July 25, 2016
    Date of Patent: May 30, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventor: Umesh Maheshwari
  • Patent number: 9619164
    Abstract: Described herein are techniques for arranging a plurality of M.2 solid state drive (SSD) modules and flash storage elements into a compact form factor. On a first side of an SSD sled, a plurality of M.2 SSD modules may be communicatively coupled to a port expander. On a second side of the SSD sled, a plurality of flash storage elements (not packaged into M.2 SSD modules) may be present. A plurality of SSD sleds (with the above-described characteristics) may be sized so as to collectively fit into a single hard disk drive (HDD) compatible compartment of a chassis.
    Type: Grant
    Filed: March 5, 2015
    Date of Patent: April 11, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventors: Varun Mehta, Tom McKnight
  • Patent number: 9600337
    Abstract: Methods, systems, and computer programs are presented for allocating CPU cycles and disk Input/Output's (IOs) to resource-creating processes based on dynamic weights that change according to the current percentage of resource utilization in the storage device. One method includes operations for assigning a first weight to a processing task that increases resource utilization of a resource for processing incoming input/output (IO) requests, and for assigning a second weight to a generating task that decreases the resource utilization of the resource. Further, the method includes an operation for dynamically adjusting the second weight based on the current resource utilization in the storage system. Additionally, the method includes an operation for allocating the CPU cycles and disk IOs to the processing task and to the generating task based on their respective first weight and second weight.
    Type: Grant
    Filed: October 30, 2015
    Date of Patent: March 21, 2017
    Assignee: Nimble Storage, Inc.
    Inventors: Gurunatha Karaje, Tomasz Barszczak, Vanco Buca, Ajay Gulati, Umesh Maheshwari
  • Patent number: 9594614
    Abstract: Described herein are methods for transitioning control between a first and second controller of a storage system. In such transition, the first controller transmits a message to a memory element shared by the first and second controllers, the message capable of notifying the second controller of an imminent failure of the first controller. The second controller receives the message from the shared memory element, the message notifying the second controller of an imminent failure of the first controller. Subsequent to transmitting the message to the shared memory element, the first controller becomes unavailable to facilitate access to the storage devices of the storage system. Subsequent to receiving the message from the shared memory element, the second controller becomes available to facilitate access to the storage devices of the storage system.
    Type: Grant
    Filed: August 30, 2013
    Date of Patent: March 14, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventors: Vikas Gupta, Ashutosh Tripathi, Bob Fozard, Tomasz Barszczak
  • Patent number: 9588919
    Abstract: Described herein are techniques for cancelling I/O requests. Initially, virtual memory of an application is assigned to a first portion of memory. The application may issue a read request to an external device. The external device is instructed to record any response to the read request in the first portion of memory. The read request may be cancelled as follows. The virtual memory of the application may be re-assigned to a second portion of the memory. If and when the external device finishes processing the read request, the external device's response to the read request may still be saved in the first portion of memory, even though the read request has been cancelled. Such action of the external device would ordinarily corrupt the virtual memory of the application, but due to the memory re-assignment, no corruption of the virtual memory occurs. Similar techniques may be applied to cancel write requests.
    Type: Grant
    Filed: November 28, 2014
    Date of Patent: March 7, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventors: Anil Nanduri, Chunqi Han, Murali Krishna Vishnumolakala
  • Patent number: 9563509
    Abstract: Described herein are techniques for storing data in a redundant manner on a plurality of storage units of a storage system. While all of the storage units are operating without failure, only error-correction blocks are stored on a first one of the storage units, while a combination of data blocks and error-correction blocks are stored on a second one of the storage units. Upon failure of the second storage unit, one or more data blocks and one or more error-correction blocks formerly stored on the second storage unit are reconstructed, and the one or more reconstructed data blocks and the one or more reconstructed error-correction blocks are stored on the first storage unit.
    Type: Grant
    Filed: July 15, 2014
    Date of Patent: February 7, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventors: Chunqi Han, Anil Nanduri, Murali Krishna Vishnumolakala
  • Patent number: 9563378
    Abstract: A storage management application of a storage array is operable to create a new volume on the storage device array, and to automatically configure, responsive to user selection of an application protection profile, data protection services for application data to be stored on the volume, and/or, responsive to user selection of an application performance profile, application specific performance parameters. The application protection profile specifies scheduling and replication of snapshots for application data to be stored on the volume, and the application performance profile specifies performance parameters such as setting a block size, enabling or modifying a data caching algorithm, turning on or modifying data compression, etc. The scheduling, replication and/or application performance may be managed by a daemon associated with the storage management application which communicates with an agent associated with an application server on which the application executes.
    Type: Grant
    Filed: March 3, 2016
    Date of Patent: February 7, 2017
    Assignee: NIMBLE STORAGE, INC.
    Inventors: Varun Mehta, Rod Bagg, Vikas Gupta, Dan Leary, Ajay Singh, Hector Yuen
  • Patent number: 9501417
    Abstract: A storage device includes a flash memory-based cache for a hard disk-based storage device and a controller that is configured to limit the rate of cache updates through a variety of mechanisms, including determinations that the data is not likely to be read back from the storage device within a time period that justifies its storage in the cache, compressing data prior to its storage in the cache, precluding storage of sequentially-accessed data in the cache, and/or throttling storage of data to the cache within predetermined write periods and/or according to user instruction.
    Type: Grant
    Filed: November 30, 2015
    Date of Patent: November 22, 2016
    Assignee: Nimble Storage, Inc.
    Inventors: Umesh Maheshwari, Varun Mehta
  • Patent number: 9489141
    Abstract: In an all-flash storage array, write requests can take about 9 to 10 times longer than a read request of the same size. There could be several problems when reading or writing from all-flash storage, such as a large write request slowing down small read requests, or other write requests. Also, a large read request may slow down smaller read requests by filling the incoming requests queue. In one implementation, a determination is made on what is the maximum size of a request to flash storage that improves the throughput of a flash chip (e.g., write requests beyond a certain size do not improve throughput). A chunklet is defined as a block of data having the calculated maximum size. As write requests come in, the write requests are broken into chunklets, and then the chunklets are queued for processing by the flash chip. One chunklet is processed at a time per write request.
    Type: Grant
    Filed: December 18, 2014
    Date of Patent: November 8, 2016
    Assignee: Nimble Storage, Inc.
    Inventors: Anil Kumar Nanduri, Murali Krishna Vishnumolakala
  • Patent number: 9483187
    Abstract: Methods, systems, and computer programs are presented for allocating CPU cycles in a storage system. One method includes operations for receiving requests to be processed, and for associating each request to one task. A foreground task is for processing input/output requests, and the foreground task includes one or more flows. Each flow is associated with a queue and a flow counter value, where each queue is configured to hold requests. The method further includes an operation for selecting one task for processing by the CPU based on an examination of the number of cycles processed by the CPU for each task. When the selected task is the foreground task, the flow having the lowest flow counter is selected. The CPU processes a request from the queue of the selected flow, and the flow counter of the selected flow is increased based on the data consumption of the processed task.
    Type: Grant
    Filed: June 23, 2015
    Date of Patent: November 1, 2016
    Assignee: Nimble Storage, Inc.
    Inventors: Gurunatha Karaje, Ajay Gulati, Umesh Maheshwari, Tomasz Barszczak, Vanco Buca
  • Patent number: 9442937
    Abstract: Techniques are described herein which minimize the impact of virtual machine snapshots on the performance virtual machines and hypervisors. In the context of a volume snapshot which may involve (i) taking virtual machine snapshots of all virtual machines associated with the volume, (ii) taking the volume snapshot, and (iii) removing all the virtual machine snapshots, the virtual machine snapshots may be created in a first order and removed in a second order. Specifically, snapshots for busy virtual machines (i.e., virtual machines with higher disk write activity) may be created last and removed first. Consequently, snapshots of busy virtual machines are retained for the shorter periods of time, thereby minimizing the effect of virtual machine snapshots on those virtual machines (and their associated hypervisors) that would be most negatively impacted by virtual machine snapshots.
    Type: Grant
    Filed: June 26, 2015
    Date of Patent: September 13, 2016
    Assignee: Nimble Storage, Inc.
    Inventors: Raja Shekar Chelur, Juhsun Wang, Gaurav Ranganathan
  • Patent number: 9436392
    Abstract: Methods and systems are presented for allocating CPU cycles among processes in a storage system. One method includes operations for maintaining segments in a first memory, each segment including blocks, and for maintaining a block temperature for each block in a second memory. The first memory is a read-cache where one segment is written at a time, and each block is readable from the first memory without reading the corresponding complete segment. The block temperature is based on the frequency of access to the respective block, and a segment temperature is based on the block temperature of its blocks. Additionally, the segment with the lowest segment temperature is selected for eviction from the second memory, and blocks in the selected segment with a block temperature greater than a threshold temperature are identified. The selected segment is evicted, and a segment with the identified blocks is written to the first memory.
    Type: Grant
    Filed: February 17, 2015
    Date of Patent: September 6, 2016
    Assignee: Nimble Storage, Inc.
    Inventors: Pradeep Shetty, Sandeep Karmarkar, Senthil Kumar Ramamoorthy, Umesh Maheshwari, Vanco Buca
  • Patent number: 9430377
    Abstract: A storage device made up of multiple storage media is configured such that one such media serves as a cache for data stored on another of such media. The device includes a controller configured to manage the cache by consolidating information concerning obsolete data stored in the cache with information concerning data no longer desired to be stored in the cache, and erase segments of the cache containing one or more of the blocks of obsolete data and the blocks of data that are no longer desired to be stored in the cache to produce reclaimed segments of the cache.
    Type: Grant
    Filed: February 24, 2016
    Date of Patent: August 30, 2016
    Assignee: Nimble Storage, Inc.
    Inventor: Umesh Maheshwari
  • Patent number: 9348682
    Abstract: Described herein are techniques for transitioning control between a first and second controller of a storage system. In such transition, the first controller transmits a message to a memory element shared by the first and second controllers, the message capable of notifying the second controller of an imminent failure of the first controller. The second controller receives the message from the shared memory element, the message notifying the second controller of an imminent failure of the first controller. Subsequent to transmitting the message to the shared memory element, the first controller becomes unavailable to facilitate access to the storage devices of the storage system. Subsequent to receiving the message from the shared memory element, the second controller becomes available to facilitate access to the storage devices of the storage system.
    Type: Grant
    Filed: August 27, 2014
    Date of Patent: May 24, 2016
    Assignee: Nimble Storage, Inc.
    Inventors: Vikas Gupta, Ashutosh Tripathi, Bob Fozard, Tomasz Barszczak
  • Patent number: 9336152
    Abstract: Described herein are methods, systems and machine-readable media for simulating a FIFO cache using a Bloom filter ring, which includes a plurality of Bloom filters arranged in a circular log. New elements are registered in the Bloom filter at the head of the circular log. When the Bloom filter at the head of the circular log is filled to its capacity, membership information associated with old elements in the Bloom filter at the tail of the circular log is evicted (simulating FIFO cache behavior), and the head and tail of the log are advanced. The Bloom filter ring is used to determine cache statistics (e.g., cache hit, cache miss) of a FIFO cache of various sizes. In response to simulation output specifying cache statistics for FIFO cache of various sizes, a FIFO cache is optimally sized.
    Type: Grant
    Filed: January 20, 2016
    Date of Patent: May 10, 2016
    Assignee: Nimble Storage, Inc.
    Inventors: Senthil Kumar Ramamoorthy, Umesh Maheshwari
  • Patent number: 9317368
    Abstract: A storage management application of a storage array is operable to create a new volume on the storage device array, and to automatically configure, responsive to user selection of an application protection profile, data protection services for application data to be stored on the volume, and/or, responsive to user selection of an application performance profile, application specific performance parameters. The application protection profile specifies scheduling and replication of snapshots for application data to be stored on the volume, and the application performance profile specifies performance parameters such as setting a block size, enabling or modifying a data caching algorithm, turning on or modifying data compression, etc. The scheduling, replication and/or application performance may be managed by a daemon associated with the storage management application which communicates with an agent associated with an application server on which the application executes.
    Type: Grant
    Filed: July 14, 2010
    Date of Patent: April 19, 2016
    Assignee: Nimble Storage, Inc.
    Inventors: Varun Mehta, Rod Bagg, Vikas Gupta, Dan Leary, Ajay Singh, Hector Yuen