프로젝트

일반

사용자 정보

태스크 #12951

이 헌제님이 약 2달 전에 변경

## 목표  

 - 현재 gluesys-csi csi-driver-lvm 은 단일 볼륨을 제어하는 방식으로 가이드하고 있다 
 - 여러 볼륨 그룹을 사용하는 경우 storageclass 와 gluesys-csi csi-driver-lvm 을 어떤 식으로 구성해야 가능한지 가이드를 만들고, 그에 따른 테스트를 진행하여 검증한다. 


 ## 다중 gluesys-csi csi-driver-lvm 설치 

 ### 다중 설치 가능성 

 csi-driver-lvm을 여러 개 설치하여 VG를 나누는 방향으로 운영 가능합니다. 

 ### 설치 방법 (namespace별) 

 ```bash 
 # namespace 생성 
 kubectl create namespace storage-1 
 kubectl create namespace storage-2 

 # 내부 registry 로 테스트시 namespace 별 secret 생성 
 kubectl create secret docker-registry gitlab-regcred --docker-server=registry.gitlab.gluesys.com --docker-username=gitlab-runner --docker-password=gldt-f2kyALfrvGAbDnxsKoSJ --namespace storage-1 
 kubectl create secret docker-registry gitlab-regcred --docker-server=registry.gitlab.gluesys.com --docker-username=gitlab-runner --docker-password=gldt-f2kyALfrvGAbDnxsKoSJ --namespace storage-2 

 # Namespace 1 설치 
 helm install gluesys-csi-1 \ 
     --namespace storage-1 \ 
     --set lvm.storageVG='VG1' \ 
     --set storageClasses.thin.additionalAnnotations."gms\.io/thinpool"="csi-pool1" 
     --set lvm.storageVIP='10.0.24.70' \ 
     --set lvm.driverName='lvm.csi.gms.io1' \ 
     --set lvm.storageClassStub='gluesys-csi-1' \ 
     --set lvm.volumeSnapshotClassStub='gluesys-csi-snapshot-1' \ 
     ./charts/gluesys-csi 

 # Namespace 2 설치 
 helm install gluesys-csi-2 \ 
     --namespace storage-2 \ 
     --set lvm.storageVG='VG2' \ 
     --set storageClasses.thin.additionalAnnotations."gms\.io/thinpool"="csi-pool2" 
     --set lvm.storageVIP='10.0.24.71' \ 
     --set lvm.driverName='lvm.csi.gms.io2' \ 
     --set lvm.storageClassStub='gluesys-csi-2' \ 
     --set lvm.volumeSnapshotClassStub='gluesys-csi-snapshot-1' \ 
     ./charts/gluesys-csi 
 ``` 

 ### 9.3 생성되는 StorageClass 

 | 항목 | gluesys-csi-1 | gluesys-csi-2 | 
 |------|------------------|------------------| 
 | **StorageClass 이름** | `gluesys-csi-1-thin` | `gluesys-csi-2-thin` | 
 | **provisioner** | `lvm.csi.gms.io1` | `lvm.csi.gms.io2` | 
 | **연결된 driver** | gluesys-csi-1 | gluesys-csi-2 | 
 | **VG** | VG1 | VG2 | 
 | **VIP** | 10.0.24.70 | 10.0.24.71 | 

 ### 9.4 장점 

 | 장점 | 설명 | 
 |------|------| 
 | **용량 분산** | VG별로 별도의 thinpool 관리 가능 | 
 | **장애 격리** | 한 VG에 장애 발생 시 다른 VG에 영향 없음 | 
 | **성능 분산** | 여러 AnyStor-E 노드에 부하 분산 | 
 | **애플리케이션 분리** | 앱/환경별로 별도 스토리지 할당 가능 | 

 ### 9.5 제약사항 

 | 제약사항 | 내용 | 
 |---------|------| 
 | **동일 StorageClass 공유 불가** | 다른 driver가 같은 StorageClass 이름을 사용할 수 없음 | 
 | **앱별 명확한 지정** | 앱이 사용할 StorageClass를 명확히 지정해야 함 | 
 | **Migration 불가** | 한 VG에서 다른 VG로 마이그레이션 불가 | 
 | **driverName 충돌 방지** | 각 csi-driver-lvm은 고유한 driverName 사용 필수 | 
 | **Kasten 백업** | 각 StorageClass별로 백업 정책 설정 필요 | 

 ### 주의사항 

 | 항목 | 내용 | 
 |------|------| 
 | **Pod와 PVC 동일 namespace** | PVC가 생성된 namespace의 gluesys-csi만 사용 가능 | 
 | **Cross namespace 사용 불가** | Namespace A에서 생성된 PVC는 Namespace A의 gluesys-csi만 접근 가능 | 
 | **StorageClass 지정** | 각 앱은 사용할 VG에 맞는 StorageClass를 명확히 지정해야 함 | 
 | **초기 단순화** | 초기에는 단일 gluesys-csi으로 시작하고 필요에 따라 확장 권장 | 

뒤로

클립보드 이미지 추가 (최대 크기: 50 MB)