ブロックストレージ(iSCSI)の利用手順(RHEL/CentOS)

対象リージョン:東日本第3/西日本第3

ベアメタルサーバ(RHEL/CentOS)でブロックストレージ(iSCSI)を利用するために必要な手順について説明します。

始める前に

ベアメタルサーバ(RHEL/CentOS)とブロックストレージ(iSCSI)の接続構成は、以下の図のとおりです。

ヒント:

RHEL/CentOSサーバは、(Active/Active構成)で接続されるESXiサーバとは異なり、 iSCSI接続に必要なソフトウェアを導入し、外部ストレージと冗長経路(Active/Standby構成)で接続します。

図: ベアメタルサーバ(RHEL/CentOS)とブロックストレージ(iSCSI)の接続構成


最初にOS側の準備をします。

例として、OSがRHEL7.3、CentOS7.7の設定手順を説明します。

注:

OSの種類やバージョンによって、ブロックストレージ(iSCSI)の利用手順が異なる場合があります。

ブロックストレージ(iSCSI)の利用手順については、お客様が契約しているOSのサポートに問い合わせてください。

  1. 必要なパッケージのインストール

    iscsiイニシエーター利用のために必要な最新版のパッケージをインストールします。

    • iscsi-initiator-utils-x.x.x.xxx-4.el7.x86_64

    • iscsi-initiator-utils-iscsiuio-x.x.x.xxx-x.el7.x86_64

  2. iscsidサービスの設定と起動

    iscsidサービスの自動起動設定をしたあと、サービスを起動します。

    1. iscsidサービスの自動起動の設定
      # systemctl enable iscsid.service
    2. iscsidサービスの起動
      # systemctl start iscsid.service
    3. iscsidサービスの自動起動の設定、および起動の確認
      # systemctl status iscsid.service
  3. iscsiサービスの設定と起動

    iscsiサービスの自動起動設定をしたあと、サービスを起動します。

    1. iscsiサービスの自動起動の設定
      # systemctl enable iscsi.service
    2. iscsiサービスの起動
      # systemctl start iscsi.service
  4. iSCSIイニシエータ名(IQN)の確認

    /etc/iscsi/initiatorname.iscsi ファイルで iSCSIイニシエータ名(IQN)を確認します。

このタスクについて

次に、RHEL/CentOSサーバーで実施するブロックストレージ(iSCSI)の接続手順を説明します。各リソースに設定する値は、システムに合わせてください。

手順

  1. 以下のAPIを実行し、ブロックストレージ(iSCSI)を作成します。
    # export TOKEN="取得したトークン"
    # export PROJECT_ID="プロジェクトID"
    # export INITIATOR_IQNS="接続を許可するiSCSIイニシエータ名(IQN)"
    # export IP_ADDRESS_PRIMARY="ブロックストレージ(iSCSI)のIPアドレス(プライマリ)"
    # export IP_ADDRESS_SECONDARY="ブロックストレージ(iSCSI)のIPアドレス(セカンダリ)"
    # export IP_SUBNET_MASK="サブネットマスク"
    # export NAME="ブロックストレージ(iSCSI)の名前"
    # export OS_TYPE="接続先ベアメタルサーバのOSタイプ"
    # export SIZE="ブロックストレージ(iSCSI)の容量"
    # export SNAPSHOT_SPACE_SIZE="スナップショット領域の容量"
    # export SUBNET_ID="ブロックストレージ(iSCSI)を接続するサブネットのID"
    # export TYPE="ストレージタイプ"
    # curl -ks -X POST -H "X-Auth-Token:${TOKEN}" https://baremetal.jp-east-3.cloud.global.fujitsu.com/v1/iscsi/${PROJECT_ID}/storages/create -d
     '{"storage": {
    "initiator_iqns": ["'${INITIATOR_IQNS}'"],
    "ipv4_address_primary": "'${IP_ADDRESS_PRIMARY}'",
    "ipv4_address_secondary": "'${IP_ADDRESS_SECONDARY}'",
    "ipv4_subnet_mask": "'${IP_SUBNET_MASK}'",
    "name": "'${NAME}'",
    "os_type": "'${OS_TYPE}'",
    "size_gb": '${SIZE}',
    "snapshot_space_size_gb": '${SNAPSHOT_SPACE_SIZE}',
    "subnet_id": "'${SUBNET_ID}'",
    "type": "'${TYPE}'"
    }}' | jq .
    
    ヒント: "接続を許可するiSCSIイニシエータ名(IQN)" には、OS側の準備の 4で確認した値を入力します。
  2. API(ブロックストレージ(iSCSI)作成)のレスポンスでジョブIDを確認します。

    idに表示されたジョブIDを確認します。

    {
      "job": {
        "api_name": "Create a storage",
        "created_at": "2019-07-23T03:00:20.000Z",
        "id": 9294,
        "project_id": "565ae4fc42f04e76800a31cf03886b42",
        "request_parameter": {
        "storage": {
           ~省略~
          }
        },
        "status": "EXECUTING"
      }
    }
  3. 以下のAPIを実行し、ブロックストレージ(iSCSI)の作成が完了した(status が"COMPLETED"である) ことを確認します。
    # export TOKEN="取得したトークン"
    # export PROJECT_ID="プロジェクトID"
    # export JOB_ID="ジョブID"
    # curl -ks -X GET -H "X-Auth-Token:${TOKEN}" https://baremetal.jp-east-3.cloud.global.fujitsu.com/v1/iscsi/${PROJECT_ID}/jobs/${JOB_ID} | jq .
    
    {
      "job": {
        "api_name": "Create a storage",
        "created_at": "2019-07-23T03:00:20.000Z",
        "ended_at": "2019-07-23T03:00:50.000Z",
        "id": 9294,
        "project_id": "565ae4fc42f04e76800a31cf03886b42",
        "request_parameter": {
        ~省略~
        },
        "started_at": "2019-07-23T03:00:25.000Z",
        "status": "COMPLETED"
      }
    }
  4. 以下のAPIを実行し、作成したブロックストレージ(iSCSI)を確認します。
    # export TOKEN="取得したトークン"
    # export PROJECT_ID="プロジェクトID"
    # curl -ks -X GET -H "X-Auth-Token:${TOKEN}" https://baremetal.jp-east-3.cloud.global.fujitsu.com/v1/iscsi/${PROJECT_ID}/storages | jq .
    
    {
      "storages": [
    	~省略~
        {
          "created_at": "2019-07-23T03:01:10Z",
          "initiator_iqns": [
            "iqn.1994-05.com.redhat:7417d7bbb7eb"
          ],
          "ipv4_address_primary": "192.168.10.220",
          "ipv4_address_secondary": "192.168.10.221",
          "ipv4_subnet_mask": "255.255.255.0",
          "iqn": "iqn.1992-08.com.netapp:2833ce04-7d90-4aab-85c5-befa76b39c85",
          "name": "iscsi_test_storage_linux",
          "os_type": “linux",
          "project_id": "565ae4fc42f04e76800a31cf03886b42",
          "size_gb": 512,
          "snapshot_space_size_gb": 512,
          "snapshot_space_used_size_gb": 0,
          "subnet_id": "525f3ff7-b631-408c-be2a-2e3591359b17",
          "type": "medium",
          "id": "2833ce04-7d90-4aab-85c5-befa76b39c85"
        },
    	~省略~
      ]
    }

次のタスク

再びOS側の設定をします。

注: シングルパスでは可用性が保証されないため、マルチパスを設定してください。
  1. iSCSIイニシエーターのタイムアウト値の変更

    iSCSI イニシエーターのタイムアウト値を120から5に変更します。

    ヒント: /etc/iscsi/iscsid.conf ファイルの"node.session.timeo.replacement_timeout"に定義されている値を変更します。
  2. ネットワークボンディングの設定

    DM-MPを使用してマルチパス構成を構築する場合、ブロックストレージ(iSCSI)との冗長経路はネットワークボンディング mode1(Active/Standby構成)で接続します。詳細な手順は以下のとおりです。なお、インタフェース名は例です。

    1. bond0インタフェースの作成
      # nmcli connection add type bond autoconnect no con-name bond0 ifname bond0 mode active-backup
    2. slaveインタフェースの作成
      # nmcli connection add type bond-slave autoconnect no ifname enp24s0f0 master bond0
      # nmcli connection add type bond-slave autoconnect no ifname enp94s0f1 master bond0
    3. サーバのIPアドレスの設定(IPアドレスは任意の値)
      # nmcli c mod bond0 ipv4.method manual ipv4.address "192.168.10.31/24" ipv4.gateway "192.168.10.1" ipv6.method ignore
    4. 元のインタフェースの自動起動停止
      # nmcli c m "System enp24s0f0" connection.autoconnect no
      # nmcli c m "System enp94s0f1" connection.autoconnect no
    5. slaveインタフェースの自動起動有効化
      # nmcli c m bond-slave-enp24s0f0 connection.autoconnect yes
      # nmcli c m bond-slave-enp94s0f1 connection.autoconnect yes
    6. bond0インタフェースの自動起動有効化
      # nmcli c m bond0 connection.autoconnect yes
    7. ネットワークボンディングの設定確認

      bond0インタフェースが作成できていること、およびサーバーのIPアドレスが設定できていることを確認します。

      # nmcli c
      # ifcomnnfig
      # cat /proc/net/bonding/bond0
  3. 疎通確認

    サーバおよび作成したブロックストレージ(iSCSI)への疎通を確認します。

    1. サーバへの疎通確認(IPアドレスはサーバに設定した値)
      # ping 192.168.10.1
    2. ブロックストレージ(iSCSI)の疎通確認(IPアドレスはブロックストレージ(iSCSI)の作成時に設定した値)
      # ping 192.168.10.111
  4. ブロックストレージ(iSCSI)の検索

    ブロックストレージ(iSCSI)の作成時に設定した プライマリ と セカンダリ のIPアドレス、およびイニシエータ名を検索します。

    # iscsiadm -m discovery -t st -p 192.168.10.111:3260
  5. ブロックストレージ(iSCSI)への接続(ログイン)

    検索したブロックストレージ(iSCSI)のIPアドレスとイニシエータ名を使用してブロックストレージ(iSCSI)へ接続(ログイン)します。

    1. ブロックストレージ(iSCSI)への接続(ログイン)
      # iscsiadm -m node -T iqn.1992-08.com.netapp:19d52676-7adc- 452a-8c41-3a4f78c796a5 -p 192.168.10.111:3260,1026 –l
      # iscsiadm -m node -T iqn.1992-08.com.netapp:19d52676-7adc- 452a-8c41-3a4f78c796a5 -p 192.168.10.114:3260,1027 -l
    2. ブロックストレージ(iSCSI)への接続確認(2つのパスがあることを確認)
      # lsblk -S
  6. マルチパスの設定

    /etc/multipath.conf ファイルに以下を追加します。

    defaults {
            user_friendly_names no
            find_multipaths yes
            flush_on_last_del yes
            max_fds max
            queue_without_daemon no
            dev_loss_tmo infinity
    }
    
    blacklist {
            devnode "^hd[a-z]"
            devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
            devnode "^cciss.*"
    }
    
    devices {
        device {
            vendor              "NETAPP"
            product             "LUN.*"
            path_checker        "tur"
            features            "3 queue_if_no_path pg_init_retries 50"
            uid_attribute       "ID_SERIAL"
            hardware_handler    "1 alua"
            prio                "alua"
            failback            "immediate"
            rr_weight           "uniform"
            path_selector       "service-time 0"
            }
    }
    ヒント: /etc/multipath.conf ファイルが存在しない場合は、/usr/share/doc/device-mapper-multipath-x.x.x/multipath.conf ファイルをコピーして利用します。
  7. マルチパスデーモンの起動
    # systemctl start multipathd
  8. マルチパスの起動
    mpathconf --enable --with_multipathd y
  9. マルチパスの作成および確認
    # multipath -v2
    # multipath -ll
  10. ブロックストレージ(iSCSI)のマウント

    任意のマウントポイントに、作成したブロックストレージ(iSCSI)のボリュームをマウントして利用します。