# US 2016/0253267 A1 · Systems and Methods for Storage of Data in a Virtual Storage Device

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

- Number: US 2016/0253267 A1
- Document ID: US20160253267A1
- Status: Published application
- Kind: A1
- Application number: 15/149,470
- Filed: 2016-05-09
- Published: 2016-09-01
- Earliest claimed: 2014-03-07
- Assignees: ProfitBricks, Inc.
- Applicants: Profitbricks GmbH
- Inventors: Conrad N. Wood; Achim Weiss
- Web page: https://patentgrep.com/patent/US20160253267A1

## CPC

- G06F 12/1009: using page tables, e.g. page table structures
- G06F 3/06: Digital input from, or digital output to, record carriers {, e.g. RAID, emulated record carriers or networked record carriers}
- G06F 3/0614: {Improving the reliability of storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/0727: {in a storage system, e.g. in a DASD or network based storage system (drivers for digital recording or reproducing units G06F3/06; circuits for error detection or correction within digital recording or reproducing units G11B20/18; 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], H04L67/1097)}
- G06F 11/0775: {Content or structure details of the error report, e.g. specific table structure, specific error fields}
- G06F 11/1484: {involving virtual machines}
- G06F 11/3006: {where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems (multiprogramming arrangements G06F9/46; allocation of resources G06F9/50)}
- G06F 12/023: {Free address space management}
- G06F 16/00: Information retrieval; Database structures therefor; File system structures therefor
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/152: Virtualized environment, e.g. logically partitioned system
- G06F 2212/154: Networked environment
- G06F 2212/651: Multi-level translation tables
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system for providing data storage includes at least one virtual server comprising at least one virtual storage device; at least one physical server comprising at least one physical storage device; a data structure, stored on each of the at least one physical storage devices, the data structure comprising: at least one table of contents, the table of contents configured to map storage locations within the virtual storage device to node structures that provide pointers to corresponding storage locations within the physical storage device; a tree structure having a predetermined number of hierarchical levels, each level containing node structures, the node structures containing pointers that point to other node structures or to data locations on the physical storage device; and one or more core software modules.

## Claims

### Claim 1

A system for providing data storage, the system comprising:
at least one virtual server comprising at least one virtual storage device;
at least one physical server comprising at least one physical storage device;
a data structure, stored on each of the at least one physical storage devices, the data structure comprising:
at least one table of contents, the table of contents configured to map storage locations within the virtual storage device to node structures that provide pointers to corresponding storage locations within the physical storage device;
a tree structure having a predetermined number of hierarchical levels, each level containing node structures, the node structures containing pointers that point to other node structures or to data locations on the physical storage device; and
one or more core modules executed by the virtual server, the physical server or both, configured to receive requests to access data in the storage locations within the virtual storage device and, in response to the requests, traverse the data structure to access data in the corresponding storage locations within the physical storage device.

### Claim 2 (depends on 1)

The system of claim 1 wherein the at least one virtual storage device is block addressable.

### Claim 3 (depends on 2)

The system of claim 2 wherein the software driver is configured to translate block addresses of the virtual storage device into block address of the at least one physical storage device.

### Claim 4 (depends on 1)

The system of claim 1 wherein the tree structure has three levels of node structures.

### Claim 5 (depends on 1)

The system of claim 1 wherein each table of contents structure is associated with a single virtual storage device.

### Claim 6 (depends on 1)

The system of claim 1 wherein the one or more physical storage devices have more than one table of contents stored thereon.

### Claim 7 (depends on 1)

The system of claim 1 wherein the node structures have a size that is a multiple of a block size of the physical storage device.

### Claim 8 (depends on 1)

The system of claim 1 wherein the node structures in a last hierarchical level contain pointers to data blocks, and the node structures in the remaining hierarchical levels contain pointers to other node structures.

### Claim 9 (depends on 1)

The system of claim 1 wherein the software driver is further configured to allocate additional storage locations in the physical storage device in response to a request to write data that requires additional storage space.

### Claim 10 (depends on 9)

The system of claim 9 wherein the software driver is further configured to dynamically update the tree structure to point to the newly allocated additional storage locations in response to the request.

### Claim 11 (depends on 1)

The system of claim 1 wherein the software driver is configured to process requests to read and write data to the physical storage device.

### Claim 12

A method for providing data storage, the method comprising:
executing, by a computing device, at least one virtual server comprising at least one virtual storage device;
at least one physical server comprising at least one physical storage device;
storing, on at least one physical storage device coupled to a physical server, a data structure comprising:
at least one table of contents, the table of contents configured to map storage locations within the virtual storage device to node structures that provide pointers to corresponding storage locations within the physical storage device;
a tree structure having a predetermined number of hierarchical levels, each level containing node structures, the node structures containing pointers that point to other node structures or to data locations on the physical storage device; and
executing, by the virtual server, the physical server, or both, a software driver configured to receive requests to access data in the storage locations within the virtual storage device and, in response to the requests, traverse the data structure to access data in the corresponding storage locations within the physical storage device.

### Claim 13 (depends on 12)

The method of claim 12 wherein the at least one virtual storage device is block addressable.

### Claim 14 (depends on 13)

The method of claim 13 wherein executing the software driver includes translating block addresses of the virtual storage device into block address of the at least one physical storage device.

### Claim 15 (depends on 12)

The method of claim 12 wherein the tree structure has three levels of node structures, and traversing the tree structure includes traversing the three levels.

### Claim 16 (depends on 12)

The method of claim 12 further comprising associating each table of contents structure with a single virtual storage device.

### Claim 17 (depends on 12)

The method of claim 12 further comprising storing more than one table of contents stored on the physical storage device.

### Claim 18 (depends on 12)

The method of claim 12 further comprising storing each node structure in one or more blocks of the physical storage device, wherein the node structures have a size that is a multiple of a block size of the physical storage device,

### Claim 19 (depends on 12)

The method of claim 12 wherein executing the software driver comprises allocating additional storage locations in the physical storage device in response to a request to write data that requires additional storage space.

### Claim 20 (depends on 19)

The method of claim 19 wherein executing the software driver comprises dynamically updating the tree structure to point to the newly allocated additional storage locations in response to the request.

### Claim 21 (depends on 12)

The method of claim 12 wherein executing the software driver comprises processing requests to read and write data to the physical storage device.
