Gmirror on a partition of a slice

Adrian Wontroba aw1 at stade.co.uk
Mon Sep 24 21:55:34 PDT 2007


On Mon, Sep 24, 2007 at 09:16:29PM +0200, Ivan Voras wrote:
> On 24/09/2007, n j <nino80 at gmail.com> wrote:

< discussion about creating bootable mirrored disks with gmirror>

This is possibly germane. I have very recently rebuilt my home
file server, because the disks were wearing out, I was starting to
be squeezed for space, and (P)ATA drives will soon start to become
scarce.  The rest of the system is old, a MSI KT6 Delta FIS2R MS-6590
motherboard, Athlon 3200 XP processor, and a couple of old (one very
old) Promise ATA cards. I can't afford to replace the lot.

I've rebuilt it on 4 new 500 GB disks, with a single slice per disk,
multiple partitions, the root filesystem mirrored on all 4 drives, other
filesystems and swap each on a stripe of two mirrors, and everything
labeled. I chose to have a single large /home partition to avoid the
spare space over there not here syndrome, which will be "fun" when an
underlying mirror is re-silvered, and even more "fun" if the system
panics or my UPS fails when /home is active.

I decided not to use ("dangerously") dedicated disks.
[
e.g. the workstation looks like this:

[aw1 at steerpike ~]$ gmirror status
     Name    Status  Components
mirror/m1  COMPLETE  ad4
                     ad6

[aw1 at steerpike ~]$ bsdlabel /dev/mirror/m1s1
# /dev/mirror/m1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   524288       16    4.2BSD     2048 16384 32776
  b:  4142720   524304      swap
  c: 312576642        0    unused        0     0         # "raw" part, don't edit
  d:  1048576  4667024    4.2BSD     2048 16384     8
  e: 33554432  5715600    4.2BSD     2048 16384 28552
  f: 273306610 39270032    4.2BSD     2048 16384 28552

[aw1 at steerpike ~]$ df
Filesystem        1K-blocks     Used    Avail Capacity  Mounted on
/dev/mirror/m1s1a    253678    82756   150628    35%    /
devfs                     1        1        0   100%    /dev
/dev/mirror/m1s1d    507630   165158   301862    35%    /var
/dev/mirror/m1s1e  16244334  9750688  5194100    65%    /usr
/dev/mirror/m1s1f 132349372 50545228 71216196    42%    /home
/dev/md0             126702      540   116026     0%    /tmp
devfs                     1        1        0   100%    /var/named/dev
]

To avoid finger trouble I threw together a makefile (which is as usual
somewhat indigestible) to set up the disks and GEOMs and perform the
restores. It may be of use to others.

The GEOM names are a bit strange because I'm including the abbreviated
machine name in each, and I seemed to run into problems with 9 character
names.

Performance is adequate.  Copying (tar | tar) an 18 GB package
collection within /home took 21 minutes. I intend to run disk benchmarks
and try different gmirror balance algorithms and split sizes (easy) and
different gstripe stripe sizes (harder) to determine what suits me.

I'll be doing the same thing with the simpler 2 disk mirror workstation
in a week or so. I'll post that makefile too.

"make -n" output and initial disk label (where you set the partition
sizes), the makefile, the new /etc/fstab and dmesg follow.

Note that this approach only works if you can initially boot the system
from something else (LiveCD, FreeSBIE, ...) and have your dumps
accessible too (external USB hard disk).

If you can't, look at http://people.freebsd.org/~rse/mirror/ which is
Ralf S. Engelschall's ingenious howto remotely upgrade a single disk to
a mirrored dual disk system. His introduction states:

        The following is a step-by-step command list for remotely
        converting a production FreeBSD 6.2-STABLE (i386 or amd64 PC
        architecture based) system from a single-disk/single-slice
        (ad0s1) to a two-disk/single-slice (ad0s1 & ad1s1) GEOM mirror
        (gm0) based setup without the need for console access or
        Fixit/LiveFS CDROM:

(awk lives!)

- narrative stops here - (8-(

[aw1 at rottcodd /root/setup_disks]$ make -n disks
# set up disks, slices, partitions
# quick, restartable
logger -p crit "disks start"
echo `date` " disks start"
dd if=/dev/zero of=/dev/ad4 bs=512 count=32
fdisk -BI ad4
dd if=/dev/zero of=/dev/ad4s1 bs=512 count=32
bsdlabel -R -B ad4s1 initial.label
bsdlabel ad4s1 > ad4s1.label
dd if=/dev/zero of=/dev/ad6 bs=512 count=32
fdisk -BI ad6
dd if=/dev/zero of=/dev/ad6s1 bs=512 count=32
bsdlabel -R -B ad6s1 initial.label
bsdlabel ad6s1 > ad6s1.label
dd if=/dev/zero of=/dev/ad8 bs=512 count=32
fdisk -BI ad8
dd if=/dev/zero of=/dev/ad8s1 bs=512 count=32
bsdlabel -R -B ad8s1 initial.label
bsdlabel ad8s1 > ad8s1.label
dd if=/dev/zero of=/dev/ad10 bs=512 count=32
fdisk -BI ad10
dd if=/dev/zero of=/dev/ad10s1 bs=512 count=32
bsdlabel -R -B ad10s1 initial.label
bsdlabel ad10s1 > ad10s1.label
logger -p crit "disks end"
echo `date` " disks end"

[aw1 at rottcodd /root/setup_disks]$ make -n geoms
# stop and clear any GEOMs left over from last attempt
# quick, restartable
logger -p crit "geoms start"
echo `date` " geoms start"
gmirror stop -v gmrcroot
gmirror clear ad4s1a ad6s1a ad8s1a ad10s1a
gstripe stop -v gsrcvar
gstripe clear -v gmrcvar1 gmrcvar2
gmirror stop -v gmrcvar1
gmirror clear -v ad4s1d ad8s1d
gmirror stop -v gmrcvar2
gmirror clear -v ad6s1d ad10s1d
gstripe stop -v gsrcusr
gstripe clear -v gmrcusr1 gmrcusr2
gmirror stop -v gmrcusr1
gmirror clear -v ad4s1e ad8s1e
gmirror stop -v gmrcusr2
gmirror clear -v ad6s1e ad10s1e
glabel stop rcswp
glabel clear -v gsrcswp
gstripe stop -v gsrcswp
gstripe clear -v gmrcswp1 gmrcswp2
gmirror stop -v gmrcswp1
gmirror clear -v ad4s1f ad8s1f
gmirror stop -v gmrcswp2
gmirror clear -v ad6s1f ad10s1f
gstripe stop -v gsrchom
gstripe clear -v gmrchom1 gmrchom2
gmirror stop -v gmrchom1
gmirror clear -v ad4s1g ad8s1g
gmirror stop -v gmrchom2
gmirror clear -v ad6s1g ad10s1g
# bring on the geoms
logger -p crit "gmrcroot"
gmirror label -v -h -b prefer -s 1048576 gmrcroot ad4s1a ad6s1a ad8s1a ad10s1a
logger -p crit "gsrcvar"
gmirror label -v -h -b prefer -s 1048576 gmrcvar1 ad4s1d ad8s1d
gmirror label -v -h -b prefer -s 1048576 gmrcvar2 ad6s1d ad10s1d
gstripe label -v -h -s 16777216 gsrcvar /dev/mirror/gmrcvar1 /dev/mirror/gmrcvar2
logger -p crit "gsrcusr"
gmirror label -v -h -b prefer -s 1048576 gmrcusr1 ad4s1e ad8s1e
gmirror label -v -h -b prefer -s 1048576 gmrcusr2 ad6s1e ad10s1e
gstripe label -v -h -s 16777216 gsrcusr /dev/mirror/gmrcusr1 /dev/mirror/gmrcusr2
logger -p crit "gsrcswp"
gmirror label -v -h -b prefer -s 1048576 gmrcswp1 ad4s1f ad8s1f
gmirror label -v -h -b prefer -s 1048576 gmrcswp2 ad6s1f ad10s1f
gstripe label -v -h -s 16777216 gsrcswp /dev/mirror/gmrcswp1 /dev/mirror/gmrcswp2
glabel label -v rcswap /dev/stripe/gsrcswp
logger -p crit "gsrchom"
gmirror label -v -h -b prefer -s 1048576 gmrchom1 ad4s1g ad8s1g
gmirror label -v -h -b prefer -s 1048576 gmrchom2 ad6s1g ad10s1g
gstripe label -v -h -s 16777216 gsrchom /dev/mirror/gmrchom1 /dev/mirror/gmrchom2
logger -p crit "geoms end"
echo `date` " geoms end"

[aw1 at rottcodd /root/setup_disks]$ make -n restore
# restore filesystems
# SLOW, NOT RESTARTABLE
logger -p crit "restore start"
echo `date` " restore start"
mkdir /root/setup_disks/rottcodd_disks
logger -p crit "root"
newfs -U -L rcroot /dev/mirror/gmrcroot > rcroot.newfs
mount /dev/ufs/rcroot /root/setup_disks/rottcodd_disks; cd /root/setup_disks/rottcodd_disks; time restore -r -f /root/setup_disks/root.dmp; rm -f restoresymtable
logger -p crit "var"
newfs -U -L rcvar /dev/stripe/gsrcvar > rcvar.newfs
mount /dev/ufs/rcvar /root/setup_disks/rottcodd_disks/var; cd /root/setup_disks/rottcodd_disks/var; time restore -r -f /root/setup_disks/var.dmp; rm -f restoresymtable
logger -p crit "usr"
newfs -U -L rcusr /dev/stripe/gsrcusr > rcusr.newfs
mount /dev/ufs/rcusr /root/setup_disks/rottcodd_disks/usr; cd /root/setup_disks/rottcodd_disks/usr; time restore -r -f /root/setup_disks/usr.dmp; rm -f restoresymtable
logger -p crit "home"
newfs -U -L rchome /dev/stripe/gsrchom > rchome.newfs
mount /dev/ufs/rchome /root/setup_disks/rottcodd_disks/home; cd /root/setup_disks/rottcodd_disks/home; time restore -r -f /root/setup_disks/home.dmp; rm -f restoresymtable
rm -rf /root/setup_disks/rottcodd_disks/root/setup_disks
mkdir  /root/setup_disks/rottcodd_disks/root/setup_disks
df -Hi | tee df.info
cp -v Makefile *.label *.newfs *.info /root/setup_disks/rottcodd_disks/root/setup_disks/
logger -p crit "restore end"
echo `date` " restore end"
echo "think about editing /root/setup_disks/rottcodd_disks/etc/fstab and boot/loader.conf!!!!"

==> /rottcodd/root/setup_disks/initial.label <==
# #    size   offset    fstype   [fsize bsize bps/cpg]
  a:     2g       16    4.2BSD     4096 16384    75     # root, mirrored
  b:     8G        *    unused 				# spare, e.g. for crash dump dumpdev
  c:      *        *    unused				# whole disk (slice) - leave alone
  d:     8G        *    4.2BSD				# var, mirrored and striped
  e:    16G        *    4.2BSD				# usr, mirrored and striped
  f:     4G        *    4.2BSD				# swap, mirrored and striped
  g:      *        *    4.2BSD				# home, mirrored and striped

==> /rottcodd/root/setup_disks/Makefile <==
#
# set up and restore a resilient system on 4 large and identical disks, each containing a single slice
#
# machine expected to be running on something else, such as FreeSBIE or other LiveCD
#
# root is mirrored
# swap, var, usr and home are each striped on top of a pair of mirrors
# partition adNs1b is unused - may be used as a crash dump device or for experimentation
#
# partition filesizes are specified in the file initial.label
#
# it is assumed that this make file, initial.sizes and root.dmp, var.dmp, usr.dmp and home.dmp
# reside in the current directory of another (external) disk drive
#
# it is also assumed that the kernel modules for gmirror, gstripe and glabel have already
# been loaded
#
# targets
# -------
#
# disks - set up the disks, specifically, for each:
#	zero out the first 32 blocks
#	create a DOS compatible disk, with one slice (DOS partition) over the whole disk
#	label the slice, creating (FreeBSD) partitions
#	quick
#	restartable
#
# geoms - set up the mirrors and stripes, specifically
#	destroy any geoms left over from previous runs
#	for each top level object
#	set up the mirrors
#	set up the slices (not for the root partition)
#	labels swap partion
#	quick
#	restartable
#
# restore - restore the dumps
#	for each filesystem:
#	newfs (and label)
#	restore
#	SLOW
#	NOT RESTARTABLE
#	leaves filesystems mounted, creates a directory used as a mount point which is not removed, etc
#
# naming convention
# -----------------
#
# PR is a 2 character prefix, which should be a very short abreviation of the machine name
#
# mirrors start gmPR, and are followed by a 3 letter (possibly abbreviated) filesystem / swap name
# and then, if part of a stripe, a digit.
#
# stripes start gsPR and are followed by a 3 letter (possibly abbreviated) filesystem / swap name.
#
# labels start PR and are followed by the filesystem name or swap.
#
# end result
# ----------
#
#	Script started on Mon Sep 24 04:34:27 2007
#	[root at rottcodd /home/tmp]# df -H
#	Filesystem         Size    Used   Avail Capacity  Mounted on
#	/dev/ufs/rcroot    2.1G     82M    1.8G     4%    /
#	devfs              1.0k    1.0k      0B   100%    /dev
#	/dev/ufs/rcvar      17G     48M     15G     0%    /var
#	/dev/ufs/rcusr      33G    2.2G     28G     7%    /usr
#	/dev/ufs/rchome    890G    195G    624G    24%    /home
#	/dev/md0           130M     74k    119M     0%    /tmp
#	devfs              1.0k    1.0k      0B   100%    /var/named/dev
#	[root at rottcodd /home/tmp]# glabel status
#	        Name  Status  Components
#	  ufs/rcroot     N/A  mirror/gmrcroot
#	   ufs/rcvar     N/A  stripe/gsrcvar
#	   ufs/rcusr     N/A  stripe/gsrcusr
#	label/rcswap     N/A  stripe/gsrcswp
#	  ufs/rchome     N/A  stripe/gsrchom
#	[root at rottcodd /home/tmp]# gstripe status
#	          Name  Status  Components
#	stripe/gsrcvar      UP  mirror/gmrcvar1
#	                        mirror/gmrcvar2
#	stripe/gsrcusr      UP  mirror/gmrcusr1
#	                        mirror/gmrcusr2
#	stripe/gsrcswp      UP  mirror/gmrcswp1
#	                        mirror/gmrcswp2
#	stripe/gsrchom      UP  mirror/gmrchom1
#	                        mirror/gmrchom2
#	[root at rottcodd /home/tmp]# gmirror status
#	           Name    Status  Components
#	mirror/gmrcroot  COMPLETE  ad4s1a
#	                           ad6s1a
#	                           ad8s1a
#	                           ad10s1a
#	mirror/gmrcvar1  COMPLETE  ad4s1d
#	                           ad8s1d
#	mirror/gmrcusr1  COMPLETE  ad4s1e
#	                           ad8s1e
#	mirror/gmrcswp1  COMPLETE  ad4s1f
#	                           ad8s1f
#	mirror/gmrchom1  COMPLETE  ad4s1g
#	                           ad8s1g
#	mirror/gmrcvar2  COMPLETE  ad6s1d
#	                           ad10s1d
#	mirror/gmrcusr2  COMPLETE  ad6s1e
#	                           ad10s1e
#	mirror/gmrcswp2  COMPLETE  ad6s1f
#	                           ad10s1f
#	mirror/gmrchom2  COMPLETE  ad6s1g
#	                           ad10s1g
#	[root at rottcodd /home/tmp]# exit
#
#	Script done on Mon Sep 24 04:35:40 2007
#
# ROTTCODD SPECIFIC!
#

PREFIX?=	rc
NAME?=		rottcodd
DISK1?=		ad4
DISK2?=		ad6
DISK3?=		ad8
DISK4?=		ad10
BALANCE?=	prefer		# gmirror balance algorithm, load, prefer, round-robin, split
                                # prefer seems to give the best performance for large files
SLICE?=		1048576		# gmirror split slice size
STRIPE?=	16777216	# gtripe stripe size

disks:
	# set up disks, slices, partitions
	# quick, restartable
	@logger -p crit "${.TARGET} start"
	@echo `date` " ${.TARGET} start"
	dd if=/dev/zero of=/dev/${DISK1} bs=512 count=32
	fdisk -BI ${DISK1}
	dd if=/dev/zero of=/dev/${DISK1}s1 bs=512 count=32
	bsdlabel -R -B ${DISK1}s1 initial.label
	bsdlabel ${DISK1}s1 > ${DISK1}s1.label
	dd if=/dev/zero of=/dev/${DISK2} bs=512 count=32
	fdisk -BI ${DISK2}
	dd if=/dev/zero of=/dev/${DISK2}s1 bs=512 count=32
	bsdlabel -R -B ${DISK2}s1 initial.label
	bsdlabel ${DISK2}s1 > ${DISK2}s1.label
	dd if=/dev/zero of=/dev/${DISK3} bs=512 count=32
	fdisk -BI ${DISK3}
	dd if=/dev/zero of=/dev/${DISK3}s1 bs=512 count=32
	bsdlabel -R -B ${DISK3}s1 initial.label
	bsdlabel ${DISK3}s1 > ${DISK3}s1.label
	dd if=/dev/zero of=/dev/${DISK4} bs=512 count=32
	fdisk -BI ${DISK4}
	dd if=/dev/zero of=/dev/${DISK4}s1 bs=512 count=32
	bsdlabel -R -B ${DISK4}s1 initial.label
	bsdlabel ${DISK4}s1 > ${DISK4}s1.label
	@logger -p crit "${.TARGET} end"
	@echo `date` " ${.TARGET} end"

geoms:
	# stop and clear any GEOMs left over from last attempt
	# quick, restartable
	@logger -p crit "${.TARGET} start"
	@echo `date` " ${.TARGET} start"
	-gmirror stop -v gm${PREFIX}root
	-gmirror clear ${DISK1}s1a ${DISK2}s1a ${DISK3}s1a ${DISK4}s1a
	-gstripe stop -v gs${PREFIX}var
	-gstripe clear -v gm${PREFIX}var1 gm${PREFIX}var2
	-gmirror stop -v gm${PREFIX}var1
	-gmirror clear -v ${DISK1}s1d ${DISK3}s1d
	-gmirror stop -v gm${PREFIX}var2
	-gmirror clear -v ${DISK2}s1d ${DISK4}s1d
	-gstripe stop -v gs${PREFIX}usr
	-gstripe clear -v gm${PREFIX}usr1 gm${PREFIX}usr2
	-gmirror stop -v gm${PREFIX}usr1
	-gmirror clear -v ${DISK1}s1e ${DISK3}s1e
	-gmirror stop -v gm${PREFIX}usr2
	-gmirror clear -v ${DISK2}s1e ${DISK4}s1e
	-glabel stop ${PREFIX}swp
	-glabel clear -v gs${PREFIX}swp
	-gstripe stop -v gs${PREFIX}swp
	-gstripe clear -v gm${PREFIX}swp1 gm${PREFIX}swp2
	-gmirror stop -v gm${PREFIX}swp1
	-gmirror clear -v ${DISK1}s1f ${DISK3}s1f
	-gmirror stop -v gm${PREFIX}swp2
	-gmirror clear -v ${DISK2}s1f ${DISK4}s1f
	-gstripe stop -v gs${PREFIX}hom
	-gstripe clear -v gm${PREFIX}hom1 gm${PREFIX}hom2
	-gmirror stop -v gm${PREFIX}hom1
	-gmirror clear -v ${DISK1}s1g ${DISK3}s1g
	-gmirror stop -v gm${PREFIX}hom2
	-gmirror clear -v ${DISK2}s1g ${DISK4}s1g
	# bring on the geoms
	@logger -p crit "gm${PREFIX}root"
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}root ${DISK1}s1a ${DISK2}s1a ${DISK3}s1a ${DISK4}s1a
	@logger -p crit "gs${PREFIX}var"
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}var1 ${DISK1}s1d ${DISK3}s1d
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}var2 ${DISK2}s1d ${DISK4}s1d
	gstripe label -v -h -s ${STRIPE} gs${PREFIX}var /dev/mirror/gm${PREFIX}var1 /dev/mirror/gm${PREFIX}var2
	@logger -p crit "gs${PREFIX}usr"
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}usr1 ${DISK1}s1e ${DISK3}s1e
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}usr2 ${DISK2}s1e ${DISK4}s1e
	gstripe label -v -h -s ${STRIPE} gs${PREFIX}usr /dev/mirror/gm${PREFIX}usr1 /dev/mirror/gm${PREFIX}usr2
	@logger -p crit "gs${PREFIX}swp"
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}swp1 ${DISK1}s1f ${DISK3}s1f
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}swp2 ${DISK2}s1f ${DISK4}s1f
	gstripe label -v -h -s ${STRIPE} gs${PREFIX}swp /dev/mirror/gm${PREFIX}swp1 /dev/mirror/gm${PREFIX}swp2
	glabel label -v ${PREFIX}swap /dev/stripe/gs${PREFIX}swp
	@logger -p crit "gs${PREFIX}hom"
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}hom1 ${DISK1}s1g ${DISK3}s1g
	gmirror label -v -h -b ${BALANCE} -s 1048576 gm${PREFIX}hom2 ${DISK2}s1g ${DISK4}s1g
	gstripe label -v -h -s ${STRIPE} gs${PREFIX}hom /dev/mirror/gm${PREFIX}hom1 /dev/mirror/gm${PREFIX}hom2
	@logger -p crit "${.TARGET} end"
	@echo `date` " ${.TARGET} end"

restore:
	# restore filesystems
	# SLOW, NOT RESTARTABLE
	@logger -p crit "${.TARGET} start"
	@echo `date` " ${.TARGET} start"
	mkdir ${.CURDIR}/${NAME}_disks
	@logger -p crit "root"
	newfs -U -L ${PREFIX}root /dev/mirror/gm${PREFIX}root > ${PREFIX}root.newfs
	mount /dev/ufs/${PREFIX}root ${.CURDIR}/${NAME}_disks; cd ${.CURDIR}/${NAME}_disks; time restore -r -f ${.CURDIR}/root.dmp; rm -f restoresymtable
	@logger -p crit "var"
	newfs -U -L ${PREFIX}var /dev/stripe/gs${PREFIX}var > ${PREFIX}var.newfs
	mount /dev/ufs/${PREFIX}var ${.CURDIR}/${NAME}_disks/var; cd ${.CURDIR}/${NAME}_disks/var; time restore -r -f ${.CURDIR}/var.dmp; rm -f restoresymtable
	@logger -p crit "usr"
	newfs -U -L ${PREFIX}usr /dev/stripe/gs${PREFIX}usr > ${PREFIX}usr.newfs
	mount /dev/ufs/${PREFIX}usr ${.CURDIR}/${NAME}_disks/usr; cd ${.CURDIR}/${NAME}_disks/usr; time restore -r -f ${.CURDIR}/usr.dmp; rm -f restoresymtable
	@logger -p crit "home"
	newfs -U -L ${PREFIX}home /dev/stripe/gs${PREFIX}hom > ${PREFIX}home.newfs
	mount /dev/ufs/${PREFIX}home ${.CURDIR}/${NAME}_disks/home; cd ${.CURDIR}/${NAME}_disks/home; time restore -r -f ${.CURDIR}/home.dmp; rm -f restoresymtable
	rm -rf ${.CURDIR}/${NAME}_disks/root/setup_disks
	mkdir  ${.CURDIR}/${NAME}_disks/root/setup_disks
	df -Hi | tee df.info
	cp -v Makefile *.label *.newfs *.info ${.CURDIR}/${NAME}_disks/root/setup_disks/
	@logger -p crit "${.TARGET} end"
	@echo `date` " ${.TARGET} end"
	echo "think about editing ${.CURDIR}/${NAME}_disks/etc/fstab and boot/loader.conf!!!!"

(ugh!)

==> /rottcodd/etc/fstab <==
#
# Device		Mountpoint	FStype	Options		Dump	Pass#

/dev/ufs/rcroot		/		ufs	rw		1	1
/dev/label/rcswap	none		swap	sw		0	0
/dev/ufs/rcvar		/var		ufs	rw		2	2
/dev/ufs/rcusr		/usr		ufs	rw		2	3
/dev/ufs/rchome		/home		ufs	rw		2	4
/dev/acd0		/cdrom		cd9660	ro,noauto	0	0

==> /rottcodd/var/run/dmesg.boot <==
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 6.2-STABLE #0: Fri Sep 14 07:28:55 BST 2007
    toor at steerpike.hanley.stade.co.uk:/usr/obj/usr/src/sys/GENERIC
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: AMD Athlon(tm) XP 3200+ (2205.02-MHz 686-class CPU)
  Origin = "AuthenticAMD"  Id = 0x6a0  Stepping = 0
  Features=0x383fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
  AMD Features=0xc0400800<SYSCALL,MMX+,3DNow+,3DNow>
real memory  = 536805376 (511 MB)
avail memory = 515883008 (491 MB)
ACPI APIC Table: <AMIINT VIA_K7  >
ioapic0 <Version 0.3> irqs 0-23 on motherboard
kbd1 at kbdmux0
ath_hal: 0.9.20.3 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
acpi0: <AMIINT VIA_K7> on motherboard
acpi0: Power Button (fixed)
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
cpu0: <ACPI CPU> on acpi0
acpi_button0: <Power Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
agp0: <VIA 8377 (Apollo KT400/KT400A/KT600) host to PCI bridge> mem 0xe0000000-0xe7ffffff at device 0.0 on pci0
pcib1: <PCI-PCI bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <display, VGA> at device 0.0 (no driver attached)
atapci0: <Promise PDC20268 UDMA100 controller> port 0xec00-0xec07,0xe800-0xe803,0xe400-0xe407,0xe000-0xe003,0xdc00-0xdc0f mem 0xdfffc000-0xdfffffff irq 16 at device 5.0 on pci0
ata2: <ATA channel 0> on atapci0
ata3: <ATA channel 1> on atapci0
atapci1: <Promise PDC20269 UDMA133 controller> port 0xd800-0xd807,0xd400-0xd403,0xd000-0xd007,0xcc00-0xcc03,0xc800-0xc80f mem 0xdfff4000-0xdfff7fff irq 19 at device 7.0 on pci0
ata4: <ATA channel 0> on atapci1
ata5: <ATA channel 1> on atapci1
bge0: <Broadcom BCM5705 A3, ASIC rev. 0x3003> mem 0xdffb0000-0xdffbffff irq 18 at device 11.0 on pci0
miibus0: <MII bus> on bge0
brgphy0: <BCM5705 10/100/1000baseTX PHY> on miibus0
brgphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
bge0: Ethernet address: 00:0c:76:e9:64:ee
fwohci0: <VIA Fire II (VT6306)> port 0xc400-0xc47f mem 0xdfff3800-0xdfff3fff irq 17 at device 14.0 on pci0
fwohci0: OHCI version 1.0 (ROM=1)
fwohci0: No. of Isochronous channels is 8.
fwohci0: EUI64 00:10:dc:00:00:5e:9f:42
fwohci0: Phy 1394a available S400, 3 ports.
fwohci0: Link S400, max_rec 2048 bytes.
firewire0: <IEEE1394(FireWire) bus> on fwohci0
fwe0: <Ethernet over FireWire> on firewire0
if_fwe0: Fake Ethernet address: 02:10:dc:5e:9f:42
fwe0: Ethernet address: 02:10:dc:5e:9f:42
fwe0: if_start running deferred for Giant
sbp0: <SBP-2/SCSI over FireWire> on firewire0
fwohci0: Initiate bus reset
fwohci0: BUS reset
fwohci0: node_id=0xc800ffc0, gen=1, CYCLEMASTER mode
firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
firewire0: bus manager 0 (me)
atapci2: <VIA 8237 UDMA133 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xfc00-0xfc0f at device 15.0 on pci0
ata0: <ATA channel 0> on atapci2
ata1: <ATA channel 1> on atapci2
uhci0: <VIA 83C572 USB controller> port 0xb400-0xb41f irq 21 at device 16.0 on pci0
uhci0: [GIANT-LOCKED]
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhci1: <VIA 83C572 USB controller> port 0xb800-0xb81f irq 21 at device 16.1 on pci0
uhci1: [GIANT-LOCKED]
usb1: <VIA 83C572 USB controller> on uhci1
usb1: USB revision 1.0
uhub1: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
uhci2: <VIA 83C572 USB controller> port 0xbc00-0xbc1f irq 21 at device 16.2 on pci0
uhci2: [GIANT-LOCKED]
usb2: <VIA 83C572 USB controller> on uhci2
usb2: USB revision 1.0
uhub2: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub2: 2 ports with 2 removable, self powered
uhci3: <VIA 83C572 USB controller> port 0xc000-0xc01f irq 21 at device 16.3 on pci0
uhci3: [GIANT-LOCKED]
usb3: <VIA 83C572 USB controller> on uhci3
usb3: USB revision 1.0
uhub3: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub3: 2 ports with 2 removable, self powered
ehci0: <VIA VT6202 USB 2.0 controller> mem 0xdfff3600-0xdfff36ff irq 21 at device 16.4 on pci0
ehci0: [GIANT-LOCKED]
usb4: EHCI version 1.0
usb4: companion controllers, 2 ports each: usb0 usb1 usb2 usb3
usb4: <VIA VT6202 USB 2.0 controller> on ehci0
usb4: USB revision 2.0
uhub4: VIA EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub4: 8 ports with 8 removable, self powered
isab0: <PCI-ISA bridge> at device 17.0 on pci0
isa0: <ISA bus> on isab0
pci0: <multimedia, audio> at device 17.5 (no driver attached)
acpi_button1: <Sleep Button> on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse, device ID 3
fdc0: <floppy drive controller> port 0x3f2-0x3f3,0x3f4-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fdc0: [FAST]
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sio0: type 16550A
sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
sio1: type 16550A
ppc0: <ECP parallel printer port> port 0x378-0x37f,0x778-0x77b irq 7 drq 3 on acpi0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/9 bytes threshold
ppbus0: <Parallel port bus> on ppc0
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
pmtimer0 on isa0
orm0: <ISA Option ROMs> at iomem 0xc0000-0xcefff,0xcf000-0xd17ff,0xd1800-0xd3fff,0xd4000-0xd57ff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
Timecounter "TSC" frequency 2205015338 Hz quality 800
Timecounters tick every 1.000 msec
acd0: DVDR <NEC DVD RW ND-3520A/1.04> at ata0-master UDMA33
ad4: 476940MB <WDC WD5000AAKB-22UKA0 07.01N01> at ata2-master UDMA100
ad6: 476940MB <WDC WD5000AAKB-22UKA0 07.01N01> at ata3-master UDMA100
ad8: 476940MB <WDC WD5000AAKB-22UKA0 07.01N01> at ata4-master UDMA100
ad10: 476940MB <WDC WD5000AAKB-22UKA0 07.01N01> at ata5-master UDMA100
GEOM_MIRROR: Device gmrcroot created (id=1307788816).
GEOM_MIRROR: Device gmrcroot: provider ad4s1a detected.
GEOM_MIRROR: Device gmrcvar1 created (id=1430879240).
GEOM_MIRROR: Device gmrcvar1: provider ad4s1d detected.
GEOM_MIRROR: Device gmrcusr1 created (id=3106786564).
GEOM_MIRROR: Device gmrcusr1: provider ad4s1e detected.
GEOM_MIRROR: Device gmrcswp1 created (id=3502221240).
GEOM_MIRROR: Device gmrcswp1: provider ad4s1f detected.
GEOM_MIRROR: Device gmrchom1 created (id=616768274).
GEOM_MIRROR: Device gmrchom1: provider ad4s1g detected.
GEOM_MIRROR: Device gmrcroot: provider ad6s1a detected.
GEOM_MIRROR: Device gmrcvar2 created (id=1509388684).
GEOM_MIRROR: Device gmrcvar2: provider ad6s1d detected.
GEOM_MIRROR: Device gmrcusr2 created (id=3198564396).
GEOM_MIRROR: Device gmrcusr2: provider ad6s1e detected.
GEOM_MIRROR: Device gmrcswp2 created (id=339401470).
GEOM_MIRROR: Device gmrcswp2: provider ad6s1f detected.
GEOM_MIRROR: Device gmrchom2 created (id=3338347599).
GEOM_MIRROR: Device gmrchom2: provider ad6s1g detected.
GEOM_MIRROR: Device gmrcroot: provider ad8s1a detected.
GEOM_MIRROR: Device gmrcvar1: provider ad8s1d detected.
GEOM_MIRROR: Device gmrcvar1: provider ad8s1d activated.
GEOM_MIRROR: Device gmrcvar1: provider ad4s1d activated.
GEOM_MIRROR: Device gmrcvar1: provider mirror/gmrcvar1 launched.
GEOM_MIRROR: Device gmrcusr1: provider ad8s1e detected.
GEOM_MIRROR: Device gmrcusr1: provider ad8s1e activated.
GEOM_MIRROR: Device gmrcusr1: provider ad4s1e activated.
GEOM_MIRROR: Device gmrcusr1: provider mirror/gmrcusr1 launched.
GEOM_MIRROR: Device gmrcswp1: provider ad8s1f detected.
GEOM_MIRROR: Device gmrcswp1: provider ad8s1f activated.
GEOM_MIRROR: Device gmrcswp1: provider ad4s1f activated.
GEOM_MIRROR: Device gmrcswp1: provider mirror/gmrcswp1 launched.
GEOM_MIRROR: Device gmrchom1: provider ad8s1g detected.
GEOM_MIRROR: Device gmrchom1: provider ad8s1g activated.
GEOM_MIRROR: Device gmrchom1: provider ad4s1g activated.
GEOM_MIRROR: Device gmrchom1: provider mirror/gmrchom1 launched.
GEOM_MIRROR: Device gmrcroot: provider ad10s1a detected.
GEOM_MIRROR: Device gmrcroot: provider ad10s1a activated.
GEOM_MIRROR: Device gmrcroot: provider ad8s1a activated.
GEOM_MIRROR: Device gmrcroot: provider ad6s1a activated.
GEOM_MIRROR: Device gmrcroot: provider ad4s1a activated.
GEOM_MIRROR: Device gmrcroot: provider mirror/gmrcroot launched.
GEOM_MIRROR: Device gmrcvar2: provider ad10s1d detected.
GEOM_MIRROR: Device gmrcvar2: provider ad10s1d activated.
GEOM_MIRROR: Device gmrcvar2: provider ad6s1d activated.
GEOM_MIRROR: Device gmrcvar2: provider mirror/gmrcvar2 launched.
GEOM_MIRROR: Device gmrcusr2: provider ad10s1e detected.
GEOM_MIRROR: Device gmrcusr2: provider ad10s1e activated.
GEOM_MIRROR: Device gmrcusr2: provider ad6s1e activated.
GEOM_MIRROR: Device gmrcusr2: provider mirror/gmrcusr2 launched.
GEOM_MIRROR: Device gmrcswp2: provider ad10s1f detected.
GEOM_MIRROR: Device gmrcswp2: provider ad10s1f activated.
GEOM_MIRROR: Device gmrcswp2: provider ad6s1f activated.
GEOM_MIRROR: Device gmrcswp2: provider mirror/gmrcswp2 launched.
GEOM_MIRROR: Device gmrchom2: provider ad10s1g detected.
GEOM_MIRROR: Device gmrchom2: provider ad10s1g activated.
GEOM_MIRROR: Device gmrchom2: provider ad6s1g activated.
GEOM_MIRROR: Device gmrchom2: provider mirror/gmrchom2 launched.
GEOM_STRIPE: Device gsrcvar created (id=937835587).
GEOM_STRIPE: Disk mirror/gmrcvar1 attached to gsrcvar.
GEOM_STRIPE: Device gsrcusr created (id=533043218).
GEOM_STRIPE: Disk mirror/gmrcusr1 attached to gsrcusr.
GEOM_STRIPE: Device gsrcswp created (id=534629169).
GEOM_STRIPE: Disk mirror/gmrcswp1 attached to gsrcswp.
GEOM_STRIPE: Device gsrchom created (id=2161269149).
GEOM_STRIPE: Disk mirror/gmrchom1 attached to gsrchom.
GEOM_LABEL: Label for provider mirror/gmrcroot is ufs/rcroot.
GEOM_STRIPE: Disk mirror/gmrcvar2 attached to gsrcvar.
GEOM_STRIPE: Device gsrcvar activated.
GEOM_STRIPE: Disk mirror/gmrcusr2 attached to gsrcusr.
GEOM_STRIPE: Device gsrcusr activated.
GEOM_STRIPE: Disk mirror/gmrcswp2 attached to gsrcswp.
GEOM_STRIPE: Device gsrcswp activated.
GEOM_STRIPE: Disk mirror/gmrchom2 attached to gsrchom.
GEOM_STRIPE: Device gsrchom activated.
GEOM_LABEL: Label for provider stripe/gsrcvar is ufs/rcvar.
GEOM_LABEL: Label for provider stripe/gsrcusr is ufs/rcusr.
GEOM_LABEL: Label for provider stripe/gsrcswp is label/rcswap.
GEOM_LABEL: Label for provider stripe/gsrchom is ufs/rchome.
Trying to mount root from ufs:/dev/ufs/rcroot
bge0: link state changed to UP

--
Adrian Wontroba
Definitions of hardware and software for dummies:
	Hardware is what you kick;
	Software is what you curse.


More information about the freebsd-geom mailing list