Question on shared storage volumes.
I have a SCSI storage unit shared between two machines M1 and M2. On one of the machine M1 i create a volume group HA_VG , create a LV vol1 and filesystem using the LV vol1.
--- >vgcreate HA_VG /dev/sdd /dev/sde /dev/sdf
--- >lvcreate -i 3 -I 8 -L 100 -n vol1 HA_VG
--- >mkfs /dev/HA_VG/vol1
--- >mount /dev/HA_VG/vol1 /mnt
Now for some reason machine M1 dies and the VG is not exported. Using the second machine M2 if i try to forcefully import the vg , vgimport command coredumps.
--- >vgimport -f HA_VG /dev/sdd /dev/sde /dev/sdf
Segmentation fault
Should vgimport coredump here. I guess this is not the right way to recove the VG . [ I can recover the VG on machine M2 using vgscan / vgchange -a y HA_VG ]
I believe the problem might be with the following piece of code in vgimport.c
strncpy ( vg_name_this,
pv_this[0]->vg_name,
strlen ( pv_this[0]->vg_name) - strlen ( EXPORTED));Here the difference between strlen will be calculated as -1 in the above senario.
May be the right way would be just print a error message instead of a core dump.
Just let me know your thoughts.
-Sachin
Sachin,
after M1 died, you should run "vgscan ; vgchange -ay HA_VG" on M2 to activate the VG there.
Quoted 20 lines · Sachin Sant
I have a SCSI storage unit shared between two machines M1 and M2. On one of the machine M1 i create a volume group
HA_VG, create a LV vol1 and filesystem using the LV vol1.--- >vgcreate
HA_VG/dev/sdd/dev/sde/dev/sdf
--- >lvcreate -i 3 -I 8 -L 100 -n vol1HA_VG
--- >mkfs/dev/HA_VG/vol1
--- >mount/dev/HA_VG/vol1/mntNow for some reason machine M1 dies and the VG is not exported. Using the second machine M2 if i try to forcefully import the vg , vgimport command coredumps.
--- >vgimport -f
HA_VG/dev/sdd/dev/sde/dev/sdf
Segmentation faultShould vgimport coredump here. I guess this is not the right way to recove the VG . [ I can recover the VG on machine M2 using vgscan / vgchange -a y
HA_VG]
Quoted 6 lines
I believe the problem might be with the following piece of code in
vgimport.cstrncpy (
vg_name_this,pv_this[0]->vg_name, strlen ( pv_this[0]->vg_name) - strlen ( EXPORTED));
Right, it shouldn't get there, because the VG wasn't exported.
Quoted 16 lines
Here the difference between strlen will be calculated as -1 in the above senario.
May be the right way would be just print a error message instead of a core dump.
Just let me know your thoughts.
-Sachin
_______________________________________________
linux-lvm mailing list
[email protected]
http://lists.sistina.com/mailman/listinfo/linux-lvm
read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
Signature · 15 lines
Regards,
Heinz -- The LVM Guy --
*** Software bugs are stupid.
Nevertheless it needs not so stupid people to solve them ***
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Heinz Mauelshagen Sistina Software Inc.
Senior Consultant/Developer Am Sonnenhang 11
56242 Marienrachdorf
Germany
[email protected] +49 2626 141200
FAX 924446
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-