vSphere VMFS 数据存储库—具有 ONTAP 的 iSCSI 存储后端
本节介绍如何使用 ONTAP iSCSI 存储创建 VMFS 数据存储库。
对于自动配置、请使用以下脚本: [Ansible]。
您需要的内容
-
管理 vSphere 环境和 ONTAP 所需的基本技能。
-
运行 { ontap_version } 的 ONTAP 存储系统( FAS/AFF/CVO/ONTAP Select/ASA )
-
ONTAP 凭据( SVM 名称,用户 ID 和密码)
-
iSCSI 的 ONTAP 网络端口, SVM 和 LUN 信息
-
vCenter Server 凭据
-
vSphere 主机信息
-
{ vsphere_version }
-
-
iSCSI VMKernel适配器IP信息
-
网络交换机
-
使用 ONTAP 系统网络数据端口并连接 vSphere 主机
-
为 iSCSI 配置的 VLAN
-
(可选)为 ONTAP 网络数据端口配置的链路聚合
-
-
适用于 VMware vSphere 的 ONTAP 工具已部署,配置并可随时使用
步骤
-
检查与的兼容性 "互操作性表工具( IMT )"。
-
完成以下 ONTAP 和 vSphere 任务。
ONTAP 任务
-
-
使用
ssystem license show
命令检查是否列出了 iSCSI 。 -
使用
license add -license-code < 许可证代码 >
添加许可证。
-
-
验证 iSCSI 网络逻辑接口在 SVM 上是否可用。
使用 GUI 创建 SVM 时,还会创建 iSCSI 网络接口。 -
使用
Network interface
命令查看或更改网络接口。建议每个节点使用两个 iSCSI 网络接口。 -
"创建 iSCSI 网络接口。" 您可以使用 default-data-blocks 服务策略。
-
"验证 data-iscsi 服务是否包含在服务策略中。" 您可以使用
network interface service-policy show
进行验证。 -
"创建并映射 LUN 。" 如果您使用适用于 VMware vSphere 的 ONTAP 工具,请跳过此步骤。对每个 LUN 重复此步骤。
VMware vSphere 任务
-
验证 iSCSI VLAN 是否至少有一个可用 NIC 。为了提高性能和容错能力,最好使用两个 NIC 。
-
"配置 iSCSI 启动程序。" 典型的使用情形是软件 iSCSI 启动程序。
-
-
我们通常使用具有多个上行链路端口的单个虚拟交换机。
-
使用 1 : 1 适配器映射。
-
-
验证是否已启用 iSCSI VMKernel 适配器以匹配 NIC 数量,以及是否已分配 IP 。
-
"使用 ONTAP 工具配置 VMFS 数据存储库"。对所有数据存储库重复此步骤。
下一步是什么?
完成这些任务后, VMFS 数据存储库便可用于配置虚拟机。
## 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