[linux-lvm] LVM and RedHat 7.1
Tom Dawes-Gamble
tmdg at uksr.hp.com
Thu May 24 11:19:40 UTC 2001
HI,
I have been playing with LVM on RedHat 7.1 I've used the standard RedHat
kernel source RPM and the LVMbeta9 tools.
When building a root on LVM I found the HOW-TO at
http://www.sistina.com/lvm/doc/lvm_howto/Converting_a_root_filesys.html
didn't document that need for a "ramdisk=" option to the lilo.conf
entry for the root on LVM part. ( I've enter a bug report for that. )
I also made the stupid error of not putting ramdisk and and support for
initrd in the kernel. You you think that should be clearer in the
HOW-TO?
The LVM root file system howto at
http://www.the-infinite.org/archive/docs/lvm/howto-boot-off-root-lv.txt
does however document it. Though is refers to ramdisk_size= rather than
ramdisk=.
I was not able to get parted compiled on RH 7.1 but the version I used
was brand new. The older stable parted refused to shrink my original root
taking up the whole disk apart from /boot and some swap.
Apart from that the whole job of setting up root on LVM went like a dream.
Now for the main purpose of this message.
The /etc/rc.d/rc.sysint script in RH 7.1 has some code to activate the
LVM devices but it didn't work for me. So I have rewritten it so that
it should work for all scenarios. As shipped it only works correctly for
LVM built in to the kernel if LVM is a module it fails.
As I see it there are four possible LVM kernel configurations.
1) No LVM
2) LVM built in (Not a module)
3) LVM loadable module
4) LVM with root on LVM and loadable module.
The released rc.sysinit tests for the presence of /proc/lvm and /sbin/vgchange
to determine if vgscan and vgchange should be run.
The /proc/lvm will only exist if LVM is built in or root is on LVM.
So the script fails if you have a LVM as a loadable module.
So this is my idea as to how to have a generic rc.sysinit that caters for
all four configurations.
# LVM initialization
# If /proc/lvm exists but lvm-mod.o does not then LVM is built in therefor
# we need to activate the Volume Groups.
if [ -e /proc/lvm -a ! -e /lib/modules/$(uname -r)/kernel/drivere/md/lvm-mod.o ]
then
# If /etc/lvmtab doesn't exist then run vgscan.
if [ ! -f /etc/lvmtab ]; then
action $"Scaning for LVM devices:" /sbin/vgscan
fi
action $"Activate LVM devices:" /sbin/vgchange -a y
fi
# If /proc/lvm is not there but we have lvm-mod.o then we are not root on LVM
# so we need to activate the Volume Groups.
if [ ! -e /proc/lvm -a -e /lib/modules/$(uname -r)/kernel/drivers/md/lvm-mod.o ]
then
# If /etc/lvmtab doesn't exist then run vgscan.
if [ ! -f /etc/lvmtab ]; then
action $"Scaning for LVM devices:" /sbin/vgscan
fi
action $"Activate LVM devices:" /sbin/vgchange -a y
fi
# End of LVM initialization.
That should cover all four cases.
1) No LVM. Nothing to do.
The first if fails since there is no /proc/lvm.
The second if fails since there is no lvm-mod.o module.
2) LVM built in LVM.
The first if passes since there is a .proc.lvm and no lvm-mod.o module.
The second if fails since /proc/lvm exists after running vgchange.
3) LVM loadable module.
The first if fails since there is no /proc/lvm and there is an
lvm-mod.o module.
The second if passes for the same reasons.
4) LVM root on LVM. Nothing to since VG activated by initrd linuxrc.
The first if fails since there is an lvm-mod.o.
The second if fails since /proc/lvm exists.
Have I forgotten anything?
Am I doing anything bad?
Should I post a patch for rc.systinit?
Can anyone else test this for me?
I note there is no deactivation of the VG in the shutdown. But other messages
indicate this is not really a problem. So I have not bothered doing anything
about that.
Best regards,
Tom.
--
char *t,*n,*i="%.9s%.7s%.7s\n";extern void exit(int);extern int -----BEGIN PGP
SIGNED MESSAGE-----
Hash: SHA1
printf(const
-----BEGIN PGP SIGNATURE-----
Version: PGP 6.5.1i
iQA/AwUBOwzuSwbfKggmajr3EQK5fACdHi/ScWKxCzZN/xBYgHymLrCCWNIAnin5
jRD8sB2M03Oajhd3bwhj/9BF
=vf1m
-----END PGP SIGNATURE-----
char *,...);int main(){int v=*i,g,e=*(i-~(v/=v))%*(i+v);g=*i+~e--;
t=n=" DISPLAY'tmdg at uksr';,,;'.hp.com'*>"+g;v=g-e; e-=printf(i,n- v,e+n,t);
t=n=" DISPLAY'http://www.itrc.hp.com/' *>"-~g;exit(g+~printf(i,n+~v,e+n,t));}
More information about the linux-lvm
mailing list