IP Library Granted Patent US 9,984,112
Granted Patent B1
US 9,984,112 · App. 14/755,001 · Granted May 29, 2018

Dynamically adjustable transaction log

Inventors: Yubing Wang (Southborough, MA); Philippe Armangau (Acton, MA); Christopher A. Seibel (Walpole, MA); Jean-Pierre Bono (Westborough, MA); Yining Si (Shrewsbury, MA)
Assignee: EMC IP Holding Company LLC
G06F17/30371G06F17/30321G06F17/30368
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 9,984,112
App. No.
14/755,001
Granted
May 29, 2018
Kind
B1
Abstract

Managing a circular transaction log in a data storage system includes receiving requests specifying data to be written to a data object served by the data storage system, and adding log entries to the log containing data specified by the requests at or after a tail of the log and before a head of the log. In response to a trigger event, a size of the log is dynamically increased by inserting additional storage space into the log at or after the tail and before the head, to account for differences between the rate at which entries are added to the log and the rate at which entries are flushed from the log. The disclosed technique may further operate to find the slot position in which each log entry is stored, based on the identifier of the log entry, after inserting the additional storage space into the log.

Claims (63)

1. A method of managing a circular transaction log in a data storage system, the log having a head and a tail, the method comprising:

receiving, by a storage processor of the data storage system from a set of remote requestors, requests specifying data to be written to a data object served to the remote requestors by the data storage system;

in response to receiving the requests, adding, by the storage processor, log entries to the log, each log entry containing data specified by a corresponding one of requests, the log entries being added to the log at or after the tail of the log and before the head and being flushed from the log at the head, the tail moving forward within the log towards the head as the log entries are added;

dynamically increasing, by the storage processor in response to a trigger event indicating that the log is nearly full, a size of the log by inserting additional storage space into the log at or after the tail and before the head, wherein inserting the additional storage space into the log at or after the tail and before the head enables log entries to continue to be added to the log within the additional storage space without any log entries being flushed at the head, in order to account for a rate at which entries are added to the log exceeding a rate at which entries are flushed from the log, without entries currently stored in the log being moved or copied to a larger sized log; and

synchronizing data contained in log entries to the data object that is served to the remote requestors when log entries are flushed from the log.

2. The method of claim 1 , further comprising, in response to a second trigger event that occurs after inserting a first set of additional storage space to the log:

detecting whether log entries have been flushed from the log up to and including a last log entry added to the log before the first set of additional storage space was used to store any log entries; and

further increasing the size of the log by inserting a second set of additional storage space into the log responsive to detecting that log entries have been flushed from the log up to and including a last log entry added to the log before the first set of additional storage space was used to store any log entries.

3. The method of claim 1 , wherein the log is implemented within a range of contiguous physical addresses of a file system operated by the data storage system, and

wherein inserting additional storage space into the log includes provisioning an extent of contiguous physical addresses to the file system for use by the log to store log entries.

4. The method of claim 3 , further comprising dynamically contracting the log by:

detecting a contraction trigger, the contraction trigger indicating that the previously inserted additional storage space is no longer needed to store log entries; and

removing the previously inserted storage space from the log in response to detecting the contraction trigger, such that the extent of contiguous physical addresses is no longer available for use by the log to store log entries and may be provisioned for another purpose.

5. The method of claim 1 , wherein the trigger event indicates that a rate at which requests were received during a previous time period exceeds a threshold rate; and

wherein the threshold is a maximum rate at which requests can be received without the log becoming full.

6. The method of claim 1 , further comprising:

flushing previously added log entries from the log, wherein the log entries being flushed are located at or after the head of the log and before the tail, wherein flushing the log entries located at or after the head of the log and before the tail from the log includes synchronizing data contained in the log entries located at or after the head of the log and before the tail to the data object served by the storage system by writing the data contained in the log entries located at or after the head of the log and before the tail to the data object served to the remote requestors by the data storage system and moving the head forward within the log toward the tail as log entries are flushed; and

wherein the trigger event indicates that a rate at which log entries were flushed from the log during a previous time period fell below a threshold, wherein the threshold is a minimum rate at which log entries must be flushed without the log becoming full.

7. The method of claim 1 , wherein the log is made up of a plurality of sequentially numbered slots, each slot operable to store one of the log entries, and wherein adding each log entry to the log includes storing the log entry to a slot indicated by the tail of the log and moving the tail of the log forward to a next slot after adding the log entry, and further comprising:

assigning a unique identifier to each log entry added to the log, by assigning sequentially higher integer values to sequentially added log entries;

storing an identifier of a last log entry added to the log prior to using the additional storage space to store any log entries; and

after inserting the additional storage space into the log, calculating a position of a slot storing a log entry based on an identifier assigned to the log entry and the identifier of the last log entry added to the log prior to using the additional storage space to store any log entries.

8. A data storage system, comprising a storage processor having control circuitry that includes a set of processing units coupled to memory, the control circuitry of the storage processor constructed and arranged to:

receive, from a set of remote requestors, requests specifying data to be written to a data object served to the remote requestors by the data storage system;

in response to receiving the requests, add log entries to the log, each log entry containing data specified by a corresponding one of the requests, the log entries being added to the log at or after the tail of the log and before the head and being flushed from the log at the head, the tail moving forward within the log towards the head as the log entries are added;

dynamically increase, in response to a trigger event indicating that the log is nearly full, a size of the log by inserting additional storage space into the log at or after the tail and before the head, wherein inserting the additional storage space into the log at or after the tail and before the head enables log entries to continue to be added to the log within the additional storage space without any log entries being flushed at the head, in order to account for a rate at which entries are added to the log exceeding a rate at which entries are flushed from the log, without entries currently stored in the log being moved or copied to a larger sized log; and

synchronize data contained in log entries to the data object that is served to the remote requestors when log entries are flushed from the log.

9. The data storage system of claim 8 , the control circuitry further constructed and arranged to, in response to a second trigger event that occurs after inserting a first set of additional storage space to the log:

detect whether log entries have been flushed from the log up to and including a last log entry added to the log before the first set of additional storage space was used to store any log entries; and

further increase the size of the log by inserting a second set of additional storage space into the log responsive to detecting that log entries have been flushed from the log up to and including a last log entry added to the log before the first set of additional storage space was used to store any log entries.

10. The data storage system of claim 8 , wherein the log is implemented within a range of contiguous physical addresses of a file system operated by the data storage system, and

wherein inserting additional storage space into the log includes provisioning an extent of contiguous physical addresses to the file system for use by the log to store log entries.

11. The data storage system of claim 10 , the control circuitry further constructed and arranged to dynamically contract the log by:

detecting a contraction trigger, the contraction trigger indicating that the previously inserted additional storage space is no longer needed to store log entries; and

removing the previously inserted storage space from the log in response to detecting the contraction trigger, such that the extent of contiguous physical addresses is no longer available for use by the log to store log entries and may be provisioned for another purpose.

12. The data storage system of claim 8 , wherein the trigger event indicates that a rate at which requests were received during a previous time period exceeds a threshold rate; and

wherein the threshold is a maximum rate at which requests can be received without the log becoming full.

13. The data storage system of claim 8 , the control circuitry further constructed and arranged to:

flush previously added log entries from the log, the log entries being flushed located at or after the head of the log and before tail, wherein flushing the log entries located at or after the head of the log and before the tail from the log includes synchronizing data contained in the log entries located at or after the head of the log and before the tail to the data object served by the storage system by writing the data contained in the log entries located at or after the head of the log and before the tail to the data object served to the remote requestors by the data storage system and moving the head forward within the log toward the tail as log entries are flushed; and

wherein the trigger event indicates that a rate at which log entries were flushed from the log during a previous time period fell below a threshold, wherein the threshold is a minimum rate at which log entries must be flushed without the log becoming full.

14. The data storage system of claim 8 , wherein the log is made up of a plurality of sequentially numbered slots, each slot operable to store one of the log entries, and wherein adding each log entry to the log includes storing the log entry to a slot indicated by the tail of the log and moving the tail of the log forward to a next slot after adding the log entry, and wherein the control circuitry is further constructed and arranged to:

assign a unique identifier to each log entry added to the log, by assigning sequentially higher integer values to sequentially added log entries;

store an identifier of a last log entry added to the log prior to using the additional storage space to store any log entries; and

after inserting the additional storage space into the log, calculate a position of a slot storing a log entry based on an identifier assigned to the log entry and the identifier of the last log entry added to the log prior to using the additional storage space to store any log entries.

15. The method of claim 8 , wherein the trigger event indicating that the log is nearly full is issued responsive to detecting that the tail indicates a slot that immediately precedes a slot indicated by the head, whereby the trigger event indicating that the log is nearly full occurs when only a single slot is available for storing a log entry.

16. A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by control circuitry of a data storage system, cause the control circuitry to perform a method of managing a circular transaction log in a data storage system, the method comprising:

receiving, by a storage processor of the data storage system from a set of remote requestors, requests specifying data to be written to a data object served to the remote requestors by the data storage system;

in response to receiving the requests, adding, by the storage processor, log entries to the log, each log entry containing data specified by a corresponding one of the requests, the log entries being added to the log at or after the tail of the log and before the head and being flushed from the log at the head, the tail moving forward within the log towards the head as the log entries are added;

dynamically increasing, by the storage processor in response to a trigger event indicating that the log is nearly full, a size of the log by inserting additional storage space into the log at or after the tail and before the head, wherein inserting the additional storage space into the log at or after the tail and before the head enables log entries to continue to be added to the log within the additional storage space without any log entries being flushed at the head, in order to account for a rate at which entries are added to the log exceeding a rate at which entries are flushed from the log, without entries currently stored in the log being moved or copied to a larger sized log; and

synchronizing data contained in log entries to the data object that is served to the remote requestors when log entries are flushed from the log.

17. The computer program product of claim 16 , the method further comprising, in response to a second trigger event that occurs after inserting a first set of additional storage space to the log:

detecting whether log entries have been flushed from the log up to and including a last log entry added to the log before the first set of additional storage space was used to store any log entries; and

further increasing the size of the log by inserting a second set of additional storage space into the log responsive to detecting that log entries have been flushed from the log up to and including a last log entry added to the log before the first set of additional storage space was used to store any log entries.

18. The computer program product of claim 16 , wherein the log is implemented within a range of contiguous physical addresses of a file system operated by the data storage system, and

wherein inserting additional storage space into the log includes provisioning an extent of contiguous physical addresses to the file system for use by the log to store log entries.

19. The computer program product of claim 18 , wherein the method further comprises:

dynamically contracting the log by

detecting a contraction trigger, the contraction trigger indicating that the previously inserted additional storage space is no longer needed to store log entries, and

removing the previously inserted storage space from the log in response to detecting the contraction trigger, such that the extent of contiguous physical addresses is no longer available for use by the log to store log entries and may be provisioned for another purpose.

20. The method of claim 15 , wherein the storage processor is communicably coupled to a network through a communication interface of the storage processor;

wherein the set of remote requestors comprises a plurality of host computing devices that are also communicably coupled to the network;

wherein receiving the requests by the storage processor from the set of remote requestors comprises receiving, through the communication interface of the storage processor, write requests that were transmitted by the host computing devices over the network; and

wherein for each one of the requests, responsive to the storage processor storing the data specified by the request into a corresponding one of the log entries added to the log, the storage processor transmits an acknowledgement message indicating completion of the request, through the communication interface of the storage processor over the network to a host computing device that transmitted the request to the storage processor.

Assignments (11)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2015
From: WANG, YUBING; ARMANGAU, PHILIPPE; SEIBEL, CHRISTOPHER; BONO, JEAN-PIERRE; SI, YINING
To: EMC CORPORATION
Reel/Frame 036611/0131 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2015
From: WANG, YUBIN; ARMANGAU, PHILIPPE; SEIBEL, CHRISTOPHER; BONO, JEAN-PIERRE; SI, YINING
To: EMC CORPORATION
Reel/Frame 036522/0048 →