From owner-freebsd-questions@FreeBSD.ORG Fri Oct 23 15:40:13 2009 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2B80C106566C for ; Fri, 23 Oct 2009 15:40:13 +0000 (UTC) (envelope-from gaz@gbmail.biz) Received: from mk-filter-2-a-1.mail.uk.tiscali.com (mk-filter-2-a-1.mail.uk.tiscali.com [212.74.100.53]) by mx1.freebsd.org (Postfix) with ESMTP id 2F9C88FC17 for ; Fri, 23 Oct 2009 15:40:11 +0000 (UTC) X-Trace: 278137994/mk-filter-2.mail.uk.tiscali.com/B2C/$b2c-TRUSTED/b2c-IMPLICITLY_TRUSTED/212.74.112.53/None/gaz@gbmail.biz X-SBRS: None X-RemoteIP: 212.74.112.53 X-IP-MAIL-FROM: gaz@gbmail.biz X-SMTP-AUTH: X-MUA: Thunderbird 2.0.0.23 (X11/20090817) X-IP-BHB: Once X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AngBAC9r4UrUSnA1/2dsb2JhbAAIghoxgh+fKaQPghqPE4JagRJTBIFdfIIF X-IronPort-AV: E=Sophos;i="4.44,612,1249254000"; d="scan'208,217";a="278137994" Received: from e1-1.ns500-1.ts.milt.as9105.net (HELO [10.44.30.82]) ([212.74.112.53]) by smtp.tiscali.co.uk with ESMTP; 23 Oct 2009 16:40:04 +0100 Message-ID: <4AE1CE54.3020306@gbmail.biz> Date: Fri, 23 Oct 2009 16:40:04 +0100 From: Gareth Brown User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: PJ References: <4ADC6D89.10600@videotron.ca> In-Reply-To: <4ADC6D89.10600@videotron.ca> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: "freebsd-questions@freebsd.org" Subject: Re: glabel clarification X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Oct 2009 15:40:13 -0000 PJ wrote: > I understood that labeling a disk with glabel would permit the disk to > be switched to another system and booting from that disk would not > require other manupulations than adjusting network configuration, samba, > rc.conf and a few others.. > But what if there is already a disk on the system with the identical > labels in /dev/label/ ? > I understood that whatever the actual disk might be (ad4, ad12, > ad1...)would be irrelevant? > It would appear that the actual booting goes according to the label; so, > if there are duplicate labels the boot will not necessarily be from the > newly installed disk if there is another disk with duplicate glabel labels? > So doing a glabel seems superfluous... > What then is the real purpose of glabel, since the boot process seems to > need a unique identifier? > > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org" > > Basically there is some order required to the whole process and labelling is required should you wish to boot from more that just the first BIOS disk. The BIOS will look for disks at certain points on the controller and assign device names to each disk based on it's physical position. The GEOM framework adds meta data to an area of the disk that is looked at by the kernel at boot. I've included some of my own documentation on how to setup a complex 2 x RAID1 + 1 x RAID10 over 4 disks (2 slices per disk). I know you're not doing anything so complex, but hopefully you'll be able to take out the unnecessary step to suit your need. GEOM Background gstripe(8) provides a stripe set or RAID 0 gmirror(8) provides a mirror/duplex or RAID 1 graid3(8) provides a stripe with parity or RAID 3 provider--This GEOM entity appears in /dev. This article shows how to create a provider known as /dev/mirror/gm0, which represents the disk mirror/duplex. consumer--This entity receives I/O requests. In the example of a mirror/duplex, it is the two physical drives. I use two IDE drives on separate cables; they are /dev/ad0 and /dev/ad2. metadata--When referring to any RAID level, metadata includes the array members, their sizes and locations, descriptions of logical disks and partitions, and the current state of the disk array. mirror/duplex--RAID 1 maintains the same data on two separate drives. In other words, it mirrors the data on one drive to another drive. If those two drives are attached to the same IDE cable, they are a mirror; if they are attached to separate cables, they are a duplex. Because a single cable introduces a single point of failure, most mirrors are actually duplexes. Complex GEOM RAID /Creating a complex 4 disk raid where the OS and swap are duplexed on the first slice over the 4 disks; and the 2nd slice of all disks is setup as a RAID10 for the data. By analyzing this way, it can be easily broken down into it's smaller gmirror/glabel/gsrtipe components if that is all that is required. So the dual RAID1 and single RAID10 will look like:/ The Aim Physical disk providers da0s1 mirrors with da2s1 for / (1G); /usr (5G) and /var (2G) called gmROOT then glabelled ROOT da1s1 mirrors with da3s1 for swap only and labelled gmSWAP then glabelled SWAP da0s2 mirrors with da2s2 and labelled gmDATA0 da1s2 mirrors with da3s2 and labelled gmDATA1 gmDATA0 and gmDATA1 will be striped and labelled gsDATA and glabelled DATA for /home (10G) and /opt (15G) labelling: / = ROOTa /usr = ROOTd /var = ROOTe /home = DATAd /opt – DATAe Creating a RAID steps 1. create all slices remembering to leave space between them for the disk/slice data - done by creating the first slice larger than it needs to be, then creating the second slice, deleting the first slice and recreating it from the free space at it's correct size. 2. create da0s1 partitioning as above; all of da1s1 for swap; and da0s2 partitioned as above 3. install OS onto da0s1. Partitioning as above, installing minimal package and developer. 4. return to config, set root password, then break out (*alt-F4*) to add all geom modules to loader.conf: *grep geom /boot/defaults/loader.conf >> /boot/loader.conf* 5. edit /boot/loader.conf so that stripe, mirror and label are set to yes and return to the install (*alt-f1*) and exit. 6. create mirror for root fs on the unused disk: *gmirror label -v -b round-robin gmROOT da2s1* /Where gmirror label creates the mirror; -v enables verbose mode; -b round-robin chooses a balance algorithm (at the moment, round-robin is the algorithm with the best performance); ROOT is the name of mirror/duplex (this name represents the first GEOM mirror); and /dev/da2s1 represents the disk containing the data to mirror./ 7. check it: *gmirror status* 8. create labels for this mirror: *glabel label -v ROOT mirror/gmROOT* 9. check it: *glabel status* 10. copy OS to the new glabelled filesystem: *dd bs=32768 if=/dev/da0s1 of=/dev/label/ROOT* 11. create mirror for swap (not essentially necessary but it is tidier): *gmirror label -v -b round-robin gmSWAP da1s1 da3s1* 12. check it: *gmirror status* 13. create labels for this mirror: *glabel label -v SWAP mirror/gmSWAP* 14. check it: *glabel status* 15. create stripe 16. a *gmirror label -v -b round-robin gmDATA0 da0s2 da2s2* 17. b *gmirror label -v -b round-robin gmDATA1 da1s2 da3s2* 18. c *gstripe label -v gsDATA mirror/gmDATA0 mirror/DATA1* 19. create label for this stripe: *glabel label -v DATA stripe/DATA* 20. check labels: *glabel status* 21. mount the mirrored / and edit fstab (this may require an fsck first): *mount /dev/label/ROOTa /mnt* 22. change all fstab device entires to match their equivalent label (copy the original first). I.e. /dev/da0s1a to /dev/label/ROOTa and /dev/da0s2d to /dev/label/DATAd /When finished, triple-check your changes to both /mnt/etc/fstab and /mnt/boot/loader.conf. While it is fixable (http://www.freebsdwiki.org/index.php/Fixing_GEOM_Boot_Problems), it sucks not being able to boot into a new system because of a typo./ 23. halt 24. swap da0 and da2 around 25. power up /Boot will show lots of GEOM_MIRROR, GEOM_STRIPE and GEOM_LABEL messages for your created GEOM devices/ 26. Insert the original disk into the mirror (remembering the disk that was da0 is now going to be da2): *gmirror insert gmROOT da2s1; gmirror insert gmDATA0 da2s2* 27. check mirror: *gmirror status* /Once finished, status will show COMPLETE./ Confirming # df -h Filesystem Size Used Avail Capacity Mounted on /dev/label/ROOTa 989M 138M 772M 15% / devfs 1.0K 1.0K 0B 100% /dev /dev/label/DATAd 9.7G 22K 8.9G 0% /home /dev/label/DATAe 15G 4.0K 13G 0% /opt /dev/label/ROOTd 4.8G 1.3G 3.1G 30% /usr /dev/label/ROOTe 1.9G 290K 1.8G 0% /var # swapinfo Device 1K-blocks Used Avail Capacity /dev/label/SWAP 8385896 0 8385896 0% Replacing a disk /Lets say da0 dies effecting the mirrors gmROOT and gmDATA0/ 1. remove the disk 2. tell the mirror to forget the disk: *gmirror forget gmROOT; gmirror forget gmDATA0* 3. insert the new disk 4. check which scsi the disk is connected to: *camcontrol devlist* 5. tell the system to rescan the scsi bus the disk is connected to: *camcontrol rescan 0* 6. dump the disk slice-data and geometry from the other disk in the mirror: *fdisk /dev/da2 -p >> diskdata* 7. setup the new disk with the same details: _fdisk -f diskdata /dev/da0__ 8. write the MBR: *fdisk -B -b /boot/boot0 /dev/da0* 9. reinsert the slices into their relevant mirrors: *gmirror insert gmROOT da0s1; gmirror insert gmDATA0 da0s2* 10. check it: *gmirror status*