Manual/VirtOn PBS/6. PBS 프룬 & 가비지 컬렉션 (Prune & Garbage Collection) 6. PBS 프룬 & 가비지 컬렉션 (Prune & Garbage Collection)

- 프룬 (Prune)
- 정의: 설정된 '보존 정책(Retention Policy)'에 따라 보관 기간이 만료되었거나 불필요해진 백업 스냅샷(인덱스)의 연결을 끊고 목록에서 지우는 작업입니다.
- 가비지 컬렉션 (Garbage Collection)
- 정의: 프룬 작업으로 인해 더 이상 어떤 백업 스냅샷에서도 참조하지 않는(이름표가 모두 떨어진) 실제 데이터 조각(Chunk)들을 디스크에서 찾아 물리적으로 삭제하는 작업입니다.
6.1 작업 정리(Prune) 정책 기능

- 목적
- PBS 백업 보존 정책(Retention Policy)을 등록/수정/삭제하고, 필요 시 즉시 실행하기 위한 기능입니다.
- 핵심 동작
- 정책 저장: PBS prune job 설정을 생성/갱신
- 정책 목록 조회: 저장된 prune 정책 테이블 표시
- 정책 선택: 선택한 정책을 폼에 로드(수정 모드)
- 정책 삭제: 선택 정책 삭제
- 수동 실행: 선택 정책 기준으로 prune 즉시 실행
- 상태 확인: 최근 정리 시각/상태/다음 실행 등을 조회
6.1.1 입력 항목별 설명
- PBS 서버
- 대상 PBS 연결 서버 선택
- 서버 목록은 등록된 PBS 연결 설정 기반으로 로드
- 데이터스토어
- prune 대상 datastore
- 선택 서버의 기본 datastore가 초기값으로 반영
- 네임스페이스
- prune 적용 범위 namespace 지정
- 비우면 Root(- (Root)) 기준
- 최대 심도 (max-depth)
- namespace 하위 탐색 깊이
- 0이면 현재 namespace 기준 동작

- 일정 정리 (schedule)
- cron/preset 스케줄
- 예: hourly, daily, 02:30, mon..fri \*:00
- 보존 개수(Keep 정책)
- 최근 보관 (keep-last)
- 시간당 보관 (keep-hourly)
- 일별 보관 (keep-daily)
- 주간 보관 (keep-weekly)
- 월간 보관 (keep-monthly)
- 연간 보관 (keep-yearly)
- 각 조건에 맞는 스냅샷을 남기고 나머지는 prune 대상이 됨
- 설명 (comment)
- 활성화됨 (enabled)
- 체크 시 스케줄 활성
- 해제 시 정책은 남고 실행은 비활성
- 작업 ID (id)
- 정책 고유 식별자
- 비우면 자동 생성
- 수정 모드에서는 고정(식별자 변경 방지)
5.1.2 모드 동작
- 생성 모드
- 새 정책 저장
- 작업 ID 직접 입력 가능(또는 자동할당)
- 수정 모드
- 기존 정책 값 로드 후 변경사항 저장
- 작업 ID는 읽기 전용
- 수정 취소 시 생성 모드로 복귀
6.1.3 실행/운영 포인트
- Prune 실행
- 논리적 정리(참조 제거) 중심
- 디스크 용량 즉시 회수는 제한적일 수 있음
- GC와 관계
- 실제 물리 용량 회수는 GC 단계에서 수행
- 보통 Prune -> GC 순서 운영 권장
- 주의
- 정책값이 공격적으로 설정되면 복구 지점이 급감할 수 있으므로, 운영 기준(일/주/월/년)을 먼저 정하고 적용하는 것이 안전합니다.
6.2 가비지 컬렉션(Garbage Collection) 및 수동 실행 기능

- 목적
- GC 스케줄을 설정/저장하고, 필요 시 작업 정리(Prune) 또는 가비지 컬렉션(GC)를 즉시 수동 실행합니다.
- 핵심 동작
- GC 일정 저장: datastore 기준 GC 스케줄 등록/수정
- 수동 실행:
- 작업 정리 실행(Prune 즉시 실행)
- 가비지 컬렉션 실행(GC 즉시 실행)
- 실행 추적: UPID 기반 상태/진행률/결과를 실시간 표시(SSE)
6.2.1 입력/표시 항목별 설명
- 선택 서버
- 데이터스토어
- GC/수동 실행 대상 datastore 표시(읽기용)

- GC 일정
- 프리셋(없음, hourly, daily, 02:30 등) 또는 직접 입력 선택
- 직접 입력 선택 시 크론/프리셋 문자열 직접 입력
- GC 일정 저장 버튼
- 현재 GC 일정 값을 PBS에 저장
- 없음 선택 시 스케줄 제거(비활성)
6.2.2 수동 실행 버튼
- 작업 정리 실행
- 저장된 prune 정책(작업 ID 기준)으로 즉시 실행
- 정책 선택/ID가 없으면 실행 차단
- 가비지 컬렉션 실행
- 현재 datastore 대상으로 GC 즉시 실행
- 실행 후 GC 상태 섹션 재조회


6.2.3 실행 상태 카드(최근 작업)
- 최근 작업
- UPID
- PBS 작업 고유 식별자
- 상태 조회/스트림 추적의 기준 값
- 상태
- 진행률
- 결과
- 진행 바
6.2.4 동작 흐름
- 서버/데이터스토어 기준으로 대상 확정
- 필요 시 GC 일정 저장
- 수동 실행(PRUNE 또는 GC)
- UPID 수신 후 SSE 스트림 구독
- 진행률/상태/결과 갱신
- 완료 시 토스트 + GC 상태 재동기화
6.2.5 운영 주의사항
- Prune ≠ 즉시 용량 회수
- prune은 논리 정리, 실제 공간 회수는 GC 단계에서 반영 합니다.
- 24시간 미만 청크
- GC 반복 실행해도 즉시 회수되지 않을 수 있습니다.
- 부하 관리
- 백업/동기화 시간대와 GC 시간대 분리 권장 합니다.
- I/O 경합이 큰 환경에서는 수동 GC 남발 지양합니다.
6.3 가비지 컬렉션 상태 및 저장된 작업 정리 정책 목록


6.3.1 가비지 컬렉션 상태 (GC Status)
- 목적
- 현재 데이터스토어의 GC 실행 결과와 다음 실행 예정 정보를 한눈에 확인합니다.
- 표시 항목
- 일정: GC 스케줄(cron/preset)
- 최근 GC: 마지막 GC 실행 시각
- 지속시간: 마지막 GC 작업 소요 시간
- 최근 상태: 마지막 실행 결과(OK, ERROR 등)
- 다음 실행: 다음 예약 실행 시각
- 데이터 제거됨: 마지막 GC에서 실제로 회수된 용량
- 보류 중인 데이터: 아직 회수되지 않은 후보 데이터 용량
- 동작 방식
- 서버/데이터스토어 선택값 기준으로 상태를 조회합니다.
- GC 수동 실행 완료 후 상태 테이블이 최신 값으로 갱신됩니다.
- 운영 포인트
- 데이터 제거됨이 0이어도 비정상은 아닙니다(보존/유예 조건 영향).
- 보류 중인 데이터가 지속 증가하면 스케줄/보존정책을 점검해야 합니다.

6.3.2 저장된 정책 목록 (Saved Prune Policy List)
- 목적
- 등록된 작업 정리 정책(Prune Job)들을 검색/필터/선택/수정/삭제하기 위한 관리 테이블입니다.
- 핵심 기능
- 검색: 작업 ID/데이터스토어/네임스페이스 기준 빠른 검색
- 필터: 일정/상태 기준 목록 축소
- 행 선택: 선택된 정책을 폼에 로드해 수정 모드 진입
- 선택 삭제: 선택한 정책을 삭제(확인 다이얼로그 기반)
- 표시 컬럼
- 작업 ID, 데이터스토어, 네임스페이스, 최대 심도
- 일정, 최근/시간당/일별/주간/월간/연간 보존
- 최근 정리, 지속시간, 상태, 다음 실행, 코멘트
- 동작 방식
- 목록 데이터는 PBS 정책 조회 결과를 기준으로 렌더링됩니다.
- 행 선택 시 폼은 수정 모드로 전환되고, 취소 시 생성 모드로 복귀합니다.
- 운영 포인트
- 정책 저장/수정/삭제 후 목록을 즉시 재조회해 화면-실제 상태를 일치시킵니다.
- Root 네임스페이스는 UI에서 -(Root)로 표기해 식별성을 유지합니다.
6.3.3 권장 확인 순서 (실무 기준)
- GC 상태에서 최근 상태와 최근 GC 정상 여부 확인
- 저장 정책 목록에서 대상 정책의 일정/보존값 검토
- 필요 시 정책 수정 후 수동 실행(Prune → GC)
- 실행 후 데이터 제거됨, 보류 중인 데이터, 작업 이력 로그까지 확인