How To Mirror Your Root Disk On AIX (a.k.a. rootvg)

If you are building windows and linux servers on today’s hardware (HP DL380 G8, IBM x3650m4, etc.) you are likely mirroring your drives at the hardware BIOS level first and then booting into your OS. And voila! Your OS sees one device.

In AIX, we still do it the good ol’ fashioned way: through logical volumes. Especially applicable since if you get your P-series server pre-installed, they don’t do it for you.

Here is today’s quickie: how to mirror your rootvg disk a.k.a. hdisk0 (or any other disk really)
Mirroring rootvg and other disks on AIX

Mirroring rootvg: The commands

though this is a short process anyway..but anyway..
actual values used in my example, change those to suit your environment


Sponsored Links

  1. lspv in my example, hdisk0 is rootvg, hdisk1 is not in use
  2. lsvg -l rootvg compare PPs and LPs and verify not mirrored
  3. extendvg rootvg hdisk1
  4. mirrorvg rootvg
  5. bosboot -ad /dev/hdisk1 make hdisk1 bootable
  6. bootlist -m normal hdisk0 hdisk1 tell AIX it can boot off hdisk1
  7. lsvg -l rootvg compare PPs and LPs and verify mirrored

Mirroring rootvg: the screendump

# lspv
hdisk0 00f6896363c5a76a rootvg active
hdisk1 none None
#

I have an hdisk0 in rootvg. I have a second disk not in use. This is how it came pre-installed from IBM.

# lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 1 2 closed/syncd N/A
hd6 paging 1 1 2 open/syncd N/A
hd8 jfs2log 1 1 2 open/syncd N/A
hd4 jfs2 2 2 2 open/syncd /
hd2 jfs2 4 4 2 open/syncd /usr
hd9var jfs2 1 1 2 open/syncd /var
hd3 jfs2 1 1 2 open/syncd /tmp
hd1 jfs2 1 1 2 open/syncd /home
hd10opt jfs2 1 1 2 open/syncd /opt
fwdump jfs2 2 2 2 open/syncd /var/adm/ras/platform
lg_dumplv sysdump 4 4 1 open/syncd N/A
#

Running the lsvg -l rootvg, compare the PPs and the LPs. It is a 1:1 ratio which means these filesystems are not mirrored.

# extendvg rootvg hdisk1
0516-1254 extendvg: Changing the PVID in the ODM.
# lspv
hdisk0 00f6896363c5a76a rootvg active
hdisk1 00f6896326f7a5cd rootvg active
#

Note the PVID is added with this command

# mirrorvg rootvg
0516-1804 chvg: The quorum change takes effect immediately.
0516-1126 mirrorvg: rootvg successfully mirrored, user should perform
bosboot of system to initialize boot records. Then, user must modify
bootlist to include: hdisk1 hdisk0.
#

We’ve now added our second disk

# bosboot -ad /dev/hdisk1
bosboot: Boot image is 43114 512 byte blocks.
#

We’ve now made hdisk1 bootable

# bootlist -m normal hdisk0 hdisk1
#

We’ve now put both hdisk0 and hdisk1 in the boot order so we’ve told AIX it is okay to boot off of hdisk1

# bootlist -m normal -o
hdisk0 blv=hd5
hdisk1 blv=hd5
#

Here you have verified the bootlist so AIX knows it can boot off of either disk

# lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 1 2 2 closed/syncd N/A
hd6 paging 1 2 2 open/syncd N/A
hd8 jfs2log 1 2 2 open/syncd N/A
hd4 jfs2 2 4 2 open/syncd /
hd2 jfs2 4 8 2 open/syncd /usr
hd9var jfs2 1 2 2 open/syncd /var
hd3 jfs2 1 2 2 open/syncd /tmp
hd1 jfs2 1 2 2 open/syncd /home
hd10opt jfs2 1 2 2 open/syncd /opt
fwdump jfs2 2 4 2 open/syncd /var/adm/ras/platform
lg_dumplv sysdump 4 4 1 open/syncd N/A
#

Note the PP’s are twice as much as the LP’s are. That is a “count of copies” so to speak, i.e. those filesystems are mirrored.


Sponsored Links

Extrapolating to filesystems in general…

If you are mirroring non-rootvg VGs, follow the above EXCEPT adding the part about making it bootable. VGs that are not rootvg are for data and other uses and cannot be booted off of so should not be added to the bootlist (otherwise you’ll be in some trouble)

Here’s a jpg with the entire process:
AIX_mirroringdisk

Good luck!

, , Geek, Unix

2 thoughts on “How To Mirror Your Root Disk On AIX (a.k.a. rootvg)

  1. Hello there. Really interesting you article. I have a question, when I run lsvg -l rootvg in my server I obtained:
    LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
    hd5 boot 1 2 2 closed/syncd N/A
    hd6 paging 32 64 2 open/syncd N/A
    hd8 jfslog 1 2 2 open/syncd N/A
    hd4 jfs 2 4 2 open/syncd /
    hd2 jfs 31 62 2 open/syncd /usr
    hd9var jfs 14 28 2 open/syncd /var
    hd3 jfs 5 10 2 open/syncd /tmp
    hd1 jfs 10 20 2 open/syncd /home
    hd10opt jfs 4 8 2 open/syncd /opt
    lg_dumplv sysdump 16 16 1 open/syncd N/A
    loglv00 jfs2log 1 2 2 closed/syncd N/A
    paging00 paging 32 32 1 open/syncd N/A
    lv01 jfs 32 32 1 closed/syncd /usr/sys/inst.images
    lv05 jfs 384 768 2 open/syncd /oracle
    lv08 jfs 304 304 1 open/syncd /ORADATA/DATA4

    I can see paging00 and lv08 are not mirrored. Your example change the whole VG but is there any way to do it just for lv08 and paging00?. I’ve just taken responsibility of that server and I’m not so familiarized. Which is the command to see the hard disks I’m mirroring on?.

    Thank you so much.

    Vinny.

  2. Hi Vinny, yes you can make mirrors after-the-fact. In fact, you will likely need to do that. The command I use mirrors all LVs on that VG. If you create a new LV on that VG, it is not mirrored so you will need to mirror it manually!

    mklvcopy -k [LVNAME] 2

    As far as seeing which disk holds the copy, I only know some roundabout ways, not direct ways.

    In this case you can query each disk in the vg. In rootvg there are usually two, hdisk0 and hdisk1.

    lslv -n [hdisk] [lvname]

    e.g.

    lslv -n hdisk0 hd10opt

    If there is a copy of hd10opt on hdisk0, it should list out stats for MAX LPs, Copies, etc.etc. In other words the output should look “normal”. If there is not a copy on that hdisk you will see question marks.

    In my case, when I did a “lslv -n hdisk1 hd10opt” on a non-mirrored LV, it came up with a bunch of question marks.

    So to make a copy:

    mklvcopy -k [LVNAME] 2 [hdisk]

    For me:

    mklvcopy -k hd10opt hdisk1

    Hope that helps!

Leave a Comment

Your email address will not be published. Required fields are marked *

Spam protection by WP Captcha-Free