IP Library › Granted Patent US 9,501,356
Granted Patent B2
US 9,501,356 · App. 14/460,512 · Granted Nov 22, 2016

Fast data back-up and restore between volatile and flash memory

Inventors: Michael J. Palmer (Southampton, GB); Kelvin Wong (Eastleigh, GB)
Assignee: International Business Machines Corporation
G06F11/1076G06F12/0246G06F2212/7208
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,501,356
App. No.
14/460,512
Granted
Nov 22, 2016
Kind
B2
Abstract

Back-up of data to flash memory. Data to back up is written into stripes, which are sets of pages across flash memory backup devices having the same block and page address. First metadata is embedded in each stripe indicating any blocks of the flash memory known to be bad. In response to encountering a new error in a block of flash memory during writing data to back up to a stripe, re-writing the stripe starting at the next available stripe excluding pages on the block of flash memory having the new error, writing subsequent stripes excluding pages on the block of flash memory having the new error, and embedding second metadata in the re-written and subsequent stripes indicating the location of the block having the new error. Responsive to finding no bad blocks indicated in the first metadata, initiating a write to two or more stripes simultaneously.

Claims (84)

1. A method for back-up of data to flash memory, comprising:

writing data to back up into stripes excluding pages on blocks of the flash memory known to be bad, wherein a stripe is a set of pages across all available flash memory backup devices, each device including at least multiple blocks that include multiple pages, the set of pages in a stripe having a same block and page address;

embedding first metadata in each stripe indicating any blocks of the flash memory known to be bad;

in response to encountering a new error in a block of flash memory during writing data to back up to a first stripe:

re-writing the first stripe starting at a next available stripe excluding pages on the block of flash memory having the new error;

writing subsequent stripes excluding pages on the block of flash memory having the new error; and

embedding second metadata in the re-written first stripe and the subsequent stripes indicating a location of the block having the new error; and

responsive to finding no bad blocks indicated in the first metadata, initiating a write to two or more stripes simultaneously.

2. The method of claim 1 , wherein embedding first and/or second metadata in a stripe comprises:

embedding the first metadata in each page of the first stripe, the first metadata including an identification number of the stripe of data, a stripe length field of an amount of data saved in the stripe, and an indication of known and/or new error blocks, respectively.

3. The method of claim 2 , wherein in response to encountering a new error in a block of flash memory during writing data to back-up to a first stripe further comprises:

updating the second embedded metadata in the re-written first stripe and each subsequent stripe to include an updated stripe size to indicate a capacity taking into account a known bad block, and the location of the block with the new error.

4. The method of claim 2 , further comprising:

restoring backed-up data written into stripes to target memory, including:

reading the first and second metadata in the first stripe to determine pages of the first stripe that are bad;

writing all pages from the first stripe to target memory, excluding pages of the first stripe determined to be bad;

determining which stripe identification number is expected next, based on the first and second metadata;

in response to determining that the stripe identification number of a next stripe is not the expected stripe identification number and the stripe identification number of the next stripe is the stripe identification number of a stripe that has been restored to target memory:

reading the first and second metadata of the next stripe to determine pages of the stripe that are bad, including at least a new bad page;

writing all pages from the next stripe to target memory beginning at the location in target memory at which data from the previous stripe having a same stripe identification number was written, excluding pages of the stripe determined to be bad; and

adjusting the expected next stripe number.

5. The method of claim 4 , wherein restoring backed up data further comprises:

responsive to determining that there are no bad pages in the first stripe, initiating a read from two or more stripes.

6. The method of claim 1 , further comprising:

reading first and second metadata from pages of a stripe;

determining locations of error blocks; and

writing the back-up data to pages corresponding to a stripe, excluding pages on blocks determined to include errors.

7. The method of claim 1 , wherein re-writing a stripe further comprises re-writing two or more stripes simultaneously.

8. A controller system for back-up of data to flash memory, comprising:

one or more processors, one or more computer-readable memories including one or more flash memories wherein each flash memory includes at least multiple blocks that include multiple pages, one or more computer-readable tangible storage devices, and program logic stored on at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories, the program logic comprising:

program instructions to write data to back up into stripes excluding pages on blocks of the flash memory known to be bad, wherein a stripe is a set of pages across all available flash memory backup devices, the set of pages in a stripe having a same block and page address;

program instructions to embed first metadata in each stripe indicating any blocks of the flash memory known to be bad;

program instructions, in response to encountering a new error in a block of flash memory during writing data to back up to a first stripe, to:

re-write the first stripe starting at a next available stripe excluding pages on the block of flash memory having the new error;

write subsequent stripes excluding pages on the block of flash memory having the new error; and

embed second metadata in the re-written first stripe and the subsequent stripes indicating a location of the block having the new error; and

program instructions, responsive to finding no bad blocks indicated in the first metadata, to initiate a write to two or more stripes simultaneously.

9. The controller system of claim 8 , wherein the program instructions to embed first and/or second metadata in a stripe comprises:

program instructions to embed the first metadata in each page of the first stripe, the first metadata including an identification number of the stripe of data, a stripe length field of an amount of data saved in the stripe, and an indication of known and/or new error blocks, respectively.

10. The controller system of claim 9 , wherein the program instructions in response to encountering a new error in a block of flash memory during writing data to back-up to a first stripe further comprises:

program instructions to update the second embedded metadata in the re-written first stripe and each subsequent stripe to include an updated stripe size to indicate a capacity taking into account a known bad block, and the location of the block with the new error.

11. The controller system of claim 9 , further comprising:

program instructions to restore backed-up data written into stripes to target memory, including program instructions to:

read the first and second metadata in the first stripe to determine pages of the stripe that are bad;

write all pages from the first stripe to target memory, excluding pages of the first stripe determined to be bad;

determine which stripe identification number is expected next, based on the first and second metadata;

in response to determining that the stripe identification number of a next stripe is not the expected stripe identification number and the stripe identification number of the next stripe is the stripe identification number of a stripe that has been restored to target memory:

read the first and second metadata of the next stripe to determine pages of the stripe that are bad, including at least a new bad page;

write all pages from the next stripe to target memory beginning at the location in target memory at which data from the previous stripe having a same stripe identification number was written, excluding pages of the stripe determined to be bad; and

adjust the expected next stripe number.

12. The controller system of claim 11 , wherein the program instructions to restore backed up data further comprise:

program instructions, responsive to determining that there are no bad pages in the first stripe, to initiate a read from two or more stripes.

13. The controller system of claim 8 , further comprising:

program instructions to read first and second metadata from pages of a stripe;

program instructions to determine locations of error blocks; and

program instructions to write the back-up data to pages corresponding to a stripe, excluding pages on blocks determined to include errors.

14. The controller system of claim 8 , wherein the program instructions to re-write a stripe further comprises program instructions to re-write two or more stripes simultaneously.

15. A computer program product for back-up of data to flash memory, the computer program product comprising:

one or more computer-readable storage devices and program instructions stored on at least one of the one or more storage devices, the program instructions comprising:

program instructions to write data to back up into stripes excluding pages on blocks of the flash memory known to be bad, wherein a stripe is a set of pages across all available flash memory backup devices, each device including at least multiple blocks that include multiple pages, the set of pages in a stripe having a same block and page address;

program instructions to embed first metadata in each stripe indicating any blocks of the flash memory known to be bad;

program instructions, in response to encountering a new error in a block of flash memory during writing data to back up to a first stripe, to:

re-write the first stripe starting at a next available stripe excluding pages on the block of flash memory having the new error;

write subsequent stripes excluding pages on the block of flash memory having the new error; and

embed second metadata in the re-written first stripe and the subsequent stripes indicating a location of the block having the new error; and

program instructions, responsive to finding no bad blocks indicated in the first metadata, to initiate a write to two or more stripes simultaneously.

16. The computer program product of claim 15 , wherein the program instructions to embed first and/or second metadata in a stripe comprises:

program instructions to embed the first metadata in each page of the first stripe, the first metadata including an identification number of the stripe of data, a stripe length field of an amount of data saved in the stripe, and an indication of known and/or new error blocks, respectively.

17. The computer program product of claim 16 , wherein the program instructions in response to encountering a new error in a block of flash memory during writing data to back-up to a stripe further comprise:

program instructions to update the second embedded metadata in the re-written stripe and each subsequent stripe to include an updated stripe size to indicate a capacity taking into account a known bad block, and the location of the block with the new error.

18. The computer program product of claim 16 , further comprising:

program instructions to restore backed-up data written into stripes to target memory, including program instructions to:

read the first and second metadata in the first stripe to determine pages of the stripe that are bad;

write all pages from the first stripe to target memory, excluding pages of the first stripe determined to be bad;

determine which stripe identification number is expected next, based on the first and second metadata;

in response to determining that the stripe identification number of a next stripe is not the expected stripe identification number and the stripe identification number of the next stripe is the stripe identification number of a stripe that has been restored to target memory:

read the first and second metadata of the next stripe to determine pages of the stripe that are bad, including at least a new bad page;

write all pages from the next stripe to target memory beginning at the location in target memory at which data from the previous stripe having a same stripe identification number was written, excluding pages of the stripe determined to be bad; and

adjust the expected next stripe number.

19. The computer program product of claim 15 further comprising:

program instructions to read first and second metadata from pages of a stripe;

program instructions to determine locations of error blocks; and

program instructions to write the back-up data to pages corresponding to a stripe, excluding pages on blocks determined to include errors.

20. The computer program product of claim 15 , wherein the program instructions to re-write a stripe further comprise program instructions to re-write two or more stripes simultaneously.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2014
From: PALMER, MICHAEL J.; WONG, KELVIN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 033549/0979 →
Priority Claims (1)
GB 1314810.1 · Aug 19, 2013 · national
Continuity (1)
Related Publication 20150052393A1 · Feb 19, 2015