Red Hat Bugzilla – Bug 72287
LVM start-up fails prior to fscks
Last modified: 2014-03-16 22:30:19 EDT
Description of Problem:
Three of eight LVM partitions are reported as not existing during boottime
fsck despite being present. It appears that the operation of LVM is not
detected correctly in /etc/rc.d/rc.sysinit and that fsck is only reporting
the first three failed devices.
Version-Release number of selected component (if applicable):
RedHat 7.3 SMP (Dual PIII) - supplied lvm (1.0.3)
Consistantly on this box.
Steps to Reproduce:
1. set up and mount LVM partitions via /etc/fstab, mark them to be
3. fsck fails with /dev/vg00/groupname: not a block device
Drops to single user "Repair Filesystem" mode.
Boots cleanly, fscks partitions and proceeds to mount them.
I fixed this problem by removing the test in /etc/rc.d/rc.sysinit for the
existance of /proc/lvm. The test is now based solely on executable-ness
of /sbin/vgchange and on the existance of /etc/lvmtab. Under these
circumstances the "Starting Logical Volume Manager" message does now appear
and the fsck proceeds normally and the system comes up with the LVM partitions
live and mounted.
Looks like a initscript issue
You need to remake your initrd so that the lvm modules are on the initrd.
This seems to me a mistake to leave it as that. Yes, I appreciate it is a way
around the problem, but it's far from intuitive and is bound to trap a large
number of people and get many new-to-Linux system administrators stuck with
problems when trying to bring up a new Linux fileserver.
If you remove the test against /proc/lvm, it still uses the presence of
/sbin/vgchange (and hence of the LVM rpm) and the existence of a /etc/lvmtab
(and hence that the vgcreate has been run) to validate that LVM is likely to be
desired. The driver is then modprobe'd by the existence of the entry in
/etc/fstab and loads fine.
There seems to me to be absolutely no need to go the initrd route - yes it
creates the /proc/lvm entry sought by the init script ahead of time - but the
test is extremely unlikely "to go off by mistake" even without the /proc/lvm
test and will not have particularly adverse effects even if it does. Making an
LVM aware initrd seems excessive merely to satisfy an init script test that is
unlikely to go off in error.
Just my tuppence worth....