IP Library Granted Patent US 10,778,769
Granted Patent B2
US 10,778,769 · App. 16/044,942 · Granted Sep 15, 2020

Elastic cloud storage on multiple locations

Inventor: Jun Zhang (Nanjing, CN)
Assignee: Citrix Systems, Inc
H04L67/1097H04L63/08H04L67/18H04L67/20H04L67/306
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,778,769
App. No.
16/044,942
Filed
Jul 25, 2018
Granted
Sep 15, 2020
Kind
B2
Art Unit
2446
USPC
709/223
Abstract

Described embodiments provide systems and methods of managing storage of data of a user across storage service providers. A storage service may receive a request to store data by a user. The storage service may communicate with storage service providers and may maintain storage vectors for each storage service provider. The storage service may identify a policy for the user. The policy may specify usage of the storage service providers based on a user profile. The storage service may determine, based on the policy, storage service providers to use to store the data of the user. The storage service may store a first portion of the data to a first storage vector of a first storage service provider. The storage service may store a second portion of the data to one of a second storage vector of a second storage service provider or a storage of the storage service.

Claims (32)

1. A method for managing storage of data of a user across a plurality of third-party public storage service providers, the method comprising:

(a) receiving, by a storage service, a request to store data by a user, the storage service configured to communicate with a plurality of third-party public storage service providers, each of the plurality of third-party public storage service providers configured to maintain a plurality of storage vectors;

(b) identifying, by the storage service, a policy for the user, the policy specifying usage of one or more of the plurality of third-party public storage service providers based at least on a profile of the user;

(c) determining, by the storage service based at least on the policy, one or more third-party public storage service providers of the plurality of third-party public storage service providers to use to store the data of the user;

(d) selecting, by the storage service, a first storage vector from the plurality of storage vectors of a first third-party public storage service provider of the one or more third-party public storage service provider, responsive to determining that a location of the user is within a threshold distance of the first storage vector;

(e) storing, by the storage service, a first portion of the data to the first storage vector selected from the plurality of storage vectors of the first third-party public storage service provider of the one or more third-party public storage service providers; and

(f) storing, by the storage service, a second portion of the data to one of a second storage vector of a second third-party public storage service provider of the one or more third-party public storage service providers or a storage of the storage service.

2. The method of claim 1 , wherein a storage vector of the plurality of storage vectors identifies one of the location, address or a size of a corresponding unit of storage used to select the storage vector from the plurality of storage vectors of a respective third-party public storage service provider.

3. The method of claim 2 , wherein (b) further comprises identifying from the profile of the user one of the location of the user, storage size assigned to or requested by the user, or preferences of the user.

4. The method of claim 1 , wherein one of the first portion of the data or the second portion of the data comprises one of striped data or mirrored data in association with a respective redundant array of independent disk (RAID) level.

5. The method of claim 1 , further comprising obtaining, by the storage service, one of authentication credentials or an address for one of the first storage vector or the second storage vector.

6. The method of claim 1 , further comprising storing, by the storage service, the first portion of the data in encrypted form to the first storage vector and the second portion of the data in encrypted form to the second storage vector.

7. The method of claim 1 , further comprising storing, by the storage service, the data across different storage vectors across the one or more third-party public storage service providers.

8. The method of claim 1 , further comprising receiving, by the storage service, a second request to access the data and responsive to the second request identifying the storage vectors for the data.

9. The method of claim 8 , further comprising obtaining, by the storage service, different portions of the data across the storage vectors of the one or more third-party public storage service providers and combining the different portions of the data to provide as a response to the second request.

10. A system for managing storage of data of a user across a plurality of third-party public storage service providers, the system comprising:

a storage service executable on one or more processors, coupled memory and configured to communicate with a plurality of third-party public storage service providers, each of the plurality of third-party public storage service providers configured to maintain a plurality of storage vectors; and

wherein the storage service is configured to:

receive a request to store data by a user;

identify a policy for the user, the policy specifying usage of one of more of the plurality of third-party public storage service providers based at least on a profile of the user;

determine, based at least on the policy, one or more third-party public storage service providers of the plurality of third-party public storage service providers to use to store the data of the user;

select a first storage vector from the plurality of storage vectors of a first third-party public storage service provider of the one or more third-party public storage service provider, responsive to determining that a location of the user is within a threshold distance of the first storage vector;

store a first portion of the data to the first storage vector selected from the plurality of storage vectors of the first third-party public storage service provider of the one or more third-party public storage service providers; and

store a second portion of the data to one of a second storage vector of a second third-party public storage service provider of the one or more third-party public storage service providers or a storage of the storage service.

11. The system of claim 10 , wherein a storage vector of the plurality of storage vectors identifies one of the location, address or a size of a corresponding unit of storage used to select the storage vector from the plurality of storage vectors of a respective third-party public storage service provider.

12. The system of claim 11 , wherein the profile of the user identifies one of the location of the user, storage size assigned to or requested by the user, or preferences of the user.

13. The system of claim 10 , wherein one of the first portion of the data or the second portion of the data comprises one of striped data or mirrored data in association with a respective redundant array of independent disk (RAID) level.

14. The system of claim 10 , wherein the storage service is further configured to obtain one of authentication credentials or an address for one of the first storage vector or the second storage vector.

15. The system of claim 10 , wherein the storage service is further configured to store the first portion of the data in encrypted form to the first storage vector and the second portion of the data in encrypted form to the second storage vector.

16. The system of claim 10 , wherein the storage service is further configured to store the data across different storage vectors across the one or more third-party public storage service providers.

17. The system of claim 10 , wherein the storage service is further configured to receive a second request to access the data and responsive to the second request identifying the storage vectors for the data.

18. The system of claim 17 , wherein the storage service is further configured to obtain different portions of the data across the storage vectors of the one or more third-party public storage service providers and combining the different portions of the data to provide as a response to the second request.

Assignments (16)
SECURITY INTEREST Recorded Jul 21, 2025
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 072094/0790 →
SECURITY INTEREST Recorded Dec 26, 2024
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 069784/0578 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2024
From: CITRIX SYSTEMS, INC.
To: PROGRESS SOFTWARE CORPORATION
Reel/Frame 069618/0836 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 067662/0568 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0525 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 062112/0262 Recorded Nov 2, 2024
From: BANK OF AMERICA, N.A.
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0492 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 062079/0001 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.
Reel/Frame 069291/0536 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 063340/0164 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0503 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 062113/0470 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0514 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 25, 2018
From: ZHANG, JUN
To: CITRIX SYSTEMS, INC.
Reel/Frame 046458/0171 →
Continuity (1)
Related Publication 20200036788A1 · Jan 30, 2020