Skip to content

Veeam Backup 플러그인 개발 #788

@jeongda-young

Description

@jeongda-young

Veeam Custom Backup Plug-in

Image

Veeam Backup & Replication과 Mold 환경을 연동하기 위한 Custom Backup Plug-in 구조를 설계 및 구현한다.
본 Plug-in은 Veeam의 Script Hook 기능과 REST API를 활용하여 Mold 백업 정책과 Veeam Backup Job을 연결하는 역할을 한다.
초기 구현은 Script 기반 Plug-in 방식을 사용하고, 이후 필요 시 REST API 기반 백업 제어 기능으로 확장할 수 있도록 설계한다.

개발목적

  • Mold 가상머신 백업 정책과 Veeam Backup Job 연동
  • Veeam Script Hook 기반 Custom Backup Plug-in 구현
  • Mold Backup Catalog와 Veeam Backup 정보 동기화
  • 향후 REST API 기반 Backup / Restore 제어 구조 확장

개발 범위

Backup Integration

  • Mold Backup Offering ↔ Veeam Job 매핑
  • Script 기반 Backup Hook 실행
  • Backup Job 실행 시 Mold API 연동

Backup Metadata Sync

  • Veeam Backup Session 조회
  • Mold Backup Catalog 동기화

Script 기반 Backup Plug-in

  • Pre-freeze Script
  • Post-thaw Script
  • Job Script

아키텍처

Mold
 └─ Backup Trigger
     └─ Veeam Backup Job
         ├─ Pre-freeze Script
         │   └─ Mold API 호출
         ├─ Backup 수행
         └─ Post-thaw Script
             └─ Cleanup / 로그 기록

Script 기반 Plug-in 흐름

1. Veeam Backup Job 실행

2. Pre-freeze Script 실행
   - Mold API 호출
   - 백업 대상 VM 조회
   - snapshot 준비

3. Veeam Backup 수행

4. Post-thaw Script 실행
   - 백업 staging 파일 삭제
   - cleanup 수행

Pre-freeze Script

  • 백업 시작 전에 실행되는 Script

역할

  • Mold API 호출
  • 백업 대상 VM 조회
  • snapshot 또는 staging 준비
#!/bin/sh

LOG="/var/log/veeam-pre-freeze.log"

echo "$(date '+%F %T') START pre-freeze" >> "$LOG"

/usr/local/bin/mold-pre-backup.sh >> "$LOG" 2>&1
RC=$?

echo "$(date '+%F %T') END pre-freeze rc=$RC" >> "$LOG"

exit $RC

Post-thaw Script

  • 백업 완료 후 실행되는 Script

역할

  • staging 파일 삭제
  • cleanup 수행
  • 로그 기록
#!/bin/sh

LOG="/var/log/veeam-post-thaw.log"

echo "$(date '+%F %T') START post-thaw" >> "$LOG"

/usr/local/bin/mold-post-backup.sh >> "$LOG" 2>&1
RC=$?

echo "$(date '+%F %T') END post-thaw rc=$RC" >> "$LOG"

exit $RC

Backup Catalog 동기화

  • Mold에서는 Veeam 백업 정보를 동기화하기 위한 Sync Scheduler가 필요하다.
Sync Scheduler 실행

→ Veeam Backup Session 조회
→ Backup 목록 확인
→ Mold Backup Catalog 업데이트
→ 삭제된 Backup 정리

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions