本页介绍了如何在 ONTAP 模式下管理 ONTAP。
出于安全和日志记录方面的考虑,NetApp Volumes 不允许直接连接到 ONTAP 管理 LIF。因此,您无法使用 SystemManager 或 SSH 等工具直接管理 ONTAP 系统。不过,您可以使用 Google 代理 API 提交 ONTAP 操作,以进行 ONTAP REST API 调用,从而将操作提交到 ONTAP 模式存储池。
管理工具(例如 Terraform)使用 Google API 代理来管理 ONTAP 资源。
使用 Google 代理 API 进行 ONTAP REST API 调用
NetApp Volumes 为每个 Flex Unified ONTAP 模式存储池提供一个 Google API 端点,让您可以向底层 ONTAP 集群发送 ONTAP REST API 调用。这样,您就可以使用 API 控制 ONTAP 功能。
对 ONTAP 代理的调用必须使用以下网址格式:
https://netapp.googleapis.com/v1beta1/projects/PROJECT/locations/LOCATION/storagePools/POOL_NAME/ontap/ONTAP_REST_URL
此网址包含以下元素:
基准网址:
https://netapp.googleapis.com/v1beta1/projects存储池的 Google URN:/
PROJECT/locations/LOCATION/storagePools/POOL_NAME请替换以下信息:
PROJECT:您的project ID或编号。LOCATION:可用区级池的可用区名称或区域级池的区域。POOL_NAME:池的名称。
ONTAP REST API 路径:/ontap/
ONTAP_REST_URL。 如需了解详情,请参阅 ONTAP REST API 参考文档。
列出存储池的所有卷
以下示例展示了完整的网址,用于列出项目 myproject 中存储池 us-central1-a 内 mypool 的所有卷。
https://netapp.googleapis.com/v1beta1/projects/myproject/locations/us-central1-a/storagePools/mypool/ontap/api/storage/volumes
与所有 Google API 调用一样,此调用必须经过身份验证。以下 CLI 示例会获取 API 令牌,然后使用 curl 调用网址以列出池中的所有卷:
TOKEN=$(gcloud auth print-access-token) curl --location 'https://netapp.googleapis.com/v1beta1/projects/myproject/locations/us-central1-a/storagePools/mypool/ontap/api/storage/volumes'
--header "Authorization: Bearer $TOKEN"
--header "Content-Type: application/json"
创建卷
本部分介绍了如何使用 ONTAP REST API 在现有 Flex Unified ONTAP 模式存储池(由 URN /projects/myproject/locations/us-central1-a/storagePools/mypool 标识)中创建名为 myvolume 的卷。
如需创建卷,请参阅 ONTAP REST API 在线文档。在文档中,前往存储部分,然后展开管理存储卷。 本部分提供了几个示例。
按照以下说明创建卷。
确定 ONTAP REST API 端点。
在 NetApp Volumes 中使用基本示例时,所需的 ONTAP API 端点为
/api/storage/volumes。此端点会创建以下网址:https://netapp.googleapis.com/v1beta1/projects/myproject/locations/us-central1-a/storagePools/mypool/ontap/api/storage/volumes。构建请求载荷。
使用 ONTAP 文档中的示例载荷来匹配您的特定环境。例如:
{ "name": "vol1", "aggregates": [ { "name": "aggr1" } ], "svm": { "name": "vs1" } }创建卷时,请使用
name字段分配卷名称。卷创建载荷需要聚合的名称和 NetApp Volumes 在 ONTAP 模式池创建期间分配的存储虚拟机 (SVM) 的名称。在 ONTAP 模式下,每个存储池都有一个 SVM 和一个存储聚合。您可以通过查询 ONTAP 来检索所有 SVM 的相关信息。如需检索 SVM 和聚合名称,请执行以下操作:
使用
ontap_fields进行字段选择:在 NetApp Volumes ONTAP 模式池中,使用查询参数ontap_fields=而不是标准 ONTAPfields=参数来指定所请求的字段。可选:使用
jq提取字段:以下示例使用 jq 开源工具从 JSON 响应中提取name(SVM 名称)和aggregates,这对于在 shell 脚本中进行处理非常有用。TOKEN=$(gcloud auth print-access-token) curl --location 'https://netapp.googleapis.com/v1beta1/projects/myproject/locations/us-central1-a/storagePools/mypool/ontap/api/svm/svms?ontap_fields=name,aggregates' \ --header "Authorization: Bearer $TOKEN" \ --header "Content-Type: application/json" | jq '.rawResponse.records[] | {name: .name, aggregates: .aggregates[].name}'示例响应:
{ "name": "gcnv-7cf6ee41c1a94f0-svm-01", "aggregates": "aggr1" }
执行卷创建 API 调用。
使用聚合名称 (
aggr1) 和 SVM 名称 (gcnv-7cf6ee41c1a94f0-svm-01) 创建最终的卷创建载荷,并提交 API 调用。请注意,对于 NetApp Volumes,ONTAP API 载荷必须封装在body: {}信封内。以下示例创建了一个名为
myvolume的卷,其大小为 2 GB:curl --location 'https://netapp.googleapis.com/v1beta1/projects/myproject/locations/us-central1-a/storagePools/mypool/ontap/api/storage/volumes' \ --header "Authorization: Bearer $TOKEN" \ --header "Content-Type: application/json" \ --data '{ "body": { "name": "myvolume", "aggregates": [ { "name": "aggr1" } ], "svm": { "name": "gcnv-7cf6ee41c1a94f0-svm-01" }, "size": "2GB" } }'卷创建支持许多可选参数,例如
size。例如,载荷指定的大小为 2 GB。资源的文档页面会列出所有可用参数,包括必需参数和可选参数。它还提供了载荷和响应正文的详细示例。监控 ONTAP 作业。
大多数 ONTAP API 调用(例如创建或更新资源的
POST或PATCH操作)不会同步运行。相反,这些调用会返回 ONTAP 作业资源,如卷创建示例所示。作业响应示例:
{ "body": { "job": { "_links": { "self": { "href": "curl --location 'https://netapp.googleapis.com/v1beta1/projects/myproject/locations/us-central1-a/storagePools/mypool/ontap/api/cluster/jobs/15be1c46-fd2c-11f0-b3c2-7f15697be61c' \ --header "Authorization: Bearer $TOKEN" \ --header "Content-Type: application/json"" } }, "uuid": "15be1c46-fd2c-11f0-b3c2-7f15697be61c" } } }如需检查作业的状态,请使用返回的
uuid查询作业资源:curl --location 'https://netapp.googleapis.com/v1beta1/projects/myproject/locations/us-central1-a/storagePools/mypool/ontap/api/cluster/jobs/15be1c46-fd2c-11f0-b3c2-7f15697be61c' \ --header "Authorization: Bearer $TOKEN" \ --header "Content-Type: application/json"
示例响应:
{ "rawResponse": { "uuid": "15be1c46-fd2c-11f0-b3c2-7f15697be61c", "description": "POST /api/storage/volumes/15be0ad9-fd2c-11f0-b3c2-7f15697be61c", "state": "success", "message": "success", "code": 0, "start_time": "2026-01-29T16:03:43+00:00", "end_time": "2026-01-29T16:03:44+00:00", "svm": { "name": "gcnv-7cf6ee41c1a94f0-svm-01", "uuid": "8a29c15d-fb31-11f0-ab03-03e1bb49206d" } } }如果
state为success,则创建卷。此工作流示例将引导您在 ONTAP REST API 文档中查找 ONTAP 操作。本教程还介绍了如何创建所需的载荷格式,以及如何使用 Google API 将其提交到存储池。最后,它演示了如何监控 ONTAP 作业,直到资源创建完成。 采用此方法,您可以控制存储池的大多数 ONTAP 设置。
允许的 ONTAP 操作
通过 API 或 CLI 代理访问池时,您拥有的权限有限,无法运行所有 ONTAP 命令。这样可保护系统的完整性。对于某些 API,系统会过滤 API 请求和响应载荷。例如,由于 NetApp Volumes 按逻辑容量计费,因此系统会阻止用于配置物理容量的参数。如果您发送不允许的参数,API 会返回错误。
删除 ONTAP 模式池
如需删除 ONTAP 模式的池,您必须先删除该池中的所有卷。