Skip to main content
NetApp virtualization 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-Speicher-Backend mit ONTAP

Beitragende kevin-hoke

Dieser Abschnitt behandelt die Erstellung eines VMFS-Datenspeichers mit ONTAP iSCSI-Speicher.

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

Voraussetzungen

  • Die grundlegenden Fähigkeiten, die zum Verwalten einer vSphere-Umgebung und von ONTAP erforderlich sind.

  • Ein ONTAP -Speichersystem (FAS/ AFF/ CVO / ONTAP Select/ ASA) mit {ontap_version}

  • ONTAP -Anmeldeinformationen (SVM-Name, Benutzer-ID und Kennwort)

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

  • "Ein ausgefülltes iSCSI-Konfigurationsarbeitsblatt"

  • vCenter Server-Anmeldeinformationen

  • Informationen zu vSphere-Hosts

    • {vsphere_version}

  • IP-Informationen zum iSCSI-VMKernel-Adapter

  • Netzwerk-Switch(s)

    • Mit ONTAP -Systemnetzwerk-Datenports und verbundenen vSphere-Hosts

    • Für iSCSI konfigurierte VLAN(s)

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

  • ONTAP Tool für VMware vSphere bereitgestellt, konfiguriert und einsatzbereit

Schritte

  1. Überprüfen Sie die Kompatibilität mit dem "Interoperabilitätsmatrix-Tool (IMT)" .

  2. "Stellen Sie sicher, dass die iSCSI-Konfiguration unterstützt wird."

  3. Führen Sie die folgenden ONTAP und vSphere-Aufgaben durch.

ONTAP -Aufgaben

  1. "Überprüfen der ONTAP -Lizenz für iSCSI" .

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

    2. Verwenden license add -license-code <license code> , um die Lizenz hinzuzufügen.

  2. "Stellen Sie sicher, dass das iSCSI-Protokoll auf der SVM aktiviert ist."

  3. Stellen Sie sicher, dass auf der SVM logische iSCSI-Netzwerkschnittstellen verfügbar sind.

    Hinweis Wenn eine SVM mithilfe der GUI erstellt wird, werden auch iSCSI-Netzwerkschnittstellen erstellt.
  4. Verwenden Sie die Network interface Befehl zum Anzeigen oder Vornehmen von Änderungen an der Netzwerkschnittstelle.

    Tipp Es werden zwei iSCSI-Netzwerkschnittstellen pro Knoten empfohlen.
  5. "Erstellen Sie eine iSCSI-Netzwerkschnittstelle."Sie können die Servicerichtlinie „default-data-blocks“ verwenden.

  6. "Überprüfen Sie, ob der Daten-iSCSI-Dienst in der Servicerichtlinie enthalten ist."Sie können network interface service-policy show zu überprüfen.

  7. "Stellen Sie sicher, dass Jumbo-Frames aktiviert sind."

  8. "Erstellen und ordnen Sie die LUN zu."Überspringen Sie diesen Schritt, wenn Sie ONTAP tools for VMware vSphere verwenden. Wiederholen Sie diesen Schritt für jede LUN.

VMware vSphere-Aufgaben

  1. Stellen Sie sicher, dass mindestens eine Netzwerkkarte für das iSCSI-VLAN verfügbar ist. Für eine bessere Leistung und Fehlertoleranz werden zwei Netzwerkkarten bevorzugt.

  2. "Ermitteln Sie die Anzahl der auf dem vSphere-Host verfügbaren physischen Netzwerkkarten."

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

  4. "Überprüfen Sie, ob der TCPIP-Stack für iSCSI verfügbar ist" .

  5. "Überprüfen Sie, ob iSCSI-Portgruppen verfügbar sind" .

    • Normalerweise verwenden wir einen einzelnen virtuellen Switch mit mehreren Uplink-Ports.

    • Verwenden Sie eine 1:1-Adapterzuordnung.

  6. Stellen Sie sicher, dass die iSCSI-VMKernel-Adapter entsprechend der Anzahl der Netzwerkkarten aktiviert sind und dass IPs zugewiesen sind.

  7. "Binden Sie den iSCSI-Softwareadapter an den/die iSCSI-VMKernel-Adapter."

  8. "Bereitstellen des VMFS-Datenspeichers mit ONTAP Tools" . Wiederholen Sie diesen Schritt für alle Datenspeicher.

  9. "Überprüfen Sie die Unterstützung der Hardwarebeschleunigung."

Wie geht es weiter?

Nachdem diese Aufgaben abgeschlossen sind, ist der VMFS-Datenspeicher zur Bereitstellung virtueller Maschinen bereit.

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