×

Method for providing parity in a raid sub-system using non-volatile memory

  • US 5,948,110 A
  • Filed: 06/05/1995
  • Issued: 09/07/1999
  • Est. Priority Date: 06/04/1993
  • Status: Expired due to Term
First Claim
Patent Images

1. A method for maintaining a consistent file system, wherein said file system is stored in stripes of blocks in a RAID array, that allows for recovery of the file system to a consistent state after a disk failure and a system failure occur prior to successful completion of writing new data to one or more blocks of a stripe of said RAID array, said disk failure rendering a block of said stripe in said RAID array unreadable, comprising the steps of:

  • prior to writing new data to one or more blocks of a stripe in said RAID array, reading said one or more blocks of said stripe to obtain prior data stored in said one or more blocks of said stripe, said prior data stored in said stripe storage means comprising a prior parity value read from a parity block of said stripe and prior data read from one or more data blocks of said stripe;

    storing said prior data stored in said one or more blocks of said stripe in stripe storage means;

    initiating the writing of said new data to said one or more blocks of said stripe; and

    if said writing of said new data to said one or more blocks of said stripe in said RAID array is successfully completed, clearing said prior data from said one or more blocks of said stripe from said stripe storage means;

    otherwise, performing the steps of;

    after a failure has occurred, checking said stripe storage means to determine whether said stripe storage means contains any prior data for any stripe;

    when said stripe storage means contains prior data for any stripe, performing the steps of;

    determining whether said block of said stripe in said RAID array rendered unreadable by said disk failure is one of said data blocks of said stripe in said RAID array for which prior data has been stored in said stripe storage means;

    if said block of said stripe in said RAID array rendered unreadable by said disk failure is one of said data blocks of said stripe in said RAID array for which prior data has been stored in said stripe storage means, performing the steps of;

    reading data from each remaining readable data block of said stripe in said RAID array other than said data block rendered unreadable by said disk failure;

    recomputing a parity value for said stripe based on said prior data stored in said stripe storage means for said data block rendered unreadable by said disk failure and on said data read from said each remaining readable data block of said stripe; and

    writing said recomputed parity value for said stripe to said parity block of said stripe in said RAID array.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×