If a system restarts after a system crash, Volume Manager will recover mirrored volumes that were open at the time of the crash to ensure consistency. The recovery consists of placing the volumes in a READ/WRITE BACK mode whereby any incoming writes will go to all data plexes and any read requests will read from a data plex then written back to all data plexes. In addition, recovery processes are executed to read the volumes (though not necessary all at the same time), such that the data read is written to the other data plexes.
If Dirty Region Logging (DRL) is enabled, only recently used regions will be resynchronized. If DRL is not enabled, the volume will undergo full recovery.
For each mirrored volume being recovered (non-DRL), Volume manager keeps an internal non-persistent record (recover_offset) which is used to track where the recovery process has got to in the volume. If the volume recovery process is killed or stopped, the recovery process can be re-started using vxrecover of vxvol. The new recovery process will read the value of recover_offset so that it can continue where the previous process finished.
The value of recover_offset and be viewed using the following command:
vxprint -g --mv | grep recover_offset
i.e
kylie# vxprint -g testdg -m | grep recover_offset
recover_offset=5839744
If using vxtask to monitor the recovery process, the starting offset of the current recovery task is shown in the output:
kylie# vxtask list
TASKID PTID TYPE/STATE PCT PROGRESS
178 PARENT/R 0.00% 1/0(1) VXRECOVER 0.0 0.0
179 178 RDWRBACK/R 00.65% 5839744/25165824/5964672 RESYNC 0.1157 1024.10
In the above example:
Note: As the record is non-persistent, should the system be restarted, the offset will be reset to zero and that subsequent recovery attempts will start from the beginning (Full volume recovery)