x86 Sun Machine and Solaris Soft Mirror

Hi everyone,

Normally it always easier in Sparc machine, i can set or manually use the boot-device in NVram to boot the mirrored disk. However I have a big trouble about x86 mirror for a long time. I have been doing anything i can: search document, google, ask the others.

Recently i did as follow guide http://it.toolbox.com/wiki/index.ph
/Solaris_x86_root_filesystem_mirroring on my x86 machine for testing purpose. Hdd0 mirror with hdd2. Hdd0 have 3 silce: /, swap, metadb.

===================== This is my output ==================
X4450 Solaris 10 u5

#metastat
d110: Mirror
Submirror 0: d111
State: Okay
Submirror 1: d112
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 33559785 blocks (16 GB)

d111: Submirror of d110
State: Okay
Size: 33559785 blocks (16 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t0d0s1 0 No Okay Yes

d112: Submirror of d110
State: Okay
Size: 33559785 blocks (16 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t2d0s1 0 No Okay Yes

d100: Mirror
Submirror 0: d101
State: Okay
Submirror 1: d102
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 9863910 blocks (4.7 GB)

d101: Submirror of d100
State: Okay
Size: 9863910 blocks (4.7 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t0d0s0 0 No Okay Yes

d102: Submirror of d100
State: Okay
Size: 9863910 blocks (4.7 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t2d0s0 0 No Okay Yes

Device Relocation Information:
Device Reloc Device ID
c0t2d0 Yes id1,sd@TSun_____STK_RAID_INT____1387D8E3
c0t0d0 Yes id1,sd@TSun_____STK_RAID_INT____5577D8E3

#metadb
flags first blk block count
a m p luo 16 8192 /dev/dsk/c0t0d0s7
a p luo 8208 8192 /dev/dsk/c0t0d0s7
a p luo 16400 8192 /dev/dsk/c0t0d0s7
a p luo 16 8192 /dev/dsk/c0t2d0s7
a p luo 8208 8192 /dev/dsk/c0t2d0s7
a p luo 16400 8192 /dev/dsk/c0t2d0s7

#cat /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd - /dev/fd fd - no -
/proc - /proc proc - no -
#/dev/dsk/c0t0d0s1 - - swap - no -
/dev/md/dsk/d110 - - swap - no -
/dev/md/dsk/d100 /dev/md/rdsk/d100 / ufs 1 no -
#/dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /metadb ufs 2 yes -
/devices - /devices devfs - no -
ctfs - /system/contract ctfs - no -
objfs - /system/object objfs - no -
swap - /tmp tmpfs - yes -

#fdisk /dev/rdsk/c0t2d0p0

         Total disk size is 17833 cylinders
         Cylinder size is 16065 \(512 byte\) blocks

                                           Cylinders
  Partition   Status    Type          Start   End   Length    %
  =========   ======    ============  =====   ===   ======   ===
      1       Active    Solaris2          1  17832    17832    100

SELECT ONE OF THE FOLLOWING:

  1. Create a partition
  2. Specify the active partition
  3. Delete a partition
  4. Change between Solaris and Solaris2 Partition IDs
  5. Exit (update disk configuration and exit)
  6. Cancel (exit without updating disk configuration)
    Enter Selection: 5

bash-3.00# cat /boot/grub/menu.lst
#pragma ident "@(#)menu.lst 1.1 05/09/01 SMI"
#
# default menu entry to boot
default 0
#
# menu timeout in second before default OS is booted
# set to -1 to wait for user input
timeout 10
#
# To enable grub serial console to ttya uncomment the following lines
# and comment out the splashimage line below
# WARNING: don't enable grub serial console when BIOS console serial
# redirection is active!!!
# serial --unit=0 --speed=9600
# terminal serial
#
# Uncomment the following line to enable GRUB splashimage on console
splashimage /boot/grub/splash.xpm.gz
#
# To chainload another OS
#
# title Another OS
# root (hd<disk no>,<partition no>)
# chainloader +1
#
# To chainload a Solaris release not based on grub
#
# title Solaris 9
# root (hd<disk no>,<partition no>)
# chainloader +1
# makeactive
#
# To load a Solaris instance based on grub
#
# title Solaris <version>
# root (hd<disk no>,<partition no>,x) --x = Solaris root slice
# kernel /platform/i86pc/multiboot
# module /platform/i86pc/boot_archive
#
# To override Solaris boot args (see kernel(1M)), console device and
# properties set via eeprom(1M) edit the "kernel" line to:
#
# kernel /platform/i86pc/multiboot <boot-args> -B prop1=val1,prop2=val2,...
#
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris 10 5/08 s10x_u5wos_10 X86
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris failsafe
kernel /boot/multiboot kernel/unix -s
module /boot/x86.miniroot-safe
#---------------------END BOOTADM--------------------
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Alternate boot
root (hd3,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------

# Unknown partition of type 66 found on /dev/rdsk/c0t1d0p0 partition: 1
# It maps to the GRUB device: (hd1,0) .

# Unknown partition of type 66 found on /dev/rdsk/c0t1d0p0 partition: 2
# It maps to the GRUB device: (hd1,1) .

# Unknown partition of type 66 found on /dev/rdsk/c0t3d0p0 partition: 1
# It maps to the GRUB device: (hd3,0) .

# Unknown partition of type 66 found on /dev/rdsk/c0t3d0p0 partition: 2
# It maps to the GRUB device: (hd3,1) .

bash-3.00# bootadm list-menu
The location for the active GRUB menu is: /boot/grub/menu.lst
default 0
timeout 10
0 Solaris 10 5/08 s10x_u5wos_10 X86
1 Solaris failsafe
2 Alternate boot

I consider i have 3 problems needed help:

  1. Mirror 2 hdd: hdd0,hdd1, unplug hdd0, hdd1 cannot boot. It show bad pbr sig
  2. I don't know how to set boot from hdd1 slot of x86 machine.( Alternate boot from Grub menu not work )
  3. A Hdd after create a Window mbr cannot use installgrub command.
    On my Window soft mirror, i have a same problem as Solaris soft mirror. I did mirror with 2 hdd and if i unplug hdd0 and hdd1 cannot boot. Then i create a MBR on hdd1 and it can boot normally. But when i reinstall Solaris on these hdds. I cannot do installgrub command on hdd1.

Please suggest me anything i can do. THank for your attention :slight_smile:

This is a characteristic of SVM. Why are you trying so many things at one go? You should be isolating one prob at a time. SVM does not provide hot-plug feature. If you want that, go for H/W raid. You cant simply pull out the other disk and expect to boot from the other just because its mirrored. Please review raid 1 concepts.

these problems relate to other so i think it better to put all in a thread instead create 3 different threads

because i see in mirror guide always have a step as :"Make the secondary submirror bootable with a master boot program" with installgrub command.

if u say is true

what gonna happen if in reality a hdd0 is break and machine suddenly restart?

Even if you install bootblk on the 2nd disk and make it bootable, the system will still operate from the 1st disk(main mirror) as long as it is operational. If the 1st disk fails, the 2nd disk will cont to operate and run. However, if you tried to boot the 2nd disk from the ok> prompt for eg, the system would panic. You will need to revert the metadevice entries in vfstab and system file to make it bootable. You will have to experience to better understand

Look into ZFS.

could you please guide me to do it ? :confused:

i will see :o