ネットミラーグループに接続されているディスクを活性交換(システムを停止せずに交換)する場合、以下の手順で交換します。
ディスクを交換可能な状態にします。
共用クラスの場合
ディスク交換を行うノードで、「物理ディスク交換」 (または sdxswap -O コマンド)を実行します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。
ローカルクラスの場合 (sdxconfig Restore コマンドを使用してオブジェクト構成を復元した場合)
ローカルクラスのすべてのオブジェクト構成 (ボリューム、グループ、ディスク) を削除することにより、クラスが削除されます。
ディスクの削除は、sdxdisk -R コマンドを使用し、交換対象のディスクを先に削除します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対してオブジェクト構成を削除します。
注意
ローカルクラスに、ネットミラーグループが存在する場合、「物理ディスク交換」 (または sdxswap -O コマンド) は実行できません。
両ノードで、交換するディスクの iSCSI デバイスを停止します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。
# echo offline > /sys/block/iSCSIデバイス名/device/state |
実行例
# echo offline > /sys/block/sdd/device/state |
ディスク交換を行うノードで、ターゲット情報をバックアップします。
# cp /etc/target/saveconfig.json バックアップ先ファイル |
実行例
# cp /etc/target/saveconfig.json /var/tmp/targetfile.json |
ディスク交換を行うノードで、交換するデバイスに対応するストレージと LUN を確認します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションについて確認します。
# targetcli ls |
出力例
# targetcli ls
o- / ................................................................................ [...]
o- backstores ..................................................................... [...]
| o- block ......................................................... [Storage Objects: 2]
| | o- storage1 .. [/dev/disk/by-id/scsi-3500000e114784363 (8.0GiB) write-thru activated] (*1)
| | o- storage2 . [/dev/disk/by-id/scsi-3500000e1109cc830 (16.0GiB) write-thru activated]
| o- fileio ........................................................ [Storage Objects: 0]
| o- pscsi ......................................................... [Storage Objects: 0]
| o- ramdisk ....................................................... [Storage Objects: 0]
o- iscsi ................................................................... [Targets: 1]
| o- iqn.2003-01.org.linux-iscsi.node1.x8664:sn.6e665c7c1be0 .................. [TPGs: 1]
| o- tpg1 ...................................................... [no-gen-acls, no-auth]
| o- acls ................................................................. [ACLs: 2]
| | o- iqn.1994-05.com.redhat:dee92ff9979d ......................... [Mapped LUNs: 2]
| | | o- mapped_lun0 ..................................... [lun0 block/storage1 (rw)] (*2)
| | | o- mapped_lun1 ..................................... [lun1 block/storage2 (rw)]
| | o- iqn.1994-05.com.redhat:fa7eb9cf483c ......................... [Mapped LUNs: 2]
| | o- mapped_lun0 ..................................... [lun0 block/storage1 (rw)] (*2)
| | o- mapped_lun1 ..................................... [lun1 block/storage2 (rw)]
| o- luns ................................................................. [LUNs: 2]
| | o- lun0 ............... [block/storage1 (/dev/disk/by-id/scsi-3500000e114784363)] (*3)
| | o- lun1 ............... [block/storage2 (/dev/disk/by-id/scsi-3500000e1109cc830)]
| o- portals ........................................................... [Portals: 1]
| o- 192.168.125.123:3260 .................................................... [OK]
o- loopback ................................................................ [Targets: 0] |
(*1) /dev/disk/by-id/scsi-3500000e114784363 に対応するストレージ名が storage1 であることが分かります。
(*2) 接続を許可したイニシエータにマッピングされている LUN です。この行には lun0 に関する情報が出力されています。
(*3) lun0 に対応するストレージ名が storage1 であり、デバイスの by-id ファイルが /dev/disk/by-id/scsi-3500000e114784363 であることが分かります。
この例では、/dev/disk/by-id/scsi-3500000e114784363 が指すデバイスを交換する場合、ストレージ名は storage1、LUN は lun0 です。
ディスク交換を行うノードで、交換するすべての LUN を削除します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応するストレージに対して実行します。
# targetcli /backstores/block/ delete ストレージ名 |
ポイント
ストレージ名には手順4. で確認したストレージ名を指定します。
実行例
# targetcli /backstores/block/ delete storage1 Deleted storage object storage1. |
ディスク交換を行うノードで、交換するディスクに対応するストレージと LUN が削除されていることを確認します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応するストレージと LUN に対して確認します。
# targetcli ls |
ポイント
削除したストレージおよび LUN の情報が出力されていないことを確認します。
出力例
# targetcli ls
o- / ................................................................................ [...]
o- backstores ..................................................................... [...]
| o- block ......................................................... [Storage Objects: 1]
| | o- storage2 . [/dev/disk/by-id/scsi-3500000e1109cc830 (16.0GiB) write-thru activated]
| o- fileio ........................................................ [Storage Objects: 0]
| o- pscsi ......................................................... [Storage Objects: 0]
| o- ramdisk ....................................................... [Storage Objects: 0]
o- iscsi ................................................................... [Targets: 1]
| o- iqn.2003-01.org.linux-iscsi.node1.x8664:sn.6e665c7c1be0 .................. [TPGs: 1]
| o- tpg1 ...................................................... [no-gen-acls, no-auth]
| o- acls ................................................................. [ACLs: 2]
| | o- iqn.1994-05.com.redhat:dee92ff9979d ......................... [Mapped LUNs: 1]
| | | o- mapped_lun1 ..................................... [lun1 block/storage2 (rw)]
| | o- iqn.1994-05.com.redhat:fa7eb9cf483c ......................... [Mapped LUNs: 1]
| | o- mapped_lun1 ..................................... [lun1 block/storage2 (rw)]
| o- luns ................................................................. [LUNs: 1]
| | o- lun1 ............... [block/storage2 (/dev/disk/by-id/scsi-3500000e1109cc830)]
| o- portals ........................................................... [Portals: 1]
| o- 192.168.125.123:3260 .................................................... [OK]
o- loopback ................................................................ [Targets: 0] |
ディスクを交換します。
交換方法については、サーバやディスク装置のマニュアルを参照してください。
物理ディスク単位ではなくパーティション単位でサーバ間ミラーリングを行っていた場合、ディスク交換を行ったノードで、交換したディスクにパーティションを作成します。
パーティションは、交換前と同じ順序および同じサイズで作成してください。
Azure 環境、ニフクラ環境、または by-id ファイルが存在しない環境の場合は、交換したディスクに gpt のディスクラベルを設定し、パーティションを作成します。
パーティションは、交換前と同じサイズで作成してください。
手順3. でバックアップしたターゲット情報を編集し、交換前のディスクの by-id ファイルのパスを、交換後のディスクの by-id ファイルのパスに修正します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する by-id ファイルのパスに対して実行します。
Azure 環境、ニフクラ環境、または by-id ファイルが存在しない環境の場合は、交換前の by-partuuid ファイルのパスを、交換後のパーティションに対する by-partuuid に修正します。
# vim バックアップ先ファイル { "fabric_modules": [], "storage_objects": [ { ~ "dev": "交換前のディスク", (*1) "name": "ストレージ名", "plugin": "block", "readonly": false, "write_back": false, "wwn": "fae93a41-0d59-4843-9137-9c39854e5388" } ], |
(*1) 交換後のディスクの by-id ファイルまたは by-partuuid ファイルのパスに変更します。
ポイント
バックアップ先ファイルには、手順3. で作成したバックアップ先ファイルを指定します。
[変更前の例]
# vim /var/tmp/targetfile.json { "fabric_modules": [], "storage_objects": [ { ~ "dev": "/dev/disk/by-id/scsi-3500000e114784363", "name": "storage1", "plugin": "block", "readonly": false, "write_back": false, "wwn": "279b8505-418f-4449-8987-f3acaad34618" } ], |
[変更後の例]
# vim /var/tmp/targetfile.json { "fabric_modules": [], "storage_objects": [ { ~ "dev": "/dev/disk/by-id/scsi-3500000e111c56611", "name": "storage1", "plugin": "block", "readonly": false, "write_back": false, "wwn": "279b8505-418f-4449-8987-f3acaad34618" } ], |
ディスク交換を行うノードで、手順9. で編集したターゲット情報をリストアします。
# targetctl restore バックアップ先ファイル |
ポイント
バックアップ先ファイルには、手順9. で作成したバックアップ先ファイルを指定します。
実行例
# targetctl restore /var/tmp/targetfile.json |
ディスク交換を行うノードで、ストレージと LUN が追加されていることを確認します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応するストレージと LUN に対して確認します。
# targetcli ls |
ポイント
(*1) 手順5. で削除したストレージに対応するデバイスが交換後のデバイスに変わっていることを確認します。
(*2) 接続を許可したイニシエータに手順5. で削除した LUN がマッピングされていることを確認します。
(*3) 手順5. で削除した LUN およびストレージが追加されており、デバイスのパスが交換後のデバイスを指していることを確認します。
出力例
# targetcli ls
o- / ................................................................................ [...]
o- backstores ..................................................................... [...]
| o- block ......................................................... [Storage Objects: 2]
| | o- storage1 .. [/dev/disk/by-id/scsi-3500000e111c56611 (8.0GiB) write-thru activated] (*1)
| | o- storage2 . [/dev/disk/by-id/scsi-3500000e1109cc830 (16.0GiB) write-thru activated]
| o- fileio ........................................................ [Storage Objects: 0]
| o- pscsi ......................................................... [Storage Objects: 0]
| o- ramdisk ....................................................... [Storage Objects: 0]
o- iscsi ................................................................... [Targets: 1]
| o- iqn.2003-01.org.linux-iscsi.node1.x8664:sn.6e665c7c1be0 .................. [TPGs: 1]
| o- tpg1 ...................................................... [no-gen-acls, no-auth]
| o- acls ................................................................. [ACLs: 2]
| | o- iqn.1994-05.com.redhat:dee92ff9979d ......................... [Mapped LUNs: 2]
| | | o- mapped_lun0 ..................................... [lun0 block/storage1 (rw)] (*2)
| | | o- mapped_lun1 ..................................... [lun1 block/storage2 (rw)]
| | o- iqn.1994-05.com.redhat:fa7eb9cf483c ......................... [Mapped LUNs: 2]
| | o- mapped_lun0 ..................................... [lun0 block/storage1 (rw)] (*2)
| | o- mapped_lun1 ..................................... [lun1 block/storage2 (rw)]
| o- luns ................................................................. [LUNs: 2]
| | o- lun0 ............... [block/storage1 (/dev/disk/by-id/scsi-3500000e111c56611)] (*3)
| | o- lun1 ............... [block/storage2 (/dev/disk/by-id/scsi-3500000e1109cc830)]
| o- portals ........................................................... [Portals: 1]
| o- 192.168.125.123:3260 .................................................... [OK]
o- loopback ................................................................ [Targets: 0] |
ディスク交換を行うノードで、手順10. でリストアしたターゲット情報を保存します。
# targetctl save |
両ノードで、iSCSI セッションをリスキャンします。
# iscsiadm -m session --rescan |
両ノードで、iSCSI デバイスを有効化します。
パーティション単位でサーバ間ミラーリングを行う場合、すべてのパーティションに対応する iSCSI デバイスを有効化します。
# echo running > /sys/block/iSCSIデバイス名/device/state |
実行例
# echo running > /sys/block/sdd/device/state |
このとき、システムログに以下の OS のメッセージが出力されることがありますが、対処は不要です。
kernel: sd X:X:X:X: Warning! Received an indication that the LUN assignments on this target have changed. The Linux SCSI layer does not automatically remap LUN assignments.
GDS の構成を復元します。
共用クラスの場合
ディスク交換を行ったノードで、「物理ディスク復旧」(または sdxswap -I コマンド)を実行します。手順1. で「物理ディスク交換」(または sdxswap -O コマンド)を実行したすべての iSCSI デバイスに対して実行します。
ローカルクラスの場合
削除したローカルクラスのオブジェクト構成(ボリューム、グループ、ディスク、クラス)を再作成します。
クラスの構成情報ファイルがある場合
sdxconfig Backup コマンドで取得したクラスの構成情報がある場合、sdxconfig Restore コマンドを使用してオブジェクト構成を再作成します。
クラスの構成情報ファイルがない場合
共用クラスを指定してオブジェクト構成を再作成します。
ネットミラーグループに接続されているディスクを非活性交換(システムを停止して交換)する場合、以下の手順で交換します。
ディスクを交換可能な状態にします。
共用クラスの場合
ディスク交換を行うノードで、「物理ディスク交換」 (または sdxswap -O コマンド)を実行します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。
ローカルクラスの場合 (sdxconfig Restore コマンドを使用してオブジェクト構成を復元した場合)
ローカルクラスのすべてのオブジェクト構成 (ボリューム、グループ、ディスク) を削除することにより、クラスが削除されます。
ディスクの削除は、sdxdisk -R コマンドを使用し、交換対象のディスクを先に削除します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対してオブジェクト構成を削除します。
注意
ローカルクラスに、ネットミラーグループが存在する場合、「物理ディスク交換」 (または sdxswap -O コマンド) は実行できません。
業務を継続したまま、運用ノードのディスクを交換する場合、クラスタアプリケーションの切替えを行い、交換するディスクが接続されていない方のノードを運用ノードにします。
シングルユーザモードで再起動されるように、ディスク交換を行うノードでシステム起動時の設定を変更します。
# systemctl set-default rescue.target |
クラウド環境(FJcloud-ベアメタル環境を除く)の場合は、コンソールの使用ができないため、シングルユーザモードにはしないで、手順3-1. ~ 手順3-3. を実施して、PRIMECLUSTER のサービスの自動起動を抑止してください。
クラウド環境(FJcloud-ベアメタル環境を除く)以外の場合は、手順4. から実施してください。
RMS を停止
RMS が起動している場合は、いずれかのノードで、以下のコマンドを実行し、RMS を停止してください。
# hvshut -a
注意
GDS のボリュームの等価性コピー処理中にすべてのノードのRMSを停止した場合、修正適用後にすべてのノードを再起動すると、ボリュームの領域全体の等価性コピーが実行されます。
ボリュームの領域全体の等価性コピーを行いたくない場合は、等価性コピー処理が完了してから、RMSを停止してください。
GDS のボリュームのスライス状態の確認には以下のコマンドを使用します。
いずれかのノードで以下のコマンドを実行し、コマンド出力の STATUS フィールドの値を確認します。
等価性コピー処理中はコピー先のスライスが COPY 状態となり、コピーが完了すると ACTIVE または STOP 状態になります。
# sdxinfo -S
PRIMECLUSTER のサービスの自動起動抑止
ディスク交換を行うノードで以下のコマンドを実行し、PRIMECLUSTERのサービスの自動起動を抑止します。
# /opt/FJSVpclinst/bin/pclservice off
システム再起動
ディスク交換を行うノードでシステムを再起動してください。
# /sbin/shutdown -r now
ディスク交換を行うノードを停止します。
ディスクを交換します。
交換方法については、サーバやディスク装置のマニュアルを参照してください。
ディスク交換を行ったノードを起動します。
物理ディスク単位ではなくパーティション単位でサーバ間ミラーリングを行っていた場合、ディスク交換を行ったノードで、交換したディスクにパーティションを作成します。
パーティションは、交換前と同じ順序および同じサイズで作成してください。
Azure 環境、ニフクラ環境、または by-id ファイルが存在しない環境の場合は、交換したディスクに gpt のディスクラベルを設定し、パーティションを作成します。
パーティションは、交換前と同じサイズで作成してください。
ディスク交換を行ったノードで、iSCSI ターゲットの設定情報をバックアップします。
# cp /etc/target/saveconfig.json バックアップ先ファイル |
実行例
# cp /etc/target/saveconfig.json /var/tmp/targetfile.json |
iSCSI ターゲットの設定情報に記載されている交換前のディスクの by-id ファイルのパスを、交換後のディスクの by-id ファイルのパスに修正します。
交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する by-id ファイルのパスに対して実行します。
Azure 環境、ニフクラ環境、または by-id ファイルが存在しない環境の場合は、交換前の by-partuuid ファイルのパスを、交換後のパーティションに対する by-partuuid に修正します。
# vim /etc/target/saveconfig.json { "fabric_modules": [], "storage_objects": [ { ~ "dev": "交換前のディスク", (*1) "name": "ストレージ名", "plugin": "block", "readonly": false, "write_back": false, "wwn": "fae93a41-0d59-4843-9137-9c39854e5388" } ], |
(*1) 交換後のディスクの by-id ファイルまたは by-partuuid ファイルのパスに変更します。
[変更前の例]
# vim /etc/target/saveconfig.json { "fabric_modules": [], "storage_objects": [ { ~ "dev": "/dev/disk/by-id/scsi-3500000e111e68e00", "name": "store1", "plugin": "block", "readonly": false, "write_back": false, "wwn": "4a98bfb0-7d7e-4bc8-962c-0b3cf192b214" } ], |
[変更後の例]
# vim /etc/target/saveconfig.json { "fabric_modules": [], "storage_objects": [ { ~ "dev": "/dev/disk/by-id/scsi-3500000e111c56610", ★変更行 "name": "store1", "plugin": "block", "readonly": false, "write_back": false, "wwn": "4a98bfb0-7d7e-4bc8-962c-0b3cf192b214" } ], |
マルチユーザモードで再起動されるように、手順3. で変更したシステム起動時の設定を元に戻します。
例) multi-user.target に戻す場合
# systemctl set-default multi-user.target |
ディスク交換を行ったノードを再起動します。
クラウド環境(FJcloud-ベアメタル環境を除く)の場合は、以下の手順を実施し、PRIMECLUSTER のサービスの自動起動抑止を解除してください。
PRIMECLUSTER のサービスの自動起動設定
ディスク交換を行ったノードで以下のコマンドを実行し、手順3. の 2. で抑止した PRIMECLUSTER のサービスの設定を元に戻してください。
# /opt/FJSVpclinst/bin/pclservice on
システム再起動
ディスク交換を行ったノードでシステムを再起動してください。
# /sbin/shutdown -r now
ディスク交換を行ったノードで、iSCSI ターゲットの設定が正しく行われていることを確認します。
# targetcli /backstores/block/ ls ; targetcli /iscsi/ ls |
ポイント
(*1) 変更したパスが反映されていることを確認します。
出力例
o- block ............................................................ [Storage Objects: 1] o- store1 ...... [/dev/disk/by-id/scsi-3500000e111c56610 (16.0GiB) write-thru activated] (*1) o- iscsi .................................................................... [Targets: 1] o- iqn.2003-01.org.linux-iscsi.node1.x8664:sn.6e665c7c1be0 ................... [TPGs: 1] o- tpg1 ....................................................... [no-gen-acls, no-auth] o- acls .................................................................. [ACLs: 2] | o- iqn.1994-05.com.redhat:dee92ff9979d .......................... [Mapped LUNs: 1] | | o- mapped_lun0 ........................................ [lun0 block/store1 (rw)] | o- iqn.1994-05.com.redhat:fa7eb9cf483c .......................... [Mapped LUNs: 1] | o- mapped_lun0 ........................................ [lun0 block/store1 (rw)] o- luns .................................................................. [LUNs: 1] | o- lun0 .................. [block/store1 (/dev/disk/by-id/scsi-3500000e111c56610)] (*1) o- portals ............................................................ [Portals: 2] o- 192.168.56.20:3260 ....................................................... [OK] |
ディスク交換を行ったノードで、iSCSI セッションの状態を確認します。
iSCSI の接続状態とセッション状態が "LOGGED IN" であることを確認します。
実行例
# iscsiadm -m session -P 1
~略~
Target: iqn.2003-01.org.linux-iscsi.node1.x8664:sn.6e665c7c1be0
Current Portal: 192.168.56.20:3260,1
Persistent Portal: 192.168.56.20:3260,1
**********
Interface:
**********
~略~
iSCSI Connection State: LOGGED IN
iSCSI Session State: LOGGED_IN
~略~ |
両ノードで、iSCSI セッションをリスキャンします。
# iscsiadm -m session --rescan |
GDS の構成を復元します。
共用クラスの場合
ディスク交換を行ったノードで、「物理ディスク復旧」(または sdxswap -I コマンド)を実行します。手順1. で「物理ディスク交換」(または sdxswap -O コマンド)を実行したすべての iSCSI デバイスに対して実行します。
ローカルクラスの場合
削除したローカルクラスのオブジェクト構成(ボリューム、グループ、ディスク、クラス)を再作成します。
クラスの構成情報ファイルがある場合
sdxconfig Backup コマンドで取得したクラスの構成情報がある場合、sdxconfig Restore コマンドを使用してオブジェクト構成を再作成します。
クラスの構成情報ファイルがない場合
共用クラスを指定してオブジェクト構成を再作成します。
手順8. で作成したバックアップファイルを削除します。
# rm バックアップ先ファイル |
実行例
# rm /var/tmp/targetfile.json |