首页/云/Kubernetes 速查/存储访问模式解读
配置与存储54 条

存储访问模式解读

RWO/ROX/RWX/RWOP 描述挂载语义而不是权限开关:是否支持由存储驱动决定,共享文件系统支持 RWX,块存储多数只支持 RWO。

Kubernetes 速查云更新于 2026-10-13

概念定位

访问模式描述的是「卷能被怎样挂载使用」,不是文件权限开关:RWO 是单节点读写,ROX 是多节点只读,RWX 是多节点读写,RWOP 是仅单个 Pod 读写。适用平台是 Kubernetes。关键认知有两点:其一,某个模式能不能用由底层存储驱动决定(块存储多数只支持 RWO,共享文件系统才支持 RWX);其二,RWO 的「单节点」语义意味着同一节点上的多个 Pod 可以同时挂载同一个卷。

基本信息

适用平台Kubernetes,PVC 的 spec.accessModes 与 PV 的 spec.accessModes
四种模式ReadWriteOnce、ReadOnlyMany、ReadWriteMany、ReadWriteOncePod
决定方底层驱动能力,PVC 只做声明
校验时机绑定与挂载时校验,不满足则 PVC 无法绑定或 Pod 起不来

典型使用场景

  • 数据库持久化:云盘类存储用 RWO,单节点读写即可满足
  • 共享静态资源:NFS 或 CephFS 提供 RWX,多副本同时读取配置或上传目录
  • 只读分发:把模型文件、镜像数据以 ROX 挂给多个节点
  • 避免同卷多 Pod 冲突:用 RWOP 明确只允许一个 Pod 挂载
  • 存储选型评审:先确认业务需要的访问模式,再反推可选的存储类型

声明

声明
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: fast-ssd
  resources:
    requests:
      storage: 50Gi

核对

核对
kubectl get pvc mysql-data -o jsonpath='{.spec.accessModes}'    # PVC 声明的模式
kubectl get pv <pv-name> -o jsonpath='{.spec.accessModes}'         # PV 支持的模式
kubectl get storageclass fast-ssd -o yaml | grep -i -A3 volumeBindingMode
kubectl describe pvc mysql-data | grep -A5 Events                  # 模式不匹配时的报错
kubectl get pvc -A -o custom-columns='NS:.metadata.namespace,NAME:.metadata.name,MODES:.spec.accessModes'

四种模式对照

模式含义常见支持
ReadWriteOnce (RWO)单节点读写挂载(同节点多 Pod 可共享)云盘、块存储、本地盘
ReadOnlyMany (ROX)多节点只读挂载部分文件与块存储驱动
ReadWriteMany (RWX)多节点读写挂载NFS、CephFS 等共享文件系统
ReadWriteOncePod (RWOP)仅单个 Pod 读写(1.22 起引入)支持该语义的 CSI 驱动
访问模式是声明不是保证:驱动不支持时不会静默降级,而是 PVC 绑定失败或 Pod 挂载报错,选型前先看驱动的能力矩阵。
RWOP 的粒度比 RWO 更细(单 Pod 而非单节点),适合需要严格防止并发写入又不希望同节点多 Pod 共享的场景。

易错点

  • 按字面理解 RWO 等于只能一个 Pod:实际是单节点语义,同一节点上多个 Pod 可以同时挂载,容易造成并发写入的意外
  • 用云盘供 RWX:驱动不支持时 PVC 创建失败或行为异常,先确认驱动能力矩阵
  • 以为 ROX 能防止程序写:只读是挂载层限制,程序若尝试写入会报 IO 错误,应同时约束应用行为
  • 在 PVC 已绑定后修改访问模式:多数驱动不支持原地变更,需要新建 PVC 并迁移数据

数据来源与参考

  • Kubernetes 官方文档 · Persistent Volumes(访问模式)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌