Patents Assigned to Fusion-io
-
Patent number: 8103137Abstract: Leaf switches and spine switches in a Clos network are interconnected by optical fibers. The network enables large numbers of servers or other apparatus to communicate with each other with minimal delay and minimal power consumption.Type: GrantFiled: April 1, 2009Date of Patent: January 24, 2012Assignee: Fusion-IO, Inc.Inventors: Peter E. Kirkpatrick, Jean-Marc Verdiell, Marc Epitaux
-
Publication number: 20120011340Abstract: A virtual storage layer (VSL) for a non-volatile storage device presents a large, logical address space having a logical capacity that may exceed the storage capacity of the non-volatile storage device. The VSL implements persistent storage operations within the logical address space; storage operations performed within the logical address space may be persisted on the non-volatile storage device. The VSL maintains storage metadata to allocate ranges of the logical address space to storage entities. The VSL provides for allocation of contiguous logical address ranges, which may be implemented by segmenting logical identifiers into a first portion referencing storage entities, and a second portion referencing storage entity offsets. The VSL persists data on the non-volatile storage device in a sequential, log-based format. Accordingly, storage clients, such as file systems, databases, and other applications, may delegate logical allocations, physical storage bindings, and/or crash-recovery to the VSL.Type: ApplicationFiled: January 6, 2011Publication date: January 12, 2012Applicant: FUSION-IO, INC.Inventors: David Flynn, Jonathan Thatcher
-
Publication number: 20120005443Abstract: An apparatus, system, and method are disclosed for coordinating storage requests in a multi-processor/multi-thread environment. An append/invalidate module generates a first append data storage command from a first storage request and a second append data storage command from a second storage request. The storage requests overwrite existing data with first and second data including where the first and second data have at least a portion of overlapping data. The second storage request is received after the first storage request. The append/invalidate module updates an index by marking data being overwritten as invalid. A restructure module updates the index based on the first data and updates the index based on the second data. The updated index is organized to indicate that the second data is more current than the first data regardless of processing order. The modules prevent access to the index until the modules have completed updating the index.Type: ApplicationFiled: September 16, 2011Publication date: January 5, 2012Applicant: FUSION-IO, INC.Inventors: David Flynn, Michael Zappe, Jonathan Thatcher
-
Publication number: 20110314354Abstract: An apparatus, system, and method are disclosed for providing error correction for a data storage device. A determination module determines an error-correcting code (“ECC”) characteristic of the data storage device. An ECC module validates requested data read from the data storage device using a hardware ECC decoder. In response to the requested data satisfying a correction threshold, a software ECC decoder module validates the data using a software ECC decoder. The software ECC decoder is configured according to the ECC characteristic of the data storage device.Type: ApplicationFiled: June 15, 2011Publication date: December 22, 2011Applicant: Fusion-io, Inc.Inventor: Jeremy Fillingim
-
Publication number: 20110307758Abstract: An apparatus, system, and method are disclosed for providing error correction for a data storage device. A determination module determines a set of error-correcting code (“ECC”) characteristics for a data storage device. The set of ECC characteristics includes at least one attribute selected from a plurality of supported attributes. A decoder configuration module configures an ECC decoder to operate in compliance with the set of ECC characteristics. An ECC module validates requested data read from the data storage device using the ECC decoder.Type: ApplicationFiled: June 15, 2011Publication date: December 15, 2011Applicant: FUSION-IO, INC.Inventor: Jeremy Fillingim
-
Patent number: 8074011Abstract: An apparatus, system, and method are disclosed for storage space recovery after reaching a read count limit. A read module reads data in a storage division of solid-state storage. A read counter module then increments a read counter corresponding to the storage division. A read counter limit module determines if the read count exceeds a maximum read threshold, and if so, a storage division selection module selects the corresponding storage division for recovery. A data recovery module reads valid data packets from the selected storage division, stores the valid data packets in another storage division of the solid-state storage, and updates a logical index with a new physical address of the valid data.Type: GrantFiled: November 18, 2008Date of Patent: December 6, 2011Assignee: Fusion-IO, Inc.Inventors: David Flynn, Bert Lagerstedt, John Strasser, Jonathan Thatcher, John Walker, Michael Zappe, Stephan Uphoff, Joshua Aune, Kevin Vigor
-
Publication number: 20110296133Abstract: An apparatus, system, and method are disclosed for implementing conditional storage operations. Storage clients access and allocate portions of an address space of a non-volatile storage device. A conditional storage request is provided, which causes data to be stored to the non-volatile storage device on the condition that the address space of the device can satisfy the entire request. If only a portion of the request can be satisfied, the conditional storage request may be deferred or fail. An atomic storage request is provided, which may comprise one or more storage operations. The atomic storage request succeeds if all of the one or more storage operations are complete successfully. If one or more of the storage operations fails, the atomic storage request is invalidated, which may comprise deallocating logical identifiers of the request and/or invalidating data on the non-volatile storage device pertaining to the request.Type: ApplicationFiled: May 13, 2011Publication date: December 1, 2011Applicant: Fusion-io, Inc.Inventors: David Flynn, David Nellans, Xiangyong Ouyang
-
Publication number: 20110296277Abstract: An apparatus, system, and method are disclosed for a front-end, distributed redundant array of independent drives (“RAID”). A storage request receiver module receives a storage request to store object or file data in a set of autonomous storage devices forming a RAID group. The storage devices independently receive storage requests from a client over a network, and one or more of the storage devices are designated as parity-mirror storage devices for a stripe. The striping association module calculates a stripe pattern for the data. Each stripe includes N data segments, each associated with N storage devices. The parity-mirror association module associates a set of the N data segments with one or more parity-mirror storage devices. The storage request transmitter module transmits storage requests to each storage device. Each storage request is sufficient to store onto the storage device the associated data segments. The storage requests are substantially free of data.Type: ApplicationFiled: August 5, 2011Publication date: December 1, 2011Applicant: FUSION-IO, INC.Inventors: David Flynn, John Strasser, Jonathan Thatcher, Michael Zappe
-
Patent number: 8069383Abstract: An apparatus, system, and method are disclosed for bad block remapping. A bad block identifier module identifies one or more data blocks on a solid-state storage element as bad blocks. A log update module writes at least a location of each bad block identified by the bad block identifier module into each of two or more redundant bad block logs. A bad block mapping module accesses at least one bad block log during a start-up operation to create in memory a bad block map. The bad block map includes a mapping between the bad block locations in the bad block log and a corresponding location of a replacement block for each bad block location. Data is stored in each replacement block instead of the corresponding bad block. The bad block mapping module creates the bad block map using one of a replacement block location and a bad block mapping algorithm.Type: GrantFiled: April 6, 2009Date of Patent: November 29, 2011Assignee: Fusion-IO, Inc.Inventors: David Flynn, John Strasser, Jonathan Thatcher, David Atkisson, Michael Zappe, Joshua Aune, Kevin Vigor
-
Publication number: 20110289267Abstract: An apparatus, system, and method are disclosed for solid-state storage as cache for high-capacity, non-volatile storage. The apparatus, system, and method are provided with a plurality of modules including a cache front-end module and a cache back-end module. The cache front-end module manages data transfers associated with a storage request. The data transfers between a requesting device and solid-state storage function as cache for one or more HCNV storage devices, and the data transfers may include one or more of data, metadata, and metadata indexes. The solid-state storage may include an array of non-volatile, solid-state data storage elements. The cache back-end module manages data transfers between the solid-state storage and the one or more HCNV storage devices.Type: ApplicationFiled: August 5, 2011Publication date: November 24, 2011Applicant: FUSION-IO, INC.Inventors: David Flynn, John Strasser, Jonathan Thatcher, Michael Zappe
-
Patent number: 8046500Abstract: An apparatus, system, and method are disclosed for coordinating storage requests in a multi-processor/multi-thread environment. An append/invalidate module generates a first append data storage command from a first storage request and a second append data storage command from a second storage request. The storage requests overwrite existing data with first and second data including where the first and second data have at least a portion of overlapping data. The second storage request is received after the first storage request. The append/invalidate module updates an index by marking data being overwritten as invalid. A restructure module updates the index based on the first data and updates the index based on the second data. The updated index is organized to indicate that the second data is more current than the first data regardless of processing order. The modules prevent access to the index until the modules have completed updating the index.Type: GrantFiled: October 7, 2010Date of Patent: October 25, 2011Assignee: Fusion-io, Inc.Inventors: David Flynn, Michael Zappe, Jonathan Thatcher
-
Publication number: 20110258512Abstract: An apparatus, system, and method are disclosed for storing data on a solid-state storage device. A method includes receiving a storage request to store data on the solid-state storage device, representing the data in an object entry in an object index maintained by a solid-state storage device controller, storing the data as one or more object data segments on the solid-state storage device, and referencing in the object entry the one or more object data segments on the solid-state storage device.Type: ApplicationFiled: June 30, 2011Publication date: October 20, 2011Applicant: FUSION-IO, INC.Inventors: David Flynn, David Atkisson, Bert Lagerstedt, John Strasser, Jonathan Thatcher, Michael Zappe
-
Publication number: 20110258391Abstract: An apparatus, system, and method are disclosed for destaging cached data. A controller detects one or more write requests to store data in a backing store. The cache controller sends the write requests to a storage controller for a nonvolatile solid-state storage device. The storage controller receives the write requests and caches the data associated with the write requests in the nonvolatile solid-state storage device by appending the data to a log of the nonvolatile solid-state storage device. The log includes a sequential, log-based structure preserved in the nonvolatile solid-state storage device. The cache controller receives at least a portion of the data from the storage controller in a cache log order and destages the data to the backing store in the cache log order. The cache log order comprises an order in which the data was appended to the log of the nonvolatile solid-state storage device.Type: ApplicationFiled: April 15, 2011Publication date: October 20, 2011Applicant: FUSION-IO, INC.Inventors: David Atkisson, David Flynn
-
Publication number: 20110252190Abstract: An apparatus, system, and method are disclosed for managing data with an empty data segment directive at the requesting device. The apparatus, system, and method include a token directive generation module and a token directive transmission module. The token directive generation module generates a storage request with a token directive. The token directive includes a request to store on the storage device a data segment token. The token directive substitutes for a series of repeated, identical characters or a series of repeated, identical character strings to be stored as a data segment. The token directive includes at least a data segment identifier and a data segment length. The data segment token and the token directive are substantially free from data of the data segment. The token directive transmission module transmits the token directive to the storage device.Type: ApplicationFiled: May 27, 2011Publication date: October 13, 2011Applicant: FUSION-IO, INC.Inventors: David Flynn, Jonathan Thatcher, Michael Zappe
-
Patent number: 8019940Abstract: An apparatus, system, and method are disclosed for a front-end, distributed redundant array of independent drives (“RAID”). A storage request receiver module receives a storage request to store object or file data in a set of autonomous storage devices forming a RAID group. The storage devices independently receive storage requests from a client over a network, and one or more of the storage devices are designated as parity-mirror storage devices for a stripe. The striping association module calculates a stripe pattern for the data. Each stripe includes N data segments, each associated with N storage devices. The parity-mirror association module associates a set of the N data segments with one or more parity-mirror storage devices. The storage request transmitter module transmits storage requests to each storage device. Each storage request is sufficient to store onto the storage device the associated data segments. The storage requests are substantially free of data.Type: GrantFiled: December 6, 2007Date of Patent: September 13, 2011Assignee: Fusion-io, Inc.Inventors: David Flynn, John Strasser, Jonathan Thatcher, Michael Zappe
-
Patent number: 8015440Abstract: An apparatus, system, and method are disclosed for data storage with progressive redundant array of independent drives (“RAID”). A storage request receiver module, a striping module, a parity-mirror module, and a parity progression module are included. The storage request receiver module receives a request to store data of a file or of an object. The striping module calculates a stripe pattern for the data. The stripe pattern includes one or more stripes, and each stripe includes a set of N data segments. The striping module writes the N data segments to N storage devices. Each data segment is written to a separate storage device within a set of storage devices assigned to the stripe. The parity-mirror module writes a set of N data segments to one or more parity-mirror storage devices within the set of storage devices. The parity progression module calculates a parity data segment on each parity-mirror device in response to a storage consolidation operation, and stores the parity data segments.Type: GrantFiled: December 6, 2007Date of Patent: September 6, 2011Assignee: Fusion-IO, Inc.Inventors: David Flynn, David Atkisson, Jonathan Thatcher, Michael Zappe
-
APPARATUS, SYSTEM, AND METHOD FOR DETERMINING A READ VOLTAGE THRESHOLD FOR SOLID-STATE STORAGE MEDIA
Publication number: 20110182119Abstract: An apparatus, system, and method are disclosed for determining a read voltage threshold for solid-state storage media. A data set read module reads a data set from storage cells of solid-state storage media. The data set is originally stored in the storage cells with a known bias. A deviation module determines that a read bias for the data set deviates from the known bias. A direction module determines a direction of deviation for the data set. The direction of deviation is based on a difference between the read bias of the data set and the known bias. An adjustment module adjusts a read voltage threshold for the storage cells of the solid-state storage media based on the direction of deviation.Type: ApplicationFiled: January 27, 2011Publication date: July 28, 2011Applicant: FUSION-IO, INC.Inventors: John Strasser, David Flynn, Jeremy Fillingim, Robert Wood -
Publication number: 20110179225Abstract: An apparatus, system, and method are disclosed for a shared, front-end, distributed redundant array of independent drives (“RAID”). A multiple storage request receiver module receives at least two storage requests from at least two clients to store file or object data in one or more storage devices of a storage device set. The storage requests are concurrent and have at least a portion of the data in common. The storage device set includes autonomous storage devices forming a RAID group. Each storage device is capable of independently receiving storage requests from a client over a network. A striping module calculates a stripe pattern and writes N data segments per stripe to N storage devices. A parity-mirror module writes a set of N data segments to parity-mirror storage devices. A sequencer module ensures completion of a first storage request prior to executing a second storage request.Type: ApplicationFiled: March 29, 2011Publication date: July 21, 2011Applicant: FUSION-IO, INC.Inventors: David Flynn, Jonathan Thatcher, Michael Zappe
-
Publication number: 20110157992Abstract: An apparatus, system, and method are disclosed for improving performance in a non-volatile solid-state storage device. Non-volatile solid-state storage media includes a plurality of storage cells. The plurality of storage cells is configured such that storage cells in an empty state store initial binary values that satisfy a bias. An input module receives source data for storage in the plurality of storage cells of the non-volatile solid-state storage media. Bits of the source data have a source bias that is different from the bias of the plurality of storage cells. A bit biasing module biases the bits of the source data toward the bias of the plurality of storage cells. A write module writes the biased source data to the plurality of storage cells of the non-volatile solid-state storage media.Type: ApplicationFiled: December 29, 2010Publication date: June 30, 2011Applicant: FUSION-IO, INC.Inventors: John Strasser, Jonathan Thatcher, Jeremy Fillingim, David Flynn, Lance Smith, Robert Wood, James Peterson
-
Patent number: 7934055Abstract: An apparatus, system, and method are disclosed for a shared, front-end, distributed redundant array of independent drives (“RAID”). A multiple storage request receiver module receives at least two storage requests from at least two clients to store file or object data in one or more storage devices of a storage device set. The storage requests are concurrent and have at least a portion of the data in common. The storage device set includes autonomous storage devices forming a RAID group. Each storage device is capable of independently receiving storage requests from a client over a network. A striping module calculates a stripe pattern and writes N data segments per stripe to N storage devices. A parity-mirror module writes a set of N data segments to parity-mirror storage devices. A sequencer module ensures completion of a first storage request prior to executing a second storage request.Type: GrantFiled: December 6, 2007Date of Patent: April 26, 2011Assignee: Fusion-Io, IncInventors: David Flynn, Jonathan Thatcher, Michael Zappe