IP Library Granted Patent US 10,007,671
Granted Patent B1
US 10,007,671 · App. 15/085,289 · Granted Jun 26, 2018

Data storage system employing space reclaim approximation

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,007,671
App. No.
15/085,289
Granted
Jun 26, 2018
Kind
B1
Abstract

A method of conditionally truncating a volume file in a data storage system includes identifying counts of categories of data blocks of the volume file, including (1) a first count of blocks owned by the volume file and located after the target end-of-file, (2) a second count of blocks located after the target end-of-file and requiring relocation to before the target end-of-file, and (3) a third count of blocks being free and owned by the volume file and located before the target end-of-file. An approximation of space to be freed is generated as a difference between the first count and a value expressing an excess of the second count over the third count. When the approximation is above a predetermined threshold, then the volume file is truncated to the target end-of-file, and otherwise truncating is refrained from.

Claims (33)

1. A method of operating a data storage system having physical storage devices and one or more storage processors executing computer program instructions, comprising:

defining an upper file system, a lower file system, and an intermediate logical volume, the intermediate logical volume viewed as an underlying storage volume by the upper file system and stored as a set of volume files of the lower file system, the volume files including a primary volume file for a current version of the storage volume and one or more secondary volume files for snapshot copies of the storage volume at past points in time, the method directed to conditionally truncating the primary volume file to a target end-of-file based upon an approximation of an amount of storage space to be returned to an underlying storage pool;

identifying respective counts of categories of data blocks of the primary volume file, including (1) a first count of blocks being owned by the primary volume file and located after the target end-of-file, (2) a second count of blocks being located after the target end-of-file and requiring relocation to before the target end-of-file, and (3) a third count of blocks being free and owned by the primary volume file and located before the target end-of-file;

generating an approximation of space to be freed as a difference between the first count and a value expressing an excess of the second count over the third count; and

when the approximation is above a predetermined threshold, then truncating the primary volume file to the target end-of-file, and otherwise refraining from truncating the primary volume file to the target end-of-file.

2. The method of claim 1 , wherein the first count of blocks includes a count of free owned blocks and a count of in-use owned blocks, and the second count of blocks includes the count of in-use owned blocks and a count of in-use shared blocks shared with one or more of the snapshot copies of the storage volume.

3. The method of claim 1 , wherein the second count of blocks includes a count of in-use owned blocks and a count of in-use shared blocks shared with one or more of the snapshot copes of the storage volume, and the first count of blocks includes a count of free owned blocks and the count of in-use owned blocks.

4. The method of claim 1 , wherein the value expressing an excess of the second count over the third count is calculated by a conditional function returning a difference between the second count and the third count if the difference is non-negative, and returning zero otherwise.

5. The method of claim 1 , wherein the identifying the respective counts includes reverse-mapping blocks of the primary volume file to the upper file system to identify whether the blocks are free or in-use.

6. The method of claim 1 , wherein the identifying the respective counts includes (a) resolving each block to a block number in the primary volume file and reading block metadata of the block, (b) comparing a weight value from the block metadata to a weight value from a mapping pointer for the block, and (c) identifying the block as owned when the weight value of the mapping pointer is equal to the weight value in the block metadata, and otherwise identifying the block as shared.

7. A data storage system, comprising:

physical storage devices;

respective interfaces to the physical storage devices and to a network via which client storage requests are received; and

one or more storage processors coupled to the physical storage devices and to the network via the respective interfaces, the storage processors configured and operative to perform a method including:

defining an upper file system, a lower file system, and an intermediate logical volume, the intermediate logical volume viewed as an underlying storage volume by the upper file system and stored as a set of volume files of the lower file system, the volume files including a primary volume file for a current version of the storage volume and one or more secondary volume files for snapshot copies of the storage volume at past points in time, the method directed to conditionally truncating the primary volume file to a target end-of-file based upon an approximation of an amount of storage space to be returned to an underlying storage pool;

identifying respective counts of categories of data blocks of the primary volume file, including (1) a first count of blocks being owned by the primary volume file and located after the target end-of-file, (2) a second count of blocks being located after the target end-of-file and requiring relocation to before the target end-of-file, and (3) a third count of blocks being free and owned by the primary volume file and located before the target end-of-file;

generating an approximation of space to be freed as a difference between the first count and a value expressing an excess of the second count over the third count; and

when the approximation is above a predetermined threshold, then truncating the primary volume file to the target end-of-file, and otherwise refraining from truncating the primary volume file to the target end-of-file.

8. The data storage system of claim 7 , wherein the first count of blocks includes a count of free owned blocks and a count of in-use owned blocks, and the second count of blocks includes the count of in-use owned blocks and a count of in-use shared blocks shared with one or more of the snapshot copies of the storage volume.

9. The data storage system of claim 7 , wherein the second count of blocks includes a count of in-use owned blocks and a count of in-use shared blocks shared with one or more of the snapshot copes of the storage volume, and the first count of blocks includes a count of free owned blocks and the count of in-use owned blocks.

10. The data storage system of claim 7 , wherein the value expressing an excess of the second count over the third count is calculated by a conditional function returning a difference between the second count and the third count if the difference is non-negative, and returning zero otherwise.

11. The data storage system claim 7 , wherein the identifying the respective counts includes reverse-mapping blocks of the primary volume file to the upper file system to identify whether the blocks are free or in-use.

12. The data storage system of claim 7 , wherein the identifying the respective counts includes (a) resolving each block to a block number in the primary volume file and reading block metadata of the block, (b) comparing a weight value from the block metadata to a weight value from mapping pointer for the block, and (c) identifying the block as owned when the weight value in the block metadata, and otherwise identifying the block as shared.

13. A non-transitory computer-readable medium storing computer program instructions, the instructions being executable by a set of one or more storage processors of a data storage system to cause the data storage system to perform a method including:

defining an upper file system, a lower file system, and an intermediate logical volume, the intermediate logical volume viewed as an underlying storage volume by the upper file system and stored as a set of volume files of the lower file system, the volume files including a primary volume file for a current version of the storage volume and one or more secondary volume files for snapshot copies of the storage volume at past points in time, the method directed to conditionally truncating the primary volume file to a target end-of-file based upon an approximation of an amount of storage space to be returned to an underlying storage pool;

identifying respective counts of categories of data blocks of the primary volume file, including (1) a first count of blocks being owned by the primary volume file and located after the target end-of-file, (2) a second count of blocks being located after the target end-of-file and requiring relocation to before the target end-of-file, and (3) a third count of blocks being free and owned by the primary volume file and located before the target end-of-file;

generating an approximation of space to be freed as a difference between the first count and a value expressing an excess of the second count over the third count; and

when the approximation is above a predetermined threshold, then truncating the primary volume file to the target end-of-file, and otherwise refraining from truncating the primary volume file to the target end-of-file.

14. The non-transitory computer-readable medium of claim 13 , wherein the first count of blocks includes a count of free owned blocks and a count of in-use owned blocks, and the second count of blocks includes the count of in-use owned blocks and a count of in-use shared blocks shared with one or more of the snapshot copies of the storage volume.

15. The non-transitory computer-readable medium of claim 13 , wherein the second count of blocks includes a count of in-use owned blocks and a count of in-use shared blocks shared with one or more of the snapshot copes of the storage volume, and the first count of blocks includes a count of free owned blocks and the count of in-use owned blocks.

16. The non-transitory computer-readable medium of claim 13 , wherein the value expressing an excess of the second count over the third count is calculated by a conditional function returning a difference between the second count and the third count if the difference is non-negative, and returning zero otherwise.

17. The non-transitory computer-readable medium of claim 13 , wherein the identifying the respective counts includes reverse-mapping blocks of the primary volume file to the upper file system to identify whether the blocks are free or in-use.

18. The non-transitory computer-readable medium of claim 13 , wherein the identifying the respective counts includes (a) resolving each block to a block number in the primary volume file and reading block metadata of the block, (b) comparing a weight value from the block metadata to a weight value from a mapping pointer for the block, and (c) identifying the block as owned when the weight value of the mapping pointer is equal to the weight value in the block metadata, and otherwise identifying the block as shared.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (047648/0422) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0510 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 047648/0422 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2017
From: DAVENPORT, WILLIAM C.; ZHOU, YINGCHAO
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044227/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2017
From: BONO, JEAN-PIERRE; JIANG, XIAOYE; ARMANGAU, PHILIPPE
To: EMC CORPORATION
Reel/Frame 041168/0981 →