IP Library Granted Patent US 12,500,961
Granted Patent B2
US 12,500,961 · App. 16/511,673 · Granted Dec 16, 2025

Multizone migration services

Inventors: Sathish Ramasubramanian (Sunnyvale, CA); Anna Esther Min (Emeryville, CA); Kevin Greenan (Santa Cruz, CA)
Assignee: Box, Inc.
H04L67/52G06F3/0647G06F16/214G06F16/29G06F16/387H04L43/062H04L67/1097
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 12,500,961
App. No.
16/511,673
Granted
Dec 16, 2025
Kind
B2
Abstract

Embodiments of the disclosure provide systems and methods for migrating cloud-based content between storage locations while maintaining availability of the content being migrated. Embodiments described herein allow data undergoing migration, even data that is inflight, to be accessed, edited, copied, moved, and/or deleted without downtime, blackout periods, or other restrictions.

Claims (89)

1 . A method for migrating data between a plurality of storage locations, the method comprising:

detecting, by a processor of a cloud-based storage service, a change in a geographic location of a user of the cloud-based storage service;

initiating, by the processor of the cloud-based storage service, migration of a set of data from an origin location of the plurality of storage locations to a destination location of the plurality of storage locations, wherein the set of data comprises one or more files owned by the user and wherein the migration is initiated based on the detected change in the geographic location of the user;

identifying, by the processor of the cloud-based storage service, each file in the set of data owned by the user at the origin location using a table, wherein the table comprises a plurality of records, each record of the plurality of records corresponding to a file stored in a storage location of the plurality of storage locations, wherein each record comprises a field storing an owner identifier (ID) for the corresponding file, a field storing a unique identifier for the corresponding file which is mapped to a file identifier for the file and points to the origin location for the file, and a field storing a location ID indicating a geographic region in which the file is stored, and wherein identifying each file of the one or more files in the set of data owned by the user at the origin location comprises identifying each record of the table storing the owner ID of the user;

creating, by the processor of the cloud-based storage service, a generated unique identifier for each file in the set of data at the origin location of the plurality of storage locations, the generated unique identifier associated with a pointer to the destination location;

mapping, by the processor of the cloud-based storage service, the generated unique identifier for each file in the set of data at the origin location to the destination location;

updating, by the processor of the cloud-based storage service, the record corresponding to each file in the set of data at the origin location, wherein updating the record corresponding to each file in the set of data at the origin location comprises replacing the unique identifier in the record for the corresponding file with the generated unique identifier by storing the generated unique identifier in the field of the record storing the unique identifier for the corresponding file; and

copying, by the processor of the cloud-based storage service, the set of data from the origin location to the destination location, while maintaining availability of the set of data at the origin location by the cloud-based storage service.

2 . The method of claim 1 , further comprising:

detecting, by the processor of the cloud-based storage service, during the migration, access of the set of data at the origin location; and

making the set of data at the origin location available, by the processor of the cloud-based storage service, while migration is ongoing using the generated unique identifier and updated record corresponding to each file in the set of data at the origin location and which still points to the origin location of the set of data at the origin location.

3 . The method of claim 2 , further comprising, upon completion of copying the set of data from the origin location to the destination location, updating the record corresponding to each file in the set of data at the origin location and stored in the table to point to the set of data at the destination location based on the pointer to the destination location associated with the generated unique identifier and updating the location ID field of the record corresponding to each file.

4 . The method of claim 1 , further comprising detecting, by the processor of the cloud-based storage service, a change to the set of data at the origin location during migration and in response to detecting the change:

creating, by the processor of the cloud-based storage service, a new version ID for the set of data at the origin location in the record corresponding to each file in the set of data at the origin location and stored in the table; and

saving, by the processor of the cloud-based storage service, changes made to the set of data at the origin location to the set of data at the destination location for the migration using the new version ID.

5 . The method of claim 1 , further comprising detecting, by the processor of the cloud-based storage service, a deletion of the set of data at the origin location during migration and in response to detecting the deletion:

changing, by the processor of the cloud-based storage service, a status of the set of data at the origin location in the record corresponding to each file in the set of data at the origin location and stored in the table; and

continuing, by the processor of the cloud-based storage service, the migration of the content of the set of data from the origin location to the destination location.

6 . The method of claim 1 , further comprising detecting, by the processor of the cloud-based storage service, a copying of the set of data at the origin location during migration and in response to detecting the copying:

creating, by the processor of the cloud-based storage service, a new generated unique identifier for each file in the copy of the set of data at the origin location;

mapping, by the processor of the cloud-based storage service, the new generated unique identifier to point to a destination location for each file in the copy of the set of data at the origin location;

creating, by the processor of the cloud-based storage service, a destination set of data at the destination location of the copy of the set of data at the origin location using the set of data at the origin location; and

mapping, by the processor of the cloud-based storage service, the generated new unique identifier for each file in the copy of the set of data at the origin location to a corresponding record stored in the table.

7 . The method of claim 1 , further comprising detecting, by the processor of the cloud-based storage service, a move of the set of data at the origin location during migration and in response to detecting the move:

creating, by the processor of the cloud-based storage service, a new generated unique identifier for the move of each file in the set of data at the origin location;

mapping, by the processor of the cloud-based storage service, the new generated unique identifier to point to a destination location of the move of each file the set of data at the origin location;

creating, by the processor of the cloud-based storage service, a destination set of data at the destination location using the set of data at the origin location;

mapping, by the processor of the cloud-based storage service, the generated new unique identifier for the move of each file in the set of data at the origin location to a corresponding record stored in the table; and

deleting, by the processor of the cloud-based storage service, the set of data at the origin location.

8 . A system comprising:

a processor; and

a memory coupled with and readable by the processor and storing therein a set of instructions which, when executed by the processor, causes the processor to migrate data between a plurality of storage locations by:

detecting a change in a geographic location of a user of the cloud-based storage service;

initiating migration of a set of data from an origin location of the plurality of storage locations to a destination location of the plurality of storage locations, wherein the set of data comprises one or more files owned by the user and wherein the migration is initiated based on the detected change in the geographic location of the user;

identifying each file in the set of data owned by the user at the origin location using a table, wherein the table comprises a plurality of records, each record of the plurality of records corresponding to a file stored in a storage location of the plurality of storage locations, wherein each record comprises a field storing an identifier (ID) for the corresponding file, a field storing a unique identifier for the corresponding file which is mapped to a file identifier for the file and points to the origin location for the file, and a field storing a location ID indicating a geographic region in which the file is stored, and wherein identifying each file of the one or more files in the set of data owned by the user at the origin location comprises identifying each record of the table storing the owner ID of the user;

creating a generated unique identifier for each file in the set of data at the origin location, the generated unique identifier associated with a pointer to the destination location;

mapping the generated unique identifier for each file in the set of data at the origin location to the destination location;

updating the record corresponding to each file in the set of data at the origin location, wherein updating the record corresponding to each file in the set of data at the origin location comprises replacing the unique identifier in the record for the corresponding file with the generated unique identifier by storing the generated unique identifier in the field of the record storing the unique identifier for the corresponding file; and

copying the set of data from the origin location to the destination location, while maintaining availability of the set of data at the origin location by the cloud-based storage service.

9 . The system of claim 8 , wherein the instructions further cause the processor to:

detect during the migration, access of the set of data at the origin location; and

make the set of data at the origin location available while migration is ongoing using the generated unique identifier and updated record corresponding to each file in the set of data at the origin location and which still points to the origin location of the set of data at the origin location.

10 . The system of claim 9 , wherein the instructions further comprise the processor to, upon completion of copying the set of data from the origin location to the destination location, update the record corresponding to each file in the set of data at the origin location and stored in the table to point to the set of data at the destination location based on the pointer to the destination location associated with the generated unique identifier and update the location ID field of the record corresponding to each file.

11 . The system of claim 8 , wherein the instructions further cause the processor to detect a change to the set of data at the origin location during migration and in response to detecting the change:

create a new version ID for the set of data at the origin location in the record corresponding to each file in the set of data at the origin location and stored in the table; and

save changes made to the set of data at the origin location to the set of data at the destination location for the migration using the new version ID.

12 . The system of claim 8 , wherein the instructions further cause the processor to detect a deletion of the set of data at the origin location during migration and in response to detecting the deletion:

change a status of the set of data at the origin location in the record corresponding to each file in the set of data at the origin location and stored in the table; and

continue the migration of the content of the set of data from the origin location to the destination location.

13 . The system of claim 8 , wherein the instructions further cause the processor to detect a copying of the set of data at the origin location during migration and in response to detecting the copying:

create a new generated unique identifier for each file in the copy of the set of data at the origin location;

map the new generated unique identifier to point to a destination location for each file in the copy of the set of data at the origin location;

create a destination set of data at the destination location of the copy of the set of data at the origin location using the set of data at the origin location; and

map the generated new unique identifier for each file in the copy of the set of data at the origin location to a corresponding record stored in the table.

14 . The system of claim 8 , wherein the instructions further cause the processor to detect a move of the set of data at the origin location during migration and in response to detecting the move:

create a new generated unique identifier for the move of each file in the set of data at the origin location;

map the new generated unique identifier to point to a destination location of the move of each file the set of data at the origin location;

create a destination set of data at the destination location using the set of data at the origin location;

map the generated new unique identifier for the move of each file in the set of data at the origin location to a corresponding record stored in the table; and

delete the set of data at the origin location.

15 . A non-transitory, computer-readable medium comprising a set of instructions stored therein which, when executed by a processor, causes the processor to migrate data between a plurality of storage locations by:

detecting a change in a geographic location of a user of the cloud-based storage service;

initiating migration of a set of data from an origin location of the plurality of storage locations to a destination location of the plurality of storage locations, wherein the set of data comprises one or more files owned by the user and wherein the migration is initiated based on the detected change in the geographic location of the user;

identifying each file in the set of data owned by the user at the origin location using a table, wherein the table comprises a plurality of records, each record of the plurality of records corresponding to a file stored in a storage location of the plurality of storage locations, wherein each record comprises a field storing an identifier (ID) for the corresponding file, a field storing a unique identifier for the corresponding file which is mapped to a file identifier for the file and points to the origin location for the file, and a field storing a location ID indicating a geographic region in which the file is stored, and wherein identifying each file of the one or more files in the set of data owned by the user at the origin location comprises identifying each record of the table storing the owner ID of the user;

creating a generated unique identifier for each file in the set of data at the origin location, the generated unique identifier associated with a pointer to the destination location;

mapping the generated unique identifier for each file in the set of data at the origin location to the destination location;

updating the record corresponding to each file in the set of data at the origin location, wherein updating the record corresponding to each file in the set of data at the origin location comprises replacing the unique identifier in the record for the corresponding file with the generated unique identifier by storing the generated unique identifier in the field of the record storing the unique identifier for the corresponding file; and

copying the set of data from the origin location to the destination location, while maintaining availability of the set of data at the origin location by the cloud-based storage service.

16 . The non-transitory, computer-readable medium of claim 15 , wherein the instructions further cause the processor to:

detect during the migration, access of the set of data at the origin location; and

make the set of data at the origin location available while migration is ongoing using the generated unique identifier and updated record corresponding to each file the set of data at the origin location and which still points to the origin location of the set of data at the origin location; and

upon completion of copying the set of data from the origin location to the destination location, update the record corresponding to each file the set of data at the origin location and stored in the table to point to the set of data at the destination location based on the pointer to the destination location associated with the generated unique identifier.

17 . The non-transitory, computer-readable medium of claim 15 , wherein the instructions further cause the processor to detect a change to the set of data at the origin location during migration and in response to detecting the change:

create a new version ID for the set of data at the origin location in the record corresponding to each file the set of data at the origin location and stored in the table; and

save changes made to the set of data at the origin location at the destination location for the migration using the new version ID.

18 . The non-transitory, computer-readable medium of claim 15 , wherein the instructions further cause the processor to detect a deletion of the set of data at the origin location during migration and in response to detecting the deletion:

change a status of the set of data at the origin location in the record corresponding to each file the set of data at the origin location and stored in the table; and

continue the migration of the content of the set of data from the origin location to the destination location.

19 . The non-transitory, computer-readable medium of claim 15 , wherein the instructions further cause the processor to detect a copying of the set of data at the origin location during migration and in response to detecting the copying:

create a new generated unique identifier for each file in the copy of the set of data at the origin location;

map the new generated unique identifier to point to a destination location for each file in the copy of the set of data at the origin location;

create a destination set of data at the destination location of the copy of the set of data at the origin location using the set of data at the origin location; and

map the generated new unique identifier for each file in the copy of the set of data at the origin location to a corresponding record stored in the table.

20 . The non-transitory, computer-readable medium of claim 15 , wherein the instructions further cause the processor to detect a move of the set of data at the origin location during migration and in response to detecting the move:

create a new generated unique identifier for the move of each file in the set of data at the origin location;

map the new generated unique identifier to point to a destination location of the move of each file the set of data at the origin location;

create a destination set of data at the destination location using the set of data at the origin location;

map the generated new unique identifier for the move of each file in the set of data at the origin location to a corresponding record stored in the table; and

delete the set of data at the origin location.

Assignments (2)
SECURITY INTEREST Recorded Jul 26, 2023
From: BOX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 064389/0686 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2019
From: RAMASUBRAMANIAN, SATHISH; MIN, ANNA ESTHER; GREENAN, KEVIN
To: BOX, INC.
Reel/Frame 049899/0984 →
Continuity (2)
Provisional Application 62699067 · Jul 17, 2018
Related Publication 20200028909A1 · Jan 23, 2020
References Cited (18)
US 10540388B1 · Alexander · 2020 [cited by examiner]
US 10592154B1 · LeCrone · 2020 [cited by examiner]
US 11461123B1 · Tsai · 2022 [cited by examiner]
US 20020052884A1 · Farber · 2002 [cited by examiner]
US 20090249005A1 · Bender · 2009 [cited by examiner]
US 20120173486A1 · Park · 2012 [cited by examiner]
US 20130144978A1 · Jain · 2013 [cited by examiner]
US 20130173546A1 · Cline · 2013 [cited by examiner]
US 20140006354A1 · Parkison · 2014 [cited by examiner]
US 20160062786A1 · Meng · 2016 [cited by examiner]
US 20170262461A1 · Androulaki · 2017 [cited by examiner]
US 20180121129A1 · Sawhney · 2018 [cited by examiner]
US 20180132066A1 · Carini · 2018 [cited by examiner]
US 20180246886A1 · Dragomirescu · 2018 [cited by examiner]
US 20190340003A1 · Ramanathan · 2019 [cited by examiner]
US 20190384519A1 · Danilov · 2019 [cited by examiner]
US 20200387320A1 · Ning · 2020 [cited by examiner]
A. Marin, C. Dobre, D. Popescu and V. Cristea, “E-System for Automatic Data Migration,” 2010 12th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, Timisoara, Romania, 2010, pp. 479-48… [cited by examiner]