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-stable mailing list