Nick Barnes wrote:
I am running a 6.3 system and have had various problems with disk reliability on a key filesystem, probably down to SCSI hardware or drivers. I'm intending to replace that SCSI disk with a pair of SATA disks ad6/7, using gmirror as gm0 (while keeping ad4 as our boot disk). I have set up the mirror and right now I'm part-way through using rsync to transfer the data. But I have a question concerning the underlying operation of GEOM, which is troubling me. I have read the various man pages and handbook pages relating to GEOM and gmirror, but they don't seem to answer this.When I reboot the system, gmirror comes up (because of the line in /boot/loader.conf) and gm0 appears, backed by ad6/7. Where is this configuration information stored? That is, how does the system know to make gm0, with ad6/7 as the backing store. I would expect there to be a file somewhere in /etc with this config information, but I don't see it in the documentation. From reading gmirror(8), I understand that there is a label sector at the ends of ad6 and ad7, identifying them as parts of gm0. But that config information is back-to-front: at boot time the system knows from /etc/fstab that it needs gm0; how does it find the underlying disks? Does the system search the ends of all physically-attached disks, looking for GEOM labels, and automatically make any corresponding GEOM devices? Surely not (that would mean, for instance, that if I took one of these disks out of this machine and put it into another FreeBSD system then that machine would automatically set up gm0 with this disk). Possibly I'm just being dense. Can someone enlighten me?
The geom configuration is stored on the disks in question -- I believe it uses the last cylinder of the drive, but I could be wrong about the details. On startup, if the appropriate geom modules are loaded into the kernel,geom will "taste" the disks discovered by enumerating the contents of all ATA, SCSI, USB, etc. busses (ie. read any geom metadata) to see if they are
part of a RAID array of some type. The RAID will be automatically recreated, and appears to the system as a new device. If there are appropriate entries in /etc/fstab any file systems on it will be mounted. There's no data stored on the filesystem describing the RAID setup. Well, unless you make a backup of it yourself by dumping the output of 'gmirror status' somewhere. This means that you can move the disks from one server to another and all the RAIDs will survive. Actually, it's good enough that it can cope with you shuffling the disks or installing them with completely different underlying device names. You would certainly have to avoid a clash of geom device nameswhen doing that -- the names are entirely arbitrary and 'gm0' is only the de-facto default because it was used in one of the most popular tutorials on the subject. If you think it necessary, you could include the host name in the geom label or otherwise take action to make them globally unique across all your systems.
You can achieve a similar effect for plain disks by using glabel -- this is a handy way of avoiding the foot-shooting potential of a USB thumb drive that maps as da0 on reboot, in place of the real system disk. Cheers, Matthew -- Dr Matthew J Seaman MA, D.Phil. 7 Priory Courtyard Flat 3 PGP: http://www.infracaninophile.co.uk/pgpkey Ramsgate Kent, CT11 9PW
Description: OpenPGP digital signature