SAS Compute Server, SAS/CONNECT Server, SAS Batch Server 는 실행 중에 쓰기 가능한 공간이 필요하다. SAS Programming Environment 컨테이너 이미지는 이 용도로 기본값 emptyDir 볼륨을 쓴다. 볼륨 이름은 viya 이고 파드 안에서는 /opt/sas/viya/config/var 로 마운트되며, SASWORK 는 그 아래에 만들어진다.
emptyDir 은 파드 수명과 함께 사라지고 노드의 ephemeral storage 할당량을 소비한다. 대용량 정렬·조인이 잦거나 동시 세션이 많으면 노드 디스크를 압박한다.
SAS 는 예제 변환기를 제공한다.
cp $deploy/sas-bases/examples/sas-programming-environment/storage/change-viya-volume-storage-class.yaml \
$deploy/site-config/
파일 안의 {{ VOLUME-STORAGE-CLASS }} 를 실제 볼륨 정의로 바꾼다.
NFS 를 쓸 때는 다음과 같다.
- op: add
path: /template/spec/volumes/-
value:
name: viya
nfs:
server: <nfs-server>
path: /export/saswork
PVC 를 쓸 때는 다음과 같다.
- op: add
path: /template/spec/volumes/-
value:
name: viya
persistentVolumeClaim:
claimName: saswork-pvc
단일 노드이거나 Compute 를 특정 노드에 고정해 쓰는 환경이라면 hostPath 가 가장 빠르다.
- op: remove
path: /template/spec/volumes/0
- op: add
path: /template/spec/volumes/-
value:
name: viya
hostPath:
path: /opt/sas/saswork
type: DirectoryOrCreate
노드에 디렉터리를 미리 만들고 쓰기 권한을 준다.
mkdir -p /opt/sas/saswork
chmod 1777 /opt/sas/saswork
transformers:
- site-config/change-viya-volume-storage-class.yaml
- sas-bases/overlays/required/transformers.yaml
이 변환기는 필수 변환기(sas-bases/overlays/required/transformers.yaml)보다 앞에 와야 한다. 또한 변환기는 기존 viya 볼륨 정의를 지우고 새 정의로 바꾸므로, 기존 볼륨에 들어 있던 내용은 그대로 남되 더 이상 참조되지 않는다.
변경은 서버 애플리케이션이 시작할 때 처리되므로 다음에 새로 뜨는 세션 파드부터 적용된다. 이미 떠 있는 Compute 세션에는 영향이 없다.
파드 정의에서 볼륨 종류를 본다.
kubectl describe pod -n <namespace> <compute-pod> | grep -A3 "^ viya:"
viya:
Type: HostPath (bare host directory volume)
Path: /opt/sas/saswork
HostPathType: DirectoryOrCreate
마운트 지점도 함께 확인한다.
/opt/sas/viya/config/var from viya (rw)
emptyDir 이 그대로 나오면 적용되지 않은 것이다.
파드 안에서 실제 마운트와 WORK 경로를 확인한다.
kubectl exec -it -n <namespace> <compute-pod> -- bash
df -h | grep viya
proc options work utilloc;
run;
파드 안에서 파일을 하나 만들고 노드에서 보이는지 확인하면 확실하다. 이때 파드가 실제로 떠 있는 노드에서 확인해야 한다.
kubectl get pod -n <namespace> <compute-pod> -o jsonpath='{.spec.nodeName}{"\n"}'
SAS_work 임시 디렉터리는 정리되지만, 사람이 직접 만든 파일은 남는다. 정리되지 않은 잔여 디렉터리와 inode 사용량을 주기적으로 본다.운영 환경에서는 PVC 또는 전용 디스크를 권장하고, hostPath 는 단일 노드나 개발·PoC 환경에서 쓴다.