# US 11,029,882 B2 · Secure multiple server access to a non-volatile storage device

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

- Number: US 11,029,882 B2
- Document ID: US11029882B2
- Status: Granted
- Kind: B2
- Application number: 16/370,312
- Filed: 2019-03-29
- Published: 2020-10-01
- Granted: 2021-06-08
- Earliest claimed: 2019-03-29
- Assignees: Lenovo Enterprise Solutions (Singapore) Pte. Ltd.
- Applicants: LENOVO Enterprise Solutions (Singapore) PTE. LTD.
- Inventors: David W. Cosby; Theodore B. Vojnovich; Jonathan R. Hinkle; Patrick L. Caporale
- Web page: https://patentgrep.com/patent/US11029882B2

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0613: {in relation to throughput}
- G06F 3/0658: {Controller construction arrangements}
- G06F 3/0671: {In-line storage system}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- H04L 67/1051: {Group master selection mechanisms}
- 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]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An apparatus for secure multiple server access to a non-volatile storage device is disclosed. A method and storage device product also perform the functions of the apparatus. An apparatus includes a storage device with three or more ports. Each port includes at least one lane and each port is configured to connect to a different server over the at least one lane of the port. The storage device includes a storage controller in the storage device for each port. Each storage controller controls storage to non-volatile storage of the storage device. The storage device includes a logical namespace assigned to each port. Each logical namespace is assigned to a portion of the non-volatile storage of the storage device. The logical namespace of a first port of the three or more ports is inaccessible to a second port of the three or more ports.

## Claims

### Claim 1

An apparatus comprising:
a solid-state storage device with three or more ports, the solid-state storage device comprising solid-state non-volatile memory in a housing and the solid-state storage device uses a Non-Volatile Memory Express (“NVME”) protocol, each port comprising a single lane, each lane communicating using a Peripheral Component Interconnect Express (“PCIe”) protocol, each port configured to connect directly to a different server of a plurality of servers over the lane of the port free of an intervening network communication fabric;
a plurality of storage controllers in the housing of the solid-state storage device, each storage controller of the plurality of storage controllers associated with a different port of the three or more ports, the plurality of storage controllers in a housing of the solid-state storage device, each storage controller controlling storage to non-volatile storage within the housing of the solid-state storage device; and
a logical namespace assigned to each port and associated lane, each logical namespace assigned to a portion of the non-volatile storage of the solid-state storage device in the housing, wherein the logical namespace of a first port of the three or more ports and the associated lane of the first port is inaccessible to a second port of the three or more ports and the associated lane of the second port.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein a port of the solid-state storage device is configured to communicate with a master controller in a server connected to the port of the solid-state storage device, wherein the master controller controls global commands from servers connected to the solid-state storage device, a global command comprising a command from a server that affects other servers connected to the solid-state storage device.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein the master controller issues global commands through the server where the master controller is located.

### Claim 4 (depends on 2)

The apparatus of claim 2, wherein the master controller coordinates execution of a global command with each server connected to the solid-state storage device.

### Claim 5 (depends on 2)

The apparatus of claim 2, wherein the master controller is an active master controller and further comprising a backup master controller on a server different than the server where the active master controller resides and wherein the backup master controller becomes active in response to the active master controller being unavailable.

### Claim 6 (depends on 2)

The apparatus of claim 2, wherein the master controller communicates with servers connected to the solid-state storage device via the solid-state storage device.

### Claim 7 (depends on 2)

The apparatus of claim 2, wherein the master controller communicates with servers connected to the solid-state storage device via a computer network different than connections between the servers and the solid-state storage device.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein physical memory addresses of the non-volatile storage of the solid-state storage device are segregated between the logical namespaces of the three or more ports.

### Claim 9

A method comprising:
configuring each port of a solid-state storage device with three or more ports, the solid-state storage device comprising solid-state non-volatile memory in a housing and the solid-state storage device uses a Non-Volatile Memory Express (“NVME”) protocol, each port comprising a single lane, wherein each lane communicates using a Peripheral Component Interconnect Express (“PCIe”) protocol, wherein each port configured to connect directly to a different server of a plurality of servers over the lane of the port free of an intervening network communication fabric;
controlling, via a plurality of storage controllers in the housing of the solid-state storage device, that are each associated with a different port of the three or more ports, storage to non-volatile storage of the solid-state storage device, wherein the plurality of storage controllers and the non-volatile storage are disposed within a same housing of the solid-state storage device; and
assigning a logical namespace to each port and associated lane, each logical namespace assigned to a portion of the non-volatile storage of the solid-state storage device, wherein the logical namespace of a first port of the three or more ports and the associated lane of the first port is inaccessible to a second port of the three or more ports and the associated lane of the second port.

### Claim 10 (depends on 9)

The method of claim 9, further comprising communicating over a port of the solid-state storage device with a master controller in a server connected to a port of the solid-state storage device, the master controller controlling global commands from servers connected to the solid-state storage device, a global command comprising a command from a server that affects other servers connected to the solid-state storage device.

### Claim 11 (depends on 10)

The method of claim 10, wherein one or more of:
the master controller issues global commands through the server where the master controller is located; and
the master controller coordinates execution of a global command with each server connected to the solid-state storage device.

### Claim 12 (depends on 10)

The method of claim 10, wherein one of:
wherein the master controller communicates with servers connected to the solid-state storage device via the solid-state storage device; and
wherein the master controller communicates with servers connected to the solid-state storage device via a computer network different than connections between the servers and the solid-state storage device.

### Claim 13 (depends on 9)

The method of claim 9, wherein physical memory addresses of the non-volatile storage of the solid-state storage device are segregated between the logical namespaces of the three or more ports.

### Claim 14

A solid-state storage device comprising:
solid-state non-volatile storage in a housing of the solid-state storage device;
three or more ports at an interface to the housing, each port comprising a single lane, each lane communicating using a Peripheral Component Interconnect Express (“PCIe”) protocol, each port configured to connect directly to a different server of a plurality of servers over the lane of the port free of an intervening network communication fabric;
a plurality of storage controllers in the housing of the solid-state storage device, each storage controller of the plurality of storage controllers associated with a different port of the three or more ports, the plurality of storage controllers in a housing of the solid-state storage device, each storage controller controlling storage to non-volatile storage within the housing of the solid-state storage device; and
a logical namespace assigned to each port and associated lane, each logical namespace assigned to a portion of the non-volatile storage of the solid-state storage device in the housing, wherein the logical namespace of a first port of the three or more ports and the associated lane of the first port is inaccessible to a second port of the three or more ports and the associated lane of the second port, and
wherein the solid-state storage device uses a Non-Volatile Memory Express (“NVMe”) protocol.
