Online repair of metadata for structured data including file systems
AssigneeMicrosoft Technology Licensing, LLC
InventorsCornel Rat, Chesong Lee, Rajsekhar Das
Life of this patent
Estimating the term…
Abstract
Embodiments described herein relate to testing the integrity of a storage system's metadata while corresponding structured data remains online. Embodiments also relate to enabling corrupt storage system metadata to be repaired while the metadata remains in use and while its structured data remains online. Corruption detection and repair is described with respect to allocation metadata and reference count metadata. The embodiments are applicable to many types of storage systems, including file systems and databases, for example.
Claims20
A method performed by processing hardware and storage hardware, the method comprising:
- executing a storage system that manages structured data layered on a block-based storage unit, the structured data stored in blocks of the storage unit, the managing including maintaining a map in one or more of the blocks of the storage unit to track which of blocks currently have a state for the structured data;
- while the storage unit is online and while the structured data is online and accessible via the storage system, determining that a portion of the map is corrupt, and based on the determination that the portion of the map is corrupt, while the storage unit and structured data remain accessible via the storage system, updating the map to indicate that blocks corresponding to the corrupt portion of the map currently have the state;
- and
- while the storage unit and structured data continue to be online and accessible via the storage system, using the map to designate blocks of the storage unit as having the state and to designate blocks of the storage unit as not having the state for the structured data and updating the map accordingly to reflect the designations.
A computing device comprising:
- processing hardware;
- storage hardware communicatively coupled to the processing hardware, the storage hardware comprising a storage unit segmented into blocks by a storage system, the storage hardware storing information configured to cause the processing hardware to execute:
- the storage system, the storage system configured to organize and maintain structured data by storing the structured data in the blocks of the storage unit, the storage system configured to manage the structured data by tracking which of the blocks have an attribute, the structured data comprising objects managed by the storage system;
- the storage system further configured to maintain a map on the storage unit and use the map to service requests from the storage system to designate blocks as having the attribute, de-designate blocks as having the attribute, and query the attribute status of blocks, wherein the storage system maintains the map by updating the map to reflect designations and de-designations of blocks, the map comprising a description of keys of blocks of the storage unit;
- the map;
- integrity data comprising integrity values for respective portions of the map, each integrity value configured to be used to determine whether a respective portion of the map is corrupt;
- and
- the storage system further configured to, when servicing an allocation request, check the integrity of portions of the map with respective integrity values to identify a corrupt portion of the map, and based on identifying the corrupt portion, update the map to cause the map to indicate that a set of the blocks corresponding to the corrupt portion have the attribute.
A method performed by a computing device comprising storage hardware and processing hardware, the method comprising:
- executing a file system manager that manages a file system on a storage unit of the storage hardware, the storage segmented into blocks, the file system comprising files and directories stored in the blocks, the managing including maintaining a tree of reference counts for the files and/or the blocks;
- determining that at least a portion of the tree is corrupt;
- and
- based on the determining that the portion of the tree is corrupt, causing all requests to increase any of the reference counts that correspond to the corrupt portion to fail, and causing all requests to decrease any of the references that correspond to the corrupt portion to succeed.
Dependencies are inferred from the claim text.