Details
-
Improvement
-
Resolution: Unresolved
-
Critical
-
Lustre 2.11.0, Lustre 2.12.0
-
9223372036854775807
Description
The following three points needs to be well considered if the LOV EA of the file (that contains DoM component) is lost or corrupted, then how to rebuild the LOV EA based on related OST-objects PFID EA?
1) How to know whether the file contains DoM component or not? Reading the MDT-object's blocks may be the most simple solution. If the DoM component has not been written before, then such detect will fail, then there will be a hole in the final rebuilt LOV EA. From the LFSCK view, it is not distinguishable from the case that if it is not a DoM file, but the OST-objects of the first component in the mirror are lost. To resolve such issue, we can make the layout LFSCK to record the LOV EA rebuilding, then make the 3rd phase scan for the rebuilt LOV EA, if the LOV EA contains hole at the beginning of the mirror, then handle it as DoM component. But if there are multiple mirrors contain hole at the each own mirror beginning, then only one can be handled as DoM component. The other holes will be kept there. As for which mirror may contains DoM also depends on the extent range of next non-DoM component in each mirror, because the DoM range is restricted.
2) How to know the DoM component ID? It seems that we have to save the DoM component ID in another EA, the best choice is the LMA EA that is always inline data of the backend object space; otherwise, we cannot guarantee that such EA is still valid if LOV EA lost or corrupted.
3) How to know the DoM component's extent range? If all the non-DoM components have been rebuilt after the 2nd cycle scanning, then we exactly to know DoM's range. But we can not know whether all the non-Dom components have been rebuilt. So we have to guess the range of DoM component based on its next non-DoM component during the 3rd phase scanning. We also need to know the LOD layer the value of lod_device::lod_dom_max_stripesize.