DRL not working on mirrored volumes in VVR - RVG (Mirrored volume doing full resync of plexes)
I think I am hitting a major issue here with a mirrored volume in RVG.
SRL is supposed to provide the DRL functionality . Hence DRL logging is explicitly disabled when a volume is added to RVG. However my testing shows that DRL is not working and in the case of a mirror plex out of sync due to a server crash etc, full resync of mirror plexes is happening. (not just the dirty regions).
Here is a quick and easy way to recreate the issue:
My configuration: Infoscale 8 Redhat 8.7
I have a mirrored volume sourcevol2 (2 plexes) which I created like below:
#vxassist -g dg1 make sourcevol2 1g logtype=dco drl=on dcoversion=20 ndcomirror=1 regionsz=256 init=active
#vxassist -b -g dg1 mirror sourcevol2
I wait for the synchronization to complete
#/opt/VRTS/bin/mkfs -t vxfs -o nomaxlink /dev/vx/rdsk/dg1/sourcevol2
# mount /dev/vx/dsk/dg1/sourcevol2 /sourcevol2
I create SRL as below:
#vxassist -g dg1 make dg1_srl 1g layout=concat init=active
I create primary rvg as below:
#vradmin -g dg1 createpri dg1_rvg sourcevol2 dg1_srl
Verified dcm in dco flag is on.
#vxprint -g dg1 -VPl dg1_rvg |grep flag
flags: closed primary enabled attached bulktransfer dcm_in_dco
Added secondary
#vradmin -g dg1 addsec dg1_rvg primarynode1 primarynode2
Started initial replication
#vradmin -g dg1 -a startrep dg11_rvg primarynode2
Verified replication is uptodate
#vxrlink -g dg1 -T status rlk_primarynode2_dg1_rvg
VxVM VVR vxrlink INFO V-5-1-4467 Rlink rlk_primarynode2_dg1_rvg is up to date
Here is the actual scenario to simulate mirror plexes out of sync :
On primary:
Run a DD command to put some IO on sourcevol2
#dd if=/dev/zero of=/sourcevol2/8krandomreads.0.0 bs=512 count=1000 oflag=direct
In another terminal , force stop the sourcevol2 while dd is going on.
#vxvol -g dg1 -f stop sourcevol2
#umount /sourcevol2
Start the sourcevol2
#vxvol -g dg1 start sourcevol2
#vxtask -g dg1 list -l
Task: 160 RUNNING
Type: RDWRBACK
Operation: VOLSTART Vol sourcevol2 Dg dg1
Even though I only changed only few regions on the sourcevol2 (sequential writes of 512b), the volume goes through a full plex resync (as indicated by the time to start the volume).
Summary:
DRL on a Volume added to an RVG is not working . Hence mirrored volumes are going through a full plex resync as opposed to only resync of dirty regions.