# US 2019/0174155 A1 · Ultra high-speed low-latency network storage

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

- Number: US 2019/0174155 A1
- Document ID: US20190174155A1
- Status: Published application
- Kind: A1
- Application number: 15/832,497
- Filed: 2017-12-05
- Published: 2019-06-06
- Earliest claimed: 2017-12-05
- Assignees: Sony Interactive Entertainment America LLC
- Applicants: Sony Interactive Entertainment America LLC
- Inventors: Roelof Colenbrander; Cliff Pajaro; Kim-Huei Low
- Web page: https://patentgrep.com/patent/US20190174155A1

## CPC

- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- H04N 21/23103: {using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers (storage management G06F3/0604; allocation of resources considering the load in multiprogramming arrangements G06F9/505; techniques for rebalancing the load in a distributed system G06F9/5083; access to distributed or replicated servers, e.g. load balancing, in data networks H04L67/1001)}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0613: {in relation to throughput}
- G06F 3/0614: {Improving the reliability of storage systems}
- G06F 3/0658: {Controller construction arrangements}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 11/201: {between storage system components}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- H04L 49/00: Packet switching elements
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04N 21/2405: {Monitoring of the internal components or processes of the server, e.g. server load (allocation of resources in multiprogramming arrangements G06F9/50; performance measurement of computer activity G06F11/34)}
- H04N 21/47202: {for requesting content on demand, e.g. video on demand}
- H04N 21/4781: {Games}
- G06F 2206/1012: Load balancing
- H04L 41/0654: using network fault recovery (ring fault isolation or reconfiguration in loop networks without recovery actions by a network management system H04L12/437)
- H04L 47/11: Identifying congestion
- H04L 47/125: by balancing the load, e.g. traffic engineering
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Non-volatile memory over fabric (NVMe-oF) is used to stream video, computer games, and the like to client devices from network storage embodied by solid state storage devices (SSDs). To provide for redundancy, multiple copies of a single piece of content, e.g., a computer game or video file, are stored on multiple SSDs. To provide information to address the block-level storage based on a client demand for the content, a data structure correlates each content with the SSDs and related block numbers at which the content is stored. Sourcing of the content as it is being streamed may be dynamically switched between SSDs to provide for load balancing or loss of a SSD.

## Claims

### Claim 1

A computer-implemented server stack comprising:
at least one management server having access to a mapping data structure;
plural compute servers each comprising plural computer motherboards; and
at least one storage server, the storage server comprising at least first and second non-volatile memory (NVMe)-enabled solid state drives (SSD);
at least a first compute server comprising:
at least a first computer motherboard comprising at least one processing unit;
at least a second computer motherboard comprising at least one processing unit; and
at least one NVMe over fabric (NVMe-oF) communication path connecting the motherboards to the first and second NVMe-enabled SSDs;
wherein the server stack is programmed with instructions to:
receive a request for a piece of content from a client computer;
access the mapping data structure using an identification of the piece of content to identify that the piece of content is stored on at least the first NVMe-enabled SSD and to identify what blocks of the first NVMe-enabled SSD store the piece of content;
based on identifying the first NVMe-enabled SSD and the blocks of the first NVMe-enabled SSD that store the piece of content, cause the piece of content to be streamed to the client device directly over the NVMe-oF path without passing through a compute server.

### Claim 2 (depends on 1)

The computer-implemented server stack of claim 1, wherein the data structure further correlates the piece of content as being stored on at least the second NVMe-enabled SSD along with the blocks of the second NVMe-enabled SSD store the piece of content, and the server stack is programmed with instructions to:
responsive to a determination that the first NVMe-enabled SSD has failed, switch to the second NVMe-enabled SSD to provide the piece of content to the client computer.

### Claim 3 (depends on 1)

The computer-implemented server stack of claim 1, wherein the data structure further correlates the piece of content as being stored on at least the second NVMe-enabled SSD along with what blocks of the second NVMe-enabled SSD store the piece of content, and the server stack is programmed with instructions to:
responsive to a determination that a load balancing condition is met with the first NVMe-enabled SSD remaining operational, switch to the second NVMe-enabled SSD to provide the piece of content to the client computer.

### Claim 4 (depends on 1)

The computer-implemented server stack of claim 1, wherein the piece of content is striped across the first and second NVMe-enabled SSDs.

### Claim 5 (depends on 1)

The computer-implemented server stack of claim 1, wherein the piece of content is entirely recorded on each of the first and second NVMe-enabled SSDs.

### Claim 6 (depends on 1)

The computer-implemented server stack of claim 1, wherein the piece of content is a video.

### Claim 7 (depends on 1)

The computer-implemented server stack of claim 1, wherein the piece of content is a computer game.

### Claim 8 (depends on 1)

The computer-implemented server stack of claim 1, the management server is not the storage server or any of the compute servers.

### Claim 9 (depends on 1)

The computer-implemented server stack of claim 1, the management server is implemented by at least one of the compute servers.

### Claim 10 (depends on 1)

The computer-implemented server stack of claim 1, the management server is implemented by the storage server.

### Claim 11

Device comprising:
at least one computer memory that is not a transitory signal and that comprises instructions executable by at least one processor to:
identify plural complete copies of a piece of content on at least first and second non-volatile memory (NVMe)-enabled solid state drives (SSDs), a data structure correlating an identification of the piece of content to identifications of the first and second SSDs and associated blocks of each SSD at which the piece of content is stored;
responsive to a request from a client computer for the piece of content, access the data structure to determine where on the first and second SSDs the piece of content is stored;
responsive to determining where on the first and second SSDs the piece of content is stored, access and send the piece of content from at least the first SSD to the client computer using at least one NVMe over fabric (NVMe-oF) communication path using peripheral component interconnect express (PCI(e)) protocol.

### Claim 12 (depends on 11)

The device of claim 11, comprising the at least one processor coupled to the at least one computer memory.

### Claim 13 (depends on 11)

The device of claim 11, wherein the piece of content is a video.

### Claim 14 (depends on 11)

The device of claim 11, wherein the piece of content is a computer game.

### Claim 15 (depends on 11)

The device of claim 11, wherein the instructions are executable to:
responsive to a determination that the first SSD has failed, switch to the second SSD to provide the piece of content to the client computer.

### Claim 16 (depends on 11)

The device of claim 11, wherein the instructions are executable to:
responsive to a determination that a load balancing condition is met with the first SSD remaining operational, switch to the second SSD to provide the piece of content to the client computer.

### Claim 17 (depends on 11)

The device of claim 11, wherein the piece of content is striped across the first and second SSDs.

### Claim 18 (depends on 11)

The device of claim 11, wherein the piece of content is entirely recorded on each of the first and second SSDs.

### Claim 19

A method comprising:
providing a non-volatile memory over fabric (NVMe-oF) networked storage system;
proving data redundancy in the NVMe-oF networked storage system; and
providing load balancing in the NVMe-oF networked storage system.

### Claim 20 (depends on 19)

The method of claim 19, comprising:
establishing a data structure for the NVMe-oF networked storage system correlating pieces of content to solid state drives (SSDs) in the NVMe-oF networked storage system and to blocks in each SSD at which each respective piece of content is stored.
