whole-disk gmirror and upgrade from 8.2 to 9.0

Vick Khera vivek at mailermailer.com
Mon Jan 30 16:14:07 UTC 2012

Earlier on questions@ I asked about the gmirror failure on booting into a 9.0 kernel when the whole-disk was mirrored on an 8.2 system.  I was pointed to this post <http://lists.freebsd.org/pipermail/freebsd-geom/2011-October/005071.html>, which helped me get it to boot, and I verified that I have the exact same issue mentioned there with the difference in gpart.

So I figured what I should do is destroy my existing gmirror while booted in 8.2, boot into 9.0 and install world.  This went extremely well.... that is until I try to recreate the new gmirror.

I destroyed the gmirror in 8.2 with these commands:

gmirror remove gm0 ad6
gmirror remove gm0 ad4

reboot into 9.0 kernel, install world, merge master, etc.

So now that my ada0 (old ad4) disk has on it a full 9.0 install, I want to set up gmirror again, like I always do:

boot to single user, then:

# uname -a
FreeBSD  9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan 17 14:49:58 EST 2012     vivek at lorax.kcilink.com:/u/lorax1/usr9/obj.amd64/u/lorax1/usr9/src/sys/KCI64  amd64
# gmirror list
# gmirror status
# gmirror dump ada1
Can't read metadata from ada1: Invalid argument.
gmirror: Not fully done.
# gmirror dump ada0
Can't read metadata from ada0: Invalid argument.
gmirror: Not fully done.
# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
# gmirror label -v gm0 ada0
Metadata value stored on ada0.
# reboot

On reboot, I again get the same "GEOM_PART: integrity check failed (mirror/gm0, MBR)" error from before, and then the system proceeds to boot the ada1 disk, giving me 9.0 kernel with 8.2 world.  gmirror reports the mirror is fine, though:

# gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ada0
# gmirror list  
Geom name: gm0
Components: 1
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 168727457
1. Name: mirror/gm0
   Mediasize: 32016530944 (30G)
   Sectorsize: 512
   Mode: r0w0e0
1. Name: ada0
   Mediasize: 32016531456 (30G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 2335861329

If I set kern.geom.part.check_integrity=0 on the boot, I boot fine on the gm0 device, and gmirror reports the same status "COMPLETE".  If I clear the gmirror by removing ada0, it will boot and run fine from the ada0 device.

What do I need to do to make this gmirror work again?  The disk is partitioned MBR so there should be no problems with GPT interference.

More information about the freebsd-geom mailing list