From owner-freebsd-geom@FreeBSD.ORG Tue Sep 25 04:55:34 2007 Return-Path: Delivered-To: freebsd-geom@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EEEAE16A418 for ; Tue, 25 Sep 2007 04:55:33 +0000 (UTC) (envelope-from aw1@stade.co.uk) Received: from lon-mail-4.gradwell.net (lon-mail-4.gradwell.net [193.111.201.130]) by mx1.freebsd.org (Postfix) with ESMTP id 1E84713C447 for ; Tue, 25 Sep 2007 04:55:32 +0000 (UTC) (envelope-from aw1@stade.co.uk) Received: from 5aca3c02.bb.sky.com ([90.202.60.2] helo=access2.hanley.stade.co.uk) by lon-mail-4.gradwell.net with esmtp (Gradwell gwh-smtpd 1.257) id 46f876e8.84ee.2d for freebsd-geom@freebsd.org; Tue, 25 Sep 2007 03:48:08 +0100 (envelope-sender ) Received: from steerpike.hanley.stade.co.uk (steerpike [192.168.1.10]) by access2.hanley.stade.co.uk (8.14.1/8.14.1) with ESMTP id l8P2m7Nk062221 for ; Tue, 25 Sep 2007 03:48:07 +0100 (BST) (envelope-from aw1@steerpike.hanley.stade.co.uk) Received: from steerpike.hanley.stade.co.uk (localhost [127.0.0.1]) by steerpike.hanley.stade.co.uk (8.14.1/8.14.1) with ESMTP id l8P2m6Zh059121 for ; Tue, 25 Sep 2007 03:48:06 +0100 (BST) (envelope-from aw1@steerpike.hanley.stade.co.uk) Received: (from aw1@localhost) by steerpike.hanley.stade.co.uk (8.14.1/8.14.1/Submit) id l8P2m6ZH059120 for freebsd-geom@freebsd.org; Tue, 25 Sep 2007 03:48:06 +0100 (BST) (envelope-from aw1) Date: Tue, 25 Sep 2007 03:48:06 +0100 From: Adrian Wontroba To: freebsd-geom@freebsd.org Message-ID: <20070925024806.GA56751@steerpike.hanley.stade.co.uk> References: <92bcbda50709120843o6af4bd38v8725be3f5b765b0e@mail.gmail.com> <20070913081748.GA1155@garage.freebsd.pl> <92bcbda50709210437g590df3f9y94f32d3d4d5cd1f@mail.gmail.com> <92bcbda50709240922j614b2a8aka7d360d366c02221@mail.gmail.com> <9bbcef730709241216p629f36b4o730e93ef34813678@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9bbcef730709241216p629f36b4o730e93ef34813678@mail.gmail.com> User-Agent: Mutt/1.4.2.2i X-Operating-System: FreeBSD 6.2-STABLE Organization: Oh dear, I've joined one again. X-Virus-Scanned: ClamAV 0.91.2/4387/Tue Sep 25 02:45:10 2007 on access2.hanley.stade.co.uk X-Virus-Scanned: ClamAV 0.91.2/4387/Tue Sep 25 02:45:10 2007 on steerpike.hanley.stade.co.uk X-Virus-Status: Clean Subject: Re: Gmirror on a partition of a slice X-BeenThere: freebsd-geom@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: aw1@stade.co.uk List-Id: GEOM-specific discussions and implementations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 Sep 2007 04:55:34 -0000 On Mon, Sep 24, 2007 at 09:16:29PM +0200, Ivan Voras wrote: > On 24/09/2007, n j 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@steerpike ~]$ gmirror status Name Status Components mirror/m1 COMPLETE ad4 ad6 [aw1@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@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@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@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@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@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@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@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@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@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@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 AMD Features=0xc0400800 real memory = 536805376 (511 MB) avail memory = 515883008 (491 MB) ACPI APIC Table: ioapic0 irqs 0-23 on motherboard kbd1 at kbdmux0 ath_hal: 0.9.20.3 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413) acpi0: 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: on acpi0 acpi_button0: on acpi0 pcib0: port 0xcf8-0xcff on acpi0 pci0: on pcib0 agp0: mem 0xe0000000-0xe7ffffff at device 0.0 on pci0 pcib1: at device 1.0 on pci0 pci1: on pcib1 pci1: at device 0.0 (no driver attached) atapci0: port 0xec00-0xec07,0xe800-0xe803,0xe400-0xe407,0xe000-0xe003,0xdc00-0xdc0f mem 0xdfffc000-0xdfffffff irq 16 at device 5.0 on pci0 ata2: on atapci0 ata3: on atapci0 atapci1: port 0xd800-0xd807,0xd400-0xd403,0xd000-0xd007,0xcc00-0xcc03,0xc800-0xc80f mem 0xdfff4000-0xdfff7fff irq 19 at device 7.0 on pci0 ata4: on atapci1 ata5: on atapci1 bge0: mem 0xdffb0000-0xdffbffff irq 18 at device 11.0 on pci0 miibus0: on bge0 brgphy0: on miibus0 brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto bge0: Ethernet address: 00:0c:76:e9:64:ee fwohci0: 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: on fwohci0 fwe0: 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: 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: port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xfc00-0xfc0f at device 15.0 on pci0 ata0: on atapci2 ata1: on atapci2 uhci0: port 0xb400-0xb41f irq 21 at device 16.0 on pci0 uhci0: [GIANT-LOCKED] usb0: 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: port 0xb800-0xb81f irq 21 at device 16.1 on pci0 uhci1: [GIANT-LOCKED] usb1: 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: port 0xbc00-0xbc1f irq 21 at device 16.2 on pci0 uhci2: [GIANT-LOCKED] usb2: 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: port 0xc000-0xc01f irq 21 at device 16.3 on pci0 uhci3: [GIANT-LOCKED] usb3: 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: 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: 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: at device 17.0 on pci0 isa0: on isab0 pci0: at device 17.5 (no driver attached) acpi_button1: on acpi0 atkbdc0: port 0x60,0x64 irq 1 on acpi0 atkbd0: irq 1 on atkbdc0 kbd0 at atkbd0 atkbd0: [GIANT-LOCKED] psm0: irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: model IntelliMouse, device ID 3 fdc0: 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: 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: on ppc0 plip0: on ppbus0 lpt0: on ppbus0 lpt0: Interrupt-driven port ppi0: on ppbus0 pmtimer0 on isa0 orm0: at iomem 0xc0000-0xcefff,0xcf000-0xd17ff,0xd1800-0xd3fff,0xd4000-0xd57ff on isa0 sc0: at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> vga0: at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 Timecounter "TSC" frequency 2205015338 Hz quality 800 Timecounters tick every 1.000 msec acd0: DVDR at ata0-master UDMA33 ad4: 476940MB at ata2-master UDMA100 ad6: 476940MB at ata3-master UDMA100 ad8: 476940MB at ata4-master UDMA100 ad10: 476940MB 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.