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

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

共同作成者 kevin-hoke

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

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

必要なもの

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

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

  • ONTAP認証情報 (SVM 名、ユーザー ID、パスワード)

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

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

  • vCenter Server の認証情報

  • vSphere ホスト情報

    • {vsphere_バージョン}

  • iSCSI VMKernelアダプタのIP情報

  • ネットワークスイッチ

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

    • iSCSI用に設定されたVLAN

    • (オプション) ONTAPネットワークデータポート用に構成されたリンクアグリゲーション

  • ONTAP Tool 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. 使用 `Network interface`ネットワーク インターフェイスを表示または変更するためのコマンド。

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

  6. "data-iscsi サービスがサービス ポリシーに含まれていることを確認します。"使用できます `network interface service-policy show`確認します。

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

  8. "LUN を作成してマップします。"ONTAP tools for VMware vSphereを使用している場合は、この手順をスキップしてください。各 LUN に対してこの手順を繰り返します。

VMware vSphere タスク

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

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

  3. "iSCSI イニシエーターを構成します。"典型的な使用例は、ソフトウェア iSCSI イニシエーターです。

  4. "iSCSIのTCPIPスタックが利用可能であることを確認する"

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

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

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

  6. iSCSI VMKernel アダプタが NIC の数に合わせて有効化されており、IP が割り当てられていることを確認します。

  7. "iSCSI ソフトウェア アダプタを iSCSI VMKernel アダプタにバインドします。"

  8. "ONTAPツールを使用して VMFS データストアをプロビジョニングする" 。すべてのデータストアに対してこの手順を繰り返します。

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

次の手順

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

Ansibleプレイブック
## 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