IP Library › Granted Patent US 12,367,176
Granted Patent B2
US 12,367,176 · App. 18/305,927 · Granted Jul 22, 2025

Non-disruptive file movement within a distributed storage system

Inventors: Richard Parvin Jernigan, IV (Sewickley, PA); Umeshkumar Vasantha Rajasekaran (Cranberry Township, PA); Ying-Hao Wang (Pittsburgh, PA); Yuyu Zhou (Pittsburgh, PA)
Assignee: NetApp, Inc.
G06F16/119G06F16/116G06F16/162G06F16/183G06F16/188
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,367,176
App. No.
18/305,927
Granted
Jul 22, 2025
Kind
B2
Abstract

Approaches for providing a non-disruptive file move are disclosed. A request to move a target file from the first constituent to the second constituent is received. The file has an associated file handle. The target file in the first constituent is converted to a multipart file in the first constituent with a file location for the new file in the first constituent. A new file is created in the second constituent. Contents of the target file are moved to a new file on the second constituent while maintaining access via the associated file handle via access to the multipart file. The target file is deleted from the first constituent.

Claims (69)

1. In a distributed storage system having a first constituent to store files and a second constituent to store files, a method comprising:

receiving a request to move a target file from the first constituent to the second constituent, the file having an associated file handle;

converting the target file in the first constituent to a multipart file in the first constituent with a file location for the multipart file in the first constituent;

creating a new file in the second constituent;

moving contents of the target file to the new file in the second constituent while maintaining access to the target file via the associated file handle via access to the multipart file by changing location information for the multipart file from indicating the target file in the first constituent to indicating the new file in the second constituent and updating location information associated with the new file in the second constituent to store inode data for the new file in the second constituent;

deleting the target file from the first constituent.

2. The method of claim 1 further comprising:

receiving a subsequent request to move the new file from the second constituent to a third constituent;

creating a new file in the third constituent;

moving contents of the new file in the second constituent to the new file in the third constituent while maintaining access to the new file in the second constituent via the associated file handle and via access to the multipart file;

deleting the new file from the second constituent.

3. The method of claim 1 wherein the location information for the multipart file from indicating the target file in the first constituent is changed to indicating the new file in the second constituent in a buffer tree and updating location information associated with the new file in the second constituent to store inode data for the new file in the second constituent comprises updating buffer tree information.

4. The method of claim 1 wherein creating a new file in the second constituent further comprises:

generating a private file in the second constituent;

allocating space for a buffer tree for the private file in the second constituent;

creating a public file in the second constituent, wherein the public file comprises the new file in the second constituent;

linking the public file to the buffer tree for the private file;

removing the link from the private file to the buffer tree.

5. The method of claim 1 wherein the new file in the second constituent comprises a part inode file.

6. The method of claim 1 wherein the multipart file comprises at least a link to a parts catalog having links to one or more part inode files that each comprise a portion of user data previously stored in the multipart file.

7. The method of claim 1 wherein the distributed storage system utilizes a write anywhere file system.

8. The method of claim 1 wherein the request to move the target file is received from either a rebalancing engine or a rebalancing scanner.

9. The method of claim 1 wherein at least one of the first constituent and the second constituent reside in cloud storage.

10. A non-transitory computer readable medium having stored thereon instructions that, when executed, cause one or more processors to:

receive a request to move a target file from the first constituent to the second constituent, the file having an associated file handle;

convert the target file in the first constituent to a multipart file in the first constituent with a file location for the multipart file in the first constituent;

create a new file in the second constituent;

move contents of the target file to the new file in the second constituent while maintaining access to the target file via the associated file handle via access to the multipart file by changing location information for the multipart file from indicating the target file in the first constituent to indicating the new file in the second constituent and updating location information associated with the new file in the second constituent to store inode data for the new file in the second constituent;

delete the target file from the first constituent.

11. The non-transitory computer readable medium of claim 10 further comprising instructions that, when executed, cause the one or more processors to:

receive a subsequent request to move the new file from the second constituent to a third constituent;

create a new file in the third constituent;

move contents of the new file in the second constituent to the new file in the third constituent while maintaining access to the new file in the second constituent via the associated file handle and via access to the multipart file;

delete the new file from the second constituent.

12. The non-transitory computer readable medium of claim 10 wherein changing the location information for the multipart file from indicating the target file in the first constituent is changed to indicating the new file in the second constituent in a buffer tree and updating location information associated with the new file in the second constituent to store inode data for the new file in the second constituent comprises updating buffer tree information.

13. The non-transitory computer-readable medium of claim 10 wherein the instructions that, when executed, cause the one or more processors to create a new file in the second constituent further comprise instructions that, when executed, cause the one or more processors to:

generate a private file in the second constituent;

allocate space for a buffer tree for the private file in the second constituent;

create a public file in the second constituent, wherein the public file comprises the new file in the second constituent;

link the public file to the buffer tree for the private file;

remove the link from the private file to the buffer tree.

14. The non-transitory computer readable medium of claim 10 wherein the new file in the second constituent comprises a part inode file.

15. The non-transitory computer readable medium of claim 10 wherein the multipart file comprises at least a link to a parts catalog having links to one or more part inode files that each comprise a portion of user data previously stored in the multipart file.

16. The non-transitory computer-readable medium of claim 10 wherein the distributed storage system utilizes a write-anywhere file system.

17. The non-transitory computer readable medium of claim 10 wherein the request to move the target file is received from either a rebalancing engine or a rebalancing scanner.

18. The non-transitory computer-readable medium of claim 10 wherein at least one of the first constituent and the second constituent reside in cloud storage.

19. A non-disruptive file movement agent in a distributed storage system, the non-disruptive file movement agent is configured to:

receive a request to move a target file from the first constituent to the second constituent, the file having an associated file handle;

convert the target file in the first constituent to a multipart file in the first constituent with a file location for the multipart file in the first constituent;

creating a new file in the second constituent;

move contents of the target file to the new file in the second constituent while maintaining access to the target file via the associated file handle via access to the multipart file by changing location information for the multipart file from indicating the target file in the first constituent to indicating the new file in the second constituent and updating location information associated with the new file in the second constituent to store inode data for the new file in the second constituent;

delete the target file from the first constituent.

20. The non-disruptive file movement agent of claim 19 wherein the non-disruptive file movement agent is further configured to:

receive a subsequent request to move the new file from the second constituent to a third constituent;

create a new file in the third constituent;

move contents of the new file in the second constituent to the new file in the third constituent while maintaining access to the new file in the second constituent via the associated file handle and via access to the multipart file;

delete the new file from the second constituent.

21. The non-disruptive file movement agent of claim 19 wherein changing the location information for the multipart file from indicating the target file in the first constituent is changed to indicating the new file in the second constituent in a buffer tree and updating location information associated with the new file in the second constituent to store inode data for the new file in the second constituent comprises updating buffer tree information.

22. The non-disruptive file movement agent of claim 19 wherein creating a new file in the second constituent further comprises:

generating a private file in the second constituent;

allocating space for a buffer tree for the private file in the second constituent;

creating a public file in the second constituent, wherein the public file comprises the new file in the second constituent;

linking the public file to the buffer tree for the private file;

removing the link from the private file to the buffer tree.

23. The non-disruptive file movement agent of claim 19 wherein the new file in the second constituent comprises a part inode file.

24. The non-disruptive file movement agent of claim 19 wherein the multipart file comprises at least a link to a parts catalog having links to one or more part inode files that each comprise a portion of user data previously stored in the multipart file.

25. The non-disruptive file movement agent of claim 19 wherein the distributed storage system utilizes a write anywhere file system.

26. The non-disruptive file movement agent of claim 19 wherein the request to move the target file is received from either a rebalancing engine or a rebalancing scanner.

27. The non-disruptive file movement agent of claim 19 wherein at least one of the first constituent and the second constituent reside in cloud storage.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2023
From: JERNIGAN, RICHARD PARVIN, IV; RAJASEKARAN, UMESHKUMAR VASANTHA; WANG, YING-HAO; ZHOU, YUYU
To: NETAPP, INC.
Reel/Frame 063652/0944 →
Continuity (1)
Related Publication 20240354281A1 · Oct 24, 2024
References Cited (15)
US 7991734B2 · Park et al. · 2011 [cited by applicant]
US 9886697B1 · Sivertsen · 2018 [cited by applicant]
US 20010018766A1 · Morita · 2001 [cited by examiner]
US 20030182330A1 · Manley · 2003 [cited by examiner]
US 20030182428A1 · Li et al. · 2003 [cited by applicant]
US 20060114836A1 · Pollin et al. · 2006 [cited by applicant]
US 20060265467A1 · Jang · 2006 [cited by applicant]
US 20110060887A1 · Thatcher · 2011 [cited by examiner]
US 20120036161A1 · Lacapra et al. · 2012 [cited by applicant]
US 20150370825A1 · Outcalt et al. · 2015 [cited by applicant]
US 20190215358A1 · Kobayashi et al. · 2019 [cited by applicant]
US 20200301880A1 · George · 2020 [cited by examiner]
US 20210049044A1 · Wong et al. · 2021 [cited by applicant]
Non-Final Office Action mailed on Sep. 11, 2024 for U.S. Appl. No. 18/488,755, filed Oct. 17, 2023, 27 pages. [cited by applicant]
Non-Final Office Action mailed on Sep. 29, 2024 for U.S. Appl. No. 18/488,727, filed Oct. 17, 2023, 18 pages. [cited by applicant]