> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of MOLNAR Ingo
> Sent: Thursday, November 05, 1998 2:59 AM
> To: [EMAIL PROTECTED]
> Cc: Erik Troan; Stephen C. Tweedie
> Subject: RELEASE: RAID-0,1,4,5 and LVM version 0.90, 1998.11.05
>
>
>
> this is an alpha release of the latest Linux RAID0145 drivers, against
> kernel 2.1.125 and 2.0.35. (a 2.1.127 port will follow as
> soon as 2.1.127
> gets out) Also this package contains a prototype (kernel-space and MD
> based) LVM implementation.
>
> WARNING: we are still not out of alpha status, some of the
> features are
> not widely tested. It should be mostly ok, but a backup never
> hurts ...
>
> you can find raid0145-19981105-2.1.125.gz,
> raid0145-19981105-2.1.125.gz
> and raidtools-19981105-0.90.tar.gz in the usual alpha directory:
>
> http://linux.kernel.org/pub/linux/daemons/raid/alpha
>
> new RAID features/fixes in this release:
> ========================================
>
> = 'raid=noautodetect' boot time option added
>
> = /proc/sys/dev/md/speed-limit to runtime-configure reconstruction
> speed.
>
> = initrd and reboot fixes by Luca Berra <[EMAIL PROTECTED]>
>
> = RAID5.HOWTO by Jakob Ostergaard ([EMAIL PROTECTED])
>
> = the 'negative counter' bugfix
>
> = and varios smaller or bigger things i forgot ...
>
> experimental LVM support:
> =========================
>
> the biggest change is the rewrite to get LVM into MD. This ment the
> rewrite of varios MD pieces, eg. md_arrays[] is gone and mddev is now
> runtime allocated, along with minor device numbers. This enables us to
> utilize the rather scarce minor device number space
> efficiently, which is
> a must for LVM.
>
> the LVM is already tightly integrated with the MD stuff. The RAID
> superblock layer still has to be cleaned up a bit more to serve as a
> generic 'storage container identification layer',
> independently starting
> up both RAID and LVM (or both, or stacked) devices. But we are almost
> there.
>
> the LVM implementation lacks proper user-space support, but
> people who are
> interested and want to comment on the design are welcome to
> take a look at
> lvm_p.h, lvm.h and lvm.c. In raidtools there is an 'mkpv'
> utility, which
> prepares partitions to be added to the LVM:
>
> ./mkpv -f /dev/sdc6
> /dev/sdc6's size: 51892 KB.
> /dev/sdc6's rounded size: 51000 KB.
> creating VG ...
> creating LV 1 ...
> initializing block groups on /dev/sdc6.
>
> [root@hell raidtools]# ./mkpv -f /dev/sdc7
> /dev/sdc7's size: 51892 KB.
> /dev/sdc7's rounded size: 51000 KB.
> creating VG ...
> creating LV 1 ...
> initializing block groups on /dev/sdc7.
> [root@hell raidtools]#
>
> a sample raidtab entry to utilize the above PVs:
>
> #
> # Create an LVM Volume Group out of two Physical Volumes:
> #
>
> raiddev /dev/md0
> raid-level lvm #-volume-group
> nr-raid-disks 2
> persistent-superblock 1
> chunk-size 16
> device /dev/sdc7
> raid-disk 0
> device /dev/sdc6
> raid-disk 1
>
> and after 'mkraid -f /dev/md0', the VG will show up in /proc/mdstat:
>
> [root@hell /root]# cat /proc/mdstat
> Personalities : [linear] [raid0] [raid1] [raid5] [lvm]
> read_ahead 128 sectors
> md0 : active lvm sdc6[1] sdc7[0] 0 blocks<LV1 1/20000
> blocks used>
> unused devices: <none>
> [root@hell /root]#
>
> currently 'mkpv' creates a single hardcoded 80M LV, which is mapped to
> /dev/md9. /dev/md9 can then be used to create a filesystem.
>
> [root@hell /root]# mke2fs -b 4096 /dev/md9
> [root@hell /root]# df /mnt
> Filesystem 1024-blocks Used Available Capacity
> Mounted on
> /dev/md9 50140 52 47500 0% /mnt
> [root@hell /root]#
> [root@hell /root]# cat /proc/mdstat
> Personalities : [linear] [raid0] [raid1] [raid5] [lvm]
> read_ahead 128 sectors
> md0 : active lvm sdc6[1] sdc7[0] 0 blocks<LV1 427/20000
> blocks used>
> unused devices: <none>
> [root@hell /root]#
>
> this Logical Volume can be stopped/started in normal
> raidtools fashion,
> and can be autostarted/root mounted as well.
>
> the kernel side of the LVM support code is mostly finished, one major
> component that is still lacking at the moment is proper
> integration with
> the buffer cache. User-space needs some serios coding and
> properly thought
> out utilities. This release of the LVM code is ment to give people an
> opportunity to comment on the design, before i build too many things
> around it :) The physical layout will almost certainly change in a
> nonmaintainable way.
>
> this LVM implementation differs very much from 'typical' LVM
> implementations (AIX, HP-UX, Veritas), it's a 'block-level
> LVM' (i'm not
> sure wether this term exists at all), with an allocation
> granularity (LVM
> blocksize) of 4K. This design is pretty 'daring' but enables us to do
> advanced block device features like filesystem-independent migration,
> resizing, defragmentation, on-demand storage management,
> software-based
> badblock-handling, snapshotting and multiversioning. But i
> first want to
> finalize (and discuss) the core design (which should already
> provide all
> the 'legacy' LVM operations like spanning a filesystem over arbitrary
> devices, and basic storage management) before adding
> 'applications' to the
> core level.
>
> the LVM implementation does not impact overall RAID stability, people
> using RAID should just disable LVM in the kernel config.
>
> enjoy. Reports, comments, flames, feature-requests welcome.
> Let me know if
> i have missed/forgotten some patch sent to me.
>
> -- mingo
>
I applied the raid0145-19981105-2.0.35 patches to a virgin copy of
2.0.35 and they all succeeded. But, when I try to make the kernel, I
get compile errors. For example, with only striping configured I get
the following:
make[2]: Entering directory `/root/raid/linux/drivers/block'
make all_targets
make[3]: Entering directory `/root/raid/linux/drivers/block'
gcc -D__KERNEL__ -I/root/raid/linux/include -Wall -Wstrict-prototypes
-O2 -fomit-frame-pointer -fno-strength-reduce -pipe -m486
-malign-loops=2 -malign-jumps=2 -malign-functions=2 -DCPU=686 -c -o
ll_rw_blk.o ll_rw_blk.c
ll_rw_blk.c: In function `ll_rw_block':
ll_rw_blk.c:552: warning: passing arg 1 of `md_make_request' makes
integer from pointer without a cast
ll_rw_blk.c:552: too few arguments to function `md_make_request'
make[3]: *** [ll_rw_blk.o] Error 1
make[3]: Leaving directory `/root/raid/linux/drivers/block'
make[2]: *** [first_rule] Error 2
make[2]: Leaving directory `/root/raid/linux/drivers/block'
make[1]: *** [sub_dirs] Error 2
make[1]: Leaving directory `/root/raid/linux/drivers'
make: *** [linuxsubdirs] Error 2
The number of arguments to md_make_request changed from three to two,
but both the prototype and the uses do seem to agree:
igate[p4]:/root/raid/linux/drivers/block# grep md_make_request *
ll_rw_blk.c: md_make_request(bh[i], rw);
ll_rw_blk.c.orig: md_make_request(MINOR
(bh[i]->b_dev), rw, bh[i]);
md.c:int md_make_request (struct buffer_head * bh, int rw)
md.c.orig:int md_make_request (int minor, int rw, struct buffer_head *
bh)
grep: paride: Is a directory
Ideas, anyone?
--
John C. Lellis E-Mail:
[EMAIL PROTECTED]
Consultant Phone : (713) 313-5068
FAX : (713) 313-5193
Aspen Technology, Inc.
Advanced Control and Optimization Division
Software Development
9896 Bissonnet
Houston, TX 77036