导入卷
您可以使用 tridentctl import
将现有存储卷作为 Kubernetes PV 导入。
支持卷导入的驱动程序
下表介绍了支持导入卷的驱动程序及其引入的版本。
驱动程序 | 版本。 |
---|---|
|
19.04 |
|
19.04 |
|
19.04 |
|
19.04 |
|
19.04 |
|
19.04 |
为什么应导入卷?
将卷导入到 Trident 的使用情形有多种:
-
对应用程序进行容器化并重复使用其现有数据集
-
为临时应用程序使用数据集的克隆
-
重建发生故障的 Kubernetes 集群
-
在灾难恢复期间迁移应用程序数据
导入的工作原理是什么?
卷导入过程使用永久性卷声明( PVC )文件创建 PVC 。PVC 文件应至少包含 name , namespace , accessModes 和 storageClassName 字段,如以下示例所示。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: my_claim namespace: my_namespace spec: accessModes: - ReadWriteOnce storageClassName: my_storage_class
使用 tridentctl
客户端导入现有存储卷。Trident 通过保留卷元数据并创建 PVC 和 PV 来导入卷。
$ tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
要导入存储卷,请指定包含该卷的 Astra Trident 后端的名称以及用于唯一标识存储上的卷的名称(例如: ONTAP FlexVol , Element Volume , CVS 卷路径)。存储卷必须允许读 / 写访问,并可由指定的 Astra Trident 后端访问。需要 ` -f` 字符串参数,并指定 YAML 或 JSON PVC 文件的路径。
当 Astra Trident 收到导入卷请求时,系统会在 PVC 中确定并设置现有卷大小。存储驱动程序导入卷后,系统将创建 PV ,并为其创建一个 Claims Ref 。在 PV 中,回收策略最初设置为 retain
。Kubernetes 成功绑定 PVC 和 PV 后,将更新回收策略以匹配存储类的回收策略。如果存储类的回收策略为 delete
,则在删除 PV 时,存储卷将被删除。
使用 ` -no-manage` 参数导入卷时, Trident 不会在对象的生命周期内对 PVC 或 PV 执行任何其他操作。由于 Trident 会忽略 ` -no-manage` 对象的 PV 和 PVC 事件,因此删除 PV 时不会删除存储卷。卷克隆和卷大小调整等其他操作也会被忽略。如果要对容器化工作负载使用 Kubernetes ,但希望在 Kubernetes 外部管理存储卷的生命周期,则此选项非常有用。
PVC 和 PV 中会添加一个标注,用于指示卷已导入以及 PVC 和 PV 是否已管理。不应修改或删除此标注。
Trident 19.07 及更高版本可处理 PV 的连接,并在导入卷时挂载该卷。对于使用早期版本的 Astra Trident 进行的导入,数据路径中不会执行任何操作,卷导入将不会验证是否可以挂载卷。如果卷导入出错(例如 StorageClass 不正确),您可以通过将 PV 上的回收策略更改为 retain
,删除 PVC 和 PV 并重试 volume import 命令来恢复。
ontap-nas
和 ontap-nas-flexgroup
导入
使用 ontap-nas
驱动程序创建的每个卷都是 ONTAP 集群上的一个 FlexVol 。使用 ontap-NAS
驱动程序导入 FlexVol 的工作原理相同。ONTAP 集群上已存在的 FlexVol 可以导入为 ONONTAP -NAS
PVC 。同样,可以将 FlexGroup vols 导入为 ontap-nas-flexgroup
PVC 。
要由 Trident 导入 ONTAP 卷,必须为 rw 类型。如果卷的类型为 DP ,则为 SnapMirror 目标卷;应先中断镜像关系,然后再将卷导入到 Trident 中。 |
ontap-NAS 驱动程序无法导入和管理 qtree 。ontap-nas 和 ontap-nas-flexgroup 驱动程序不允许使用重复的卷名称。
|
例如,要在名为 ontap_NAS
的后端导入名为 manage_volume
的卷,请使用以下命令:
$ 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
要导入名为 unmanageed_volume
的卷(位于 ontap_NAS 后端
上),而 Trident 不会管理该卷,请使用以下命令:
$ 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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
使用 ` -no-manage` 参数时, Trident 不会重命名卷或验证卷是否已挂载。如果卷未手动挂载,则卷导入操作将失败。
先前存在的使用自定义 UnixPermissions 导入卷的错误已得到修复。您可以在 PVC 定义或后端配置中指定 unixPermissions ,并指示 Astra Trident 相应地导入卷。 |
ontap-san
导入
Astra Trident 还可以导入包含单个 LUN 的 ONTAP SAN FlexVol 。这与 ontap-san
驱动程序一致,该驱动程序会为 FlexVol 中的每个 PVC 和 LUN 创建一个 FlexVol 。您可以像在其他情况下一样使用 tridentctl import
命令:
-
请输入
ontap-san
后端的名称。 -
提供需要导入的 FlexVol 的名称。请记住,此 FlexVol 仅包含一个必须导入的 LUN 。
-
提供必须与 ` -f` 标志结合使用的 PVC 定义路径。
-
可以选择对 PVC 进行管理,也可以选择不对其进行管理。默认情况下, Trident 将管理 PVC 并重命名后端的 FlexVol 和 LUN 。要作为非受管卷导入,请传递 ` -no-manage` 标志。
导入非受管 ontap-san 卷时,应确保 FlexVol 中的 LUN 名为 lun0 ,并已映射到具有所需启动程序的 igroup 。Astra Trident 会自动为受管导入处理此问题。
|
然后, Astra Trident 将导入 FlexVol 并将其与 PVC 定义关联。Astra Trident 还会将 FlexVol 重命名为 vc-<uid>
格式,并将 FlexVol 中的 LUN 重命名为 lun0
。
建议导入没有活动连接的卷。如果要导入当前使用的卷,请先克隆该卷,然后再执行导入。 |
示例
要导入 ontap_san_default
后端上存在的 ontap-san-managed
FlexVol ,请运行 tridentctl import
命令:
$ 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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
ONTAP 卷的类型必须为 RW ,才能由 Astra Trident 导入。如果卷的类型为 DP ,则为 SnapMirror 目标卷;在将卷导入到 Astra Trident 之前,应中断镜像关系。 |
element
导入
您可以使用 Trident 将 NetApp Element 软件 /NetApp HCI 卷导入到 Kubernetes 集群中。您需要提供 Astra Trident 后端的名称以及卷和 PVC 文件的唯一名称作为 tridentctl import
命令的参数。
$ 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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Element 驱动程序支持重复的卷名称。如果卷名称重复,则 Trident 的卷导入过程将返回错误。作为临时解决策,克隆卷并提供唯一的卷名称。然后导入克隆的卷。 |
gcp-cvs
导入
要在 GCP 中导入由 NetApp Cloud Volumes Service 支持的卷,请按卷路径而非名称来标识该卷。 |
要在后端导入名为 gcpcvs_yEppr
的 GCP-CVS
卷,并将卷路径设置为 adrot-joly-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 | +------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
卷路径是卷导出路径中: / 之后的部分。例如,如果导出路径为 10.0.0.1 : /adrot-joly-swift ,则卷路径为 adrot-joly-swift 。
|
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 | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
ANF 卷的卷路径位于: / 之后的挂载路径中。例如,如果挂载路径为 10.0.0.2 : /importvol1 ,则卷路径为 importvol1 。
|