Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

导入卷

贡献者

您可以使用 tridentctl import 将现有存储卷作为 Kubernetes PV 导入。

概述和注意事项

您可以将卷导入到Trident中、以便:

  • 将应用程序容器化并重复使用其现有数据集

  • 对一个应用程序使用数据集的克隆

  • 重建发生故障的Kubrenetes集群

  • 在灾难恢复期间迁移应用程序数据

注意事项

导入卷之前、请查看以下注意事项。

  • Trident只能导入RW (读写)类型的ONTAP卷。DP (数据保护)类型的卷是SnapMirror目标卷。在将卷导入Trident之前、应先中断镜像关系。

  • 我们建议导入没有活动连接的卷。要导入当前使用的卷、请克隆此卷、然后执行导入。

    警告 这对于块卷尤其重要、因为Kubnetes不会意识到先前的连接、并且可以轻松地将活动卷连接到Pod。这可能会导致数据损坏。
  • 虽然 `StorageClass`必须在PVC上指定、但Trident在导入期间不使用此参数。创建卷期间会使用存储类根据存储特征从可用池中进行选择。由于卷已存在、因此导入期间不需要选择池。因此、即使卷位于与PVC中指定的存储类不匹配的后端或池中、导入也不会失败。

  • 现有卷大小在PVC中确定和设置。存储驱动程序导入卷后,系统将创建 PV ,并为其创建一个 Claims Ref 。

    • 回收策略最初设置为 retain 在PV中。Kubernetes 成功绑定 PVC 和 PV 后,将更新回收策略以匹配存储类的回收策略。

    • 存储类的回收策略为时 delete、删除PV时、存储卷将被删除。

  • 默认情况下、Trident管理PVC并在后端重命名FlexVol和LUN。您可以传递此 --no-manage`标志以导入非受管卷。如果使用 `--no-manage,则在对象的生命周期内,Trident不会对PVC或PV执行任何附加操作。删除PV后、不会删除存储卷、并且卷克隆和卷大小调整等其他操作也会被忽略。

    提示 如果要对容器化工作负载使用 Kubernetes ,但希望在 Kubernetes 外部管理存储卷的生命周期,则此选项非常有用。
  • PVC 和 PV 中会添加一个标注,用于指示卷已导入以及 PVC 和 PV 是否已管理。不应修改或删除此标注。

导入卷

您可以使用 tridentctl import 以导入卷。

步骤
  1. 创建永久性卷请求(PVC)文件(例如、 pvc.yaml)。PVC文件应包括 namenamespaceaccessModes,和 storageClassName。您也可以指定 unixPermissions 在PVC定义中。

    以下是最低规格示例:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: my_claim
      namespace: my_namespace
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: my_storage_class
    警告 请勿包含PV名称或卷大小等其他参数。这可能发生原因会使导入命令失败。
  2. 使用 `tridentctl import`命令指定包含卷的Trident后端的名称以及在存储上唯一标识卷的名称(例如:ONTAP FlexVol、Element卷、Cloud Volumes Service路径)。 `-f`指定PVC文件的路径需要参数。

    tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>

示例

查看以下卷导入示例、了解受支持的驱动程序。

ONTAP NAS和ONTAP NAS FlexGroup

Trident支持使用和 ontap-nas-flexgroup`驱动程序导入卷 `ontap-nas

备注
  • ontap-nas-economy 驱动程序无法导入和管理qtree。

  • ontap-nasontap-nas-flexgroup 驱动程序不允许使用重复的卷名称。

使用 ontap-nas 驱动程序创建的每个卷都是 ONTAP 集群上的一个 FlexVol 。使用 ontap-NAS 驱动程序导入 FlexVol 的工作原理相同。ONTAP 集群上已存在的 FlexVol 可以导入为 ONONTAP -NAS PVC 。同样,可以将 FlexGroup vols 导入为 ontap-nas-flexgroup PVC 。

ONTAP NAS示例

以下是受管卷和非受管卷导入的示例。

受管卷

以下示例将导入名为的卷 managed_volume 位于名为的后端 ontap_nas

tridentctl import volume ontap_nas managed_volume -f <path-to-pvc-file>

+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-bf5ad463-afbb-11e9-8d9f-5254004dfdb7 | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true    |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
非受管卷

使用参数时 --no-manage、Trident不会重命名卷。

以下示例导入 unmanaged_volume 在上 ontap_nas 后端:

tridentctl import volume nas_blog unmanaged_volume -f <path-to-pvc-file> --no-manage

+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-df07d542-afbc-11e9-8d9f-5254004dfdb7 | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | false   |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+

ONTAP SAN

Trident支持使用和 ontap-san-economy`驱动程序导入卷 `ontap-san

Trident可以导入包含单个LUN的ONTAP SAN FlexVol。这与驱动程序一致 ontap-san、该驱动程序会为FlexVol中的每个PVC和LUN创建一个FlexVol。Trident导入FlexVol并将其与PVC定义关联。

ONTAP SAN示例

以下是受管卷和非受管卷导入的示例。

受管卷

对于受管卷,Trident会将FlexVol重命名为格式,并将FlexVol中的LUN重命名 pvc-<uuid>`为 `lun0

以下示例将导入 ontap-san-managed 上存在的FlexVol ontap_san_default 后端:

tridentctl import volume ontapsan_san_default ontap-san-managed -f pvc-basic-import.yaml -n trident -d

+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE  | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
| pvc-d6ee4f54-4e40-4454-92fd-d00fc228d74a | 20 MiB | basic         | block    | cd394786-ddd5-4470-adc3-10c5ce4ca757 | online | true    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
非受管卷

以下示例导入 unmanaged_example_volume 在上 ontap_san 后端:

tridentctl import volume -n trident san_blog unmanaged_example_volume -f pvc-import.yaml --no-manage
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-1fc999c9-ce8c-459c-82e4-ed4380a4b228 | 1.0 GiB | san-blog      | block    | e3275890-7d80-4af6-90cc-c7a0759f555a | online | false   |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+

如果您将LUN映射到与Kubornetes节点IQN共享IQN的igroux、如以下示例所示、您将收到错误: LUN already mapped to initiator(s) in this group。您需要删除启动程序或取消映射LUN才能导入卷。

映射到iqn和集群iqn的LUN的图像。

Element

Trident支持使用驱动程序导入NetApp Element软件和NetApp HCI卷 solidfire-san

备注 Element 驱动程序支持重复的卷名称。但是、如果存在重复的卷名称、Trident将返回错误。作为临时解决策、克隆卷、提供唯一的卷名称并导入克隆的卷。
元素示例

以下示例将导入 element-managed 后端上的卷 element_default

tridentctl import volume element_default element-managed -f pvc-basic-import.yaml -n trident -d

+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE  | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
| pvc-970ce1ca-2096-4ecd-8545-ac7edc24a8fe | 10 GiB | basic-element | block    | d3ba047a-ea0b-43f9-9c42-e38e58301c49 | online | true    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+

Google 云平台

Trident支持使用驱动程序导入卷 gcp-cvs

备注 要在Google云平台中导入NetApp Cloud Volumes Service支持的卷、请按卷路径确定该卷。卷路径是卷的导出路径的一部分、位于之后 :/。例如、如果导出路径为 10.0.0.1:/adroit-jolly-swift、卷路径为 adroit-jolly-swift
Google Cloud Platform示例

以下示例将导入 gcp-cvs 后端上的卷 gcpcvs_YEppr 卷路径 adroit-jolly-swift

tridentctl import volume gcpcvs_YEppr adroit-jolly-swift -f <path-to-pvc-file> -n trident

+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE  | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
| pvc-a46ccab7-44aa-4433-94b1-e47fc8c0fa55 | 93 GiB | gcp-storage   | file     | e1a6e65b-299e-4568-ad05-4f0a105c888f | online | true    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+

Azure NetApp Files

Trident支持使用驱动程序导入卷 azure-netapp-files

备注 要导入Azure NetApp Files卷、请按卷路径确定该卷。卷路径是卷的导出路径的一部分、位于之后 :/。例如、如果挂载路径为 10.0.0.2:/importvol1、卷路径为 importvol1
Azure NetApp Files示例

以下示例将导入 azure-netapp-files 后端上的卷 azurenetappfiles_40517 卷路径 importvol1

tridentctl import volume azurenetappfiles_40517 importvol1 -f <path-to-pvc-file> -n trident

+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-0ee95d60-fd5c-448d-b505-b72901b3a4ab | 100 GiB | anf-storage   | file     | 1c01274f-d94b-44a3-98a3-04c953c9a51e | online | true    |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+