# US 2016/0028823 A1 · Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner

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

- Number: US 2016/0028823 A1
- Document ID: US20160028823A1
- Status: Published application
- Kind: A1
- Application number: 14/874,511
- Filed: 2015-10-05
- Published: 2016-01-28
- Earliest claimed: 1997-12-24
- Assignees: Avid Technology, Inc.
- Applicants: Avid Technology, Inc.
- Inventors: Eric C. Peters; Stanley Rabinowitz; Herbert R. Jacobs; Peter J. Fasciano
- Web page: https://patentgrep.com/patent/US20160028823A1

## CPC

- 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 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G06F 16/182: Distributed file systems
- G06F 16/184: {implemented as replicated file system}
- G06F 16/1844: {Management specifically adapted to replicated file systems}
- G06F 16/70: of video data
- H04L 65/612: for unicast
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- H04N 7/17336: {Handling of requests in head-ends}
- H04N 21/2182: {involving memory arrays, e.g. RAID disk arrays (RAID arrays per se G06F3/0689; use of parity to protect data in RAID systems G06F11/1008)}
- 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)}
- H04N 21/23116: {involving data replication, e.g. over plural servers (synchronization of replicated data G06F11/1658; error detection or correction by means of data replication G06F11/2053; replication in distributed file systems G06F16/10; replication in distributed file systems G06F16/27; replication or mirroring of data in data networks H04L67/1095)}
- H04N 21/2312: Data placement on disk arrays {(data placement in general G06F3/0604)}
- H04N 21/2315: using interleaving
- H04N 21/232: Content retrieval operation {locally} within server, e.g. reading video streams from disk arrays {(storage management G06F3/0604; details of querying and searching of video data from a database G06F16/739)}
- H04N 21/2393: {involving handling client requests (scheduling or organising the servicing of application requests H04L67/60)}
- H04N 21/2396: {characterized by admission policies (admission control, resource allocation in open networks H04L12/5692; arrangements for network security using user profiles for access control H04L63/102; access security in wireless networks H04W12/08)}
- 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/241: Operating system [OS] processes, e.g. server setup
- H04N 21/262: Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists {(scheduling strategies for dispatcher in multiprogramming arrangements G06F9/4881; arrangements for scheduling broadcast services or broadcast-related services H04H60/06; flow control in packet networks H04L47/10; establishing a time schedule or organising the servicing of application requests H04L67/62)}
- H04N 21/44004: {involving video buffer management, e.g. video decoder buffer or video display buffer}
- H04N 21/442: Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk {(arrangements for monitoring broadcast services or broadcast-related services H04H60/29; arrangements for identifying or recognising characteristics with a direct linkage to broadcast information H04H60/35; monitoring of user activities for profile generation for accessing a video database G06F16/739; monitoring in wireless networks H04W24/00)}
- H04N 21/47202: {for requesting content on demand, e.g. video on demand}
- H04N 21/8456: {by decomposing the content in the time domain, e.g. in time segments}
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 2211/1028: Distributed, i.e. distributed RAID systems with parity
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 67/1029: using data related to the state of servers by a load balancer
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Multiple applications request data from multiple storage units over a computer network. The data is divided into segments and each segment is distributed randomly on one of several storage units, independent of the storage units on which other segments of the media data are stored. At least one additional copy of each segment also is distributed randomly over the storage units, such that each segment is stored on at least two storage units. This random distribution of multiple copies of segments of data improves both scalability and reliability. When an application requests a selected segment of data, the request is processed by the storage unit with the shortest queue of requests. Random fluctuations in the load applied by multiple applications on multiple storage units are balanced nearly equally over all of the storage units. This combination of techniques results in a system which can transfer multiple, independent high-bandwidth streams of data in a scalable manner in both directions between multiple applications and multiple storage units.

## Claims

### Claim at position 1

-14. (canceled)

### Claim 15

A data storage system, comprising:
a plurality of client computers, each client computer having a file system through which applications executed on the client computer access data;
a plurality of storage servers coupled to the plurality of client computers via a computer network, each storage server comprising storage configured to store segments of the data accessible through the file systems of the plurality of client computers;
catalog storage configured to store information indicating storage servers from among the plurality of storage servers on which the segments of the data are stored;
at least one of the client computers being configured to:
receive information indicating storage servers, among the plurality of storage servers, available for storing segments of the data;
the file system of the at least one of the client computers being configured to, in response to a request from an application to write data:
divide the data to be written into a plurality of segments, each segment having an identifier;
for each segment of the plurality of segments, select, using the received information, two of the available storage servers for storing the segment, such that each segment is stored on at least two different storage servers, and the segments are distributed nonsequentially among the plurality of storage servers; and
communicate over the computer network directly with the selected storage servers to transmit the segments of the data to the selected storage servers for storage; and
each storage server being configured to:
receive segments over the computer network from client computers that request segments to be stored;
after receiving a request over the computer network from one of the client computers to store a segment, wherein the received request includes the identifier of the segment, determine a location for the segment in the storage of the storage server; and
store data in the storage of the storage server representing, for each segment stored on the storage server, an association between the identifier for the segment with the location of the segment in the storage of the storage server; and
the catalog manager being further configured to update the information indicating storage servers from among the plurality of storage servers on which the segments of the data are stored based on successful writing of the segments of the data to the plurality of storage servers.

### Claim 16 (depends on 15)

The data storage system of claim 15, wherein the catalog storage comprises a central database accessible by each of the plurality of client computers over the computer network.

### Claim 17 (depends on 15)

The data storage system of claim 15, wherein the information indicating storage servers from among the plurality of storage servers on which the segments of the data are stored includes, for each segment of data, an association between the identifier of the segment and identifiers of the storage servers that store copies of the segment.

### Claim 18 (depends on 15)

The data storage system of claim 15, wherein the catalog storage stores the information indicating available storage servers.
