3.3. 持久性卷(PV)


每个 PV 都会包括一个 specstatus,它们分别代表卷的规格和状态,例如:

PersistentVolume 对象定义示例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0001 1
spec:
  capacity:
    storage: 5Gi 2
  accessModes:
    - ReadWriteOnce 3
  persistentVolumeReclaimPolicy: Retain 4
  ...
status:
  ...

1
持久性卷的名称。
2
卷可以使用的存储容量。
3
访问模式,用来指定读写权限及挂载权限。
4
重新声明策略,指定在资源被释放后如何处理它。

3.3.1. PV 类型

OpenShift Container Platform 支持以下持久性卷插件:

  • AWS Elastic Block Store (EBS)
  • AWS Elastic File Store (EFS)
  • Azure Disk
  • Azure File
  • Cinder
  • Fibre Channel
  • GCP 持久性磁盘
  • GCP Filestore
  • IBM Power Virtual Server Block
  • IBM® VPC Block
  • HostPath
  • iSCSI
  • 本地卷
  • NFS
  • OpenStack Manila
  • Red Hat OpenShift Data Foundation
  • CIFS/SMB
  • VMware vSphere

3.3.2. 容量

一般情况下,一个持久性卷(PV)有特定的存储容量。这可以通过使用 PV 的 capacity 属性来设置。

目前,存储容量是唯一可以设置或请求的资源。以后可能会包括 IOPS 、 throughput 等属性。

3.3.3. 访问模式

一个持久性卷可以以资源供应商支持的任何方式挂载到一个主机上。不同的供应商具有不同的功能,每个 PV 的访问模式可以被设置为特定卷支持的特定模式。例如:NFS 可以支持多个读写客户端,但一个特定的 NFS PV 可能会以只读方式导出。每个 PV 都有自己一组访问模式来描述指定的 PV 功能。

声明会与有类似访问模式的卷匹配。用来进行匹配的标准只包括访问模式和大小。声明的访问模式代表一个请求。比声明要求的条件更多的资源可能会匹配,而比要求的条件更少的资源则不会被匹配。例如:如果一个声明请求 RWO,但唯一可用卷是一个 NFS PV(RWO+ROX+RWX),则该声明与这个 NFS 相匹配,因为它支持 RWO。

系统会首先尝试直接匹配。卷的模式必须与您的请求匹配,或包含更多模式。大小必须大于或等于预期值。如果两个卷类型(如 NFS 和 iSCSI)有相同的访问模式,则一个要求这个模式的声明可能会与其中任何一个进行匹配。不同的卷类型之间没有匹配顺序,在同时匹配时也无法选择特定的一个卷类型。

所有有相同模式的卷都被分组,然后按大小(由小到大)进行排序。绑定程序会获取具有匹配模式的组群,并按容量顺序进行查找,直到找到一个大小匹配的项。。

重要

卷访问模式描述了卷功能。它们不会被强制限制。存储供应商会最终负责处理由于资源使用无效导致的运行时错误。供应商中的错误会在运行时作为挂载错误显示。

例如,NFS 提供 ReadWriteOnce 访问模式。如果要使用卷的 ROX 功能,请将声明标记为 ReadOnlyMany

iSCSI 和 Fibre Channel(光纤通道)卷目前没有隔离机制。您必须保证在同一时间点上只在一个节点使用这些卷。在某些情况下,比如对节点进行 drain 操作时,卷可以被两个节点同时使用。在排空节点前,删除使用卷的 pod。

下表列出了访问模式:

表 3.1. 访问模式
访问模式CLI 缩写描述

ReadWriteOnce

RWO

卷只可以被一个节点以读写模式挂载。

ReadWriteOncePod [1]

RWOP

卷可以被一个单独的节点上的单个 pod 以读写模式挂载。

ReadOnlyMany

ROX

卷可以被多个节点以只读形式挂载。

ReadWriteMany

RWX

卷可以被多个节点以读写模式挂载。

  1. RWOP 使用 SELinux 挂载功能。此功能依赖于驱动程序,在 ODF、AWS EBS、Azure Disk、GCP PD、IBM VPC Block、Cinder 和 vSphere 中默认启用。如需第三方驱动程序,请联系您的存储厂商。
表 3.2. 支持的持久性卷访问模式
卷插件ReadWriteOnce [1]ReadWriteOncePodReadOnlyManyReadWriteMany

AWS EBS [2]

 ✅

 ✅

AWS EFS

 ✅

 ✅

 ✅

 ✅

Azure File

 ✅

 ✅

 ✅

Azure Disk

 ✅

 ✅

CIFS/SMB

 ✅

 ✅

 ✅

 ✅

Cinder

 ✅

 ✅

Fibre Channel

 ✅

 ✅

  ✅ [3]

GCP 持久性磁盘

 ✅

GCP Filestore

 ✅

 ✅

 ✅

HostPath

 ✅

IBM Power Virtual Server 磁盘

 ✅

 ✅

  ✅

IBM® VPC Disk

 ✅

iSCSI

 ✅

 ✅

  ✅ [3]

本地卷

 ✅

LVM 存储

 ✅

 ✅

NFS

 ✅

 ✅

 ✅

OpenStack Manila

 ✅

Red Hat OpenShift Data Foundation

 ✅

 ✅

VMware vSphere

 ✅

  ✅ [4]

  1. ReadWriteOnce(RWO)卷不能挂载到多个节点上。如果节点失败,系统不允许将附加的 RWO 卷挂载到新节点上,因为它已经分配给了故障节点。如果因此遇到多附件错误消息,请强制在关闭或崩溃的节点上删除 pod,以避免关键工作负载中的数据丢失,例如在附加动态持久性卷时。
  2. 为依赖 AWS EBS 的 pod 使用重新创建的部署策略。
  3. 只有原始块卷支持 ReadWriteMany (RWX) 访问模式用于光纤通道和 iSCSI。如需更多信息,请参阅 "Block volume support"。
  4. 如果底层 vSphere 环境支持 vSAN 文件服务,则 OpenShift Container Platform 安装的 vSphere Container Storage Interface (CSI) Driver Operator 支持 provisioning of ReadWriteMany (RWX )卷。如果您没有配置 vSAN 文件服务,且您请求 RWX,则卷将无法被创建,并记录错误。如需更多信息,请参阅"使用 Container Storage Interface" "VMware vSphere CSI Driver Operator"。

3.3.4. 阶段

卷可以处于以下几个阶段:

表 3.3. 卷阶段
阶段描述

Available

可用资源,还未绑定到任何声明。

Bound

卷已绑定到一个声明。

Released

以前使用这个卷的声明已被删除,但该资源还没有被集群重新声明。

Failed

卷的自动重新声明失败。

您可以运行以下命令来查看绑定到 PV 的 PVC 名称:

$ oc get pv <pv-claim>

3.3.4.1. 挂载选项

您可以使用属性 mountOptions 在挂载 PV 时指定挂载选项。

例如:

挂载选项示例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0001
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  mountOptions: 1
    - nfsvers=4.1
  nfs:
    path: /tmp
    server: 172.17.0.2
  persistentVolumeReclaimPolicy: Retain
  claimRef:
    name: claim1
    namespace: default

1
在将 PV 挂载到磁盘时使用指定的挂载选项。

以下 PV 类型支持挂载选项:

  • AWS Elastic Block Store (EBS)
  • Azure Disk
  • Azure File
  • Cinder
  • GCE Persistent Disk
  • iSCSI
  • 本地卷
  • NFS
  • Red Hat OpenShift Data Foundation(仅限 Ceph RBD)
  • CIFS/SMB
  • VMware vSphere
注意

Fibre Channel 和 HostPath PV 不支持挂载选项。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.