IP Library Granted Patent US 10,534,667
Granted Patent B2
US 10,534,667 · App. 15/339,228 · Granted Jan 14, 2020

Segmented cloud storage

Inventors: J. T. Olds (Salt Lake City, UT); Alen Peacock (Orem, UT); Andrew Harding (American Fork, UT); Jeff Wendling (West Jordan, UT)
Assignee: Vivint, Inc.
G06F11/1076G06F3/064G06F3/067G06F3/0613H03M13/1515
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,534,667
App. No.
15/339,228
Granted
Jan 14, 2020
Kind
B2
Abstract

A computer system for optimizing bandwidth usage within a cloud storage system receives a request, through an application program interface (API), to store a digital file. The computer system then encodes the digital file into a set of multiple distinct blocks of data. The system also transmits the set of multiple distinct blocks of data to multiple remote storage nodes. The multiple distinct blocks of data are divided among at least a portion of the remote storage nodes. The system generates a log that comprises identification information associated with the digital file and an address for each respective block of data within each respective remote storage node. The system then transmits the log to a remote directory server. The directory server comprises multiple different logs that map multiple different digital files to the remote storage nodes.

Claims (32)

1. A computer system for optimizing bandwidth usage within a cloud storage system, comprising:

one or more processors; and

one or more non-transitory computer-readable media having stored thereon executable instructions that when executed by the one or more processors configure the computer system to perform at least the following:

receive a request, through an application program interface (API), to store a digital file;

encode the digital file into a set of multiple distinct blocks of data, wherein the multiple distinct blocks of data each comprise a retrievable portion of the digital file and the set of multiple distinct blocks of data comprises parity information;

transmit the set of multiple distinct blocks of data to multiple remote storage nodes, wherein the multiple distinct blocks of data are divided among at least a portion of the remote storage nodes;

generate a log that comprises identification information associated with the digital file and an address for each respective block of data within each respective remote storage node; and

transmit the log to a remote directory server, wherein:

the remote directory server comprises multiple different logs that map multiple different digital files to the remote storage nodes, and

the remote directory server tracks outdated blocks of data that are stored at one or more remote storage nodes selected from the multiple storage nodes, wherein the outdated blocks are excluded from a request for a file that is associated with the outdated blocks.

2. The computer system as recited in claim 1 , wherein the digital file is encoded using a Reed-Solomon algorithm.

3. The computer system as recited in claim 1 , wherein the executable instructions include instructions that are executable to configure the computer system to:

before encoding the digital file, encrypt the digital file, and

store an associated encryption key locally.

4. The computer system as recited in claim 1 , wherein the executable instructions include instructions that are executable to configure the computer system to:

before transmitting the set of multiple distinct blocks of data to multiple remote storage nodes, request from the remote directory server a set of nodes available for storage and internet protocol addresses associated with each available remote storage node, and

wherein the set of nodes available for storage comprises the multiple remote storage nodes.

5. The computer system as recited in claim 4 , wherein the remote directory server selects a particular subset of remote storage nodes from a larger set of remote storage nodes based upon a predetermined segregation of a first user's data from a second user's data.

6. The computer system as recited in claim 4 , wherein the executable instructions include instructions that are executable to configure the computer system to:

communicate an authentication credential to an account management server, and

after being authenticated at the account management server, receiving a credential necessary for accessing the remote directory server.

7. The computer system as recited in claim 1 , wherein the digital file is encoded by a processor within a mobile computing device.

8. The computer system as recited in claim 7 , wherein at least a portion of the remote storage nodes comprise home-based computing devices that are each disposed within different respective houses.

9. A computer-based method for optimizing data integrity within a cloud storage system, comprising:

receiving a request, through an application program interface (API), to store a digital file;

loading the digital file into local memory space;

encoding the digital file into a set of multiple distinct blocks of data, wherein the multiple distinct blocks of data each comprise a retrievable portion of the digital file and the set of multiple distinct blocks of data comprises parity information;

transmitting the set of multiple distinct blocks of data to multiple remote storage nodes, wherein:

the multiple distinct blocks of data are divided among at least a portion of the remote storage nodes, and

the multiple distinct blocks of data are divided among a particular subset of remote storage nodes selected from a larger set of remote storage nodes based upon a predetermined segregation of a first user's data from a second user's data, wherein the predetermined segregation is such that the particular subset of remote storage nodes, which is associated with the first user's data, has fewer than a minimum recovery threshold of overlapping remote storage nodes, as defined by the parity information, with another subset of remote storage nodes that are associated with the second tier's data;

generating a log that comprises identification information associated with the digital file and an address for each respective block of data within each respective remote storage node; and

transmitting the log to a remote directory server, wherein the remote directory server comprises multiple different logs that map multiple different digital files to the remote storage nodes.

Assignments (9)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS RECORDED AT REEL 049283, FRAME 0566 Recorded Nov 11, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VIVINT, INC.
Reel/Frame 069334/0137 →
RELEASE (REEL 047029/ FRAME 0304) Recorded Nov 1, 2024
From: BANK OF AMERICA, N.A.
To: VIVINT LLC (F/K/A VIVINT, INC.)
Reel/Frame 069289/0468 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2022
From: PANDO TECHNOLOGIES, INC.
To: STORJ LABS INTERNATIONAL SEZC
Reel/Frame 060762/0834 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2022
From: VIVINT, INC.
To: PANDO TECHNOLOGIES, INC.
Reel/Frame 059565/0691 →
RELEASE OF SECURITY INTEREST Recorded Jul 12, 2021
From: BANK OF AMERICA, N.A.
To: VIVINT, INC.
Reel/Frame 056832/0824 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2020
From: PEACOCK, ALEN
To: VIVINT, INC. D/B/A APX ALARM SECURITY SOLUTIONS, INC.
Reel/Frame 052223/0143 →
SECURITY AGREEMENT Recorded May 23, 2019
From: VIVINT, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049283/0566 →
SUPPL. NO. 2 SECURITY AGREEMENT Recorded Sep 6, 2018
From: VIVINT, INC.
To: BANK OF AMERICA N.A.
Reel/Frame 047024/0048 →
SECURITY AGREEMENT Recorded Sep 6, 2018
From: VIVINT, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 047029/0304 →
Continuity (1)
Related Publication 20180121285A1 · May 3, 2018
Cited By (2)
US 12,499,085 US 12,585,621