Electronic storage system
AssigneeWeka.IO Ltd.
InventorsMaor Ben Dayan, Liran Zvibel, Omri Palmon
Life of this patent
Estimating the term…
Abstract
Methods and systems for electronic storage are provided. A storage system comprises a plurality of storage system front ends, a plurality of storage system back ends, and a plurality of solid state drive (SSD) agents. Each storage system front end resides on a server of a plurality of servers. Each server of the plurality of servers comprises one or more storage system back ends of the plurality of storage system back ends. Each storage system front end is able to receive I/O requests and relay information associated with the I/O requests to a relevant storage system back end. The relevant storage system back end communicates metadata associated with the I/O request to an SSD via an SSD agent.
Claims45
A method for operating a storage system, comprising:
- receiving an I/O request by a storage system front end on a first server of a plurality of servers;
- determining a relevant storage system back end, of a plurality of storage system back ends, according to the I/O request, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- relaying information associated with the I/O request to the relevant storage system back end;
- communicating metadata associated with the I/O request between the relevant storage system back end and a first solid state drive (SSD) of a plurality of SSDs via an SSD agent of a plurality of SSD agents;
- writing the information associated with the I/O request to the first SSD, wherein the I/O request is a write operation;
- and
- migrating the information associated with the I/O request from the first SSD to an object store as a background asynchronous process.
A non-transitory machine-readable storage having stored thereon, a computer program having at least one code section for networking, the at least one code section being executable by a machine for causing the machine to perform:
- receiving an I/O request by a storage system front end on a first server of a plurality of servers;
- determining a relevant storage system back end, of a plurality of storage system back ends, according to the I/O request, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- relaying information associated with the I/O request to the relevant storage system back end;
- communicating metadata associated with the I/O request between the relevant storage system back end and a first solid state drive (SSD) of a plurality of SSDs via an SSD agent of a plurality of SSD agents;
- writing the information associated with the I/O request to the first SSD, wherein the I/O request is a write operation;
- and
- migrating the information associated with the I/O request from the first SSD to an object store as a background asynchronous process.
A storage system comprising:
- a storage system front end on a first server of a plurality of servers;
- a plurality of storage system back ends, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- and
- a plurality of solid state drive (SSD) agents, the storage system front end being operable to receive an I/O request and relay information associated with the I/O request to a relevant storage system back end of the plurality of storage system back ends, wherein metadata associated with the I/O request are communicated between the relevant storage system back end and a first SSD of a plurality of SSDs via a first SSD agent of the plurality of SSD agents, wherein the first SSD agent is operable to write the information associated with the I/O request to the first SSD when the I/O request is a write operation, the information associated with the I/O request being subsequently migrated from the first SSD to an object store as a background asynchronous process.
A method for operating a storage system, comprising:
- receiving an I/O request by a storage system front end on a first server of a plurality of servers;
- determining a relevant storage system back end, of a plurality of storage system back ends, according to the I/O request, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- relaying information associated with the I/O request to the relevant storage system back end;
- communicating metadata associated with the I/O request between the relevant storage system back end and a first solid state drive (SSD) of a plurality of SSDs via an SSD agent of a plurality of SSD agents;
- writing the information associated with the I/O request to the first SSD, wherein the I/O request is a write operation;
- migrating the information associated with the I/O request from the first SSD to an object store as a background asynchronous process;
- adding a second SSDs to the plurality of SSDs of the storage system;
- and
- redistributing data already written to the plurality of SSDs, wherein the redistribution is a virtualization of the storage system across the plurality of SSDs.
A non-transitory machine-readable storage having stored thereon, a computer program having at least one code section for networking, the at least one code section being executable by a machine for causing the machine to perform:
- receiving an I/O request by a storage system front end on a first server of a plurality of servers;
- determining a relevant storage system back end, of a plurality of storage system back ends, according to the I/O request, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- relaying information associated with the I/O request to the relevant storage system back end;
- communicating metadata associated with the I/O request between the relevant storage system back end and a first solid state drive (SSD) of a plurality of SSDs via an SSD agent of a plurality of SSD agents;
- writing the information associated with the I/O request to the first SSD, wherein the I/O request is a write operation;
- migrating the information associated with the I/O request from the first SSD to an object store as a background asynchronous process;
- adding a second SSDs to the plurality of SSDs of the storage system;
- and
- redistributing data already written to the plurality of SSDs, wherein the redistribution is a virtualization of the storage system across the plurality of SSDs.
A storage system comprising:
- a storage system front end on a first server of a plurality of servers;
- a plurality of storage system back ends, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- a plurality of solid state drive (SSD) agents, the storage system front end being operable to receive an I/O request and relay information associated with the I/O request to a relevant storage system back end of the plurality of storage system back ends, wherein metadata associated with the I/O request are communicated between the relevant storage system back end and a first SSD of a plurality of SSDs via a first SSD agent of the plurality of SSD agents, wherein the first SSD agent is operable to write the information associated with the I/O request to the first SSD when the I/O request is a write operation, the information associated with the I/O request being subsequently migrated from the first SSD to an object store as a background asynchronous process;
- and
- a second SSD, wherein the second SSD is added to the plurality of SSDs of the storage system and data already written to the plurality of SSDs is redistributed, wherein the redistribution is a virtualization of the storage system across the plurality of SSDs comprising the second SSD.
A method for operating a storage system, comprising:
- receiving an I/O request by a storage system front end on a first server of a plurality of servers;
- determining a relevant storage system back end, of a plurality of storage system back ends, according to the I/O request, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- relaying information associated with the I/O request to the relevant storage system back end;
- communicating metadata associated with the I/O request between the relevant storage system back end and a first solid state drive (SSD) of a plurality of SSDs via an SSD agent of a plurality of SSD agents;
- writing the information associated with the I/O request to the first SSD, wherein the I/O request is a write operation;
- migrating the information associated with the I/O request from the first SSD to an object store as a background asynchronous process;
- detecting a failure of the first SSD;
- rebuilding data of the first SSD via data distributed across all SSDs of the plurality of SSDs that have not failed;
- and
- load balancing the data distributed across all SSDs of the plurality of SSDs that have not failed.
A non-transitory machine-readable storage having stored thereon, a computer program having at least one code section for networking, the at least one code section being executable by a machine for causing the machine to perform:
- receiving an I/O request by a storage system front end on a first server of a plurality of servers;
- determining a relevant storage system back end, of a plurality of storage system back ends, according to the I/O request, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- relaying information associated with the I/O request to the relevant storage system back end;
- communicating metadata associated with the I/O request between the relevant storage system back end and a first solid state drive (SSD) of a plurality of SSDs via an SSD agent of a plurality of SSD agents;
- writing the information associated with the I/O request to the first SSD, wherein the I/O request is a write operation;
- migrating the information associated with the I/O request from the first SSD to an object store as a background asynchronous process;
- detecting a failure of the first SSD;
- rebuilding data of the first SSD via data distributed across all SSDs of the plurality of SSDs that have not failed;
- and
- load balancing the data distributed across all SSDs of the plurality of SSDs that have not failed.
A storage system comprising:
- a storage system front end on a first server of a plurality of servers;
- a plurality of storage system back ends, each server of the plurality of servers comprising one or more storage system back ends of the plurality of storage system back ends, wherein the plurality of storage system back ends are organized into a plurality of erasure-coded stripes, and wherein each erasure-coded stripe of the plurality of erasure-coded stripes spans more than one server of the plurality of servers, and wherein each server spanned by an erasure-coded stripe is located in a different failure domain;
- and
- a plurality of solid state drive (SSD) agents, the storage system front end being operable to receive an I/O request and relay information associated with the I/O request to a relevant storage system back end of the plurality of storage system back ends, wherein metadata associated with the I/O request are communicated between the relevant storage system back end and a first SSD of a plurality of SSDs via a first SSD agent of the plurality of SSD agents, wherein the first SSD agent is operable to write the information associated with the I/O request to the first SSD when the I/O request is a write operation, the information associated with the I/O request being subsequently migrated from the first SSD to an object store as a background asynchronous process, wherein the detection of a failure of the first SSD causes data of the first SSD to be rebuilt via data that is distributed across all SSDs of the plurality of SSDs that have not failed, the distributed data being load balanced across all SSDs of the plurality of SSDs that have not failed.
Dependencies are inferred from the claim text.