10장. 외부 모드에서 CephFS PVC 생성 문제 해결
Red Hat Ceph Storage 클러스터를 4.1.1보다 낮은 버전에서 최신 릴리스로 업데이트하고 새로 배포된 클러스터가 아닌 경우 외부 모드에서 CephFS PVC 생성을 활성화하려면 Red Hat Ceph Storage 클러스터에서 CephFS 풀의 애플리케이션 유형을 수동으로 설정해야 합니다.
CephFS pvc가
Pending상태인지 확인합니다.# oc get pvc -n <namespace>출력 예:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ngx-fs-pxknkcix20-pod Pending ocs-external-storagecluster-cephfs 28h [...]describe출력을 확인하여 각 pvc에 대한 이벤트를 확인합니다.예상되는 오류 메시지는
cephfs_metadata/csi.volumes.default/csi.volume.volume.pvc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx: (1) Operation not permitted)입니다.# oc describe pvc ngx-fs-pxknkcix20-pod -n nginx-file출력 예:
Name: ngx-fs-pxknkcix20-pod Namespace: nginx-file StorageClass: ocs-external-storagecluster-cephfs Status: Pending Volume: Labels: <none> Annotations: volume.beta.kubernetes.io/storage-provisioner: openshift-storage.cephfs.csi.ceph.com Finalizers: [kubernetes.io/pvc-protection] Capacity: Access Modes: VolumeMode: Filesystem Mounted By: ngx-fs-oyoe047v2bn2ka42jfgg-pod-hqhzf Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 107m (x245 over 22h) openshift-storage.cephfs.csi.ceph.com_csi-cephfsplugin-provisioner-5f8b66cc96-hvcqp_6b7044af-c904-4795-9ce5-bf0cf63cc4a4 (combined from similar events): failed to provision volume with StorageClass "ocs-external-storagecluster-cephfs": rpc error: code = Internal desc = error (an error (exit status 1) occurred while running rados args: [-m 192.168.13.212:6789,192.168.13.211:6789,192.168.13.213:6789 --id csi-cephfs-provisioner --keyfile=stripped -c /etc/ceph/ceph.conf -p cephfs_metadata getomapval csi.volumes.default csi.volume.pvc-1ac0c6e6-9428-445d-bbd6-1284d54ddb47 /tmp/omap-get-186436239 --namespace=csi]) occurred, command output streams is ( error getting omap value cephfs_metadata/csi.volumes.default/csi.volume.pvc-1ac0c6e6-9428-445d-bbd6-1284d54ddb47: (1) Operation not permitted)<
cephfs 메타데이터 풀 이름>(여기서cephfs_metadata) 및 <cephfs 데이터 풀 이름>(여기서cephfs_data)의 설정을 확인합니다. 명령을 실행하려면 Red Hat Ceph Storage 클라이언트 노드에jq를 사전 설치해야 합니다.# ceph osd pool ls detail --format=json | jq '.[] | select(.pool_name| startswith("cephfs")) | .pool_name, .application_metadata' "cephfs_data" { "cephfs": {} } "cephfs_metadata" { "cephfs": {} }CephFS 풀의 애플리케이션 유형을 설정합니다.
Red Hat Ceph Storage 클라이언트 노드에서 다음 명령을 실행합니다.
# ceph osd pool application set <cephfs metadata pool name> cephfs metadata cephfs# ceph osd pool application set <cephfs data pool name> cephfs data cephfs
설정이 적용되었는지 확인합니다.
# ceph osd pool ls detail --format=json | jq '.[] | select(.pool_name| startswith("cephfs")) | .pool_name, .application_metadata' "cephfs_data" { "cephfs": { "data": "cephfs" } } "cephfs_metadata" { "cephfs": { "metadata": "cephfs" } }CephFS PVC 상태를 다시 확인합니다. 이제 PVC가
Bound상태여야 합니다.# oc get pvc -n <namespace>출력 예:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ngx-fs-pxknkcix20-pod Bound pvc-1ac0c6e6-9428-445d-bbd6-1284d54ddb47 1Mi RWO ocs-external-storagecluster-cephfs 29h [...]