GKE使用GCP只读持久磁盘PV时无法以只读方式挂载/dev/sdb
问题根因
你遇到的cannot mount /dev/sdb read-only报错,本质是待挂载的ext4格式持久磁盘之前有未清理的挂载日志残留,直接只读挂载时系统会尝试重放日志恢复一致性,但只读模式下无法写入日志导致挂载失败。你手动测试用的noload参数作用就是跳过ext4的日志重放步骤,直接挂载磁盘。
解决方案
直接在PersistentVolume(PV)的定义中添加mountOptions字段配置额外挂载参数即可,修改后的PV配置如下:
apiVersion: v1 kind: PersistentVolume metadata: name: data-and-models-pv namespace: lipsync spec: storageClassName: "" capacity: storage: 10Gi accessModes: - ReadOnlyMany # 新增挂载参数配置 mountOptions: - ro - noload - defaults claimRef: namespace: lipsync name: data-and-models-pvc gcePersistentDisk: pdName: g-lipsync-data-and-models fsType: ext4 readOnly: true
如果你后续切换为GKE PD CSI驱动(也就是你当前注释掉的csi配置段),配置方式完全一致,同样在PV的spec下添加上述mountOptions字段即可。
注意事项
- 配置生效前需要先删除原有PV、PVC,再重新apply新的配置
- 请确认该持久磁盘当前没有被任何实例以读写模式挂载,跳过日志重放可能会读到未刷入磁盘的脏数据
- 如果后续需要以读写模式使用该磁盘,建议先将磁盘挂载到单个节点以读写模式启动、正常执行卸载操作清理日志后,再切换为只读多节点挂载模式,避免出现数据一致性问题
内容的提问来源于stack exchange,提问作者LemmeTestThat
相关产品推荐
相关产品推荐

