아티클 관련 제품: SparklingSoDA4.0
들어가며
- SparklingSoDA의 노트북에서 작업한 내역은 pv(Persistent Volume) 로 관리되고 있습니다.
- 따라서 노트북을 실수로 삭제하였더라도, pv 데이터로 복구할 수 있습니다.
삭제된 노트북의 데이터 복구하기
삭제된 노트북 이름 알아내기
서비스 pod의 로그를 통해 삭제된 노트북의 이름을 알아낼 수 있습니다.
1. 서비스 pod의 이름을 확인합니다.
kubectl get po | grep sodaflow-app sodaflow-app-55bb47446b-2rzbn 1/1 Running 0 8d
2. 서비스 pod의 로그를 저장합니다.
kubectl logs sodaflow-app-UUID > svc.log kubectl logs sodaflow-app-55bb47446b-2rzbn > svc.log ls -l total 1138280 -rw-r--r-- 1 root root 567935 Mar 23 02:11 svc.log
3. 서비스 pod의 로그 내용 중, 노트북이 삭제된 로그를 확인합니다.
grep -rn "<delete_notebook>" svc.log 3943:2023-03-23 01:59:14,473 | 8515a2fd5de600747b80c3a3e2539f5c | winter | app.common.utils | INFO | <delete_notebook> function request parameters = {'notebook_name': ['mnist-prj-vscode1e91d'], 'project_name': 'mnist-prj'}
NFS 마운트 포인트 확인하기
k8s의 pv는 nfs-provisioner에 의해 생성됩니다.
1. pv 디렉터리 위치는 nfs-provisioner의 mount path값으로 확인할 수 있습니다.
kubectl describe pv pv-nfs-client-nfs-client-provisioner Name: pv-nfs-client-nfs-client-provisioner Labels: nfs-client-provisioner=nfs-client-nfs-client-provisioner Annotations: pv.kubernetes.io/bound-by-controller: yes Finalizers: [kubernetes.io/pv-protection] StorageClass: Status: Bound Claim: sodaflow/pvc-nfs-client-nfs-client-provisioner Reclaim Policy: Delete Access Modes: RWO VolumeMode: Filesystem Capacity: 10Mi Node Affinity: <none> Message: Source: Type: NFS (an NFS mount that lasts the lifetime of a pod) Server: 192.168.50.201 Path: /volumes ReadOnly: false Events: <none>
위 예시에서는 192.168.50.201 서버의 /volumes에 pv 가 생성되고 있습니다.
2. 해당 서버에서 192.168.50.201 서버의 /volumes와 마운트 된 곳을 확인합니다.
cat /etc/fstab | grep /volumes 192.168.50.201:/volumes /volumes nfs sync 0 0
삭제된 노트북의 pv 데이터 확인하기
1. 위에서 확인한 마운트 포인트로 이동합니다.
cd /<mount-point> cd /volumes
해당 경로에서는 모든 pv 디렉터리를 확인할 수 있습니다.
삭제된 pod에 대한 pv 디렉터리 이름은 archived- 로 시작합니다.
2. 따라서 삭제한 노트북의 pv 디렉터리는 다음과 같이 알아낼 수 있습니다.
cd archived-<namespace>-<notebook name>-nb-pvc-UUID cd archived-sodaflow-mnist-prj-vscode1e91d-nb-pvc-UUID
3. pv 디렉터리로 이동한 후 파일을 조회하면, 프로젝트 이름의 디렉터리가 있습니다.
ls -al total 12 drwxrwxrwx 4 1001 1001 39 Mar 23 01:54 . drwxrwxrwx 49 root root 8192 Mar 23 01:59 .. drwxr-xr-x 5 1001 1001 178 Mar 23 01:54 mnist-prj drwxr-xr-x 4 1001 1001 47 Mar 23 01:55 .vs_code
4. 프로젝트 이름의 디렉터리 하위에, 노트북에서 작업했던 내역을 확인할 수 있습니다.
ls -al total 24 drwxr-xr-x 5 1001 1001 178 Mar 23 01:54 . drwxrwxrwx 4 1001 1001 39 Mar 23 01:54 .. drwxr-xr-x 2 1001 1001 31 Mar 23 01:54 configs -rw-r--r-- 1 1001 1001 694 Mar 23 01:54 define_model.py -rw-r--r-- 1 1001 1001 3244 Mar 23 01:54 eval_model.py -rw-r--r-- 1 1001 1001 1525 Mar 23 01:54 export_model.py drwxr-xr-x 8 1001 1001 163 Mar 23 01:54 .git -rw-r--r-- 1 1001 1001 13 Mar 23 01:54 README.md -rw-r--r-- 1 1001 1001 30 Mar 23 01:54 requirements.txt -rw-r--r-- 1 1001 1001 3985 Mar 23 01:54 train_model.py drwxr-xr-x 2 1001 1001 6 Mar 23 01:54 .vscode
데이터 복구하기
삭제된 노트북의 데이터를, 새로운 노트북으로 copy하는 방법입니다.
데이터를 받게 될 새로운 노트북의 pv 디렉터리 하위에, 삭제된 노트북의 pv 데이터를 copy합니다.
cp -rp archived-<namespace>-<notebook name>-UUID/<project name>/<copy file> <namespace>-<notebook name>-UUID/<project name>/ cp -rp archived-sodaflow-mnist-prj-vscode1e91d-nb-pvc-UUID/mnist-prj/train_model.py sodaflow-mnist-prj-vscode0a66b-nb-pvc-d35566dd-185c-4f88-8eb6-291548a7d3b4/mnist-prj/
마무리
- 스파클링소다에서 노트북이 삭제되어도, 노트북의 데이터를 확인하고 복구하는 방법에 대해 알아보았습니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.