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

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

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

始める前に

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

ヒント:

ESXiサーバは、(Active/Stanby構成)で接続されるRHEL/CentOSサーバとは異なり、 iSCSI Port Bindingを使用し、外部ストレージと冗長経路(Active/Active構成)で接続します。

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


最初にOS側の準備をします。WebGUI「vmware ESXi」を使用する方法で説明します。

例として、vmware ESXi 6.5の設定手順を説明します。

注:

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

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

  1. iSCSI用仮想ネットワークの設定
    1. 左ペイン「ナビゲーター」の 「ネットワーク」⇒「仮想スイッチ」タブ⇒「標準仮想スイッチの追加」タブを選択し、表示された画面で以下を入力して「追加」をクリックします。
      表 1. 仮想スイッチの追加―アップリンクの追加
      パラメタ 入力内容
      vSwitch名 任意の名前 vSwitch1
      アップリンク1 vmnicのプルダウンから選択 vmnic3
      アップリンク2 vmnicのプルダウンから選択 vmnic4
    2. 「ネットワーク」⇒ 「ポートグループ」タブ⇒「ポートグループを追加します」タブを選択し、表示された画面で以下を入力して「追加」をクリックします。
      表 2. ポートグループの追加
      パラメタ 入力内容
      名前 ポートグループの名前(任意) iSCSI PortGrp 01
      仮想スイッチ 作成済みの仮想スイッチの名前 vSwitch1
      ヒント: 同じ要領で、ポートグループ1を追加した仮想スイッチ(例:vSwitch1)に、ポートグループ2(例:iSCSI PortGrp 02)を追加します。
    3. 「ネットワーク」⇒ 「Vmkernel NIC」タブ⇒「Vmkernel NICの追加」タブを選択し、表示された画面で以下を入力して「作成」をクリックします。
      表 3. Vmkernel NICの追加
      パラメタ 入力内容
      ポートグループ 作成済みのポートグループの名前(任意) iSCSI PortGrp 01
      IPv4設定 構成 「スタティック」を選択  
      アドレス 任意のIPアドレス 192.168.1.100
      サブネットマスク サブネットマスクアドレス 255.255.248.0
      ヒント: 同じ要領で、ポートグループ2(例:iSCSI PortGrp 02)にもそれぞれIPアドレス(例:192.168.1.101)を設定します。なお、パラメタの"構成"、および"サブネットマスク"に指定する値は、ポートグループ1と同じ、かつ固定です。
    4. 「ネットワーク」⇒ 「ポートグループ」タブ⇒「例:iSCSI PortGrp 01」タブ⇒「設定の編集」を選択し、ポートグループ1に対して物理NIC(例:vmnic3)を設定します。表示された画面で以下を入力して「保存」をクリックします。
      表 4. ポートグループの編集
      パラメタ 入力内容
      NICチーミング フェイルオーバー順序のオーバーライド 「はい」を選択  
      フェイルオーバー順序 操作対象のvmnic、および操作を選択

      操作対象:vmnic4

      操作:未使用としてマーク

      ヒント: 同じ要領で、「ネットワーク」⇒ 「ポートグループ」タブ⇒「例:iSCSI PortGrp 02」タブ⇒「設定の編集」を選択し、ポートグループ2に対して物理NIC(vmnic4)を設定します。 なお、パラメタの"フェイルオーバー順序のオーバーライド"、および"フェイルオーバー順序"の操作に指定する値は、ポートグループ1と同じ、かつ固定です。
  2. ソフトウェアiSCSIアダプタの設定(有効化とiSCSIイニシエータ名の確認)

    ソフトウェアiSCSIアダプタを有効化して、iSCSIイニシエータ名(IQN)を確認します。

    左ペイン「ナビゲーター」の 「ストレージ」⇒「アダプタ」タブ⇒「Software iSCSI」タブを選択し、表示された画面で以下を入力します。

    表 5. iSCSIの設定
    パラメタ 入力内容
    iSCSIが有効です 「無効」から「有効」に変更  
    名前とエイリアス iSCSIイニシエータ名(IQN) iqn.1998-01.com.vmware:esxi-test-0afcab3a
    ヒント: パラメタの"iSCSIが有効です"の入力において、「有効」を選択すると、"名前とエイリアス"に「 iSCSIイニシエータ名(IQN)」が表示されます。その値を確認してください。

このタスクについて

次に、ESXiサーバーで実施するブロックストレージ(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側の準備の 2で確認した 値を入力します。
  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.1998-01.com.vmware:esxi-test-0afcab3a"
          ],
          "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_20190723_vmware",
          "os_type": “vmware",
          "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側の設定をします。WebGUI「vmware ESXi」を使用する方法で説明します。

注: シングルパスでは可用性が保証されないため、マルチパスを設定してください。
  1. ソフトウェアiSCSIアダプタの設定(ポートバインドとターゲットの設定)

    左ペイン「ナビゲーター」の 「ストレージ」⇒「アダプタ」タブ⇒「Software iSCSI」タブを選択し、表示された画面で以下を入力して「設定の保存」をクリックします。

    表 6. iSCSIの設定
    パラメタ 入力内容
    ネットワークポートのバインド 「ポートバインドの追加」をクリック 「vmk1」、および「vmk2」を選択
    固定ターゲット 作成したブロックストレージ(iSCSI)のIPアドレス(プライマリ と セカンダリ)
    表 6. 固定ターゲットの追加
    ターゲット アドレス ポート
    作成したブロックストレージ(iSCSI)のIQN IPアドレス(プライマリ) 3260
    作成したブロックストレージ(iSCSI)のIQN  IPアドレス(セカンダリ) 3260
  2. マルチパスの設定
    1. マルチパスが作成されたことを確認します。
      # esxcli storage nmp path list
        iqn.1998-01.com.vmware:esxi-test-0afcab3a-00023d000001,iqn.1992-08.com.netapp:sn.97204fb8e6f81e8ab4f00a098b31690:vs.1641,t,1027-naa.600a09803838043504d3f4d5130382f6f
      
          Runtime Name: vmhba64:C0:T0:L0
          Device: naa.600a09803838043504d3f4d5130382f6f
          Device Display Name: NETAPP iSCSI Disk (naa.600a09803838043504d3f4d5130382f6f)
          Group State: active unoptimized
          Array Priority: 0
          Storage Array Type Path Config: {TPG_id=1000,TPG_state=ANO,RTP_id=1,RTP_health=UP}
          Path Selection Policy Path Config: PSP VMW_PSP_RR does not support path configuration.
      
      ~略~
      
        iqn.1998-01.com.vmware:esxi-test-0afcab3a-00023d000002,iqn.1992-08.com.netapp:sn.97204fb8e6f81e8ab4f00a098b31690:vs.1641,t,1028-naa.600a09803838043504d3f4d5130382f6f
      
          Runtime Name: vmhba64:C1:T0:L0
          Device: naa.6003005702920b1021f2160a1e1fccd4
          Device Display Name: Local FTS Disk (naa.6003005702920b1021f2160a1e1fccd4)
          Group State: active
          Array Priority: 0
          Storage Array Type Path Config: {TPG_id=1001,TPG_state=AO,RTP_id=2,RTP_health=UP}
          Path Selection Policy Path Config: PSP VMW_PSP_RR does not support path configuration.
      
    2. マルチパスのパス選択ポリシーおよび I/O の中断を回避します。

      1)マルチパスのパス選択ポリシーの設定

      # esxcli storage nmp device set --device naa.600a0980383043504d3f4d5130382f6f --psp VMW_PSP_RR

      2)マルチパスのパス選択ポリシーの設定確認

      # esxcli storge nmp device list --device naa.600a0980383043504d3f4d5130382f6f
        naa.600a0980383043504d3f4d5130382f6f
          Device Display Name: NETAPP ISCSI Disk (naa.600a0980383043504d3f4d5130382f6f)
          Storage Array Type: NMW_SATP_ALUA
          Storage Array Type Device Config: {inplicit_support=on; explicit_support=off; explicit_allow=on; alua_followover=on; action_OnRetryErrors=off; {TPG_id=1001,TPG_state=AO}{TPG_id=1000,TPG_state=ANO}}
          Path Selection Policy: VMW_PSP_RR
          Path Selection Policy Device Config: {policy=rr,iops=1000,bytes=10485760,useANO=0; lastPathIndex=1: NumIOsPending=0,numBytesPrnding=0}
          Path Selection Policy Device Custom Config: 
          Working Paths: vmhba64:C1:T0:L0
          Is USB: false

      3)I/O の中断を回避するための設定

      # esxcli storage core device set --device naa.600a0980383043504d3f4d5130382f6f --queue-full-sample-size 32 --queue-full-threshold 8

      4)I/O の中断を回避するための設定確認

      # esxcli storage core device list --device naa.600a0980383043504d3f4d5130382f6f	
         naa.600a0980383043504d3f4d5130382f6f	
      	~省略~
         Queue Full Sample Size: 32	
         Queue Full Threshold: 8	
      	~省略~
  3. VMFSストレージパフォーマンス設定
    1. VMFS ストレージパフォーマンスを高速化します。

      1)VMFS3.HardwareAcceleratedLocking の値を 1 に設定

      # esxcli system settings advanced set --int_value 1 --option /VMFS3/HardwareAcceleratedLocking

      2)設定値の確認

      # esxcli system settings advanced list --option /VMFS3/HardwareAcceleratedLocking
    2. 下記を防ぐために、領域解放に使用する UNMAP コマンドを無効にします。
      • Storage vMotion または仮想マシンのスナップショット作成中のシステムパフォーマンス低下

      • Storage vMotion または仮想マシンのスナップショット作成失敗、またはタイムアウト

      1)VMFS3.enableBlockDelete の値を 0 に設定

      # esxcli system settings advanced set --int-value 0 --option /VMFS3/EnableBlockDelete

      2)設定値の確認

      # esxcli system settings advanced list --option /VMFS3/EnableBlockDelete
      	  Path: /VMFS3/EnableBlockDelete
      	  Type: integer
      	  Int Value: 0
      	  Default Int Value: 1
      	  Min Value: 0
      	  Max Value: 1
      	  String Value:
      	  Default String Value:
      	  Valid Characters:
      	  Description: Enable VMFS block delete
  4. ゲストOSごとのタイムアウト設定

    以下のコマンドを実行して、ゲスト OS のディスクタイムアウト値を設定します。

    • RHEL 7.x のディスクタイムアウト値設定

      以下のコマンドを実行して、ディスクタイムアウト値を60秒に設定します。

      # ACTION=="add", SUNSYSTEMS=="scsi", ATTRS{VENDOR}=="VMware ",RUN+="/bin/sh -c 'echo 60 >/sys$$DEVPATH/timeout'"
      # ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{VENDOR}=="NETAPP ",ATTRS{MODEL}=="LUN ",RUN+="/bin/sh/ -c 'echo 60>/sys$$DEVPATH/timeout'
      # ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{VENDOR}=="NETAPP ",ATTRS{MODEL}=="LUN C-Mode ",RUN+="/bin/sh -c 'echo 60 >/sys$$DEVPATH/timeout'
    • Windowsのディスクタイムアウト値設定

      regeditコマンドを実行して、ディスクタイムアウト値を60秒に設定します。以下のレジストリキーを60(x03c) に設定します。

      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Disk\TimeOutValue
  5. ブロックストレージ(iSCSI)のマウント

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