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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions