ページの先頭行へ戻る
PRIMECLUSTER Global Disk Services  説明書 4.5
FUJITSU Software

7.3.3 ネットミラーグループのディスク交換

7.3.3.1 活性交換(RHEL6)

RHEL6 環境においてネットミラーグループに接続されているディスクを活性交換(システムを停止せずに交換)する場合、以下の手順で交換します。

  1. ディスクを交換可能な状態にします。

    • 共用クラスの場合

      ディスク交換を行うノードで、「物理ディスク交換」 (または sdxswap -O コマンド)を実行します。

      交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。

    • ローカルクラスの場合 (sdxconfig Restore コマンドを使用してオブジェクト構成を復元した場合)

      ローカルクラスのすべてのオブジェクト構成 (ボリューム、グループ、ディスク) を削除することにより、クラスが削除されます。

      ディスクの削除は、sdxdisk -R コマンドを使用し、交換対象のディスクを先に削除します。

      交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対してオブジェクト構成を削除します。

      注意

      ローカルクラスに、ネットミラーグループが存在する場合、「物理ディスク交換」 (または sdxswap -O コマンド) は実行できません。

  2. 両ノードで、交換するディスクの iSCSI デバイスを停止します。

    交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。

    # echo offline > /sys/block/iSCSIデバイス名/device/state

    (例) iSCSI デバイス名が sdd の場合

    # echo offline > /sys/block/sdd/device/state
  3. ディスク交換を行うノードで、ターゲット ID を確認します。

    以下の例では、ターゲット名 target-0101 のターゲット ID は 1 です。

    # tgt-admin --show
    Target 1: target-0101
    ...
  4. ディスク交換を行うノードで、交換する LUN を削除します。

    交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する LUN を削除します。

    # tgtadm --lld iscsi --op delete --mode logicalunit --tid targetID --lun LUN

    ポイント

    • targetID には、ターゲット ID を指定します。

    • LUN には、LUN 番号を指定します。

    (例) ターゲット ID が 1 で、LUN 番号が 1 の場合

    # tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 1
  5. ディスク交換を行うノードで、 LUN が削除されたことを確認します。

    ディスク交換を行うノードで以下のコマンドを実行し、削除した番号の LUN 情報が出力されないことを確認します。

    # tgt-admin --show

    (例)

    # tgt-admin --show
    ...
        LUN information:
            LUN: 0
                Type: controller
                SCSI ID: IET 00010000
                SCSI SN: beaf10
                Size: 0 MB, Block size: 1
                Online: Yes
                Removable media: No
                Prevent removal: No
                Readonly: No
                Backing store type: null
                Backing store path: None
                Backing store flags:
    ...
  6. ディスクを交換します。

    交換方法については、サーバやディスク装置のマニュアルを参照してください。

  7. 物理ディスク単位ではなくパーティション単位でサーバ間ミラーリングを行っていた場合、ディスク交換を行ったノードで、交換したディスクにパーティションを作成します。

    パーティションは、交換前と同じ順序および同じサイズで作成してください。

  8. ディスク交換を行ったノードで、/etc/tgt/targets.conf ファイルを修正します。

    交換前のディスクの by-id ファイルのパスを、交換後のディスクの by-id ファイルのパスに修正します (KVM ゲストの virtio ブロックデバイスのパス /dev/vdX を記載している場合は、virtio ブロックデバイスのパス /dev/vdX に修正します)。

    [変更前の例]

    <target target-0101>
      initiator-address 192.168.56.20
      initiator-address 192.168.56.10
      write-cache off
      <backing-store /dev/disk/by-id/scsi-3500000e114784363>
        lun 1
        scsi_id SDX01
      </backing-store>
    </target>

    [変更後の例]

    <target target-0101>
      initiator-address 192.168.56.20
      initiator-address 192.168.56.10
      write-cache off
      <backing-store /dev/disk/by-id/scsi-3500000e111c56611>
        lun 1
        scsi_id SDX01
      </backing-store>
    </target>
  9. ディスク交換を行ったノードで、LUN を作成します。

    パーティション単位でサーバ間ミラーリングを行っていた場合、すべてのパーティションに対応する LUN を作成します。

    # tgtadm --lld iscsi --op new --mode logicalunit --tid targetID --lun LUN --backing-store device

    ポイント

    • targetID には、ターゲット ID を指定します。

    • LUN には、LUN 番号を指定します。

    • device には、交換後の物理ディスクのデバイスファイルのパスを指定します。

    (例) ターゲット ID が 1 、LUN 番号が 1、交換後のデバイスファイルが /dev/sde の場合

    # tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-store /dev/sde
  10. ディスク交換を行ったノードで、新しい iSCSI デバイスの SCSI ID を設定します。

    パーティション単位でサーバ間ミラーリングを行っていた場合、すべてのパーティションに対応する SCSI ID を設定します。

    # tgtadm --mode logicalunit --op update --tid targetID --lun LUN --params scsi_id=SCSI-ID

    ポイント

    • targetID には、ターゲット ID を指定します。

    • LUN には、LUN 番号を指定します。

    • SCSI-ID には、交換後の iSCSI デバイスに設定する SCSI ID を指定します。

    (例) ターゲット ID が 1 、LUN 番号が 1、SCSI-ID が SDX01 の場合

    # tgtadm --mode logicalunit --op update --tid 1 --lun 1 --params scsi_id=SDX01
  11. ディスク交換を行ったノードで、LUN が作成されたことを確認します。

    # tgt-admin --show

    (例)

    # tgt-admin --show
    Target 1: target-0101
        ・・・
        LUN information:
            ・・・
            LUN: 1        (*1)
                Type: disk
                SCSI ID: SDX01        (*2)
                SCSI SN: beaf11
                Size: 10000 MB, Block size: 512
                Online: Yes
                Removable media: No
                Prevent removal: No
                Readonly: No
                Backing store type: rdwr
                Backing store path: /dev/sde        (*3)
                Backing store flags:
                ・・・

    (*1) /etc/tgt/targets.conf ファイルの lun に指定した番号

    (*2) /etc/tgt/targets.conf ファイルの scsi_id に指定した値

    (*3) 交換後の物理ディスクのデバイスファイルのパス

  12. 両ノードで、iSCSI セッションをリスキャンします。

    # iscsiadm -m session --rescan
  13. 両ノードで、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.
  14. GDS の構成を復元します。

    • 共用クラスの場合

      ディスク交換を行ったノードで、「物理ディスク復旧」(または sdxswap -I コマンド)を実行します。手順1. で「物理ディスク交換」(またはsdxswap -O コマンド)を実行したすべての iSCSI デバイスに対して実行します。

    • ローカルクラスの場合

      削除したローカルクラスのオブジェクト構成(ボリューム、グループ、ディスク、クラス)を再作成します。

      • クラスの構成情報ファイルがある場合

        sdxconfig Backup コマンドで取得したクラスの構成情報がある場合、sdxconfig Restore コマンドを使用してオブジェクト構成を再作成します。

      • クラスの構成情報ファイルがない場合

        共用クラスを指定してオブジェクト構成を再作成します。

7.3.3.2 非活性交換(RHEL6)

RHEL6 環境においてネットミラーグループに接続されているディスクを非活性交換(システムを停止して交換)する場合、以下の手順で交換します。

  1. ディスクを交換可能な状態にします。

    • 共用クラスの場合

      ディスク交換を行うノードで、「物理ディスク交換」 (または sdxswap -O コマンド)を実行します。

      交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。

    • ローカルクラスの場合 (sdxconfig Restore コマンドを使用してオブジェクト構成を復元した場合)

      ローカルクラスのすべてのオブジェクト構成 (ボリューム、グループ、ディスク) を削除することにより、クラスが削除されます。

      ディスクの削除は、sdxdisk -R コマンドを使用し、交換対象のディスクを先に削除します。

      交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対してオブジェクト構成を削除します。

      注意

      ローカルクラスに、ネットミラーグループが存在する場合、「物理ディスク交換」 (または sdxswap -O コマンド) は実行できません。

  2. 業務を継続したまま、運用ノードのディスクを交換する場合、クラスタアプリケーションの切替えを行い、交換するディスクが接続されていない方のノードを運用ノードにします。

  3. シングルユーザモードで再起動されるように、ディスク交換を行うノードの /etc/inittab ファイルを修正します。

    # vim /etc/inittab

    [変更前]

    id:現行のランレベル:initdefault:

    [変更後]

    id:1:initdefault:
  4. ディスク交換を行うノードを停止します。

  5. ディスクを交換します。

    交換方法については、サーバやディスク装置のマニュアルを参照してください。

  6. ディスク交換を行ったノードを起動します。

  7. 物理ディスク単位ではなくパーティション単位でサーバ間ミラーリングを行っていた場合、ディスク交換を行ったノードで、交換したディスクにパーティションを作成します。

    パーティションは、交換前と同じ順序および同じサイズで作成してください。

  8. ディスク交換を行ったノードで、/etc/tgt/targets.conf ファイルを修正します。

    交換前のディスクの by-id ファイルのパスを、交換後のディスクの by-id ファイルのパスに修正します (KVM ゲストの virtio ブロックデバイスのパス /dev/vdXを記載している場合は、virtio ブロックデバイスのパス /dev/vdX に修正します)。

    /etc/tgt/targets.conf ファイルの記述内容については、「4.9.3 iSCSI ターゲットの作成」を参照してください。

    記述例

    <target target-0101>
      initiator-address 192.168.56.20
      initiator-address 192.168.56.10
      write-cache off
      <backing-store /dev/disk/by-id/scsi-3500000e111c56611>
        lun 1
        scsi_id SDX01
      </backing-store>
    </target>
  9. マルチユーザモードで再起動されるように、手順3で修正した/etc/inittab ファイルの内容を元に戻します。

  10. ディスク交換を行ったノードを再起動します。

  11. ディスク交換を行ったノードで、ターゲット情報を確認します。

    # tgt-admin --show

    実行例

    # tgt-admin --show
    Target 1: target-0101
        ・・・
        LUN information:
            ・・・
            LUN: 1                   (*1)
                Type: disk
                SCSI ID: SDX01       (*2)
                SCSI SN: beaf11
                Size: 10000 MB, Block size: 512
                Online: Yes
                Removable media: No
                Prevent removal: No
                Readonly: No
                Backing store type: rdwr
                Backing store path: /dev/disk/by-id/scsi-3500000e111c56611  (*3)
                Backing store flags:
                ・・・

    (*1) /etc/tgt/targets.conf ファイル の lun に指定した番号
    (*2) /etc/tgt/targets.conf ファイル の scsi_id に指定した値
    (*3) /etc/tgt/targets.conf ファイル の backing-store に指定したパス

  12. ディスク交換を行ったノードで、iSCSI セッションの状態を確認します。

    iSCSI の接続状態とセッション状態が "LOGGED IN" であることを確認します。

    実行例

    # iscsiadm -m session -P 1
    ~略~
    Target: target-0101
            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
                    ~略~
  13. 両ノードで、iSCSI セッションをリスキャンします。

    # iscsiadm -m session --rescan
  14. GDS の構成を復元します。

    • 共用クラスの場合

      ディスク交換を行ったノードで、「物理ディスク復旧」(または sdxswap -I コマンド)を実行します。手順1. で「物理ディスク交換」(またはsdxswap -O コマンド)を実行したすべての iSCSI デバイスに対して実行します。

    • ローカルクラスの場合

      削除したローカルクラスのオブジェクト構成(ボリューム、グループ、ディスク、クラス)を再作成します。

      • クラスの構成情報ファイルがある場合

        sdxconfig Backup コマンドで取得したクラスの構成情報がある場合、sdxconfig Restore コマンドを使用してオブジェクト構成を再作成します。

      • クラスの構成情報ファイルがない場合

        共用クラスを指定してオブジェクト構成を再作成します。

7.3.3.3 活性交換(RHEL7)

RHEL7 環境においてネットミラーグループに接続されているディスクを活性交換(システムを停止せずに交換)する場合、以下の手順で交換します。

  1. ディスクを交換可能な状態にします。

    • 共用クラスの場合

      ディスク交換を行うノードで、「物理ディスク交換」 (または sdxswap -O コマンド)を実行します。

      交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。

    • ローカルクラスの場合 (sdxconfig Restore コマンドを使用してオブジェクト構成を復元した場合)

      ローカルクラスのすべてのオブジェクト構成 (ボリューム、グループ、ディスク) を削除することにより、クラスが削除されます。

      ディスクの削除は、sdxdisk -R コマンドを使用し、交換対象のディスクを先に削除します。

      交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対してオブジェクト構成を削除します。

      注意

      ローカルクラスに、ネットミラーグループが存在する場合、「物理ディスク交換」 (または sdxswap -O コマンド) は実行できません。

  2. 両ノードで、交換するディスクの iSCSI デバイスを停止します。

    交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。

    # echo offline > /sys/block/iSCSIデバイス名/device/state

    実行例

    # echo offline > /sys/block/sdd/device/state
  3. ディスク交換を行うノードで、ターゲット情報をバックアップします。

    # cp /etc/target/saveconfig.json バックアップ先ファイル

    実行例

    # cp /etc/target/saveconfig.json /var/tmp/targetfile.json
  4. ディスク交換を行うノードで、交換するデバイスに対応するストレージと 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 です。

  5. ディスク交換を行うノードで、交換するすべての LUN を削除します。

    交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応するストレージに対して実行します。

    # targetcli /backstores/block/ delete ストレージ名

    ポイント

    ストレージ名には手順4. で確認したストレージ名を指定します。

    実行例

    # targetcli /backstores/block/ delete storage1
    Deleted storage object storage1.
  6. ディスク交換を行うノードで、交換するディスクに対応するストレージと 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]
  7. ディスクを交換します。

    交換方法については、サーバやディスク装置のマニュアルを参照してください。

  8. 物理ディスク単位ではなくパーティション単位でサーバ間ミラーリングを行っていた場合、ディスク交換を行ったノードで、交換したディスクにパーティションを作成します。

    パーティションは、交換前と同じ順序および同じサイズで作成してください。

  9. 手順3. でバックアップしたターゲット情報を編集し、交換前のディスクの by-id ファイルのパスを、交換後のディスクの by-id ファイルのパスに修正します。

    交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する by-id ファイルのパスに対して実行します。

    # vim バックアップ先ファイル
    
    {
      "fabric_modules": [],
      "storage_objects": [
        {
    ~
          "dev": "交換前のディスク",    (*1)
          "name": "ストレージ名",
          "plugin": "block",
          "readonly": false,
          "write_back": false,
          "wwn": "fae93a41-0d59-4843-9137-9c39854e5388"
        }
      ],

    (*1) 交換後のディスクの by-id ファイルのパスに変更します。

    ポイント

    バックアップ先ファイルには、手順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"
        }
      ],
  10. ディスク交換を行うノードで、手順9. で編集したターゲット情報をリストアします。

    # targetctl restore バックアップ先ファイル

    ポイント

    バックアップ先ファイルには、手順9. で作成したバックアップ先ファイルを指定します。

    実行例

    # targetctl restore /var/tmp/targetfile.json
  11. ディスク交換を行うノードで、ストレージと 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]
  12. ディスク交換を行うノードで、手順10. でリストアしたターゲット情報を保存します。

    # targetctl save
  13. 両ノードで、iSCSI セッションをリスキャンします。

    # iscsiadm -m session --rescan
  14. 両ノードで、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.
  15. GDS の構成を復元します。

    • 共用クラスの場合

      ディスク交換を行ったノードで、「物理ディスク復旧」(または sdxswap -I コマンド)を実行します。手順1. で「物理ディスク交換」(または sdxswap -O コマンド)を実行したすべての iSCSI デバイスに対して実行します。

    • ローカルクラスの場合

      削除したローカルクラスのオブジェクト構成(ボリューム、グループ、ディスク、クラス)を再作成します。

      • クラスの構成情報ファイルがある場合

        sdxconfig Backup コマンドで取得したクラスの構成情報がある場合、sdxconfig Restore コマンドを使用してオブジェクト構成を再作成します。

      • クラスの構成情報ファイルがない場合

        共用クラスを指定してオブジェクト構成を再作成します。

7.3.3.4 非活性交換(RHEL7)

RHEL7 環境においてネットミラーグループに接続されているディスクを非活性交換(システムを停止して交換)する場合、以下の手順で交換します。

  1. ディスクを交換可能な状態にします。

    • 共用クラスの場合

      ディスク交換を行うノードで、「物理ディスク交換」 (または sdxswap -O コマンド)を実行します。

      交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対して実行します。

    • ローカルクラスの場合 (sdxconfig Restore コマンドを使用してオブジェクト構成を復元した場合)

      ローカルクラスのすべてのオブジェクト構成 (ボリューム、グループ、ディスク) を削除することにより、クラスが削除されます。

      ディスクの削除は、sdxdisk -R コマンドを使用し、交換対象のディスクを先に削除します。

      交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する iSCSI デバイスに対してオブジェクト構成を削除します。

      注意

      ローカルクラスに、ネットミラーグループが存在する場合、「物理ディスク交換」 (または sdxswap -O コマンド) は実行できません。

  2. 業務を継続したまま、運用ノードのディスクを交換する場合、クラスタアプリケーションの切替えを行い、交換するディスクが接続されていない方のノードを運用ノードにします。

  3. シングルユーザモードで再起動されるように、ディスク交換を行うノードでシステム起動時の設定を変更します。

    # systemctl set-default rescue.target
  4. ディスク交換を行うノードを停止します。

  5. ディスクを交換します。

    交換方法については、サーバやディスク装置のマニュアルを参照してください。

  6. ディスク交換を行ったノードを起動します。

  7. 物理ディスク単位ではなくパーティション単位でサーバ間ミラーリングを行っていた場合、ディスク交換を行ったノードで、交換したディスクにパーティションを作成します。

    パーティションは、交換前と同じ順序および同じサイズで作成してください。

  8. ディスク交換を行ったノードで、iSCSI ターゲットの設定情報をバックアップします。

    # cp /etc/target/saveconfig.json バックアップ先ファイル

    実行例

    # cp /etc/target/saveconfig.json /var/tmp/targetfile.json
  9. iSCSI ターゲットの設定情報に記載されている交換前のディスクの by-id ファイルのパスを、交換後のディスクの by-id ファイルのパスに修正します。

    交換するディスク上の複数のパーティションがサーバ間ミラーリングの対象になっている場合、すべてのパーティションに対応する by-id ファイルのパスに対して実行します。

    # 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 ファイルのパスに変更します。

    [変更前の例]

    # 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"
        }
      ],
  10. マルチユーザモードで再起動されるように、手順3. で変更したシステム起動時の設定を元に戻します。

    例) multi-user.target に戻す場合

    # systemctl set-default multi-user.target
  11. ディスク交換を行ったノードを再起動します。

  12. ディスク交換を行ったノードで、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]
  13. ディスク交換を行ったノードで、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
                    ~略~
  14. 両ノードで、iSCSI セッションをリスキャンします。

    # iscsiadm -m session --rescan
  15. GDS の構成を復元します。

    • 共用クラスの場合

      ディスク交換を行ったノードで、「物理ディスク復旧」(または sdxswap -I コマンド)を実行します。手順1. で「物理ディスク交換」(または sdxswap -O コマンド)を実行したすべての iSCSI デバイスに対して実行します。

    • ローカルクラスの場合

      削除したローカルクラスのオブジェクト構成(ボリューム、グループ、ディスク、クラス)を再作成します。

      • クラスの構成情報ファイルがある場合

        sdxconfig Backup コマンドで取得したクラスの構成情報がある場合、sdxconfig Restore コマンドを使用してオブジェクト構成を再作成します。

      • クラスの構成情報ファイルがない場合

        共用クラスを指定してオブジェクト構成を再作成します。

  16. 手順8. で作成したバックアップファイルを削除します。

    # rm バックアップ先ファイル

    実行例

    # rm /var/tmp/targetfile.json