Skip to main content
NetApp Solutions
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

VSphere VMFS Datenspeicher – iSCSI-Storage-Back-End mit ONTAP

Beitragende

In diesem Abschnitt wird die Erstellung eines VMFS-Datenspeichers mit ONTAP iSCSI-Speicher behandelt.

Verwenden Sie für die automatische Bereitstellung das folgende Skript: [Ansible].

Was Sie brauchen

  • Grundkenntnisse für das Management einer vSphere Umgebung und einer ONTAP

  • ONTAP Storage-Systeme (FAS/AFF/CVO/ONTAP Select/ASA) mit {ontap_Version}

  • ONTAP-Anmeldedaten (SVM-Name, Benutzer-ID und Passwort)

  • ONTAP Netzwerkport, SVM und LUN-Informationen für iSCSI

  • "Ein ausgefülltes iSCSI-Konfigurationsarbeitsblatt"

  • Anmeldedaten für vCenter Server

  • Informationen zu vSphere Hosts

    • {vsphere_Version}

  • IP-Informationen zum iSCSI VMkernel Adapter

  • Netzwerk-Switch(e)

    • Mit Netzwerk-Daten-Ports des ONTAP Systems und verbundenen vSphere Hosts

    • Für iSCSI konfigurierte VLANs

    • (Optional) Link Aggregation konfiguriert für ONTAP Netzwerkdatenports

  • ONTAP Tool für VMware vSphere – implementiert, konfiguriert und betriebsbereit

Schritte

  1. Prüfen Sie die Kompatibilität mit dem "Interoperabilitäts-Matrix-Tool (IMT)".

  2. "Vergewissern Sie sich, dass die iSCSI-Konfiguration unterstützt wird."

  3. Führen Sie die folgenden Aufgaben für ONTAP und vSphere aus.

ONTAP Aufgaben

  1. "Überprüfen Sie die ONTAP Lizenz für iSCSI".

    1. Verwenden Sie die system license show Befehl, um zu überprüfen, ob iSCSI aufgeführt ist.

    2. Nutzung license add -license-code <license code> Um die Lizenz hinzuzufügen.

  2. "Vergewissern Sie sich, dass das iSCSI-Protokoll auf der SVM aktiviert ist."

  3. Vergewissern Sie sich, dass auf der SVM logische iSCSI-Netzwerk-Schnittstellen verfügbar sind.

    Hinweis Wenn über die GUI eine SVM erstellt wird, werden auch iSCSI-Netzwerkschnittstellen erstellt.
  4. Verwenden Sie die Network interface Befehl zum Anzeigen oder Ändern der Netzwerkschnittstelle.

    Tipp Es werden zwei iSCSI-Netzwerkschnittstellen pro Node empfohlen.
  5. "Erstellen Sie eine iSCSI-Netzwerkschnittstelle." Sie können die Service-Richtlinie für Standarddatenblöcke verwenden.

  6. "Überprüfen Sie, ob der Daten-iscsi-Service in der Service-Richtlinie enthalten ist." Verwenden Sie können network interface service-policy show Zu überprüfen.

  7. "Vergewissern Sie sich, dass Jumbo Frames aktiviert sind."

  8. "Erstellen und Zuordnen der LUN." Überspringen Sie diesen Schritt, wenn Sie ONTAP-Tools für VMware vSphere verwenden. Wiederholen Sie diesen Schritt für jede LUN.

Aufgaben für VMware vSphere

  1. Stellen Sie sicher, dass mindestens eine NIC für das iSCSI-VLAN verfügbar ist. Zwei NICs werden bevorzugt, um eine bessere Performance und Fehlertoleranz zu schaffen.

  2. "Ermitteln Sie die Anzahl der physischen NICs, die auf dem vSphere-Host verfügbar sind."

  3. "Konfigurieren Sie den iSCSI-Initiator." Ein typischer Anwendungsfall ist ein Software-iSCSI-Initiator.

  4. "Stellen Sie sicher, dass der TCPIP-Stack für iSCSI verfügbar ist".

  5. "Vergewissern Sie sich, dass iSCSI-Portgruppen verfügbar sind".

    • In der Regel verwenden wir einen einzelnen virtuellen Switch mit mehreren Uplink-Ports.

    • Verwenden Sie 1:1-Adapterzuordnung.

  6. Vergewissern Sie sich, dass die iSCSI-VMkernel-Adapter für die Anzahl der NICs aktiviert sind und IP-Adressen zugewiesen sind.

  7. "Binden Sie den iSCSI-Software-Adapter an die iSCSI-VMkernel-Adapter."

  8. "Stellen Sie den VMFS-Datenspeicher mit ONTAP Tools bereit". Wiederholen Sie diesen Schritt für alle Datenspeicher.

  9. "Prüfen Sie, ob die Hardware-Beschleunigung unterstützt wird."

Was kommt als Nächstes?

Nach Abschluss dieser Aufgaben kann der VMFS-Datenspeicher für die Bereitstellung von Virtual Machines genutzt werden.

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