노트북 삭제 시 데이터 복구 방법

작성자 김아름 수정일 2023-03-23 15:45

#SparklingSoDA4.0, #스파클링소다4.0, #노트북, #데이터, #복구

아티클 관련 제품: 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/



마무리

  • 스파클링소다에서 노트북이 삭제되어도, 노트북의 데이터를 확인하고 복구하는 방법에 대해 알아보았습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300