IP Library Granted Patent US 7,941,406
Granted Patent B2
US 7,941,406 · App. 11/930,434 · Granted May 10, 2011

Techniques for snapshotting

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 7,941,406
App. No.
11/930,434
Granted
May 10, 2011
Kind
B2
Abstract

Techniques are presented for snapshotting. Blocks associated with a storage volume are frozen from volatile access upon receipt of a snapshot request. Continued volatile access to the frozen blocks is permitted by transparently mapping each frozen block to an available block within the volume that is not associated with the snapshot. Volatile access continues on the available blocks.

Claims (42)

1. A method implemented and residing in a non-transitory computer-readable medium, comprising:

taking a snapshot of a volume by freezing writes to existing blocks having data for the volume;

receiving a write request for a particular block number associated with the existing blocks after the snapshot is taken, the particular block number maps to one of the existing blocks that was frozen, the write request changing some of the data on that frozen existing block;

adding an offset to the particular block number to acquire a different block number from those block numbers that are associated with the existing blocks;

processing the write request within the offset at the different block number and managing the snapshot by mapping requests to the particular block number to the different block number maintained outside the snapshot, the different block number set aside and reserved on a same volume that holds the snapshot;

maintaining a configurable number of free blocks between each existing block, wherein each free block is empty before the snapshot is taken, and wherein at least one of the free blocks is identified by the offset and used to process the write request after the snapshot is taken; and

further comprising, serially grouping each existing block with the configurable number of the free blocks within the volume.

2. The method of claim 1 further comprising:

receiving a read request for the particular block number; and

processing the read request from the offset.

3. The method of claim 1 further comprising:

receiving a read request for an existing block number included within the existing blocks, wherein data associated with the existing block number remains unchanged since the snapshot was taken; and

processing the read request from a existing block number.

4. The method of claim 1 further comprising, maintaining a first bit map for the existing blocks reflecting the snapshot and a second bit map for the snapshot having the write request processed, wherein the second bit map identifies the offset as being a master source location for the particular block number.

5. The method of claim 2 further comprising:

taking a second snapshot for the volume by freezing writes to the existing blocks and the particular block associated with the particular block number;

receiving a second write request for a second block number associated with the existing blocks or the particular block after the second snapshot is taken;

adding a second offset to the second block number to acquire another different block number from those block numbers that are associated with the existing blocks and the particular block; and

processing the second write request from the second offset.

6. A method implemented and residing in a non-transitory computer-readable medium, comprising:

managing pre-snapshot read and write requests for a volume by determining whether block numbers associated with the pre-snapshot read and write requests are to be adjusted to locate pre-snapshot block numbers for handling the read and write requests, sequentially maintaining a configurable number of free buffer block numbers between each block number, and identifying the configurable number as a maximum number of snapshots that can be permissibly maintained for the volume at any particular point in time, and using the free buffer block numbers as the post-snapshot block numbers;

blocking post-snapshot write requests for the pre-snapshot block numbers upon receipt of a snapshot request for the volume; and

processing the post-snapshot write requests on post-snapshot block numbers that are not included within the pre-snapshot block numbers by writing the write requests to the post-snapshot block numbers and mapping any subsequent requests directed to the pre-snapshot block numbers to the post-snapshot block numbers for servicing those subsequent requests, the post-snapshot block numbers are set aside and reserved on the volume of the snapshot.

7. The method of claim 6 further comprising, maintaining a bit map for each block number of the volume, wherein each bit in the bit map identifies a particular block number to acquire a latest version of data for the volume with some bits set for pre-snapshot block numbers and other bits set for post-snapshot block numbers.

8. The method of claim 6 , wherein managing further includes adding an offset to the block numbers to acquire the pre-snapshot block numbers unless a particular block number is a first block number.

9. The method of claim 6 , wherein managing further includes mapping each block number to a particular pre-snapshot block number.

10. The method of claim 6 , wherein blocking further includes mapping the post-snapshot write requests associated with particular pre-snapshot block numbers to particular post-snapshot block numbers to ensure that no write operations are processed on pre-snapshot block numbers after the receipt of the snapshot request for the volume.

11. A system, comprising:

a block mapping service implemented in a non transitory and computer-readable medium and to process on a machine; and

a snapshot service implemented in a non transitory and computer-readable medium and to process on the machine;

the block mapping service is to adjust block numbers identified in data operations occurring on a volume for pre-snapshot locations and post-snapshot locations, and the snapshot service is to freeze volatile operations for the pre-snapshot locations when a snapshot of the volume is requested and is to communicate the snapshot to the block mapping service for it to begin using the post-snapshot locations for the volatile operations that occur on the volume after the snapshot is requested, subsequent requests directed to pre-snapshot locations that were changed are mapped and serviced from the post-snapshot locations but are still referenced via the pre-snapshot locations, the post-snapshot locations are set aside and reserved on the volume having the pre-snapshot locations, and the block mapping service is to sequentially maintain a configurable number of unused blocks between each available block of the volume, wherein each available block is identified as a pre-snapshot location and each unused block is identified as a post-snapshot location that can be used for the volatile operations following the snapshot but remains unused before the snapshot.

12. The system of claim 11 , wherein the block mapping service is to maintain a pool or unused blocks on the volume, each unused block is identified as a post-snapshot location that can be used for the volatile operations following the snapshot but remains unused before the snapshot.

13. The system of claim 11 , wherein the blocking mapping service is to adjust the block numbers by adding an offset.

14. The system of claim 11 , wherein the blocking mapping service is to adjust the block numbers by accessing a table to acquire a mapping for each particular block number.

15. The system of claim 12 , wherein each unused block, once used following the snapshot, maps to a particular pre-snapshot location and represents modifications made to data housed in the pre-snapshot location that occurred following the snapshot.

16. A system, comprising:

a snapshot service implemented in a non transitory and computer-readable medium and to process on a machine; and

a storage volume accessible to and readable by the snapshot service from the machine;

the snapshot service is to block write access to a first set of blocks when a snapshot request is received and is to permit write operations to proceed on a second set of blocks when those write operations are attempted on a number of the first set of blocks after the snapshot request, and specific ones of the first set of blocks map to specific ones of the second set of blocks, and the first set of blocks and the second set of blocks are included in the storage volume, and subsequent requests directed to first set of blocks of the snapshot are mapped and serviced from the second set of blocks outside the snapshot, the second set of blocks are set aside and reserved on the storage volume having the snapshot and a configurable number of free blocks between each existing block is maintained, wherein each free block is empty before the snapshot is taken, and wherein at least one of the free blocks is identified by the offset and used to process the write request after the snapshot is taken; further comprising, serially grouping each existing block with the configurable number of the free blocks within the volume.

17. The system of claim 16 , wherein each block in the first set of blocks is followed by two or more ones of the second set of blocks within the storage volume.

18. The system of claim 16 , wherein each block in the first set of blocks is grouped with a configurable number of blocks associated with the second set of blocks.

19. The system of claim 18 , wherein the configurable number reflects a maximum number of permissible snapshots that can be retained at any point in time for the storage volume.

Assignments (16)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
CHANGE OF NAME Recorded Sep 13, 2016
From: NOVELL, INC.
To: MICRO FOCUS SOFTWARE INC.
Reel/Frame 040020/0703 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034470/0680 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034469/0057 →
GRANT OF PATENT SECURITY INTEREST SECOND LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0316 →
GRANT OF PATENT SECURITY INTEREST FIRST LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0216 →
RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0077 →
RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0154 →
GRANT OF PATENT SECURITY INTEREST (SECOND LIEN) Recorded May 13, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026275/0018 →
GRANT OF PATENT SECURITY INTEREST Recorded May 12, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2008
From: SUDHAKAR, GOSUKONDA NAGA VENKATA SATYA
To: NOVELL, INC.
Reel/Frame 020427/0198 →