이전에는 클론질라를 사용해서 수동으로 백업 후 복구를 진행했다. 하지만 실제로는 계속해서 데이터가 추가/수정/삭제가 되는데 일일히 시스템을 껐다가 백업본을 뜨고 다시 구동하는 건 현실적으로 힘들긴 하다. 그래서 백업 과정을 자동화할 필요성을 느꼈다.
그러므로 이번에는 백업 과정을 스케줄링을 통해 자동화 시켜주는 veeam을 사용해볼 것이다.
[root@Alma ~]# wget -O veeam.rpm https://repository.veeam.com/backup/linux/agent/rpm/el/10/x86_64/veeam-release-el10-1.0.9-1.noarch.rpm
[root@Alma ~]# rpm -ivhp veeam.rpm
[root@Alma ~]# dnf install -y veeam
얘도 기본적으로 패키지 매니저가 못 찾으니 추가해줘야 한다. 어떤 이유인지 모르겠지만 dnf로 바로 안 돼서 저장소를 rpm으로 깔고 그 후에 저장소에 있는 veeam으로 깔도록 했다.

그러면 veeam 명령어로 위와 같은 화면으로 진입할 수 있다. 스페이스바로 X 표시를 해주고 키보드 아래키로 넘어가서 똑같이 동의를 해주고 엔터로 넘어가면 된다. ISO 복구도 마찬가지로 엔터, 라이선스는 없으니까 그냥 엔터로 넘어가면 알아서 무료 기능으로 사용 가능하다.




TUI 화면이라 수월하게 진행하다가 nfs 클라이언트가 따로 필요하다고 해서 나갔다 다시 깔고 함;
dnf install -y nfs-utils로 똑같이 깔아주자. 그리고...

드디어 원하는 게 나왔다! 이게 바로 백업을 떠주는 작업을 알아서 해준다. 클론질라처럼 손수할 필요가 없게 되는 것이다.

마지막으론 요약으로 어떻게 백업 설정을 했는지 나온다. 아래 start job now를 체크하면 작업을 마칠 시 최초 1회 백업을 뜬 다음 스케줄링 대로 백업이 실행된다.

근데 바로 실패해버렸다. 왜 그런가 했더니 스냅샷을 찍으려면 veeamblksnap이라는 커널 모듈이 있어야 하는데, 알마10에서는 veeam이랑 커널이 안 맞는다고 한다. 그래서 알마9.6으로 내리고 다시 했더니 됐다. modprobe veeamblksnap 으로 모듈을 활성화 하고 시도하자 상태가 실행 중이라고 나온다

[root@storage ~]# ll /nfs/
total 4
drwxr-xr-x. 2 root root 4096 Nov 1 18:33 2025-11-01-18-img
drwxrwsr-x. 2 root systemd-coredump 72 Nov 1 21:54 'Alma veeam-backup'
다시 nfs 서버로 가서 확인해보니 veeam으로 백업한 스냅샷이 생성이 됐다.

ISO 파일도 만들어서 nfs 파일에 올린다. 이 백업 대상의 pc도 네트워크를 통해 nfs 서버의 공유 디렉터리를 마운트하여 사용하면 된다. 이제 백업 파일이 네트워크를 통해 공유되기 때문에 이중화, 삼중화 등을 고려할 수 있게 됐다.
[root@Alma ~]# mkdir -p /nfs
[root@Alma ~]# mount 172.23.195.8:/nfs /nfs
다시 스토리지 노드에 와서 이번엔 awscli를 설치해준다. nfs로 올라온 백업 파일을 오브젝트 스토리지에 저장시켜 재해 복구 대책솔루션을 구축할 것이다. 외부 저장소는 무료로 사용할 수 있는 R2를 씀.
[root@storage ~]# dnf install -y awscli
[root@storage ~]# mkdir -p ~/.aws
[root@storage ~]# vi ~/.aws/config
[profile minio]
endpoint_url = http://172.23.195.8:9000
region = auto
[profile r2]
endpoint_url = https://<계정ID입력>.r2.cloudflarestorage.com
region = auto
[root@storage ~]# aws configure --profile minio
AWS Access Key ID [None]: backup
AWS Secret Access Key [None]: backup1234
Default region name [auto]:
Default output format [None]:
[root@storage ~]# aws configure --profile r2
AWS Access Key ID [None]: ##R2 개요에서 API 토큰 관리 누르고 API 토큰 생성해서
AWS Secret Access Key [None]: ## 버킷 또는 계정에 적용하면 키ID랑 비밀키 복붙
Default region name [auto]:
Default output format [None]:
aws s3 sync /nfs/ s3://backup-data/nfs-data/ --profile minio --delete
aws s3 sync /nfs/ s3://disaster-recovery/nfs-data/ --profile r2 --delete
...
...
upload: ../nfs/2025-11-01-18-img/sdb-gpt-1st to s3://backup-data/nfs-data/2025-11-01-18-img/sdb-gpt-1st
upload: ../nfs/2025-11-01-18-img/sda-pt.parted.compact to s3://backup-data/nfs-data/2025-11-01-18-img/sda-pt.parted.compact
upload: ../nfs/2025-11-01-18-img/sda1.vfat-ptcl-img.gz to s3://backup-data/nfs-data/2025-11-01-18-img/sda1.vfat-ptcl-img.gz
upload: ../nfs/2025-11-01-18-img/sda-pt.sf to s3://backup-data/nfs-data/2025-11-01-18-img/sda-pt.sf
upload: ../nfs/2025-11-01-18-img/sdb-gpt.sgdisk to s3://backup-data/nfs-data/2025-11-01-18-img/sdb-gpt.sgdisk
upload: ../nfs/2025-11-01-18-img/sdb-pt.parted.compact to s3://backup-data/nfs-data/2025-11-01-18-img/sdb-pt.parted.compact
upload: ../nfs/2025-11-01-18-img/sdb-mbr to s3://backup-data/nfs-data/2025-11-01-18-img/sdb-mbr
upload: ../nfs/2025-11-01-18-img/sdb-pt.parted to s3://backup-data/nfs-data/2025-11-01-18-img/sdb-pt.parted
upload: ../nfs/2025-11-01-18-img/sdc-gpt-1st to s3://backup-data/nfs-data/2025-11-01-18-img/sdc-gpt-1st
upload: ../nfs/2025-11-01-18-img/sdb-pt.sf to s3://backup-data/nfs-data/2025-11-01-18-img/sdb-pt.sf
upload: ../nfs/2025-11-01-18-img/sdc-chs.sf to s3://backup-data/nfs-data/2025-11-01-18-img/sdc-chs.sf
upload: ../nfs/2025-11-01-18-img/sdc-gpt.sgdisk to s3://backup-data/nfs-data/2025-11-01-18-img/sdc-gpt.sgdisk
upload: ../nfs/2025-11-01-18-img/sdc-gpt-2nd to s3://backup-data/nfs-data/2025-11-01-18-img/sdc-gpt-2nd
upload: ../nfs/2025-11-01-18-img/sdc-gpt.gdisk to s3://backup-data/nfs-data/2025-11-01-18-img/sdc-gpt.gdis
...
...
...


이제 동작이 잘 된 걸 확인했으니 crontab에 스케줄링하여 내외부 백업 이중화까지 구현한다! 이러면 백업 파이프라인이 모두 완성이다! 글이 길어 다음 장에서 마무리 해야 겠음ㅎ
[root@storage ~]# crontab -e
* 10 * * * aws s3 sync /nfs/ s3://backup-data/nfs-data/ --profile minio --delete
* 10 * * * aws s3 sync /nfs/ s3://disaster-recovery/nfs-data/ --profile r2 --delete
~
'리눅스 > 실습' 카테고리의 다른 글
| 리눅스 실습(4) - 프로세스와 자원 실습 (0) | 2025.11.02 |
|---|---|
| 리눅스 실습(3) - 파일시스템 실습(백업 마무리) (0) | 2025.11.02 |
| 리눅스 실습(3) - 파일시스템 실습(시스템 백업) (0) | 2025.11.01 |
| 리눅스 실습(3) - 파일시스템 실습(결함 허용과 데이터 스냅샷) (0) | 2025.11.01 |
| 리눅스 실습(3) - 파일시스템 실습(RAID 및 파일시스템 복구) (0) | 2025.10.31 |