* [linux-lvm] how can I init LVM on software RAID ?
@ 2001-01-12 11:03 Jürgen Frank
2001-01-12 18:59 ` Andreas Dilger
[not found] ` <3A5F1C1A.5D9C8CE4@symbionsys.com>
0 siblings, 2 replies; 9+ messages in thread
From: Jürgen Frank @ 2001-01-12 11:03 UTC (permalink / raw)
To: LVM
Hi !!
I want to create the following system :
I use the new kernel (2.4) and I want to use the software raid and the
lvm,
but my problem is... how ?
I can't find a step by step documentation and all what I try don't work.
So what did I done :
* create a mirror system with software raid (last version), after this
step I have a good raid system with the drive /dev/md0
* normally now I need to create a partition on the drive , but I read in
the raid docu that the md-drives don't support partitions !!!
But, without a partiton of the type 0x8e I can't run vgscan and
pvcreate...
So, can anyone help me ?!
Juergen
(sorry for the bad english)
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [linux-lvm] how can I init LVM on software RAID ?
2001-01-12 11:03 [linux-lvm] how can I init LVM on software RAID ? Jürgen Frank
@ 2001-01-12 18:59 ` Andreas Dilger
2001-01-12 20:13 ` [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me Les Hazelton
[not found] ` <3A5F1C1A.5D9C8CE4@symbionsys.com>
1 sibling, 1 reply; 9+ messages in thread
From: Andreas Dilger @ 2001-01-12 18:59 UTC (permalink / raw)
To: linux-lvm
Juergen writes:
> I want to create the following system :
>
> I use the new kernel (2.4) and I want to use the software raid and the
> lvm, but my problem is... how ?
You need to patch the user tools to allow this, (patch is cut-n-paste so
you will have to apply by hand).
--- ./tools/lib/pv_get_size.c.bluca.orig Sat Dec 23 11:23:30 2000
+++ ./tools/lib/pv_get_size.c Sat Dec 23 14:27:47 2000
@@ -97,6 +97,7 @@
if ( dir_cache[i].st_rdev == st_rdev)
break;
}
+ strncpy ( disk_dev_name, dir_cache[i].dev_name, sizeof (
disk_dev_name
) - 1);
} else {
strncpy ( disk_dev_name, dev_name, sizeof ( disk_dev_name) - 1);
}
@@ -104,8 +105,6 @@
ret = -LVM_EPV_GET_SIZE_LVM_DIR_CACHE;
goto pv_get_size_end;
}
-
- strncpy ( disk_dev_name, dir_cache[i].dev_name, sizeof ( disk_dev_name) -
1)
;
first = 1;
if ( ( pv_handle = open ( disk_dev_name, O_RDONLY)) == -1) {
> * normally now I need to create a partition on the drive , but I read in
> the raid docu that the md-drives don't support partitions !!!
>
> But, without a partiton of the type 0x8e I can't run vgscan and
> pvcreate...
You can run pvcreate on a whole drive, but only with the above patch.
Cheers, Andreas
--
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert
^ permalink raw reply [flat|nested] 9+ messages in thread
* [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me
2001-01-12 18:59 ` Andreas Dilger
@ 2001-01-12 20:13 ` Les Hazelton
2001-01-12 22:10 ` Chris Worley
2001-01-13 0:54 ` Andreas Dilger
0 siblings, 2 replies; 9+ messages in thread
From: Les Hazelton @ 2001-01-12 20:13 UTC (permalink / raw)
To: linux-lvm
[-- Attachment #1: Type: text/plain, Size: 947 bytes --]
I have been working on a problem with 0.8final - lvmcreate_initrd for
the past week or so - off and on. The problem is that the step where
the files are copied to the ram disk fails for lack of space even though
the ram disk has about 7 meg free.
If I duplicate the commands from the command line I can create an 8 meg
ram disk and fill the full 8 meg.
My system is running Mandrake 7.2 and the kernel is the source
distributed by Mandrake kernel-2.2.17-21mdk patched with
lvm-0.8final-2.2.16TL.patch.
As far as I can tell, everything else is working correctly. I can extend
my reiserfs filesystems which are on LVs while they are on-line and in
use with no identified problems. I just can't build a new initrd for a
new kernel compile.
I have attached a copy of the lvmcreate_initrd output and that of a df
command also.
I would appreciate any ideas on how to resolve this.
--
Good Journey, longevity and prosperity to all
Les Hazelton
[-- Attachment #2: wrk.txt --]
[-- Type: text/plain, Size: 1652 bytes --]
[root@farpt1 /tmp]# lvmcreate_initrd
Logical Volume Manager 0.8 by Heinz Mauelshagen 11/11/1999
lvmcreate_initrd -- this script creates a LVM initial ram disk in /boot/initrd.gz
lvmcreate_initrd -- making ram filesystem
lvmcreate_initrd -- mounting ram filesystem
lvmcreate_initrd -- creating etc/conf.modules
lvmcreate_initrd -- creating new modules.dep
lvmcreate_initrd -- copying files to ram disk
find: /lib/modules/2.2.17-21mdk-01/block/lvm.o: No such file or directory
lvmcreate_initrd -- figuring out shared libraries
lvmcreate_initrd -- copying shared libraries to ram disk
strip: /tmp/mnt.1514/ram/lib/ld-linux.so.2: No such file or directory
strip: /tmp/mnt.1514/ram/lib/libc.so.6: No such file or directory
strip: /tmp/mnt.1514/ram/lib/libdl.so.2: No such file or directory
strip: /tmp/mnt.1514/ram/lib/libhistory.so.4.1: No such file or directory
strip: /tmp/mnt.1514/ram/lib/liblvm.so: No such file or directory
strip: /tmp/mnt.1514/ram/lib/libreadline.so.4.1: No such file or directory
strip: /tmp/mnt.1514/ram/lib/libtermcap.so.2: No such file or directory
lvmcreate_initrd -- creating linuxrc
lvmcreate_initrd -- ERROR creating linuxrc
[root@farpt1 /tmp]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda6 1.3G 1.2G 20M 98% /
/dev/hda1 45M 4.3M 39M 10% /boot
/dev/lvg01/home 1.0G 129M 895M 13% /home
/dev/lvg01/usr 2.0G 1.3G 753M 63% /usr
/dev/lvg01/src 700M 181M 519M 26% /usr/src
/dev/lvg01/local 1.0G 517M 507M 51% /usr/local
/dev/lvg01/var 300M 121M 179M 40% /var
/dev/ram1 7.0M 876k 6.1M 12% /tmp/mnt.1514/ram
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me
2001-01-12 20:13 ` [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me Les Hazelton
@ 2001-01-12 22:10 ` Chris Worley
2001-01-13 1:07 ` Andreas Dilger
2001-01-13 0:54 ` Andreas Dilger
1 sibling, 1 reply; 9+ messages in thread
From: Chris Worley @ 2001-01-12 22:10 UTC (permalink / raw)
To: linux-lvm, seawolf
Les,
I remember a similar problem from a different initrd: with such a
small file system, there aren't enough inodes created to hold a large
number of small files. For example, "/dev/*" files don't require much
actual file system space, but a disproportionate number of file
pointers are required. I believe this is controlled by reducing the
bytes/inode setting in mke2fs (but I forget).
My lvmcreate_initrd says: "mke2fs -m0 -i 1024 $DEVRAM $INITRDSIZE"
The way to test this is to execute each of the commands in
lvmcreate_initrd manually: when the error occurs, return to the point
where "mke2fs" is run using a different value for "-i". You should at
least see the error messages start on different files for each iteration.
Note that a lot of the commands used in lvmcreate_initrd pipe their
error output to /dev/null. Don't do this during testing.
Also, are you sure your ramdisk size is 8MB? The default is 4MB: it
needs to be set on the lilo command line or when configuring the
current kernel. I think this is a mistake... since the initrd is not
necessarily being built on the same system where it's going to be
used, ramdisks should be avoided (since it may require rebooting if
you're not already setup for 8MB ramdisks), using a loopback
filesystem would be easier (if it's not currently part of the kernel,
then the module can be loaded -- no reason to reboot).
Hope that helps,
Chris
Les Hazelton wrote:
> I have been working on a problem with 0.8final - lvmcreate_initrd for
> the past week or so - off and on. The problem is that the step where
> the files are copied to the ram disk fails for lack of space even though
> the ram disk has about 7 meg free.
>
> If I duplicate the commands from the command line I can create an 8 meg
> ram disk and fill the full 8 meg.
>
> My system is running Mandrake 7.2 and the kernel is the source
> distributed by Mandrake kernel-2.2.17-21mdk patched with
> lvm-0.8final-2.2.16TL.patch.
>
> As far as I can tell, everything else is working correctly. I can extend
> my reiserfs filesystems which are on LVs while they are on-line and in
> use with no identified problems. I just can't build a new initrd for a
> new kernel compile.
>
> I have attached a copy of the lvmcreate_initrd output and that of a df
> command also.
>
> I would appreciate any ideas on how to resolve this.
>
>
>
> ------------------------------------------------------------------------
>
> [root@farpt1 /tmp]# lvmcreate_initrd
>
> Logical Volume Manager 0.8 by Heinz Mauelshagen 11/11/1999
>
> lvmcreate_initrd -- this script creates a LVM initial ram disk in /boot/initrd.gz
>
> lvmcreate_initrd -- making ram filesystem
> lvmcreate_initrd -- mounting ram filesystem
> lvmcreate_initrd -- creating etc/conf.modules
> lvmcreate_initrd -- creating new modules.dep
> lvmcreate_initrd -- copying files to ram disk
> find: /lib/modules/2.2.17-21mdk-01/block/lvm.o: No such file or directory
> lvmcreate_initrd -- figuring out shared libraries
> lvmcreate_initrd -- copying shared libraries to ram disk
> strip: /tmp/mnt.1514/ram/lib/ld-linux.so.2: No such file or directory
> strip: /tmp/mnt.1514/ram/lib/libc.so.6: No such file or directory
> strip: /tmp/mnt.1514/ram/lib/libdl.so.2: No such file or directory
> strip: /tmp/mnt.1514/ram/lib/libhistory.so.4.1: No such file or directory
> strip: /tmp/mnt.1514/ram/lib/liblvm.so: No such file or directory
> strip: /tmp/mnt.1514/ram/lib/libreadline.so.4.1: No such file or directory
> strip: /tmp/mnt.1514/ram/lib/libtermcap.so.2: No such file or directory
> lvmcreate_initrd -- creating linuxrc
> lvmcreate_initrd -- ERROR creating linuxrc
>
> [root@farpt1 /tmp]# df -h
> Filesystem Size Used Avail Use% Mounted on
> /dev/hda6 1.3G 1.2G 20M 98% /
> /dev/hda1 45M 4.3M 39M 10% /boot
> /dev/lvg01/home 1.0G 129M 895M 13% /home
> /dev/lvg01/usr 2.0G 1.3G 753M 63% /usr
> /dev/lvg01/src 700M 181M 519M 26% /usr/src
> /dev/lvg01/local 1.0G 517M 507M 51% /usr/local
> /dev/lvg01/var 300M 121M 179M 40% /var
> /dev/ram1 7.0M 876k 6.1M 12% /tmp/mnt.1514/ram
> wrk.txt
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> 7bit
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me
2001-01-12 20:13 ` [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me Les Hazelton
2001-01-12 22:10 ` Chris Worley
@ 2001-01-13 0:54 ` Andreas Dilger
2001-01-13 3:51 ` Les Hazelton
1 sibling, 1 reply; 9+ messages in thread
From: Andreas Dilger @ 2001-01-13 0:54 UTC (permalink / raw)
To: linux-lvm
Les, you write:
> I have been working on a problem with 0.8final - lvmcreate_initrd for
> the past week or so - off and on. The problem is that the step where
> the files are copied to the ram disk fails for lack of space even though
> the ram disk has about 7 meg free.
Is it possible you are running out of inodes on the ram disk? You can
check with "df -i". Looking at the lvmcreateinitrd script, this should
not happen because you have 1 inode per 1kB filesystem, so you should
have 8000 inodes (probably too many, or not if you have a large /dev).
I had a look at the lvmcreateinitrd script and fixed a few things. I've
attached the whole file here, because the patch is larger than the file.
The code is generally the same, but it seems I changed something on more
than half of the lines. Joe, can you please consider adding to CVS?
- call the ramdisk initrd-lvm-$VERSION.gz to allow multiple ramdisk images
- use INITRDSIZE when creating the initrd image (not fixed 8192 blocks)
(this was already in the Changelog, but appears not to have been fixed?)
- don't include /sbin/modprobe in INITRDFILES twice (cpio complains)
- don't include /dev in INITRDFILES (handle /dev separately)
- check for kernel/drivers/md/lvm-mod.o, block/lvm-mod.o and block/lvm.o,
rather than just using kernel version (no error if LVM is in kernel)
- mount ramdisk at /tmp/mnt.$$ instead of /tmp/mnt.$$/ram (no real benefit)
- add cleanup function called on all errors or interrupt or exit
- use sh HERE documents when creating files /etc/fstab /linuxrc
- check libraries for all INITRDFILES files, not just /sbin/vgscan and /bin/sh
- check /etc/modules.conf before /etc/conf.modules (the preferred order)
- don't redirect messages to /dev/null all the time (hard to troubleshoot),
instead have the commands be quiet unless there is an error
- remove bashisms in case we are using real /bin/sh instead of bash
- don't cd to ramdisk, because it is busy if we have an error (can't unmount)
Cheers, Andreas
===========================================================================
#!/bin/sh
#
# Copyright (C) 1997 - 2000 Heinz Mauelshagen, Sistina Software
#
# June 1999
# December 1999
# January 2000
# January 2001
#
# LVM is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# LVM is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LVM; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
#
# Changelog
#
# 16/11/1999 - corrected -N type with mke2fs
# 19/12/1999 - use correct ramdisk size, strip shared library to save space
# 04/01/2000 - support /proc mount, because lvm_dir_cache now uses it
# 01/12/2001 - always create enough inodes in ramdisk for new files
# [AED] - don't try to copy LVM module if LVM is compiled into kernel
# - check all INITRDFILES for library dependencies
# - make commands quiet and avoid redirecting errors to /dev/null
# - use cleanup function for all errors, interrupts, normal exit
#
cmd=`basename $0`
VERSION=$1
[ -z "$VERSION" ] && VERSION=`uname -r`
DEVRAM=/tmp/initrd.$$
INITRD=/boot/initrd-lvm-$VERSION.gz
INITRDSIZE=8192
MODULES=/lib/modules/$VERSION
INITRDFILES="/sbin/modprobe /sbin/vgchange /sbin/vgscan /bin/bash /bin/mount /bin/umount /bin/sh /bin/rm /sbin/insmod $MODULES/modules.dep"
if [ -r $MODULES/kernel/drivers/md/lvm-mod.o ]; then
INITRDFILES="$INITRDFILES $MODULES/kernel/drivers/md/lvm-mod.o"
elif [ -r $MODULES/block/lvm-mod.o ]; then
INITRDFILES="$INITRDFILES $MODULES/block/lvm-mod.o"
elif [ -r $MODULES/block/lvm.o ]; then
INITRDFILES="$INITRDFILES $MODULES/block/lvm.o"
fi
TMPMNT=/tmp/mnt.$$
cleanup () {
[ "`mount | grep $DEVRAM`" ] && umount $DEVRAM
[ -f $DEVRAM ] && rm $DEVRAM
[ -d $TMPMNT ] && rmdir $TMPMNT
exit $1
}
trap "
echo -e 'Bye bye...\n'
cleanup 1
" 1 2 3 15
create_fstab () {
cat << FSTAB > $TMPMNT/etc/fstab
/dev/ram / ext2 defaults 0 0
proc /proc proc defaults 0 0
FSTAB
chmod 644 $TMPMNT/etc/fstab
}
create_linuxrc () {
cat << LINUXRC > $TMPMNT/linuxrc
#!/bin/sh
/sbin/modprobe lvm-mod
/bin/mount /proc
/sbin/vgscan
/sbin/vgchange -a y
/bin/umount /proc
LINUXRC
chmod 555 $TMPMNT/linuxrc
}
#
# Main
#
echo -e "\nLogical Volume Manager 0.9 by Heinz Mauelshagen 01/12/2001\n"
echo -e "$cmd -- create an LVM initial ram disk $INITRD\n"
# figure out which actual shared libraries we need in our initrd
echo "$cmd -- figuring out shared libraries"
SHLIBS=`ldd $INITRDFILES 2>/dev/null | awk '{if (/=>/) { print $3 }}' | sort -u`
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR figuring out needed shared libraries\n"
exit 1
fi
echo "$cmd -- making ram filesystem"
dd if=/dev/zero of=$DEVRAM count=$INITRDSIZE bs=1024 >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR creating loopback file\n"
cleanup 1
fi
# We could use -N to specify the number of inodes, but this option only
# appeared in mke2fs 1.14 (Jan 1999) so we will avoid it at least for now
NUMINO="`find /dev $SHLIBS $INITRDFILES 2>/dev/null | wc -w`"
#mke2fs -q -F -m0 -N `expr $NUMINO + 64` $DEVRAM $INITRDSIZE
BYTES_PER_INODE=`expr $INITRDSIZE \* 1024 / \( $NUMINO + 64 \)`
mke2fs -q -F -m0 -i $BYTES_PER_INODE $DEVRAM $INITRDSIZE
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR making ram disk filesystem\n"
cleanup 1
fi
mkdir $TMPMNT
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR making $TMPMNT\n"
cleanup 1
fi
echo "$cmd -- mounting ram filesystem"
mount -oloop $DEVRAM $TMPMNT
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR mounting $DEVRAM on $TMPMNT\n"
cleanup 1
fi
mkdir $TMPMNT/etc $TMPMNT/proc
#
# create new modules configuration to avoid kmod complaining
# about nonexsisting modules.
#
MODCONF=/etc/modules.conf
[ ! -r $MODCONF -a -r /etc/conf.modules ] && MODCONF=/etc/conf.modules
echo "$cmd -- creating new $MODCONF"
MAJ=0
while [ $MAJ -lt 256 ]; do
echo "alias block-major-$MAJ off"
echo "alias char-major-$MAJ off"
MAJ=`expr $MAJ + 1`
done > $TMPMNT/$MODCONF
# to ensure, that modprobe doesn complain about timestamps
echo "$cmd -- creating new modules.dep"
depmod -a $VERSION
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR running depmod\n"
cleanup 1
fi
# copy necessary files to ram disk
echo "$cmd -- copying files to ram disk"
find $INITRDFILES /dev|cpio -pdm --quiet $TMPMNT
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR cpio to ram disk\n"
cleanup 1
fi
echo "$cmd -- copying shared libraries to ram disk"
find $SHLIBS|cpio -Lpdm --quiet $TMPMNT
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR copying needed shared libraries to ram disk\n"
cleanup 1
fi
for lib in $SHLIBS
do
strip $TMPMNT$lib >/dev/null
done
echo "$cmd -- creating new /linuxrc"
create_linuxrc
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR creating linuxrc\n"
cleanup
exit 1
fi
echo "$cmd -- creating new /etc/fstab"
create_fstab
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR creating /etc/fstab\n"
cleanup 1
fi
echo "$cmd -- ummounting ram disk"
umount $DEVRAM
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR umounting $DEVRAM\n"
cleanup 1
fi
echo "$cmd -- creating compressed initrd in $INITRD"
dd if=$DEVRAM bs=1k count=$INITRDSIZE 2>/dev/null | gzip -9 > $INITRD
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR creating $INITRD\n"
cleanup 1
fi
cleanup 0
--
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me
2001-01-12 22:10 ` Chris Worley
@ 2001-01-13 1:07 ` Andreas Dilger
0 siblings, 0 replies; 9+ messages in thread
From: Andreas Dilger @ 2001-01-13 1:07 UTC (permalink / raw)
To: linux-lvm; +Cc: seawolf
Chris, you write:
> For example, "/dev/*" files don't require much
> actual file system space, but a disproportionate number of file
> pointers are required. I believe this is controlled by reducing the
> bytes/inode setting in mke2fs (but I forget).
>
> My lvmcreate_initrd says: "mke2fs -m0 -i 1024 $DEVRAM $INITRDSIZE"
I submitted a new lvmcreateinitrd script in another message which fixes
several things, but now I realize it may not help Les. The "-i 1024"
option will create the maximum number of inodes that mke2fs will allow
using this option. He can change the code (which is commented out in
my patch) to use "mke2fs -N" which will allow him to create enough inodes
(more than "mke2fs -i" will allow). You need at least mke2fs 1.14 to
do this. Maybe I will automate this as well.
> The way to test this is to execute each of the commands in
> lvmcreate_initrd manually: when the error occurs, return to the point
> where "mke2fs" is run using a different value for "-i". You should at
> least see the error messages start on different files for each iteration.
This is automated in my new script. Les must have > 8192 devices.
> Note that a lot of the commands used in lvmcreate_initrd pipe their
> error output to /dev/null. Don't do this during testing.
This is also fixed - commands run quietly, but you can see any errors.
> Also, are you sure your ramdisk size is 8MB? The default is 4MB: it
> needs to be set on the lilo command line or when configuring the
> current kernel. I think this is a mistake... since the initrd is not
> necessarily being built on the same system where it's going to be
> used, ramdisks should be avoided (since it may require rebooting if
> you're not already setup for 8MB ramdisks), using a loopback
> filesystem would be easier (if it's not currently part of the kernel,
> then the module can be loaded -- no reason to reboot).
The old script uses a loopback filesystem, not a ramdisk, to build the image.
Cheers, Andreas
--
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me
2001-01-13 0:54 ` Andreas Dilger
@ 2001-01-13 3:51 ` Les Hazelton
0 siblings, 0 replies; 9+ messages in thread
From: Les Hazelton @ 2001-01-13 3:51 UTC (permalink / raw)
To: linux-lvm
[-- Attachment #1: Type: text/plain, Size: 1030 bytes --]
Andreas Dilger wrote:
> Is it possible you are running out of inodes on the ram disk? You can
This is the obviously the reason for the problem. I did a scan of /dev
using [ls /dev | grep -c ""] which produced a number 6261. There are a
huge number if ISDN related entries in /dev. I need to look at removing
them since I don't use ISDN.
> - call the ramdisk initrd-lvm-$VERSION.gz to allow multiple ramdisk
I really like the new name - saves me from changing it by hand ;-)
> Cheers, Andreas
The new lvmcreate_initrd you posted got me running - with a few changes.
I had to shift to the mke2fs command with the -N parm as you suggested.
Even with the -N parm I was still having problems so I rebooted the
system with a 12288k ram disk size and adjusted the script accordingly.
That got everything working.
I also made a change - for testing - so I could see the generated mke2fs
command. I have attached the script as I used it. Thanks for the help.
--
Good Journey, longevity and prosperity to all
Les Hazelton
[-- Attachment #2: lvm-initrd --]
[-- Type: text/plain, Size: 5919 bytes --]
#!/bin/sh
#
# Copyright (C) 1997 - 2000 Heinz Mauelshagen, Sistina Software
#
# June 1999
# December 1999
# January 2000
# January 2001
#
# LVM is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# LVM is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LVM; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
#
# Changelog
#
# 16/11/1999 - corrected -N type with mke2fs
# 19/12/1999 - use correct ramdisk size, strip shared library to save space
# 04/01/2000 - support /proc mount, because lvm_dir_cache now uses it
# 01/12/2001 - always create enough inodes in ramdisk for new files
# [AED] - don't try to copy LVM module if LVM is compiled into kernel
# - check all INITRDFILES for library dependencies
# - make commands quiet and avoid redirecting errors to /dev/null
# - use cleanup function for all errors, interrupts, normal exit
#
cmd=`basename $0`
VERSION=$1
[ -z "$VERSION" ] && VERSION=`uname -r`
DEVRAM=/tmp/initrd.$$
INITRD=/boot/initrd-lvm-$VERSION.gz
INITRDSIZE=12288
MODULES=/lib/modules/$VERSION
INITRDFILES="/sbin/modprobe /sbin/vgchange /sbin/vgscan /bin/bash /bin/mount /bin/umount /bin/sh /bin/rm /sbin/insmod $MODULES/modules.dep"
if [ -r $MODULES/kernel/drivers/md/lvm-mod.o ]; then
INITRDFILES="$INITRDFILES $MODULES/kernel/drivers/md/lvm-mod.o"
elif [ -r $MODULES/block/lvm-mod.o ]; then
INITRDFILES="$INITRDFILES $MODULES/block/lvm-mod.o"
elif [ -r $MODULES/block/lvm.o ]; then
INITRDFILES="$INITRDFILES $MODULES/block/lvm.o"
fi
TMPMNT=/tmp/mnt.$$
cleanup () {
[ "`mount | grep $DEVRAM`" ] && umount $DEVRAM
[ -f $DEVRAM ] && rm $DEVRAM
[ -d $TMPMNT ] && rmdir $TMPMNT
exit $1
}
trap "
echo -e 'Bye bye...\n'
cleanup 1
" 1 2 3 15
create_fstab () {
cat << FSTAB > $TMPMNT/etc/fstab
/dev/ram / ext2 defaults 0 0
proc /proc proc defaults 0 0
FSTAB
chmod 644 $TMPMNT/etc/fstab
}
create_linuxrc () {
cat << LINUXRC > $TMPMNT/linuxrc
#!/bin/sh
/sbin/modprobe lvm-mod
/bin/mount /proc
/sbin/vgscan
/sbin/vgchange -a y
/bin/umount /proc
LINUXRC
chmod 555 $TMPMNT/linuxrc
}
#
# Main
#
echo -e "\nLogical Volume Manager 0.9 by Heinz Mauelshagen 01/12/2001\n"
echo -e "$cmd -- create an LVM initial ram disk $INITRD\n"
# figure out which actual shared libraries we need in our initrd
echo "$cmd -- figuring out shared libraries"
SHLIBS=`ldd $INITRDFILES 2>/dev/null | awk '{if (/=>/) { print $3 }}' |
sort -u`
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR figuring out needed shared libraries\n"
exit 1
fi
echo "$cmd -- making ram filesystem"
dd if=/dev/zero of=$DEVRAM count=$INITRDSIZE bs=1024 >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR creating loopback file\n"
cleanup 1
fi
# We could use -N to specify the number of inodes, but this option only
# appeared in mke2fs 1.14 (Jan 1999) so we will avoid it at least for now
NUMINO="`find /dev $SHLIBS $INITRDFILES 2>/dev/null | wc -w`"
#mke2fs -q -F -m0 -N `expr $NUMINO + 64` $DEVRAM $INITRDSIZE
BYTES_PER_INODE=`expr $INITRDSIZE \* 1024 / \( $NUMINO + 64 \)`
#rnCmd="mke2fs -q -F -m0 -i $BYTES_PER_INODE $DEVRAM $INITRDSIZE"
rnCmd="mke2fs -q -F -m0 -N `expr $NUMINO + 64` $DEVRAM $INITRDSIZE"
echo "$cmd -- mke2fs command ["$rnCmd"]"
$rnCmd
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR making ram disk filesystem\n"
cleanup 1
fi
mkdir $TMPMNT
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR making $TMPMNT\n"
cleanup 1
fi
echo "$cmd -- mounting ram filesystem"
mount -oloop $DEVRAM $TMPMNT
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR mounting $DEVRAM on $TMPMNT\n"
cleanup 1
fi
mkdir $TMPMNT/etc $TMPMNT/proc
#
# create new modules configuration to avoid kmod complaining
# about nonexsisting modules.
#
MODCONF=/etc/modules.conf
[ ! -r $MODCONF -a -r /etc/conf.modules ] && MODCONF=/etc/conf.modules
echo "$cmd -- creating new $MODCONF"
MAJ=0
while [ $MAJ -lt 256 ]; do
echo "alias block-major-$MAJ off"
echo "alias char-major-$MAJ off"
MAJ=`expr $MAJ + 1`
done > $TMPMNT/$MODCONF
# to ensure, that modprobe doesn complain about timestamps
echo "$cmd -- creating new modules.dep"
depmod -a $VERSION
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR running depmod\n"
cleanup 1
fi
# copy necessary files to ram disk
echo "$cmd -- copying files to ram disk"
find $INITRDFILES /dev|cpio -pdm --quiet $TMPMNT
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR cpio to ram disk\n"
cleanup 1
fi
echo "$cmd -- copying shared libraries to ram disk"
find $SHLIBS|cpio -Lpdm --quiet $TMPMNT
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR copying needed shared libraries to ram disk\n"
cleanup 1
fi
for lib in $SHLIBS
do
strip $TMPMNT$lib >/dev/null
done
echo "$cmd -- creating new /linuxrc"
create_linuxrc
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR creating linuxrc\n"
cleanup
exit 1
fi
echo "$cmd -- creating new /etc/fstab"
create_fstab
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR creating /etc/fstab\n"
cleanup 1
fi
echo "$cmd -- ummounting ram disk"
umount $DEVRAM
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR umounting $DEVRAM\n"
cleanup 1
fi
echo "$cmd -- creating compressed initrd in $INITRD"
dd if=$DEVRAM bs=1k count=$INITRDSIZE 2>/dev/null | gzip -9 > $INITRD
if [ $? -ne 0 ]; then
echo -e "$cmd -- ERROR creating $INITRD\n"
cleanup 1
fi
cleanup 0
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [linux-lvm] how can I init LVM on software RAID ?
[not found] ` <3A5F27F0.1090002@liberate.com>
@ 2001-01-16 7:16 ` Jürgen Frank
[not found] ` <20010116092247.G717@66bassett.freeserve.co.uk>
0 siblings, 1 reply; 9+ messages in thread
From: Jürgen Frank @ 2001-01-16 7:16 UTC (permalink / raw)
To: Chris Worley, LVM
Hi everyone, Hi Chris
ok, I think I have a little solution for my problem with the LVM over
SoftwareRaid. It's seems to
work with the new beta version (sorry I don't try the patch for the
0.9).
So we have only one little problem, if we boot our system the raid1
(mirror)-system don't start correctly.
(on off the mirror disk isn't running). In that case the lvm don't start
too !?
But I think that's more a problem of the SoftwareRaid , possible it's a
hardware failure of the disk or the disk have a very high startup time.
But I don't understand why lvm don't startup, normally this is a
transparenc fault , or ?
byebye Juergen
>Chris Worley wrote:
>
> Jürgen,
>
> You are correct. That is a very good question (and valid for this
> newsgroup). I don't have an answer. I've seen the documentation that
> says you can make raid 10 & 50 (etc...) by mixing MD's under PV's, as
> well as making VG's out of LVM's (but why?). I've also seen errors if
> I haven't set my PV's partition to 8e... and there's no way to fdisk
> an MD (to set the partition type). I would worry about the
> performance of two layers of software overhead below the file system.
>
> I had barely crawled out of bed when I saw your post and thought "I
> can help a newbie". This is not a trivial question, I was wrong ;)
>
> Chris
>
> Jürgen Frank wrote:
>
> > Chris Worley wrote:
> >
> >> Jürgen,
> >>
> >> "md" and "lvm" are two different ways of making a software raid.
> >>
> >> lvm only does raid0. The main purpose of LVM is to allow you to manage
> >> disks underneath the file system... adding and removing disks
> >> dynamically.
> >>
> >
> >
> > Jep, that's the point why I want to use this two systems. So I want to
> > create a RAID 1 / 5 system and on the top I put the LVM. With this
> > method I have a good system with snapshot and enlargment feature !!!
> > And if I read all the docu (the howto, the pdf from sistina) lvm works
> > fine with the md - drives. But, that is the point which I can't follow
> > in the moment. Because I can't make partitions on a md drive and LVM
> > need this partitions ...
> >
> >
> >
> >
> >> There should be HOWTO's for md in your /usr/doc area. The LVM newsgroup
> >> is not a good place to ask MD related questions. There are a few
> >> "howto's" for LVM:
> >>
> >> http://www.sistina.com/lvm/Pages/howto.html
> >>
> >> I like:
> >>
> >> http://www.ds9a.nl/lvm-howto/HOWTO//cvs/lvm-howto/lvm-howto.html
> >>
> >> Chris
> >>
> >
> >
> > I read all this docu, but I can't find any help for a system LVM over
> > MD-Drives (Software RAID) !!!
> >
> >
> > Juergen
> >
> >
> >> Jürgen Frank wrote:
> >>
> >>> Hi !!
> >>>
> >>> I want to create the following system :
> >>>
> >>> I use the new kernel (2.4) and I want to use the software raid and the
> >>> lvm,
> >>> but my problem is... how ?
> >>>
> >>> I can't find a step by step documentation and all what I try don't work.
> >>>
> >>> So what did I done :
> >>>
> >>> * create a mirror system with software raid (last version), after this
> >>> step I have a good raid system with the drive /dev/md0
> >>>
> >>> * normally now I need to create a partition on the drive , but I read in
> >>> the raid docu that the md-drives don't support partitions !!!
> >>>
> >>> But, without a partiton of the type 0x8e I can't run vgscan and
> >>> pvcreate...
> >>>
> >>> So, can anyone help me ?!
> >>>
> >>> Juergen
> >>>
> >>> (sorry for the bad english)
> >>> _______________________________________________
> >>> linux-lvm mailing list
> >>> linux-lvm@sistina.com
> >>> http://lists.sistina.com/mailman/listinfo/linux-lvm
> >>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [linux-lvm] how can I init LVM on software RAID ?
[not found] ` <20010116092247.G717@66bassett.freeserve.co.uk>
@ 2001-01-16 13:08 ` Jürgen Frank
0 siblings, 0 replies; 9+ messages in thread
From: Jürgen Frank @ 2001-01-16 13:08 UTC (permalink / raw)
To: Joe Thornber, LVM
Yes, the init script is running before the LVM should start. The
Raid-System startup, too, but not correctly. (one of the mirror disk
failed)
> Joe Thornber wrote:
>
> Hi,
>
> Are the software raid init scripts being called before the LVM ones ?
>
> - Joe
>
> On Tue, Jan 16, 2001 at 08:16:15AM +0100, Jürgen Frank wrote:
> > Hi everyone, Hi Chris
> >
> > ok, I think I have a little solution for my problem with the LVM over
> > SoftwareRaid. It's seems to
> > work with the new beta version (sorry I don't try the patch for the
> > 0.9).
> > So we have only one little problem, if we boot our system the raid1
> > (mirror)-system don't start correctly.
> > (on off the mirror disk isn't running). In that case the lvm don't start
> > too !?
> >
> > But I think that's more a problem of the SoftwareRaid , possible it's a
> > hardware failure of the disk or the disk have a very high startup time.
> > But I don't understand why lvm don't startup, normally this is a
> > transparenc fault , or ?
> >
> > byebye Juergen
> >
> >
> > >Chris Worley wrote:
> > >
> > > Jürgen,
> > >
> > > You are correct. That is a very good question (and valid for this
> > > newsgroup). I don't have an answer. I've seen the documentation that
> > > says you can make raid 10 & 50 (etc...) by mixing MD's under PV's, as
> > > well as making VG's out of LVM's (but why?). I've also seen errors if
> > > I haven't set my PV's partition to 8e... and there's no way to fdisk
> > > an MD (to set the partition type). I would worry about the
> > > performance of two layers of software overhead below the file system.
> > >
> > > I had barely crawled out of bed when I saw your post and thought "I
> > > can help a newbie". This is not a trivial question, I was wrong ;)
> > >
> > > Chris
> > >
> > > Jürgen Frank wrote:
> > >
> > > > Chris Worley wrote:
> > > >
> > > >> Jürgen,
> > > >>
> > > >> "md" and "lvm" are two different ways of making a software raid.
> > > >>
> > > >> lvm only does raid0. The main purpose of LVM is to allow you to manage
> > > >> disks underneath the file system... adding and removing disks
> > > >> dynamically.
> > > >>
> > > >
> > > >
> > > > Jep, that's the point why I want to use this two systems. So I want to
> > > > create a RAID 1 / 5 system and on the top I put the LVM. With this
> > > > method I have a good system with snapshot and enlargment feature !!!
> > > > And if I read all the docu (the howto, the pdf from sistina) lvm works
> > > > fine with the md - drives. But, that is the point which I can't follow
> > > > in the moment. Because I can't make partitions on a md drive and LVM
> > > > need this partitions ...
> > > >
> > > >
> > > >
> > > >
> > > >> There should be HOWTO's for md in your /usr/doc area. The LVM newsgroup
> > > >> is not a good place to ask MD related questions. There are a few
> > > >> "howto's" for LVM:
> > > >>
> > > >> http://www.sistina.com/lvm/Pages/howto.html
> > > >>
> > > >> I like:
> > > >>
> > > >> http://www.ds9a.nl/lvm-howto/HOWTO//cvs/lvm-howto/lvm-howto.html
> > > >>
> > > >> Chris
> > > >>
> > > >
> > > >
> > > > I read all this docu, but I can't find any help for a system LVM over
> > > > MD-Drives (Software RAID) !!!
> > > >
> > > >
> > > > Juergen
> > > >
> > > >
> > > >> Jürgen Frank wrote:
> > > >>
> > > >>> Hi !!
> > > >>>
> > > >>> I want to create the following system :
> > > >>>
> > > >>> I use the new kernel (2.4) and I want to use the software raid and the
> > > >>> lvm,
> > > >>> but my problem is... how ?
> > > >>>
> > > >>> I can't find a step by step documentation and all what I try don't work.
> > > >>>
> > > >>> So what did I done :
> > > >>>
> > > >>> * create a mirror system with software raid (last version), after this
> > > >>> step I have a good raid system with the drive /dev/md0
> > > >>>
> > > >>> * normally now I need to create a partition on the drive , but I read in
> > > >>> the raid docu that the md-drives don't support partitions !!!
> > > >>>
> > > >>> But, without a partiton of the type 0x8e I can't run vgscan and
> > > >>> pvcreate...
> > > >>>
> > > >>> So, can anyone help me ?!
> > > >>>
> > > >>> Juergen
> > > >>>
> > > >>> (sorry for the bad english)
> > > >>> _______________________________________________
> > > >>> linux-lvm mailing list
> > > >>> linux-lvm@sistina.com
> > > >>> http://lists.sistina.com/mailman/listinfo/linux-lvm
> > > >>
> > _______________________________________________
> > linux-lvm mailing list
> > linux-lvm@sistina.com
> > http://lists.sistina.com/mailman/listinfo/linux-lvm
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2001-01-16 13:08 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-01-12 11:03 [linux-lvm] how can I init LVM on software RAID ? Jürgen Frank
2001-01-12 18:59 ` Andreas Dilger
2001-01-12 20:13 ` [linux-lvm] [lvm 0.8 final] lvmcreate_initrd fails for me Les Hazelton
2001-01-12 22:10 ` Chris Worley
2001-01-13 1:07 ` Andreas Dilger
2001-01-13 0:54 ` Andreas Dilger
2001-01-13 3:51 ` Les Hazelton
[not found] ` <3A5F1C1A.5D9C8CE4@symbionsys.com>
[not found] ` <3A5F1E6C.CD1D1A3E@lxco.com>
[not found] ` <3A5F27F0.1090002@liberate.com>
2001-01-16 7:16 ` [linux-lvm] how can I init LVM on software RAID ? Jürgen Frank
[not found] ` <20010116092247.G717@66bassett.freeserve.co.uk>
2001-01-16 13:08 ` Jürgen Frank
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.