# US 10,976,932 B2 · Method for providing a client device access to a plurality of remote storage devices

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

- Number: US 10,976,932 B2
- Document ID: US10976932B2
- Status: Granted
- Kind: B2
- Application number: 14/724,971
- Filed: 2015-05-29
- Published: 2016-02-04
- Granted: 2021-04-13
- Earliest claimed: 2014-07-30
- Assignees: Excelero Storage Ltd.
- Applicants: Excelero Storage Ltd.
- Inventors: Yaniv Romem; Omri Mann; Ofer Oshri
- Web page: https://patentgrep.com/patent/US10976932B2

## CPC

- G06F 3/0611: {in relation to response time}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0637: {Permissions}
- G06F 3/064: {Management of blocks}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 12/1081: for peripheral access to main memory, e.g. direct memory access [DMA]
- G06F 15/167: using a common memory, e.g. mailbox
- G06F 15/17331: {Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]}
- H04L 12/06: Answer-back mechanisms or circuits
- H04L 12/6418: {Hybrid transport}
- 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 2212/65: Details of virtual memory and virtual address translation
- 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

A controller system allows direct access to a client device accessing remote data storage devices communicatively connected to the controller. A virtual block metadata (VBM) is generated by the controller system, the VBM including a plurality of maps. Each map includes a plurality of virtual addresses, each virtual address mapped to a physical address, each physical address on a remote storage device of the plurality of storage devices. The client device is sent a portion of the VBM, the portion including the map of the virtual addresses sent to the client. The controller receives, over a first network interface, read/write instructions from the client device for the a physical address corresponding to the virtual address allocated to the client device.

## Claims

### Claim 1

A computerized method for providing a user's client device, which is communicatively connected to a controller, access to a plurality of remote storage devices communicatively connected to the controller and to the user's client device, the method comprising:
receiving from the user's client device, by the controller, a request for storage block mapping;
sending a map to the user's client device, in response to the request, the map comprising a plurality of virtual addresses and a version number, each virtual address corresponding to a physical address of a data block on a storage device of the plurality of remote storage devices;
receiving from the user's client device, by the controller, a second request for storage block mapping, the second request comprising the immediately previously sent version number of the map;
comparing the received version number of the map to a version number of a current controller map; and
when the received version number does not match the current version number, sending an updated map and the current version number to the user's client device, the updated map comprising a plurality of new virtual addresses, each new virtual address corresponding to a physical address of a data block on a storage device of the plurality of remote storage devices.

### Claim 2 (depends on 1)

The computerized method of claim 1, further comprising receiving storage instructions from the user's client device over a remote direct memory access (RDMA) interface.

### Claim 3 (depends on 2)

The computerized method of claim 2, wherein the method is performed at RDMA speed.

### Claim 4 (depends on 1)

The computerized method of claim 1, wherein at least an address of the plurality of virtual addresses of at least one of the map and the updated map corresponds to a second plurality of virtual addresses such that any of the map and the updated map having an address of the plurality of virtual addresses corresponding to a second plurality of virtual addresses is implemented as a tree without a predefined length.

### Claim 5 (depends on 4)

The computerized method of claim 4, further comprising:
initializing, in response to the received version number of the map and the version number of the controller map not matching, a process to make the received version number and the version number of the controller map match.

### Claim 6 (depends on 1)

The computerized method of claim 1, wherein at least an address of the plurality of virtual addresses corresponds to a second plurality of virtual addresses.

### Claim 7 (depends on 6)

The computerized method of claim 6, wherein at least a first physical address corresponding to one of the plurality of virtual addresses is on a first storage device of the plurality of remote storage devices, and at least a second physical address corresponding to one of the virtual addresses of the second plurality of virtual addresses is on a second storage device of the plurality of remote storage devices;
whereby a physical address allocated to the user's client device can be added without a new map in its entirety being generated each time a physical address allocated to the user's device is added.

### Claim 8 (depends on 1)

The computerized method of claim 1, wherein the user's client device is configured to directly access the data block by mapping the virtual address to the physical address of the data block.

### Claim 9

A controller communicatively coupled to a plurality of remote storage devices and providing a user's client device access to the remote storage devices, the controller comprising:
a processing unit;
a first network interface configured to communicate with the user's client device;
a second interface configured to communicate with the plurality of remote storage devices; and
a memory containing first instructions and communicatively coupled to the processing unit,
wherein in response to the processing unit executing the first instructions, the controller is configured to:
receive a request for storage block mapping from the user's client device;
send, in response to the request, a map to the user's client device, wherein the map comprises a plurality of virtual addresses and a version number, each virtual address corresponding to a physical address of a data block on a storage device of the plurality of remote storage devices;
receive from the user's client device, a second request for storage block mapping, the second request comprising the immediately previously sent version number of the map;
compare the received version number of the map to a version number of a current controller map; and
when the received version number does not match the current version number, send an updated map and the current version number to the user's client device, the updated map comprising a plurality of new virtual addresses, each new virtual address corresponding to a physical address of a data block on a storage device of the plurality of remote storage devices.

### Claim 10 (depends on 9)

The controller of claim 9, wherein the memory further includes second instructions, and in response to the second instructions being executed by the processing unit, the controller is further configured to: receive read/write instructions from the user's client device over a remote direct memory access (RDMA) interface.

### Claim 11 (depends on 10)

The controller of claim 10, wherein the method is performed at RDMA speed.

### Claim 12 (depends on 9)

The controller of claim 9, wherein at least an address of the plurality of virtual addresses corresponds to a second plurality of virtual addresses.

### Claim 13 (depends on 12)

The controller of claim 12, wherein at least a first physical address corresponding to one of the plurality of virtual addresses is on a first storage device of the plurality of remote storage devices, and at least a second physical address corresponding to one of the virtual addresses of the second plurality of virtual addresses is on a second storage device of the plurality of remote storage devices;
whereby a physical address allocated to the user's client device can be added without a new map in its entirety being generated each time a physical address allocated to the user's device is added.

### Claim 14 (depends on 9)

The controller of claim 9, wherein at least an address of the plurality of virtual addresses of at least one of the map and the updated map corresponds to a second plurality of virtual addresses such that any of the map and the updated map having an address of the plurality of virtual addresses corresponding to a second plurality of virtual addresses is implemented as a tree without a predefined length.

### Claim 15 (depends on 9)

The controller of claim 9, wherein the user's client device is configured to directly access the data block by mapping the virtual address to the physical address of the data block.

### Claim 16

A computerized method for providing a user's client device, which is communicatively connected to a controller, access to a plurality of remote storage devices communicatively connected to the controller and to the user's client device, the method comprising:
sending from the user's client device, to the controller, a request for storage block mapping;
receiving at the user's client device a map from the controller, the map comprising a plurality of virtual addresses and a version number, each virtual address corresponding to a physical address of a data block on a storage device of the plurality of remote storage devices;
directly accessing, using the user's client device, the data block by mapping the virtual address to the physical address of the data block; and
sending from the user's client device, to the controller, a second request for storage block mapping, the second request comprising the version number of the map;
receiving at the user's client device an updated map from the controller when the controller determines that the version number does not match a current version number at the controller, the updated map comprising a plurality of new virtual addresses, each new virtual address corresponding to a physical address of a data block on a storage device of the plurality of remote storage devices.

### Claim 17 (depends on 16)

The computerized method of claim 16, further comprising sending read/write instructions from the user's client device over a remote direct memory access (RDMA) interface.

### Claim 18 (depends on 17)

The computerized method of claim 17, wherein the method is performed at RDMA speed.

### Claim 19 (depends on 16)

The computerized method of claim 16, wherein at least an address of the plurality of virtual addresses corresponds to a second plurality of virtual addresses.

### Claim 20 (depends on 19)

The computerized method of claim 19, wherein at least a first physical address corresponding to one of the plurality of virtual addresses is on a first storage device of the plurality of remote storage devices, and at least a second physical address corresponding to one of the virtual addresses of the second plurality of virtual addresses is on a second storage device of the plurality of remote storage devices;
whereby a physical address allocated to the user's client device by the controller can be added without a new map in its entirety being generated each time a physical address allocated to the user's device is added.

### Claim 21 (depends on 16)

The computerized method of claim 16, further comprising:
wherein at least an address of the plurality of virtual addresses of at least one of the map and the updated map corresponds to a second plurality of virtual addresses such that any of the map and the updated map having an address of the plurality of virtual addresses corresponding to a second plurality of virtual addresses is implemented as a tree without a predefined length.

### Claim 22

A user's client device configured to access a plurality of remote storage devices through a controller, the plurality of remote storage devices communicatively coupled to the controller, the user's client device comprising:
a processing unit;
a first network interface for communicating with the controller;
a second interface for communicating with a plurality of remote storage devices;
a memory communicatively coupled to the processing unit and containing first instructions,
in response to the first instructions being executed by the processing unit, the user's client device is configured to:
send from the user's client device a request for storage block mapping to the controller;
receive at the user's client device a map from the controller, the map comprising a plurality of virtual addresses and a version number, each virtual address corresponding to a physical address of a data block on a storage device of the plurality of remote storage devices, and
wherein the user's client device is configured to directly access the data block by mapping the virtual address to the physical address of the data block; and
send from the user's client device, to the controller, a second request for storage block mapping, the second request comprising the version number of the map;
receive at the user's client device an updated map from the controller when the controller determines that the version number does not match a current version number at the controller, the updated map comprising a plurality of new virtual addresses, each new virtual address corresponding to a physical address of a data block on a storage device of the plurality of remote storage devices.

### Claim 23 (depends on 22)

The user's client device of claim 22, wherein the memory further contains second instructions,
in response to the second instructions being executed by the processing unit, the user's client device is further configured to send read/write instructions to the controller over a remote direct memory access (RDMA) interface.

### Claim 24 (depends on 23)

The user's client device of claim 23, wherein the method is performed at RDMA speed.

### Claim 25 (depends on 22)

The user's client device of claim 22, wherein at least an address of the plurality of virtual addresses corresponds to a second plurality of virtual addresses.

### Claim 26 (depends on 25)

The user's client device of claim 25, wherein at least a first physical address corresponding to one of the plurality of virtual addresses is on a first storage device of the plurality of remote storage devices, and at least a second physical address corresponding to one of the virtual addresses of the second plurality of virtual addresses is on a second storage device of the plurality of remote storage devices;
whereby a physical address allocated to the user's client device by the controller can be added without a new map in its entirety being generated each time a physical address allocated to the user's device is added.

### Claim 27 (depends on 22)

The user's client device of claim 22, wherein the memory further contains third instructions,
wherein at least an address of the plurality of virtual addresses of at least one of the map and the updated map corresponds to a second plurality of virtual addresses such that any of the map and the updated map having an address of the plurality of virtual addresses corresponding to a second plurality of virtual addresses is implemented as a tree without a predefined length.
