[linux-lvm] Vague "mirror_image_fault_policy" behavior specified in lvm.conf
justinlee5455 at gmail.com
Tue Oct 8 09:45:13 UTC 2013
When I set
mirror_image_fault_policy = "allocate"
in file lvm.conf, the comments in that file tell me:
# "allocate" - Remove the faulty device and try to allocate space on
# a new device to be a replacement for the failed device.
# Using this policy for the log is fast and maintains the
# ability to remember sync state through crashes/reboots.
# Using this policy for a mirror device is slow, as it
# requires the mirror to resynchronize the devices, but it
# will preserve the mirror characteristic of the device.
# This policy acts like "remove" if no suitable device and
# space can be allocated for the replacement.
As far as I know with my experiments, when mirror sync is in progress
and an IO error occurs during the sync on one of the mirror image
devices, the sync state of the mirror will be preserved (in the mirror
log) for a period of time before LVM actually allocates space to
restart mirror sync somewhere else on a new device. So if run
right after the IO error occurs, the Copy% indicating the sync
progress will stay in a constant for a while (2 or 3 minutes or so in
my experience), and after that, LVM begins to allocates space
somewhere else and discards the old sync state so the Copy% is reset
and counts up from 0% on a new device.
On the other hand, if the IO error condition on the mirror image
device (e.g. imaging a remote SAN volume or iSCSI target) can be
eliminated before the sync state is discarded, the sync can be resumed
and a resync from 0% can be avoided!
So I wonder is there a timeout value that LVM respects and use the
timeout value to decide how long the old sync state is preserved? If
such a timeout exists, how can I change it? (say if I want to preserve
the sync state for 3 or 4 hours before it discards the state)
Please correct me if I am wrong and any help/idea/discussion is appreciated!
More information about the linux-lvm