IP Library Granted Patent US 10,372,329
Granted Patent B1
US 10,372,329 · App. 15/346,433 · Granted Aug 6, 2019

Managing storage devices in a distributed storage system

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,372,329
App. No.
15/346,433
Granted
Aug 6, 2019
Kind
B1
Abstract

Storage systems store data in a storage pool comprising storage devices or virtual devices. The storage pool may be allocated for a particular purpose. If a virtual device within the storage pool needs to be repurposed, the virtual device is removed from the storage pool. Data is moved from the removed virtual device to one or more target virtual devices. Segments of the source virtual device being removed are copied to target virtual devices. Mapping tables associating source segments with target segments are stored. If the storage system receives a request to access data stored on a virtual device that is removed, the storage system processes the mapping tables to determine where the data is stored.

Claims (84)

1. A method for managing storage of data, the method comprising:

storing data in a storage pool comprising multiple virtual devices, wherein data stored on one or more virtual devices points at data stored in other virtual devices of the storage pool, and each virtual device corresponds to one or more physical storage devices and each virtual device comprises one or more segments, each segment representing a contiguous allocated portion of the virtual device;

receiving a request for removing at least a plurality of virtual devices from the storage pool corresponding to a plurality of source virtual devices;

removing the plurality of source virtual devices from the storage pool comprising at least a first source virtual device and a second source virtual device, the removing of each source virtual device comprising:

for each segment of data stored on the source virtual device, copying the data of the segment from the source virtual device to one or more segments on a target virtual device; and

storing at a selected virtual device from the storage pool, a mapping table corresponding to the source virtual device, comprising mappings from each source segment of the source virtual device to one or more target segments on the target virtual device;

receiving a request to read data previously stored in a removed virtual device;

identifying a mapping corresponding to the removed virtual device based upon the mapping tables corresponding to the plurality of source virtual devices, in which the mapping tables are loaded by:

determining an order in which the first source virtual device and the second source virtual device were removed; and

determining an order in which mapping tables corresponding the first source virtual device and the second source virtual device are loaded based on the order in which the first source virtual device and the second source virtual device were removed;

determining the target virtual device to which the accessed requested data is moved based on the mapping; and

retrieving the requested data from the target virtual device.

2. The method of claim 1 , wherein:

the mapping table corresponding to the first source virtual device is loaded before the mapping table corresponding to the second source virtual device if the first source virtual device was removed after the second source virtual device.

3. The method of claim 1 , wherein:

the mapping tables corresponding to the plurality of removed source virtual devices are loaded in reverse chronological order in which the source virtual devices were removed.

4. The method of claim 1 , further comprising, for a source segment stored on the source virtual device:

determining whether the target virtual device includes a free contiguous storage area that is at least as large as the source segment; and

responsive to determining that none of the free contiguous storage area is as large as the source segment, storing the data of the source segment across a plurality of segments on the target virtual device.

5. The method of claim 1 , further comprising:

determining whether a number of segments in a contiguous portion of the source virtual device exceeds a threshold value; and

responsive to the number of segments in the contiguous portion of the source virtual device exceeding a threshold value, allocating a single segment in the target virtual device for storing the contiguous portion of the source virtual device.

6. The method of claim 1 , wherein a source virtual device has a configuration comprising a plurality of physical devices storing non-parity data and a physical device storing parity information, the method further comprising, for a source segment on the source virtual device:

identifying a target virtual device having a configuration matching the configuration of the source virtual device; and

responsive to identifying a matching target virtual device, copying the source segment from the source virtual device to the target virtual device.

7. The method of claim 6 , wherein copying the source segment from the source virtual device to the target virtual device comprises:

copying data stored on the plurality of physical devices storing non-parity data to a corresponding physical device of the target virtual device storing non-parity data; and

copying data stored on the physical device storing parity data to a corresponding physical device of the target virtual device storing parity data.

8. The method of claim 6 , further comprising:

receiving a request to write to a data block stored on a first virtual device, the data block storing at least a first pointer to data previously stored on a removed source virtual device;

identifying one or more other pointers of the data block that point at data blocks stored on any removed source virtual device;

updating the data block, comprising, for each of a plurality of pointers comprising the first pointer and the one or more other pointers, modifying the pointer to point at a new location of the corresponding data block in the storage pool; and

storing the updated data block.

9. A non-transitory computer-readable storage medium storing instructions for:

storing data in a storage pool comprising multiple virtual devices, wherein data stored on one or more virtual devices points at data stored in other virtual devices of the storage pool, and each virtual device corresponds to one or more physical storage devices and each virtual device comprises one or more segments, each segment representing a contiguous allocated portion of the virtual device;

receiving a request for removing at least a plurality of virtual devices from the storage pool corresponding to a plurality of source virtual devices;

removing the plurality of source virtual devices from the storage pool comprising at least a first source virtual device and a second source virtual device, the removing of each source virtual device comprising:

for each segment of data stored on the source virtual device, copying the data of the segment from the source virtual device to one or more segments on a target virtual device; and

storing at a selected virtual device from the storage pool, a mapping table corresponding to the source virtual device, comprising mappings from each source segment of the source virtual device to one or more target segments on the target virtual device;

receiving a request to read data previously stored in a removed virtual device;

identifying a mapping corresponding to the removed virtual device based upon the mapping tables corresponding to the plurality of source virtual devices, in which the mapping tables are loaded by:

determining an order in which the first source virtual device and the second source virtual device were removed; and

determining an order in which mapping tables corresponding the first source virtual device and the second source virtual device are loaded based on the order in which the first source virtual device and the second source virtual device were removed;

determining the target virtual device to which the accessed requested data is moved based on the mapping; and

retrieving the requested data from the target virtual device.

10. The non-transitory computer-readable storage medium of claim 9 , wherein:

the mapping tables corresponding to the plurality of removed virtual devices are loaded in reverse chronological order in which the virtual devices were removed.

11. The non-transitory computer-readable storage medium of claim 9 , further comprising storing instructions for:

determining whether the target virtual device includes a free contiguous storage area that is at least as large as the source segment; and

responsive to determining that none of the free contiguous storage area is as large as the source segment, storing the data of the source segment across a plurality of segments on the target virtual device.

12. The non-transitory computer-readable storage medium of claim 9 , further comprising storing instructions for:

determining whether a number of segments in a contiguous portion of the source virtual device exceeds a threshold value; and

responsive to the number of source segments in the portion of the source virtual device exceeding a threshold value, allocating a single segment in the target virtual device for storing the contiguous portion of the source virtual device.

13. The non-transitory computer-readable storage medium of claim 9 , wherein a source virtual device has a configuration comprising a plurality of physical devices storing non-parity data and a physical device storing parity information, which further comprises storing instructions for a source segment on the source virtual device:

identifying a target virtual device having configuration matching the configuration of the source virtual device; and

responsive to identifying a matching target virtual device, copying the source segment from the source virtual device to the target virtual device.

14. The non-transitory computer-readable storage medium of claim 13 , wherein copying the source segment from the source virtual device to the target virtual device comprises:

copying data stored on the plurality of physical devices storing non-parity data to a corresponding physical device of the target virtual device storing non-parity data; and

copying data stored on the physical device storing parity data to a corresponding physical device of the target virtual device storing parity data.

15. A computer system comprising:

a computer processor; and

a non-transitory computer-readable storage medium storing instructions for execution by the computer processor, the instructions for:

storing data in a storage pool comprising multiple virtual devices, wherein data stored on one or more virtual devices points at data stored in other virtual devices of the storage pool, and each virtual device corresponds to one or more physical storage devices and each virtual device comprises one or more segments, each segment representing a contiguous allocated portion of the virtual device;

receiving a request for removing at least a plurality of virtual devices from the storage pool corresponding to a plurality of source virtual devices;

removing the plurality of source virtual devices from the storage pool comprising at least a first source virtual device and a second source virtual device, the removing of each source virtual device comprising:

for each segment of data stored on the source virtual device, copying the data of the segment from the source virtual device to one or more segments on a target virtual device; and

storing at a selected virtual device from the storage pool, a mapping table corresponding to the source virtual device, comprising mappings from each source segment of the source virtual device to one or more target segments on the target virtual device;

receiving a request to read data previously stored in a removed virtual device;

identifying a mapping corresponding to the removed virtual device based upon the mapping tables corresponding to the plurality of source virtual devices, in which the mapping tables are loaded by:

determining an order in which the first source virtual device and the second source virtual device were removed; and

determining an order in which mapping tables corresponding the first source virtual device and the second source virtual device are loaded based on the order in which the first source virtual device and the second source virtual device were removed;

determining the target virtual device to which the accessed requested data is moved based on the mapping; and

retrieving the requested data from the target virtual device.

16. The computer system of claim 15 , wherein:

the mapping tables corresponding to the plurality of removed virtual devices are loaded in reverse chronological order in which the virtual devices were removed.

17. The computer system of claim 15 , further comprising:

determining whether the target virtual device includes a free contiguous storage area that is at least as large as the source segment; and

responsive to determining that none of the free contiguous storage area is as large as the source segment, storing the data of the source segment across a plurality of segments on the target virtual device.

18. The computer system of claim 15 , further comprising:

determining whether a number of segments in a contiguous portion of the source virtual device exceeds a threshold value; and

responsive to the number of segments in the contiguous portion of the source virtual device exceeding a threshold value, allocating a single segment in the target virtual device for storing the contiguous portion of the source virtual device.

19. The computer system of claim 15 , wherein a source virtual device has a configuration comprising a plurality of physical devices storing non-parity data and a physical device storing parity information, which further comprises storing instructions for a source segment on the source virtual device:

identifying a target virtual device having configuration matching the configuration of the source virtual device; and

responsive to identifying a matching target virtual device, copying the source segment from the source virtual device to the target virtual device.

Assignments (13)
SECURITY INTEREST Recorded Apr 7, 2026
From: PERFORCE SOFTWARE, INC.; DELPHIX CORP.; AKANA, INC.; ROGUE WAVE SOFTWARE, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 075368/0968 →
RELEASE OF SECURITY INTEREST Recorded Apr 7, 2026
From: CORTLAND CAPITAL MARKET SERVICES, AS COLLATERAL AGENT
To: ROGUE WAVE SOFTWARE, INC.; AKANA, INC.; GLIFFY, INC.; DELPHIX CORP.
Reel/Frame 075365/0519 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded May 24, 2024
From: DELPHIX CORP.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 067528/0384 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded May 17, 2024
From: DELPHIX CORP.
To: CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 067453/0344 →
RELEASE OF SECURITY INTEREST Recorded Mar 22, 2024
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
To: DELPHIX CORP.
Reel/Frame 066869/0540 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: SILICON VALLEY BANK
To: DELPHIX CORP.
Reel/Frame 060738/0429 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
To: DELPHIX CORP.
Reel/Frame 060737/0201 →
SECURITY INTEREST Recorded Aug 5, 2022
From: DELPHIX CORP.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 060734/0591 →
SECURITY INTEREST Recorded Jan 10, 2020
From: DELPHIX CORP.
To: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 051482/0043 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 9, 2020
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: DELPHIX CORP.
Reel/Frame 051532/0264 →
FIRST SUPPLEMENT TO AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 9, 2019
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 050673/0209 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 9, 2019
From: DELPHIX CORP.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 050673/0234 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2017
From: AHRENS, MATTHEW ALLAN; REECE, ALEXANDER WARNER; WILSON, GEORGE RAYMOND
To: DELPHIX CORP.
Reel/Frame 042259/0023 →
Cited By (6)
US 12,306,819 US 12,481,638 US 12,613,857 US 12,657,097 US 12,693,999 US 12,699,685