はじめに
LVMでは、複数の物理ディスク(PV)に同じデータを保持するミラーリングを組むことができ、ディスク障害時の冗長性を確保することができます。
ボリュームグループ(VG)内の2つのPVを使って、ミラーリング構成を組んだ際の作業メモです。
rootvg内のhdisk0とhdisk1をミラーリングしました。
実施環境
実施内容
事前の環境確認
ミラーリング構成を組む前の環境を確認しました。
rootvgにはhdisk0とhdisk1が割り当てられていて、hdisk1が未使用でhdisk0が使用されていることがわかりました。
[root@s922211:/]# lsvg -p rootvg
rootvg:
PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION
hdisk0 active 639 3 00..00..00..00..03
hdisk1 active 639 639 128..128..127..128..128
また、ミラーリング前は「LPs : PPs = 1 : 1」となっていました。
LP(Logical Partition)とPP(Physical Partition)は、それぞれ「論理ボリューム(LV)を構成する最小単位」と「PVを構成する最小単位」です。
ミラーリング前は1つのLPのデータが物理的には1つのPPに書き込まれるため、1対1の関係になります。
今回のように2つのPVでミラーリング構成を組んだ場合、1つのLPのデータは2つのPPに書き込まれるため、「LPs : PPs = 1 : 2」の関係になります。
[root@s922211:/]# lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 2 2 1 closed/syncd N/A
hd6 paging 16 16 1 open/syncd N/A
hd8 jfs2log 1 1 1 open/syncd N/A
hd4 jfs2 384 384 1 open/syncd /
hd2 jfs2 81 81 1 open/syncd /usr
hd9var jfs2 6 6 1 open/syncd /var
hd3 jfs2 4 4 1 open/syncd /tmp
hd1 jfs2 1 1 1 open/syncd /home
hd10opt jfs2 1 1 1 open/syncd /opt
hd11admin jfs2 4 4 1 open/syncd /admin
lg_dumplv sysdump 128 128 1 open/syncd N/A
livedump jfs2 8 8 1 open/syncd /var/adm/ras/livedump
hdisk0とhdisk1のミラーリング(同期)
mirrorvgコマンドでミラーリングを組みました。
[root@s922211:/]# mirrorvg rootvg hdisk1
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: hdisk0 hdisk1.
または
smit mirrorvg
VOLUME GROUP nameに「rootvg」を指定

*2つのPVでミラーリングを組む場合、「Keep Quorum Checking On?」は「no」
Mirror a Volume Group
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* VOLUME GROUP name rootvg
Mirror Sync Mode [Background] +
PHYSICAL VOLUME names [hdisk1] +
Number of COPIES of each logical 2 +
partition
Keep Quorum Checking On? no +
Create Exact LV Mapping? no +
ミラーリング完了後にrootvgの情報を確認すると、「LPs : PPs = 1 : 2」になっていることも確認できました。
[root@s922211:/]# lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 2 4 2 closed/syncd N/A
hd6 paging 16 32 2 open/syncd N/A
hd8 jfs2log 1 2 2 open/syncd N/A
hd4 jfs2 384 768 2 open/syncd /
hd2 jfs2 81 162 2 open/syncd /usr
hd9var jfs2 6 12 2 open/syncd /var
hd3 jfs2 4 8 2 open/syncd /tmp
hd1 jfs2 1 2 2 open/syncd /home
hd10opt jfs2 1 2 2 open/syncd /opt
hd11admin jfs2 4 8 2 open/syncd /admin
lg_dumplv sysdump 128 128 1 open/syncd N/A
livedump jfs2 8 16 2 open/syncd /var/adm/ras/livedump
hdisk1からもOSを起動するための準備
rootvg内の全てのPVのブート・イメージを初期化しました。
[root@s922211:/]# bosboot -a
bosboot: Boot image is 69660 512 byte blocks.
OS起動のためのデバイスのリストであるブートリストを確認しました。
hdisk0のみがブートリストに登録されています。
*2パスのMultipath I/Oになっているため2つのパス経由のhdisk0が登録されていました。
[root@s922211:/]# bootlist -m normal -o
hdisk0 blv=hd5 pathid=0
hdisk0 blv=hd5 pathid=1
ブートリストにhdisk1を登録しました。
[root@s922211:/]# bootlist -m normal hdisk0 hdisk1
hdisk1もブートリストに登録されました。
[root@s922211:/]# bootlist -m normal -o
hdisk0 blv=hd5 pathid=0
hdisk0 blv=hd5 pathid=1
hdisk1 blv=hd5 pathid=0
hdisk1 blv=hd5 pathid=1
以上
参考
AIXのLPARに新しく割り当てたPVを用いてrootvgでミラーリングを構成した際に、以下のようなエラーが出ました。
Unable to mirror AIX rootvg due to error code: 0516-1259を参考に解決しました。
[root@s922211:/]# mirrorvg -S rootvg hdisk1
0516-1259 mirrorvg: None of the available disks support booting on this
specific system or the boot logical volume already exists on
the specified disk.
If these are new bootable disks and you
have not rebooted since configuring them. You may try
exporting LVM_HOTSWAP_BOOTDISK=1 and run this command again
to override this condition.
0516-1200 mirrorvg: Failed to mirror the volume group.
mirrorvgコマンド実行後、ミラーリング構成中にrootvgの情報を見ると以下のようにLV STATEが「stale」になっていました。
「stale」のLVは、hdisk0とhdisk1が同期されていないことを示しています。
hdisk0とhdisk1の同期が完了すると、LV STATEが「syncd」変わります。
[root@s922211:/]# lsvg -l rootvg
rootvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
hd5 boot 2 4 2 closed/syncd N/A
hd6 paging 16 32 2 open/syncd N/A
hd8 jfs2log 1 2 2 open/syncd N/A
hd4 jfs2 384 768 2 open/stale /
hd2 jfs2 81 162 2 open/stale /usr
hd9var jfs2 6 12 2 open/stale /var
hd3 jfs2 4 8 2 open/stale /tmp
hd1 jfs2 1 2 2 open/stale /home
hd10opt jfs2 1 2 2 open/stale /opt
hd11admin jfs2 4 8 2 open/stale /admin
lg_dumplv sysdump 128 128 1 open/syncd N/A
livedump jfs2 8 16 2 open/stale /var/adm/ras/livedump

