[afnog] FreeBSD mirroring

Phil Regnauld regnauld at x0.dk
Thu Apr 27 19:15:52 EAT 2006


On Thu, Apr 27, 2006 at 05:32:49PM +0200, Antonio Godinho wrote:
> Hi All, 
> 
> I would like to mirror an already operational FreeBSD server running FreeBSD 
> 6.0. I have read the instructions at 
> http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/geom-mirror.html 
> 
> but I am not quite sure of what I will do specially when I have more than 
> the two partitions they reccommend. I have /, swap, /usr and /var. 

    Mirror the whole disk!  It doesn't matter how many partitions you have.

> Has anyone done this before? I don't want to ruin the already operational 
> installation and would like to have some additional pointers. 

    Plenty :)  Got 10-15 boxes running it (plus many others running ATAPI
    RAID/ar, ccd, vinum, raidframe -- I've tried everything :)

> The system is running on a HP server which now has two hotswap scsi disks 
> and the FreeBSD 6.0 is running in one of them (id 0). 

    Which HP server is it ?  Is it a Proliant ?  If so, they all have
    hardware RAID...

> I don't want to find that after going through these steps the system will 
> fail to boot. 

    It's easy to do -- what I recommend is doing it via the live
    FS CD.  Alternatively, you can do it by:

    - installing a minimal FreeBSD on the disk that will be the target
      (blank disk)
    - boot on it
    - create the gmirror label on the source disk (the one where all your
      data is) -- the label is 512 bytes written at the end of the
      disk / slice / partition you use:

    - change fstab on the source disk's fstab to use /dev/mirror/* devices
    - add geom_mirror_load="YES" to the source disk's /boot/loader.conf

    - reboot from the source disk, watch it magically discover the gmirror
      volume
    - check everything is running, then insert the spare disk into the
      raid with gmirror insert

    In practice, if you have disks da0 and da1, and we have:

    da0 = source, master, good disk with data
    da1 = destination, victim, will be overwritten by da0

    1. install FreeBSD minimal on da1 - MAKE SURE YOU DON'T ERASE the other
       disk!

    2. boot from da1 (by setting the boot options or moving it to the
       first slot, whatever your machine is)

       WARNING: at this point, booting from da1 might mean that it
       becomes da0, BE CAREFUL!

    3. check that da0 and da1 are both visible -- camcontrol devlist

    4. # gmirror label -v mymirror0 /dev/daX   (your source disk --
       notice I don't say da0 and da1 anymore: YOU must figure out which
       is which)

    5. # mount /dev/daXs1a /mnt
       # vi /mnt/etc/fstab

       Replace /dev/daXs1a by /dev/mirror/mymirror0s1a where relevant
       # vi /mnt/boot/loader.conf
       add geom_mirror_load="YES"

       # umount /mnt

    6. Reconfigure the box so that the source disk is the boot disk

    7. boot single user, you should see near the end of the boot that
       it has found the volume (if geom_mirror.ko loaded successfully)

    8. try mount -a, see if everything is ok

    9. insert the target disk (the one you booted from before) into
       the raid:

       # gmirror insert mymirror0 da1

    10. That's it!  Check with gmirror status that it's rebuilding in the
        background.

    Note: the underlying disk is ALWAYS available -- just remove
    geom_mirror_load from the loader.conf, reboot, boot with -a (ask for
    root device) and you can without problem access /dev/da0s1a for example,
    but then the raid is broken...

    Hope this is clear.






More information about the afnog mailing list