日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

vSphere VMFS データストア - iSCSI ストレージバックエンド( ONTAP を使用)

寄稿者 このページの PDF をダウンロード

このタスクについて

このセクションでは、 ONTAP iSCSI ストレージを使用した VMFS データストアの作成について説明します。

自動プロビジョニングの場合は、次のいずれかのスクリプトを使用します。 [PowerShell][Ansible]または [Terraform]

必要なもの

  • vSphere 環境と ONTAP を管理するために必要な基本的なスキル。

  • { ONTAP_version } を実行している ONTAP ストレージシステム( FAS/AFF/CVO/ONTAP Select / ASA )

  • ONTAP クレデンシャル( SVM 名、ユーザ ID 、パスワード)

  • iSCSI の ONTAP ネットワークポート、 SVM 、および LUN の情報

  • "完了した iSCSI 構成ワークシート"

  • vCenter Server クレデンシャル

  • vSphere ホスト情報

    • { vsphere_version }

  • iSCSI VMkernel アダプタの IP 情報

  • ネットワークスイッチ

    • ONTAP システムのネットワークデータポートと接続された vSphere ホストで使用

    • iSCSI 用に設定されている VLAN

    • (任意) ONTAP ネットワークデータポート用に設定されたリンクアグリゲーション

  • ONTAP ツール for VMware vSphere の導入、設定、利用可能な状態

手順

  1. との互換性を確認します "Interoperability Matrix Tool ( IMT )"

  2. "iSCSI 構成がサポートされていることを確認します。"

  3. 次の ONTAP および vSphere タスクを実行します。

ONTAP タスク

  1. "iSCSI の ONTAP ライセンスを確認します"

    1. 「 system license show 」コマンドを使用して、 iSCSI がリストされているかどうかを確認します。

    2. ライセンスを追加するには 'license add-license-code <license code> を使用します

  2. "SVM で iSCSI プロトコルが有効になっていることを確認します。"

  3. iSCSI ネットワーク論理インターフェイスが SVM で使用可能であることを確認します。

    注記 GUI を使用して SVM を作成すると、 iSCSI ネットワークインターフェイスも作成されます。
  4. ネットワークインターフェイスを表示または変更するには ' ネットワークインタフェースコマンドを使用します

    ヒント ノードごとに 2 つの iSCSI ネットワークインターフェイスを推奨します。
  5. "iSCSI ネットワークインターフェイスを作成" default-data-blocks サービスポリシーを使用できます。

  6. "データ iSCSI サービスがサービスポリシーに含まれていることを確認します。" 確認には、「 network interface service-policy show 」を使用できます。

  7. "ジャンボフレームが有効になっていることを確認します。"

  8. "LUN を作成してマッピングします。" VMware vSphere 用の ONTAP ツールを使用する場合は、この手順を省略してください。LUN ごとにこの手順を繰り返します。

VMware vSphere タスク

  1. iSCSI VLAN で少なくとも 1 つの NIC が使用可能であることを確認します。パフォーマンスとフォールトトレランスを向上させるために、 2 枚の NIC を推奨します。

  2. "vSphere ホストで使用可能な物理 NIC の数を特定します。"

  3. "iSCSI イニシエータを設定します。" 一般的なユースケースとしては、ソフトウェア iSCSI イニシエータがあります。

  4. "iSCSI 用 TCP / IP スタックが利用可能であることを確認します"

  5. "iSCSI ポートグループが使用可能であることを確認します"

    • 通常、複数のアップリンクポートを持つ単一の仮想スイッチを使用します。

    • 1:1 のアダプタマッピングを使用します。

  6. iSCSI VMkernel アダプタが有効になっていて NIC の数が一致していて、 IP が割り当てられていることを確認します。

  7. "iSCSI ソフトウェアアダプタを iSCSI VMkernel アダプタにバインド"

  8. "ONTAP Tools を使用して VMFS データストアをプロビジョニングします"。すべてのデータストアについて、同じ手順を繰り返します。

  9. "ハードウェアアクセラレーションのサポートを確認します。"

次の手順

これらのタスクが完了すると、 VMFS データストアで仮想マシンのプロビジョニングに使用できるようになります。

Ansible の Playbook
## Disclaimer: Sample script for reference purpose only.

- hosts: '{{ vsphere_host }}'
  name: Play for vSphere iSCSI Configuration
  connection: local
  gather_facts: false
  tasks:
    # Generate Session ID for vCenter
    - name: Generate a Session ID for vCenter
      uri:
        url: "https://{{ vcenter_hostname }}/rest/com/vmware/cis/session"
        validate_certs: false
        method: POST
        user: "{{ vcenter_username }}"
       password: "{{ vcenter_password }}"
        force_basic_auth: yes
        return_content: yes
      register: vclogin

    # Generate Session ID for ONTAP tools with vCenter
    - name: Generate a Session ID for ONTAP tools with vCenter
      uri:
        url: "https://{{ ontap_tools_ip }}:8143/api/rest/2.0/security/user/login"
        validate_certs: false
        method: POST
        return_content: yes
        body_format: json
        body:
          vcenterUserName: "{{ vcenter_username }}"
          vcenterPassword: "{{ vcenter_password }}"
      register: login

    # Get existing registered ONTAP Cluster info with ONTAP tools
    - name: Get ONTAP Cluster info from ONTAP tools
      uri:
        url: "https://{{ ontap_tools_ip }}:8143/api/rest/2.0/storage/clusters"
        validate_certs: false
        method: Get
        return_content: yes
        headers:
          vmware-api-session-id: "{{ login.json.vmwareApiSessionId }}"
      register: clusterinfo

    - name: Get ONTAP Cluster ID
      set_fact:
        ontap_cluster_id: "{{ clusterinfo.json | json_query(clusteridquery) }}"
      vars:
        clusteridquery: "records[?ipAddress == '{{ netapp_hostname }}' && type=='Cluster'].id | [0]"

    - name: Get ONTAP SVM ID
      set_fact:
        ontap_svm_id: "{{ clusterinfo.json | json_query(svmidquery) }}"
      vars:
        svmidquery: "records[?ipAddress == '{{ netapp_hostname }}' && type=='SVM' && name == '{{ svm_name }}'].id | [0]"

    - name: Get Aggregate detail
      uri:
        url: "https://{{ ontap_tools_ip }}:8143/api/rest/2.0/storage/clusters/{{ ontap_svm_id }}/aggregates"
        validate_certs: false
        method: GET
        return_content: yes
        headers:
          vmware-api-session-id: "{{ login.json.vmwareApiSessionId }}"
          cluster-id: "{{ ontap_svm_id }}"
      when: ontap_svm_id != ''
      register: aggrinfo

    - name: Select Aggregate with max free capacity
      set_fact:
        aggr_name: "{{ aggrinfo.json | json_query(aggrquery) }}"
      vars:
        aggrquery: "max_by(records, &freeCapacity).name"

    - name: Convert datastore size in MB
      set_fact:
        datastoreSizeInMB: "{{ iscsi_datastore_size | human_to_bytes/1024/1024 | int }}"

    - name: Get vSphere Cluster Info
      uri:
        url: "https://{{ vcenter_hostname }}/api/vcenter/cluster?names={{ vsphere_cluster }}"
        validate_certs: false
        method: GET
        return_content: yes
        body_format: json
        headers:
          vmware-api-session-id: "{{ vclogin.json.value }}"
      when: vsphere_cluster != ''
      register: vcenterclusterid

    - name: Create iSCSI VMFS-6 Datastore with ONTAP tools
      uri:
        url: "https://{{ ontap_tools_ip }}:8143/api/rest/3.0/admin/datastore"
        validate_certs: false
        method: POST
        return_content: yes
        status_code: [200]
        body_format: json
        body:
          traditionalDatastoreRequest:
            name: "{{ iscsi_datastore_name }}"
            datastoreType: VMFS
            protocol: ISCSI
            spaceReserve: Thin
            clusterID:  "{{ ontap_cluster_id }}"
            svmID: "{{ ontap_svm_id }}"
            targetMoref: ClusterComputeResource:{{ vcenterclusterid.json[0].cluster }}
            datastoreSizeInMB: "{{ datastoreSizeInMB | int }}"
            vmfsFileSystem: VMFS6
            aggrName: "{{ aggr_name }}"
            existingFlexVolName: ""
            volumeStyle: FLEXVOL
            datastoreClusterMoref: ""
        headers:
          vmware-api-session-id: "{{ login.json.vmwareApiSessionId }}"
      when: ontap_cluster_id != '' and ontap_svm_id != '' and aggr_name != ''
      register: result
      changed_when: result.status == 200