MFC: graid(8) (RAID GEOM) support
Jeremy Chadwick
freebsd at jdc.parodius.com
Thu Jun 23 09:27:37 UTC 2011
On Wed, Jun 22, 2011 at 03:37:03AM -0700, Jeremy Chadwick wrote:
> On Wed, Jun 22, 2011 at 12:02:50PM +0300, Alexander Motin wrote:
> > Jeremy Chadwick wrote:
> > > On Fri, Jun 17, 2011 at 05:51:24PM -0700, Jeremy Chadwick wrote:
> > >> Sorry for the cross-post, but I thought both lists would want to know
> > >> about this.
> > >>
> > >> Looks like mav@ just committed this ~17 hours ago:
> > >> http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/geom/raid/g_raid.c
> > >>
> > >> Those who have historically wanted to use Intel MatrixRAID (now called
> > >> Intel RST (Rapid Storage Technology)), but haven't due to the severe
> > >> issues/risks with ataraid(4), will probably be very interested in
> > >> this commit. I know I am!
> > >>
> > >> I plan on stress-testing the Intel support on a 2-disk system with
> > >> RAID-1 enabled, and will document my experiences, procedures, etc...
> > >>
> > >> Thanks, mav@ and imp@ !
> > >>
> > >> I'll be sending another mail momentarily asking about USB memory stick
> > >> image building, since to accomplish the above, I want to do a
> > >> "bare-bones" install on our test system (e.g. enable Intel RAID, set up
> > >> 2 disks in a RAID-1 mirror, boot a USB memory stick that contains this
> > >> latest RELENG_8 build, and do sysinstall, etc.. the normal way).
> > >>
> > >>
> > >> =====================================================================
> > >> MFC r219974, r220209, r220210, r220790:
> > >> Add new RAID GEOM class, that is going to replace ataraid(4) in supporting
> > >> various BIOS-based software RAIDs. Unlike ataraid(4) this implementation
> > >> does not depend on legacy ata(4) subsystem and can be used with any disk
> > >> drivers, including new CAM-based ones (ahci(4), siis(4), mvs(4), ata(4)
> > >> with `options ATA_CAM`). To make code more readable and extensible, this
> > >> implementation follows modular design, including core part and two sets
> > >> of modules, implementing support for different metadata formats and RAID
> > >> levels.
> > >>
> > >> Support for such popular metadata formats is now implemented:
> > >> Intel, JMicron, NVIDIA, Promise (also used by AMD/ATI) and SiliconImage.
> > >>
> > >> Such RAID levels are now supported:
> > >> RAID0, RAID1, RAID1E, RAID10, SINGLE, CONCAT.
> > >>
> > >> For all of these RAID levels and metadata formats this class supports
> > >> full cycle of volume operations: reading, writing, creation, deletion,
> > >> disk removal and insertion, rebuilding, dirty shutdown detection
> > >> and resynchronization, bad sector recovery, faulty disks tracking,
> > >> hot-spare disks. For Intel and Promise formats there is support multiple
> > >> volumes per disk set.
> > >>
> > >> Look graid(8) manual page for additional details.
> > >>
> > >> Co-authored by: imp
> > >> Sponsored by: Cisco Systems, Inc. and iXsystems, Inc.
> > >> =====================================================================
> > >
> > > By the way, it doesn't look like the graid(8) man page is being brought
> > > in to the base system on either of the two RELENG_8 systems I've rebuilt
> > > in the past few days.
> > >
> > > I'm thinking /usr/src/sbin/geom/class/raid/graid.8 isn't being noticed
> > > as a man page.
> > >
> > > /usr/src/sbin/geom/class/raid/Makefile doesn't have MAN8=graid.8 in it,
> > > is that the problem?
> >
> > I've just rebuilt my test 8-STABLE system and it installed graid(8).
>
> Hmm, there must be something I'm missing either in the base system or
> the kernel or both. Does this kernel module and/or bits and pieces not
> get built unless it's included strictly in the kernel?
>
> Below is one of the two systems, looking for both graid* and geom_raid*.
> There's the old geom_raid3 stuff there, and the source bits/pieces for
> the new graid(8), but nothing seems built (including kernel module) for
> the new graid(8).
>
> If you'd like I can rm -fr /usr/src/* ; rm -fr /var/db/sup/src-all and
> then re-download source from an official cvsup mirror (I've been using
> cvsup9.freebsd.org for both boxes).
>
> icarus# uname -a
> FreeBSD icarus.home.lan 8.2-STABLE FreeBSD 8.2-STABLE #0: Fri Jun 17 18:01:45 PDT 2011 root at icarus.home.lan:/usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64 amd64
> icarus# find /usr -name "graid*" -ls
> 3211128 8 -r--r--r-- 1 root wheel 2521 Jun 17 18:25 /usr/share/man/man8/graid3.8.gz
> 169318 16 -rw-r--r-- 1 root wheel 6390 Aug 3 2009 /usr/src/sbin/geom/class/raid3/graid3.8
> 169624 16 -rw-r--r-- 1 root wheel 8126 Jun 16 23:59 /usr/src/sbin/geom/class/raid/graid.8
> 921430 8 -rw-r--r-- 1 root wheel 2521 Jun 17 17:51 /usr/obj/usr/src/sbin/geom/class/raid3/graid3.8.gz
> 3369372 4 drwxr-xr-x 2 root wheel 512 May 3 03:58 /usr/ports/sysutils/graid5
> icarus#
> icarus# find /boot -name "graid*" -ls
> icarus#
> icarus# find /usr -name "geom_raid*" -ls
> 169317 20 -rw-r--r-- 1 root wheel 9257 Jan 18 21:13 /usr/src/sbin/geom/class/raid3/geom_raid3.c
> 165265 8 -rw-r--r-- 1 root wheel 2992 Jun 16 23:59 /usr/src/sbin/geom/class/raid/geom_raid.c
> 259652 4 drwxr-xr-x 2 root wheel 512 Jun 6 06:28 /usr/src/sys/modules/geom/geom_raid3
> 285292 4 drwxr-xr-x 2 root wheel 512 Jun 17 17:17 /usr/src/sys/modules/geom/geom_raid
> 262798 4 drwxr-xr-x 2 root wheel 512 Jun 6 06:29 /usr/src/tools/regression/geom_raid3
> 921428 48 -rw-r--r-- 1 root wheel 22760 Jun 17 17:51 /usr/obj/usr/src/sbin/geom/class/raid3/geom_raid3.So
> 921431 64 -rwxr-xr-x 1 root wheel 32207 Jun 17 17:51 /usr/obj/usr/src/sbin/geom/class/raid3/geom_raid3.so
> 1014175 4 drwxr-xr-x 2 root wheel 512 Jun 17 18:00 /usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64/modules/usr/src/sys/modules/geom/geom_raid3
> 1015257 736 -rw-r--r-- 1 root wheel 359456 Jun 17 18:00 /usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64/modules/usr/src/sys/modules/geom/geom_raid3/geom_raid3.ko.debug
> 1015258 640 -rw-r--r-- 1 root wheel 304432 Jun 17 18:00 /usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64/modules/usr/src/sys/modules/geom/geom_raid3/geom_raid3.ko.symbols
> 1015259 272 -rw-r--r-- 1 root wheel 137448 Jun 17 18:00 /usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64/modules/usr/src/sys/modules/geom/geom_raid3/geom_raid3.ko
> icarus#
> icarus# find /boot -name "geom_raid*" -ls
> 94943 272 -r-xr-xr-x 1 root wheel 137448 Jun 17 18:24 /boot/kernel/geom_raid3.ko
> 94944 640 -r-xr-xr-x 1 root wheel 304432 Jun 17 18:24 /boot/kernel/geom_raid3.ko.symbols
> 71074 272 -r-xr-xr-x 1 root wheel 137448 Jun 6 05:35 /boot/kernel.old/geom_raid3.ko
> 71075 640 -r-xr-xr-x 1 root wheel 304432 Jun 6 05:35 /boot/kernel.old/geom_raid3.ko.symbols
A follow-up to this issue. I went ahead with the following:
rm -fr /usr/obj
rm -fr /usr/src/*
rm -fr /var/db/sup/src-all
csup -4 -L 2 -h cvsup10.freebsd.org /usr/share/examples/cvsup/stable-supfile
<...put my kernel config back into in /sys/amd64/conf...>
cd /usr/src
make -j4 buildworld && make -j4 buildkernel
And here's what I've in /usr/obj. Note that the find statement is
looking for graid* and geom_raid* while excluding raid3 stuff:
icarus# find /usr/obj \( -name "graid*" -or -name "geom_raid*" \) -and \! -name "*raid3*" -ls
921216 16 -rw-r--r-- 1 root wheel 6600 Jun 23 01:10 /usr/obj/usr/src/sbin/geom/class/raid/geom_raid.So
921219 8 -rw-r--r-- 1 root wheel 2952 Jun 23 01:10 /usr/obj/usr/src/sbin/geom/class/raid/graid.8.gz
921223 44 -rwxr-xr-x 1 root wheel 20913 Jun 23 01:10 /usr/obj/usr/src/sbin/geom/class/raid/geom_raid.so
991578 4 drwxr-xr-x 2 root wheel 1024 Jun 23 02:04 /usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64/modules/usr/src/sys/modules/geom/geom_raid
992668 2368 -rw-r--r-- 1 root wheel 1181256 Jun 23 02:04 /usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64/modules/usr/src/sys/modules/geom/geom_raid/geom_raid.ko.debug
992669 2048 -rw-r--r-- 1 root wheel 1029944 Jun 23 02:04 /usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64/modules/usr/src/sys/modules/geom/geom_raid/geom_raid.ko.symbols
992670 640 -rw-r--r-- 1 root wheel 307696 Jun 23 02:04 /usr/obj/usr/src/sys/X7SBA_RELENG_8_amd64/modules/usr/src/sys/modules/geom/geom_raid/geom_raid.ko
This looks a *lot* better.
Note that I went with cvsup10 instead of cvsup9; cvsup9 appears to be
down right now (I've tried from other hosts), which makes me wonder if
somehow that server is "out of whack" in some way.
icarus# telnet cvsup9.freebsd.org 5999
Trying 208.83.20.166...
^C
Sorry for the noise, Alexander!
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, US |
| Making life hard for others since 1977. PGP 4BD6C0CB |
More information about the freebsd-fs
mailing list