Patent ID: 7882081
Filing Date: 2011-02-01
Classification: G06F

Abstract:
1. A method comprising: receiving a data container to be stored to a first nonvolatile storage device, wherein the first nonvolatile storage device contains a plurality of block groups; selecting a block group from the plurality of block groups, wherein each of the plurality of block groups allows sequential allocation of data blocks for storing the data container to the first nonvolatile storage device; storing data and associated metadata of the data container together to the selected block group of the plurality of block groups as a single write to contiguous data blocks within the selected block group; storing a transactional record to a second nonvolatile storage device physically separate from the first nonvolatile storage device, wherein the transactional record corresponds to the single write and contains a header and a corresponding trailer, wherein the header and trailer contain a copy of a subset of the metadata of the data container, wherein the transactional record enables storage of a subset of the metadata in the second nonvolatile storage medium in addition to storage of a complete copy of the metadata in the first non-volatile storage medium, wherein the header is stored to the separate second nonvolatile storage device at a time before the storing of the data container to the first nonvolatile storage device, and the trailer is stored to the separate second nonvolatile storage device at a time after the storing of the data container to the first nonvolatile storage device, and wherein successfully storing the trailer to the second nonvolatile storage device indicates the write has completed without errors; checking to determine whether the trailer was successfully stored in the second nonvolatile storage device; committing the storing of the data container to the first nonvolatile only when the trailer has been determined to be successfully stored in the second nonvolatile storage device; and nullifying the storing of the data container to the first nonvolatile storage device upon failure to successfully store the trailer to the second nonvolatile storage device, wherein failure to store the trailer to the second nonvolatile storage device indicates at least part of the data container has failed to be stored to the selected block group of the plurality of data blocks without errors.