본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

vSphere VMFS 데이터 저장소 - ONTAP를 사용하는 iSCSI 스토리지 백엔드

이 작업에 대해

이 섹션에서는 ONTAP iSCSI 스토리지를 사용하여 VMFS 데이터 저장소를 생성하는 방법에 대해 설명합니다.

자동 프로비저닝의 경우 다음 스크립트 중 하나를 사용합니다. [PowerShell], [Ansible], 또는 [Terraform].

필요한 것

  • vSphere 환경 및 ONTAP를 관리하는 데 필요한 기본 기술

  • {ONTAP_VERSION}을 실행하는 ONTAP 스토리지 시스템(FAS/AFF/CVO/ONTAP Select/ASA

  • ONTAP 자격 증명(SVM 이름, userID 및 암호)

  • iSCSI를 위한 ONTAP 네트워크 포트, SVM 및 LUN 정보

  • "완료된 iSCSI 구성 워크시트"

  • vCenter Server 자격 증명

  • vSphere 호스트 정보입니다

    • {vSphere_version}

  • iSCSI VMkernel 어댑터 IP 정보

  • 네트워크 스위치

    • ONTAP 시스템 네트워크 데이터 포트 및 연결된 vSphere 호스트를 사용합니다

    • iSCSI에 대해 구성된 VLAN입니다

    • (선택 사항) ONTAP 네트워크 데이터 포트에 대해 구성된 Link Aggregation입니다

  • 구축, 구성 및 바로 사용할 수 있는 VMware vSphere용 ONTAP 툴

단계

  1. 과의 호환성을 확인하십시오 "상호 운용성 매트릭스 툴(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. SVM에서 iSCSI 네트워크 논리 인터페이스를 사용할 수 있는지 확인합니다.

    참고 GUI를 사용하여 SVM을 생성할 때 iSCSI 네트워크 인터페이스도 생성됩니다.
  4. 네트워크 인터페이스를 보거나 변경하려면 네트워크 인터페이스 명령을 사용합니다.

    팁 노드당 두 개의 iSCSI 네트워크 인터페이스를 사용하는 것이 좋습니다.
  5. "iSCSI 네트워크 인터페이스를 생성합니다." 기본 데이터 블록 서비스 정책을 사용할 수 있습니다.

  6. "데이터 iSCSI 서비스가 서비스 정책에 포함되어 있는지 확인합니다." 네트워크 인터페이스 service-policy show를 사용하여 확인할 수 있습니다.

  7. "점보 프레임이 활성화되었는지 확인합니다."

  8. "LUN을 생성하고 매핑합니다." VMware vSphere용 ONTAP 툴을 사용하는 경우 이 단계를 건너뛰십시오. 각 LUN에 대해 이 단계를 반복합니다.

VMware vSphere 작업

  1. iSCSI VLAN에 사용할 수 있는 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