はじめに
Power Virtual ServerのGRS(Global Replication Service)が、日本国内の東京-大阪間でもリリースされたので、試してみました。
GRSは、ストレージボリュームをストレージの機能で別のデータセンターに非同期レプリケーションする機能です。
参考にしたのはこちらの記事で、東京-大阪間でこの通りに実施してみました。
https://qiita.com/y_tama/items/08bf40d62719203e9264
1. 環境
ここでは、次の環境を使用します。その他のGRSを利用できる環境は、参考のマニュアルを参照ください。
- TOK04 (プライマリ・サイト)
- OSA21 (セカンダリ・サイト)
(参考)グローバル複製サービスの管理:
https://cloud.ibm.com/docs/power-iaas?topic=power-iaas-getting-started-GRS
2. プライマリ・サイトの設定作業
2-1. プライマリ・サイトでインスタンスを作成
今回は事前にGUIで、次のようなインスタンス(GRS_AIX_pri)を作成しました。
2-2. CLIで ibmcloud に login後、プライマリ・サイトに接続
IBM cloud にログイン
% ibmcloud login --apikey @/XXXXX/apikey.txt -u XXXXX@XXXXX
API エンドポイント: https://cloud.ibm.com
リージョン: jp-tok
認証中です...
OK
ターゲットのアカウント XXXXX
API エンドポイント: https://cloud.ibm.com
Region: jp-tok
ユーザー: XXXXX@XXXXX
アカウント: XXXXX
リソース・グループ: リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください
プライマリ・サイト(TOK04)のCRN情報を確認して、プライマリ・サイトに接続
% ibmcloud pi ws ls | grep TOK
ユーザーXXXXX@XXXXXのアカウントXXXXXのワークスペースをリストしています...
crn:v1:bluemix:public:power-iaas:tok04:a/7cd6294fd15e40ab8df9d0bc516b8d85:ea698bbb-ac5a-4bdf-99f6-374f3c928de2:: ea698bbb-ac5a-4bdf-99f6-374f3c928de2 (省略)
% ibmcloud pi ws target crn:v1:bluemix:public:power-iaas:tok04:a/7cd6294fd15e40ab8df9d0bc516b8d85:ea698bbb-ac5a-4bdf-99f6-374f3c928de2::
サービス crn:v1:bluemix:public:power-iaas:tok04:a/7cd6294fd15e40ab8df9d0bc516b8d85:ea698bbb-ac5a-4bdf-99f6-374f3c928de2:: をターゲットにしています...
2-3. Replica Enabled volumeの作成
接続しているワークスペースが正しいこと(作成したインスタンスが見えていること)を確認
% ibmcloud pi ins ls | grep GRS_AIX
ユーザー XXXXX@XXXXX のアカウント XXXXXでインスタンスをリストしています...
(インスタンスid) GRS_AIX_pri /pcloud/v1/cloud-instances/072cbe9f6be64b599a3fbbcc25158c71/pvm-instances/(インスタンスid)
Replica Enabled Volme(-r)を作成
% ibmcloud pi vol cr GRS_AIX_vol1 -r -s 10 -t tier1
ユーザー XXXXX@XXXXX のアカウント XXXXX でボリューム GRS_AIX_vol1 を作成しています...
ID 6a909e3b-3019-47cf-9439-2bddef293dfc
名前 GRS_AIX_vol1
プロファイル tier1
状況 creating
サイズ 10
作成日時 2024-07-08T05:41:34.000Z
更新済み 1970-01-01T00:00:00.000Z
共有可能 false
ブート可能 false
ストレージ・プール General-Flash-9
入出力スロットル率 -
複製対応 -
補助 -
PVMInstanceID -
WWN -
上記コマンドのoutputでは、複製対応が "-" になっていますが、作成されたvolumeのidを指定して今一度確認してみると、複製対応が"true"になっていました。
% ibmcloud pi vol get 6a909e3b-3019-47cf-9439-2bddef293dfc
ユーザーXXXXX@XXXXXのアカウントXXXXXのボリューム 6a909e3b-3019-47cf-9439-2bddef293dfcを取得しています...
ID 6a909e3b-3019-47cf-9439-2bddef293dfc
名前 GRS_AIX_vol1
プロファイル tier1
状況 available
サイズ 10
作成日時 2024-07-08T05:41:34.000Z
更新済み 2024-07-08T05:41:38.000Z
共有可能 false
ブート可能 false
ストレージ・プール General-Flash-9
入出力スロットル率 100 iops
複製対応 true
補助 false
PVMInstanceID -
WWN 600507681381028B7000000000000520
2-4. 作成したVolumeをインスタンスに認識させる
インスタンスに、volumeをattachします。
% ibmcloud pi instance vol attach GRS_AIX_pri -v 6a909e3b-3019-47cf-9439-2bddef293dfc
ユーザー XXXXX@XXXXX のアカウント XXXXX でボリュームをインスタンス GRS_AIX_pri に追加しています...
OK
ボリュームをインスタンス GRS_AIX_pri に追加する要求が受け入れらました。
2-5. プライマリ・サイトのインスタンスにログインし、Replica EnabledのVolumeの認識とVG/FSの作成
まずはrootvgしか見えていません。
# hostname
grs_aix_pri
# lspv
hdisk0 00fa00d66c59c9d7 rootvg active
cfgmgrコマンドでReplica EnabledのVolumeを認識させます。
# cfgmgr
# lspv
hdisk0 00fa00d66c59c9d7 rootvg active
hdisk1 none None
hdisk1でdatavgを作成、5GBのファイルシステムの作成をします。
Replication Testのために、ファイルを作成しておきます。
# mkvg -y'datavg' '-f' -k'y' hdisk1
0516-1254 mkvg: Changing the PVID in the ODM.
datavg
# crfs -v jfs2 -g datavg -m /data -a size=5G -A yes
File system created successfully.
5222036 kilobytes total disk space.
New File System size is 10485760
# mount /data
# df -g
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 0.09 0.04 53% 2807 21% /
/dev/hd2 2.34 0.22 91% 44715 47% /usr
/dev/hd9var 0.19 0.15 18% 908 3% /var
/dev/hd3 0.25 0.25 1% 34 1% /tmp
/dev/hd1 0.03 0.03 2% 7 1% /home
/dev/hd11admin 0.12 0.12 1% 5 1% /admin
/proc - - - - - /proc
/dev/hd10opt 0.84 0.07 92% 11479 38% /opt
/dev/livedump 0.25 0.25 1% 4 1% /var/adm/ras/livedump
/dev/repo00 8.09 0.06 100% 2221 14% /usr/sys/inst.images
/ahafs - - - 35 1% /aha
/dev/fslv00 5.00 4.98 1% 4 1% /data
# cd /data
# echo "Hello GRS!" > test1.txt
# cat test1.txt
Hello GRS!
#
2-6. プライマリ・サイトのVolumeを指定して、GRSのVGを作成
GRSのVGを作成します。紛らわしいですが、ここで作成するのはAIXのVGではなく、PowerVSのGRSサービスを使用するために必要なVGです。オンプレ的にいうと、Replicationのためにストレージ装置側で実施する設定になります。
Replica EnabledのVolume idを確認し、GRSのVGを作成します。
% ibmcloud pi vol ls | grep GRS_AIX_vol1
ユーザー XXXXX@XXXXXのアカウント XXXXX でボリュームをリストしています...
6a909e3b-3019-47cf-9439-2bddef293dfc GRS_AIX_vol1 /pcloud/v1/cloud-instances/ea698bbb-ac5a-4bdf-99f6-374f3c928de2/volumes/6a909e3b-3019-47cf-9439-2bddef293dfc
% ibmcloud pi vg cr -v GRS_AIX_vg -m 6a909e3b-3019-47cf-9439-2bddef293dfc
アカウント XXXXX (ユーザー XXXXX@XXXXX) で、ボリューム・グループ GRS_AIX_vg を作成しています ...
名前 ID 状況 状況の詳細
GRS_AIX_vg 9d02a036-e0ca-486d-821b-da09853f1d5b available -
2-7. 作成したGRS VGを確認
% ibmcloud pi vg ls| grep GRS_AIX_vg
アカウント XXXXX (ユーザー XXXXX@XXXXX) で、ボリューム・グループをリストしています ...
9d02a036-e0ca-486d-821b-da09853f1d5b GRS_AIX_vg rccg-9d02-f1d5b enabled available -
% ibmcloud pi vg get GRS_AIX_vg
アカウントXXXXX (ユーザーXXXXX@XXXXX)で、ボリューム・グループGRS_AIX_vgを取得しています...
ID 9d02a036-e0ca-486d-821b-da09853f1d5b
名前 GRS_AIX_vg
整合性グループ名 rccg-9d02-f1d5b
複製状況 enabled
状況 available
状況の説明 -
2-8. 補助ボリュームの情報を取得
次のステップで、セカンダリ・サイト側で実施するオンボード処理時に必要となる、以下の情報を取得します。
これら2つの情報を使って、セカンダリ・サイト側からオンボード処理を行うことになります。オンボード処理とは、セカンダリ・サイトのワークスペースに、プライマリ・サイトのボリュームを元に、セカンダリ・サイト用ボリュームを作成する作業、というイメージです。
- プライマリ・サイトのPowerVSワークスペースのCRN
- プライマリ・サイトのボリュームに付与された補助ボリュームの情報
プライマリ・サイトのPowerVSワークスペースのCRN情報の取得
% ibmcloud pi ws ls | grep TOK
ユーザーXXXXX@XXXXXのアカウントXXXXXのワークスペースをリストしています...
crn:v1:bluemix:public:power-iaas:tok04:a/7cd6294fd15e40ab8df9d0bc516b8d85:ea698bbb-ac5a-4bdf-99f6-374f3c928de2:: ea698bbb-ac5a-4bdf-99f6-374f3c928de2 (省略)
補助ボリュームの情報を取得
JSON形式でVOLの情報を取得すると、"auxVolumeName"に補助ボリュームの情報が記載されています。
% ibmcloud pi vol get GRS_AIX_vol1 --json
{
"auxVolumeName": "aux_volume-GRS_AIX_vol1-6a909e3b-301932871297",
"auxiliary": false,
"bootable": false,
"consistencyGroupName": "rccg-9d02-f1d5b",
"creationDate": "2024-07-08T05:41:34.000Z",
"diskType": "tier1",
"groupID": "9d02a036-e0ca-486d-821b-da09853f1d5b",
"ioThrottleRate": "100 iops",
"lastUpdateDate": "2024-07-08T05:52:49.000Z",
"masterVolumeName": "volume-GRS_AIX_vol1-6a909e3b-3019",
"mirroringState": "consistent_copying",
"name": "GRS_AIX_vol1",
"primaryRole": "master",
"pvmInstanceIDs": [
"79c74ab5-05f8-47fc-8bbf-5b662a9b0a80"
],
"replicationEnabled": true,
"replicationStatus": "enabled",
"replicationType": "global",
"shareable": false,
"size": 10,
"state": "in-use",
"volumeID": "6a909e3b-3019-47cf-9439-2bddef293dfc",
"volumePool": "General-Flash-9",
"volumeType": "Tier1-General-Flash-9-GRS",
"wwn": "600507681381028B7000000000000520"
}
3. セカンダリ・サイトの設定作業
3-1. セカンダリ・サイト(OSA21)に切り替え
接続先をセカンダリ・サイトであるOSA21に切り替えます。
% ibmcloud pi ws ls | grep OSA
ユーザーXXXXX@XXXXXのアカウントXXXXXのワークスペースをリストしています...
7cd6294fd15e40ab8df9d0bc516b8d85:915e2943-adaa-4bf4-aecd-48cc2c35368a:: 915e2943-adaa-4bf4-aecd-48cc2c35368a (省略)
% ibmcloud pi ws target crn:v1:bluemix:public:power-iaas:osa21:a/7cd6294fd15e40ab8df9d0bc516b8d85:915e2943-adaa-4bf4-aecd-48cc2c35368a::
サービス crn:v1:bluemix:public:power-iaas:osa21:a/7cd6294fd15e40ab8df9d0bc516b8d85:915e2943-adaa-4bf4-aecd-48cc2c35368a:: をターゲットにしています...
3-2. オンボーディング処理
オンボーディング処理を行います。
% ibmcloud pi vol on cr -a aux_volume-GRS_AIX_vol1-6a909e3b-301932871297 -s crn:v1:bluemix:public:power-iaas:tok04:a/7cd6294fd15e40ab8df9d0bc516b8d85:ea698bbb-ac5a-4bdf-99f6-374f3c928de2::
アカウントXXXXX(ユーザー XXXXX@XXXXX) で、ボリューム・オンボードを作成しています ...
ID 58e8b222-1454-4419-b63a-a51d30652bd4
説明 -
オンボーディング処理状況の確認すると、SUCCESSになっていました。
% ibmcloud pi vol on ls | grep GRS_AIX_vol1
アカウント XXXXX (ユーザー XXXXX@XXXXX) で、ボリューム・オンボード操作をリストしています ...
58e8b222-1454-4419-b63a-a51d30652bd4 SUCCESS onboard_aux_vols_QSI0K59K aux_volume-GRS_AIX_vol1-6a909e3b-301932871297
詳細を確認してみると、セカンダリ・サイトに補助ボリュームが作成され、複製対応が"true"、補助が"true"になっています。
% ibmcloud pi vol get aux_volume-GRS_AIX_vol1-6a909e3b-301932871297
ユーザーXXXXX@XXXXXのアカウントXXXXXのボリューム aux_volume-GRS_AIX_vol1-6a909e3b-301932871297を取得しています...
ID cf97fbb1-d96b-44fa-8101-09f3b98b4715
名前 aux_volume-GRS_AIX_vol1-6a909e3b-301932871297
プロファイル tier1
状況 available
サイズ 10
作成日時 2024-07-08T06:10:21.000Z
更新済み 2024-07-08T06:10:22.000Z
共有可能 false
ブート可能 false
ストレージ・プール General-Flash-7
入出力スロットル率 100 iops
複製対応 true
補助 true
PVMInstanceID -
WWN 600507681381028B000000000000042C
3-3. 複製状況を確認
VGを指定して、rcr(Remote Copy Relationship)の状況を確認します。
フリーズ時間が"2024-07-08T06:09:30.000Z"となっており、これが最新で同期された時刻を表すようです。
% ibmcloud pi vg rcr rccg-9d02-f1d5b
ユーザーXXXXX3@XXXXXのアカウントXXXXXのボリューム・グループrccg-9d02-f1d5bのリモート・コピー情報を取得しています...
名前 補助ボリューム名 整合性グループ名 マスター・ボリューム名 リモート・コピー ID 状態 コピー・タイプ サイクル・モード フリーズ時間 1 次役割 進行状況
rcrel1 aux_volume-GRS_AIX_vol1-6a909e3b-301932871297 rccg-9d02-f1d5b volume-GRS_AIX_vol1-6a909e3b-3019 68 consistent_copying global multi 2024-07-08T06:09:30.000Z master 99
しばらくしてもう一度確認すると、フリーズ時間が更新されていたので、再度同期のサイクルが回ったようです。
% ibmcloud pi vg rcr rccg-9d02-f1d5b
ユーザーXXXXX@XXXXXのアカウントXXXXXのボリューム・グループrccg-9d02-f1d5bのリモート・コピー情報を取得しています...
名前 補助ボリューム名 整合性グループ名 マスター・ボリューム名 リモート・コピー ID 状態 コピー・タイプ サイクル・モード フリーズ時間 1 次役割 進行状況
rcrel1 aux_volume-GRS_AIX_vol1-6a909e3b-301932871297 rccg-9d02-f1d5b volume-GRS_AIX_vol1-6a909e3b-3019 68 consistent_copying global multi 2024-07-08T06:17:51.000Z master 99
3-4. セカンダリ・サイトのインスタンス (GRS_AIX_sec)を作成
4. 被災時切り替えシミュレーション
4-1. プライマリ・サイトが被災したと仮定し、セカンダリ・サイトへ切り替え
セカンダリ・サイト(OSA21)のボリュームにアクセスできるようにするため、-a (--allow-read-accessと同じ) オプションを付けて、volume-group-stopコマンドを実行します。
% ibmcloud pi vg act -a -o stop rccg-9d02-f1d5b
アカウント XXXXX (ユーザー XXXXX@XXXXX) で、ボリューム・グループ rccg-9d02-f1d5b に対して停止アクションを実行しています ...
OK
ボリューム・グループrccg-9d02-f1d5bに対する停止要求が受け入れられました。
複製状況が、"disabled" になりました。
% ibmcloud pi vg get rccg-9d02-f1d5b
アカウントXXXXX (ユーザーXXXXX@XXXXX)で、ボリューム・グループrccg-9d02-f1d5bを取得しています...
ID 0b975d57-30d0-489b-b637-4ff2124ad08d
名前 rccg-9d02-f1d5b
整合性グループ名 rccg-9d02-f1d5b
複製状況 disabled
状況 available
状況の説明 -
4-2. セカンダリ・サイトでVolumeを認識させ、ファイルシステムの内容を確認
セカンダリ・サイトのインスタンスにVolumeをattachします。
% ibmcloud pi ins vol attach GRS_AIX_sec -v aux_volume-GRS_AIX_vol1-6a909e3b-301932871297
ユーザー XXXXX@XXXXX のアカウント XXXXX でボリュームをインスタンス GRS_AIX_sec に追加しています...
OK
ボリュームをインスタンス GRS_AIX_sec に追加する要求が受け入れらました。
セカンダリ・サイトのインスタンスにログインし、Volumeを認識させて中身を確認したところ、プライマリ・サイトで作成したファイルを確認できました。
# hostname
grs-aix-sec
# lspv
hdisk0 00fa00d66c59c9d7 rootvg active
# cfgmgr
# lspv
hdisk0 00fa00d66c59c9d7 rootvg active
hdisk1 00ca78c090e31da6 None
# importvg -y datavg hdisk1
datavg
# lsvg -l datavg
datavg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
fslv00 jfs2 640 640 1 closed/syncd /data
# mount /data
Replaying log for /dev/fslv00.
# cd /data
# ls
lost+found test1.txt
# cat test1.txt
Hello GRS!
5. プライマリ・サイトへの切り戻しシミュレーション
5-1. 被災環境のクリーンナップ
プライマリ・サイトは破壊されている想定なので、シミュレーションのためにここでは以下を実施しておきます。
# hostname
grs-aix-pri
# umount -f /data
forced unmount of /data
forced unmount of /data
# varyoffvg datavg
# exportvg datavg
# lspv
hdisk0 00fa00d66c59c9d7 rootvg active
hdisk1 00ca78c090e31da6 None
5-2. セカンダリ・サイトから、プライマリ・サイトへの転送
セカンダリ・サイトから、プライマリ・サイトへ、--source auxiliaryオプションを付けて、転送を開始します。
% ibmcloud pi vg act rccg-9d02-f1d5b -o start --source auxiliary
アカウント XXXXX (ユーザー XXXXX@XXXXX) で、ボリューム・グループ rccg-9d02-f1d5b に対して開始アクションを実行しています ...
OK
ボリューム・グループrccg-9d02-f1d5bに対する開始要求が受け入れられました。
セカンダリ・サイトのインスタンスで、テスト用に新規ファイルを作成しておきます。
# hostname
grs-aix-sec
# echo "Welcome back GRS!" > test2.txt
# ls
lost+found test1.txt test2.txt
# cat test2.txt
Welcome back GRS!
5-3. Replication状態の確認
Replication状態を確認します。
逆転送になっているので1次役割が、"aux"と表記されています。
% ibmcloud pi vg rcr rccg-9d02-f1d5b
ユーザーXXXXX@XXXXXのアカウントXXXXXのボリューム・グループrccg-9d02-f1d5bのリモート・コピー情報を取得しています...
名前 補助ボリューム名 整合性グループ名 マスター・ボリューム名 リモート・コピー ID 状態 コピー・タイプ サイクル・モード フリーズ時間 1 次役割 進行状況
rcrel1 aux_volume-GRS_AIX_vol1-6a909e3b-301932871297 rccg-9d02-f1d5b volume-GRS_AIX_vol1-6a909e3b-3019 68 consistent_copying global multi 2024-07-08T07:44:03.000Z aux 99
しばらくしてもう一度確認すると、フリーズ時間が更新されたので、セカンダリ・サイトの更新はプライマリ・サイトへも同期されたと思われます。
% ibmcloud pi vg rcr rccg-9d02-f1d5b
ユーザーXXXXX@XXXXXのアカウントXXXXXのボリューム・グループrccg-9d02-f1d5bのリモート・コピー情報を取得しています...
名前 補助ボリューム名 整合性グループ名 マスター・ボリューム名 リモート・コピー ID 状態 コピー・タイプ サイクル・モード フリーズ時間 1 次役割 進行状況
rcrel1 aux_volume-GRS_AIX_vol1-6a909e3b-301932871297 rccg-9d02-f1d5b volume-GRS_AIX_vol1-6a909e3b-3019 68 consistent_copying global multi 2024-07-08T07:52:24.000Z aux 100
5-4. GRS VGの停止
切り戻しのため、逆方向の転送を停止(GRSのVGを停止)します。
% ibmcloud pi vg act rccg-9d02-f1d5b -a -o stop
アカウント XXXXX (ユーザー XXXXX@XXXXX) で、ボリューム・グループ rccg-9d02-f1d5b に対して停止アクションを実行しています ...
OK
ボリューム・グループrccg-9d02-f1d5bに対する停止要求が受け入れられました。
セカンダリ・サイトの/dataはアンマウントしておきます。
# hostname
grs-aix-sec
# umount -f /data
forced unmount of /data
forced unmount of /data
5-5. セカンダリ・サイトで作成したファイルの確認
テスト用にセカンダリ・サイト側で作成したファイルが、プライマリ・サイトで見れることを確認してみました。
# hostname
grs-aix-pri
# lspv
hdisk0 00fa00d66c59c9d7 rootvg active
hdisk1 00ca78c090e31da6 None
# importvg -y datavg hdisk1
datavg
# mount /data
Replaying log for /dev/fslv00.
# cd /data
# ls
lost+found test1.txt test2.txt
# cat test2.txt
Welcome back GRS!
5-6. 平常時転送への戻し
最後に、--source auxiliaryオプションを付けずに、volume-group-startを実行します。これで、平常時のプライマリ・サイトからセカンダリ・サイトへの転送となり、復旧が完了です。
% ibmcloud pi vg act rccg-9d02-f1d5b -o start
アカウント XXXXX (ユーザー XXXXX@XXXXX) で、ボリューム・グループ rccg-9d02-f1d5b に対して開始アクションを実行しています ...
OK
ボリューム・グループrccg-9d02-f1d5bに対する開始要求が受け入れられました。