Skip to main content
NetApp Solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Almacén de datos VMFS de vSphere: Entorno de administración del almacenamiento iSCSI con ONTAP

Colaboradores

Acerca de esta tarea

En esta sección, se describe la creación de un almacén de datos VMFS con almacenamiento ONTAP iSCSI.

Para el aprovisionamiento automatizado, utilice uno de los siguientes scripts: [PowerShell], [Ansible], o. [Terraform].

Lo que necesita

  • Las habilidades básicas necesarias para gestionar un entorno de vSphere y ONTAP.

  • Un sistema de almacenamiento de ONTAP (FAS/AFF/CVO/ONTAP Select/ASA) que ejecute ONTAP 9,8 o versiones posteriores

  • Credenciales de ONTAP (nombre de SVM, ID de usuario y contraseña)

  • Información sobre los puertos de red de ONTAP, SVM y LUN para iSCSI

  • "Hoja de datos de configuración de iSCSI completada"

  • Credenciales de vCenter Server

  • Información sobre los hosts de vSphere

    • VSphere 7,0 o posterior

  • Información de IP del adaptador de VMkernel de iSCSI

  • Switches de red

    • Con los puertos de datos de red del sistema ONTAP y los hosts de vSphere conectados

    • VLAN configuradas para iSCSI

    • (Opcional) agregación de enlaces configurada para los puertos de datos de red ONTAP

  • Herramienta ONTAP para VMware vSphere puesta en marcha, configurada y lista para usar

Pasos

  1. Compruebe la compatibilidad con "Herramienta de matriz de interoperabilidad (IMT)".

  2. "Compruebe que la configuración de iSCSI es compatible."

  3. Complete las siguientes tareas de ONTAP y vSphere.

Tareas de ONTAP

  1. "Compruebe la licencia de ONTAP para iSCSI".

    1. Utilice la system license show Comando para comprobar si iSCSI aparece.

    2. Uso license add -license-code <license code> para añadir la licencia.

  2. "Compruebe que el protocolo iSCSI está habilitado en la SVM."

  3. Confirmar que las interfaces lógicas de red iSCSI están disponibles en la SVM.

    Nota Cuando se crea una SVM mediante la interfaz gráfica de usuario, también se crean interfaces de red iSCSI.
  4. Utilice la Network interface comando para ver o realizar cambios en la interfaz de red.

    Consejo Se recomiendan dos interfaces de red iSCSI por nodo.
  5. "Cree una interfaz de red iSCSI." Puede usar la política de servicio de bloques de datos predeterminada.

  6. "Comprobar que el servicio de datos iscsi está incluido en la normativa de servicio." Puede utilizar network interface service-policy show para verificar.

  7. "Compruebe que las tramas gigantes están habilitadas."

  8. "Cree y asigne la LUN." Omita este paso si utiliza herramientas de ONTAP para VMware vSphere. Repita este paso con cada LUN.

Tareas de VMware vSphere

  1. Verifique que hay al menos un NIC disponible para la VLAN iSCSI. Se prefieren dos NIC para mejorar el rendimiento y la tolerancia a fallos.

  2. "Identifique la cantidad de NIC físicas disponibles en el host vSphere."

  3. "Configure el iniciador de iSCSI." Un caso de uso típico es un iniciador iSCSI de software.

  4. "Compruebe que la pila TCPIP para iSCSI está disponible".

  5. "Compruebe que los grupos de puertos iSCSI estén disponibles".

    • Normalmente utilizamos un único switch virtual con varios puertos de enlace ascendente.

    • Utilice la asignación de adaptador 1:1.

  6. Compruebe que los adaptadores de VMkernel iSCSI están habilitados para coincidir con el número de NIC y que las IP están asignadas.

  7. "Vincule el adaptador de software iSCSI a los adaptadores de VMkernel iSCSI."

  8. "Aprovisione el almacén de datos VMFS con herramientas de ONTAP". Repita este paso para todos los almacenes de datos.

  9. "Comprobar la compatibilidad con la aceleración de hardware."

El futuro

Una vez completadas estas tareas, el almacén de datos VMFS estará listo para consumir para aprovisionar máquinas virtuales.

Libro de estrategia de 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