Gen-1 프로필에서 Gen-2 프로필로 Block Storage for VPC 볼륨 마이그레이션하기
가상 사설 클라우드
Block Storage for VPC 볼륨을 1세대(계층 기반) 프로필에서 2세대(소프트웨어 정의 성능) 프로필로 마이그레이션하여 성능 향상, 동적 IOPS 조정, 비용 최적화의 이점을 활용하세요.
프로필 생성에 대한 이해
Block Storage for VPC 는 1세대(계층 기반)에서 2세대(소프트웨어 정의 성능) 프로필로 진화했습니다.
- 1세대(티어 기반)
- IOPS는 볼륨 크기를 기준으로 계산됩니다. 자세한 내용은 Block Storage 프로필을 참조하세요.
- 2세대(SDP)
- 볼륨 크기와 무관한 사용자 지정 IOPS. 자세한 내용은 SDP Block Storage 프로필을 참조하세요.
블록 스토리지 프로필 및 해당 기능에 대한 최신 정보는 ‘ Block Storage 프로필’을 참조하십시오.
시작하기 전에
볼륨을 마이그레이션하기 전에 다음 단계를 완료하세요.
- IBM Cloud CLI를 설치하십시오.
- 클러스터에
kubectl또는oc액세스 권한이 있는지 확인합니다. - VPC 블록 CSI 드라이버 애드온이 5.0 버전 이상인지 확인합니다. 버전을 확인하려면 다음 명령을 실행하세요. IBM MobileFirst Platform Command Line Interface
oc get deployment -n kube-system vpc-block-csi-controller -o jsonpath='{.spec.template.spec.containers[0].image}' - VPC 블록 CSI 드라이버 애드온이 설치되어 있는지 확인합니다. 자세한 내용은 VPC 블록 CSI 드라이버 애드온 설치하기를 참조하세요.
- VPC 블록 CSI 드라이버 애드온이 구성되어 있는지 확인합니다. 자세한 내용은 VPC 블록 CSI 드라이버 애드온 구성을 참조하세요.
- VPC 블록 CSI 드라이버 애드온이 실행 중인지 확인합니다. 자세한 내용은 VPC 블록 CSI 드라이버 애드온 확인을 참조하세요.
- VPC 블록 CSI 드라이버 애드온이 최신 버전인지 확인합니다. 자세한 내용은 VPC 블록 CSI 드라이버 애드온 업그레이드하기를 참조하세요.
- 현재 성능 요구 사항을 문서화하세요.
- 데이터의 백업 또는 스냅샷을 만듭니다. 자세한 내용은 Block Storage for VPC 클러스터 애드온으로 스냅샷 설정하기를 참조하세요.
마이그레이션할 볼륨 식별
Gen-1 블록 스토리지 프로필을 사용하는 PVC를 찾습니다.
-
클러스터의 모든 블록 스토리지 PVC를 나열합니다.
oc get pvc --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,STORAGECLASS:.spec.storageClassName,STATUS:.status.phase | grep vpc-block -
PVC에서 VPC 볼륨 ID를 가져옵니다.
PV_NAME=$(oc get pvc <pvc-name> -n <namespace> -o jsonpath='{.spec.volumeName}') VOLUME_ID=$(oc get pv $PV_NAME -o jsonpath='{.spec.csi.volumeHandle}') echo "Volume ID: $VOLUME_ID"출력 예
Volume ID: r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4
현재 볼륨 구성 확인
-
현재 블록 볼륨 프로필 및 구성을 확인합니다.
ibmcloud is vol $VOLUME_ID마이그레이션 전 출력 예시
ID r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4 Name pvc-d4a2b016-a5e4-46de-9214-a64f5fc8e344 Status available Attachment state attached Capacity 100 IOPS 3000 Bandwidth(Mbps) 393 Profile 5iops-tier Storage Generation 1 Adjustable IOPS false Busy false -
출력에서 다음 값에 주목하세요. 이를 사용하여 마이그레이션이 성공했는지 확인할 수 있습니다.
- 프로필:
5iops-tier( Gen-1 ) - 스토리지 생성:
1 - 조정 가능한 IOPS:
false
- 프로필:
마이그레이션 시작
마이그레이션 프로세스는 볼륨이 포드에 연결된 상태로 유지되고 애플리케이션이 계속 실행되는 동안 백그라운드에서 실행됩니다. IOPS는 SDP 기본값으로 자동 조정되며, 이 과정은 일반적으로 5~15분 정도 소요됩니다.
-
SDP 프로필로 마이그레이션을 시작합니다.
ibmcloud is volume-job-create $VOLUME_ID --profile sdp
마이그레이션 진행 상황 모니터링
-
마이그레이션 작업 상태를 확인하십시오. 출력에
Status: updating및Busy: true이 표시되면 마이그레이션이 진행 중입니다. 출력에Status: available및Busy: false이 표시되면 마이그레이션이 완료된 것입니다.ibmcloud is volume-jobs $VOLUME_ID -
볼륨 상태를 확인합니다.
watch -n 30 "ibmcloud is vol $VOLUME_ID | grep -E 'Status|Busy|Profile'"마이그레이션 중 출력 예시
Status updating Busy true Profile 5iops-tier
마이그레이션 완료 확인
-
볼륨이 Gen-2 프로필을 사용하고 있는지 확인합니다.
ibmcloud is vol $VOLUME_ID마이그레이션 후 출력 예시
ID r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4 Name pvc-d4a2b016-a5e4-46de-9214-a64f5fc8e344 Status available Attachment state attached Capacity 100 IOPS 4000 Bandwidth(Mbps) 1000 Profile sdp Storage Generation 2 Adjustable IOPS true Adjustable Capacity States unattached,attached Adjustable IOPS States unattached,attached Busy false -
다음 성공 지표를 확인합니다:
- 프로파일:
sdp - 스토리지 생성:
2 - 조정 가능한 IOPS:
true - IOPS: 증가(예: 3000에서 4000으로 증가)
- 대역폭: 개선됨
- 프로파일:
PersistentVolume 메타데이터 업데이트하기
-
Gen-2 프로필을 반영하도록 PV 메타데이터를 업데이트합니다.
oc patch pv $PV_NAME --type='json' -p='[ {"op": "replace", "path": "/spec/storageClassName", "value": "ibmc-vpc-block-sdp"}, {"op": "replace", "path": "/spec/csi/volumeAttributes/profile", "value": "sdp"}, {"op": "replace", "path": "/spec/csi/volumeAttributes/iops", "value": "4000"} ]' -
업데이트를 확인하십시오.
oc get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'예상 출력
ibmc-vpc-block-sdpPVC에는 원래의 StorageClass 이름이 계속 표시됩니다. PVC의
storageClassName필드는 변경할 수 없기 때문에 이 동작이 예상됩니다. 실제 스토리지 프로필은 이 단계에서 업데이트한 PV에 의해 결정됩니다.
애플리케이션 유효성 검사
마이그레이션 후 애플리케이션이 올바르게 작동하는지 확인합니다.
-
팟(Pod) 상태를 확인하십시오. 모든 파드가 ‘
Running’ 상태인지 확인하십시오.oc get pods -n <namespace> -
볼륨 첨부 파일을 확인합니다. 볼륨이 올바르게 마운트되었는지 확인합니다.
oc describe pod <pod-name> -n <namespace> | grep -A 5 "Volumes:" -
애플리케이션 로그를 확인합니다. 저장소 또는 I/O 작업과 관련된 오류를 찾아보세요.
oc logs <pod-name> -n <namespace> --tail=50 -
해당되는 경우 애플리케이션 엔드포인트를 테스트합니다. 애플리케이션이 올바르게 응답하는지 확인합니다.
curl -I https://<app-endpoint>/health
Gen-2 만들기 StorageClass
새 볼륨 프로비저닝을 위한 SDP StorageClass 를 생성합니다.
-
StorageClass 용 YAML 파일을 생성합니다. 다음 구성을
storageclass-sdp.yaml으로 저장합니다.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ibmc-vpc-block-sdp-general labels: app: ibm-vpc-block-csi-driver provisioner: vpc.block.csi.ibm.io parameters: profile: "sdp" iops: "5000" csi.storage.k8s.io/fstype: "ext4" billingType: "hourly" encrypted: "false" region: "" zone: "" tags: "generation:2,profile:sdp" reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer -
StorageClass 을 적용하십시오.
oc apply -f storageclass-sdp.yaml -
StorageClass 의 생성 여부를 확인하십시오.
oc get storageclass ibmc-vpc-block-sdp-general
IOPS 및 처리량을 조정하여 성능을 최적화하십시오
마이그레이션 후에는 워크로드 요구 사항에 따라 IOPS와 처리량(대역폭)을 동적으로 조정할 수 있습니다.
- 일반 워크로드의 경우 5,000 IOPS부터 시작하세요.
- 데이터베이스에 10,000 IOPS 이상을 사용하세요.
- 사용량을 모니터링하고 실제 요구 사항에 따라 조정하세요.
IOPS 업데이트
-
IOPS를 높여 성능을 향상하세요.
ibmcloud is volume-update $VOLUME_ID --iops 8000 -
IOPS 업데이트를 확인하십시오.
ibmcloud is vol $VOLUME_ID | grep IOPS
처리량(대역폭) 업데이트
SDP 프로필로 마이그레이션한 후, 볼륨에는 기본 대역폭 할당이 적용됩니다. I/O 집약적인 워크로드의 처리량을 향상시키기 위해 대역폭을 늘릴 수 있습니다.
-
현재 대역폭 할당 현황을 확인하십시오.
ibmcloud is vol $VOLUME_ID | grep Bandwidth -
대역폭을 늘려 처리량을 높입니다.
--bandwidth옵션을 사용하여 원하는 대역폭을 Mbps 단위로 지정하십시오.ibmcloud is volume-update $VOLUME_ID --bandwidth 2000 -
대역폭 업데이트를 확인하십시오.
ibmcloud is vol $VOLUME_ID | grep Bandwidth대역폭 값은 해당 볼륨이 달성할 수 있는 최대 처리량(MB/s)을 나타냅니다. 대역폭 값이 높을수록 데이터 집약적인 작업에서 더 나은 성능을 발휘합니다.
문제점 해결
마이그레이션이 업데이트 상태에서 멈춤
마이그레이션 상태가 30분 이상 updating 으로 유지되면 다음 단계를 완료하세요. 볼륨이 클수록 마이그레이션하는 데 시간이 더 오래 걸리며 updating 상태가 45분 동안 유지될 수 있습니다.
-
작업 세부 정보를 확인하세요.
ibmcloud is volume-jobs $VOLUME_ID -
볼륨 상태에서 오류나 경고가 있는지 확인합니다.
ibmcloud is vol $VOLUME_ID | grep -E "Status|Busy" -
대용량 마이그레이션에는 시간이 오래 걸리므로 15분 정도 더 기다리세요.
-
VPC 서비스 문제는 IBM Cloud 상태 페이지에서 확인하세요.
-
마이그레이션이 1시간 이상 중단되면 작업 ID를 사용하여 IBM 지원팀으로 문의하세요.
PVC는 오래된 StorageClass
마이그레이션 후에도 PVC가 여전히 Gen-1 StorageClass 을 참조하는 경우 이 동작이 예상되며 아무런 조치가 필요하지 않습니다. PVC storageClassName 필드는 변경할 수 없습니다. 실제 스토리지 프로필은 이전 단계에서 업데이트한 PV에 의해 결정됩니다. 기능에는 영향을 미치지 않습니다.
-
PV(PVC가 아님)가 올바른지 확인합니다.
oc get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'예상 출력
ibmc-vpc-block-sdp
성능이 개선되지 않음
마이그레이션 후에도 성능이 향상되지 않는다면 다음 단계를 완료하세요.
-
실제 IOPS 할당을 확인하세요.
ibmcloud is vol $VOLUME_ID | grep IOPS -
볼륨 프로필을 확인합니다.
ibmcloud is vol $VOLUME_ID | grep Profile -
IOPS 할당을 늘립니다.
ibmcloud is volume-update $VOLUME_ID --iops 10000 -
업데이트를 확인하십시오.
ibmcloud is vol $VOLUME_ID | grep IOPS
다음 단계
마이그레이션을 완료한 후에는 다음 단계를 고려하세요.
- 이 튜토리얼을 반복하여 추가 볼륨을 마이그레이션하세요.
- 볼륨 성능을 모니터링하고 필요에 따라 IOPS를 조정하세요.
- 새 볼륨에 Gen-2 StorageClasses 을 사용하도록 배포 템플릿을 업데이트하세요.
- Block Storage 용량 및 성능에서 최적화 가이드를 확인하세요.