Minimizing data loss with checkvob -force -fix

An understanding of the algorithm that checkvob uses the to recover missing data can help you optimize the data recovery process.
During –fix processing, checkvob uses the following algorithm to recover missing data by examining the contents of unreferenced containers. No changes are made to the database unless both the –force and –fix options are specified or you accept a fix? prompt.
  1. Scan pools for alternate containers. In a previous pass over the pools, checkvob found all referenced containers. It now scans for unreferenced containers for that element, looking for alternate containers that might be used to reconstruct a replacement for the missing container by rebinding the alternate container to take the place of the missing one. There are two types of rebind operations:

    Optimized rebind: Find alternate containers maintained by the right type manager.

    1. Find best match: identical, superset, or subset.
      • Identical. Container has correct contents (user ran chpool during interval between pool and database reference times).
      • Superset. Container has superset of versions expected by database. This is common when the pool is newer than the database.
      • Subset. Container has subset of versions expected by database. This is common when the database is newer than the pool.
    2. Clone and prune best match. Create a new container and copy the best alternate’s contents. Delete extra version data from the new container.

    Nonoptimized rebind: If no alternate containers with the right type manager are found, checkvob constructs the container one version at a time from whatever sources are available, including containers maintained by other type managers and versions in cleartext pools.

  2. If container reconstruction is incomplete, collect and report a list of missing versions.
  3. If –force is specified or the fix? prompt is accepted, update VOB database:
    1. Adjust the database to reference reconstructed containers.
    2. Adjust the database (with the equivalent of rmver –data) to remove references to lost version data.
  4. Move all of the element’s alternate containers to pool’s lost+found directory.
    Note: Because (unreferenced) alternate containers are moved to lost+found now, rather than during checkvob’s subsequent debris processing pass, you can reclaim disk space from lost+found if the disk fills up during reconstruction. (Reconstruction can consume substantial disk space.) For example:
    • A chtype binary_delta *.eps operation (from element type file) is not recorded in the older database. checkvob uses the newer pool’s unreferenced delta containers to reconstruct the missing whole copy containers expected by the older database.
    • A chpool operation is not reflected by older storage pools. The checkvob command may have to find and clone hundreds, or thousands, of unreferenced data containers.
If you use the –force –fix options, checkvob prevents you from unintentionally accepting data loss:
Note: checkvob does not find or fix corrupted data containers. A container with the correct identity information at the correct location is considered healthy.

Feedback