# US 10,503,413 B1 · Methods and apparatus for SAN having local server storage including SSD block-based storage

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,413 B1
- Document ID: US10503413B1
- Status: Granted
- Kind: B1
- Application number: 15/393,337
- Filed: 2016-12-29
- Granted: 2019-12-10
- Earliest claimed: 2016-06-01
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Yochai Gal; Niko Farhi; Nir Sela; Yaniv Kaul
- Web page: https://patentgrep.com/patent/US10503413B1

## CPC

- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0622: {in relation to access}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods and apparatus for a system including a storage array with solid state drive (SSD) storage and a controller coupled to the SSD storage. The controller may include a data system to perform input/output operations to the SSD storage, a control system coupled to the data system to control an address to hash value mapping, a routing system coupled to the control system to process commands from remote hosts, segment data into data blocks, and generate the hash values for the data blocks, and a data server associated with the routing system to receive read and write commands from a data client running on a remote host, wherein the storage array contributes a portion of the SSD storage to storage pools of a distributed elastic storage system.

## Claims

### Claim 1

A system, comprising:
a storage array comprising:
solid state drive (SSD) storage;
a controller coupled to the SSD storage, the controller comprising:
a control system configured to:
control a mapping table of an address to a corresponding hash value;
a routing system coupled to the control system configured to receive a read command from a remote host by: instantiating a first thread that is configured to poll a TCP/IP socket and store any partial data associated with the read command in a buffer until the entire read command is stored into the buffer, and instantiating a second thread that is configured to execute the read command after the entire read command has been stored into the buffer;
a data system coupled to the control system configured to:
perform input/output operations to the SSD storage based upon at least one of physical addresses of data blocks and hash values of the data blocks; and
a data server associated with the routing system configured to:
receive the read and write commands from a data client running on the remote host,
wherein the storage array contributes a portion of the SSD storage to storage pools of a distributed elastic storage system,
wherein at least one logical volume of the storage pools is maintained as private such that the logical volume is available only to a corresponding remote host via a corresponding routing system.

### Claim 2 (depends on 1)

The system according to claim 1, wherein the data server is embedded in the routing system.

### Claim 3 (depends on 1)

The system according to claim 1, Wherein the storage array is configured to perform data deduplication.

### Claim 4 (depends on 1)

The system according to claim 1, further including establishing mirroring of storage volumes formed from the SSD storage of the storage array with storage volumes of a further storage array having SSD storage, terminating the mirroring, and decommitting space for the mirrored storage volumes on the storage array.

### Claim 5 (depends on 1)

The system according to claim 1, wherein the controller further includes a management system to communicate with a metadata manager on the remote host.

### Claim 6 (depends on 1)

The system according to claim 1, wherein the distributed elastic storage system includes storage data clients and storage data servers.

### Claim 7

A method, comprising:
coupling a control system to a data system to control a mapping table of an address to a corresponding hash value;
coupling a routing system to the control system to identify and process a new read command from a remote host by: instantiating a first thread that is configured to poll a TCP/IP socket and store any partial data associated with the read command in a buffer until the entire read command is stored into the buffer, and instantiating a second thread that is configured to execute the read command after the entire read command has been stored into the buffer;
coupling a controller to solid state drive (SSD) storage of a storage array, wherein the controller includes a data system to perform input/output operations to the SSD storage based upon at least one of physical addresses of data blocks and hash values of the data blocks; and
associating a data server with the routing system to receive the read and write commands from a data client running on the remote host,
wherein the storage array contributes a portion of the SSD storage to storage pools of a distributed elastic storage system,
wherein at least one logical volume of the storage pools is maintained as private such that the logical volume is available only to a corresponding remote host via a corresponding routing system.

### Claim 8 (depends on 7)

The method according to claim 7, further including embedded the data server in the routing system.

### Claim 9 (depends on 7)

The method according to claim 7, further including configuring the storage array to perform data deduplication.

### Claim 10 (depends on 7)

The method according to claim 7, further including establishing mirroring of storage volumes formed from the SSD storage of the storage array with storage volumes of a further storage array having SSD storage, terminating the mirroring, and decommitting space for the mirrored storage volumes on the storage array.

### Claim 11 (depends on 7)

The method according to claim 7, further including using a management system to communicate with a metadata manager on the remote host.

### Claim 12 (depends on 7)

The method according to claim 7, wherein the distributed elastic storage system includes storage data clients and storage data servers.

### Claim 13

An article, comprising:
a non-transitory computer readable medium baying stored instructions that enable a machine to:
control a controller coupled to solid state drive (SSD) storage of a storage array;
communicate with a control system to control a mapping table of an address to a corresponding hash value;
communicate with a routing system coupled to the control system to identify a read command from a remote host by: instantiating a first thread that is configured to poll a TCP/IP socket and store any partial data associated with the read command in a buffer until the entire read command is stored into the buffer, and instantiating a second thread that is configured to execute the read command after the entire read command has been stored into the buffer;
control a controller coupled to solid state drive (SSD) storage of a storage array, wherein the controller includes a data system to perform input/output operations to the SSD storage based upon at least one of physical addresses of data blocks and hash values of the data blocks; and
associate a data server with the routing system to receive the read and write commands from a data client running on the remote host,
wherein the storage array contributes a portion of the SSD storage to storage pools of a distributed elastic storage system,
wherein at least one logical volume of the storage pools is maintained as private such that the logical volume is available only to a corresponding data client via a corresponding routing system.

### Claim 14 (depends on 13)

The article according to claim 13, further including instructions to embed the data server in the routing system.

### Claim 15 (depends on 13)

The article according to claim 13, further including instructions to configure the storage array to perform data deduplication.

### Claim 16 (depends on 13)

The article according to claim 13, further including instructions to establish mirroring of storage volumes formed from the SSD storage of the storage array with storage volumes of a further storage array having SSD storage, terminating the mirroring, and decommitting space for the mirrored storage volumes on the storage array.

### Claim 17 (depends on 13)

The article according to claim 13, further including instructions for a management system to communicate with a metadata manager on the remote host.
