티스토리 뷰
1. 개요
- Bacula는 Bacula Systems사 에서 개발하여, 오픈 소소로 공개한 네트워크 백업 솔루션이다.
- 유료 엔터프라이즈 버전과 무료 커뮤니티 버전으로 구분되며, 이 문서는 커뮤니티 버전인 Open source Bacula에 대해 다룬다.
1.1. 특징
- 쉬운 설치 및 쉬운 설정
- 다양한 백업 장치 지원(하드디스크, LTO 1-5 테이프 장치 등등)
- 다양한 모니터링 툴 지원
- 증분, 차등, 차등증분, 변경분, 가상백업, 백업주기, 압축 프로토콜 등 다양한 백업 방식 지원
- 원하는 경로 설정 및 백업 전 후 실시할 명령어 지정 가능
- 네트워크 백업되는 데이터의 암호화를 위한 다양한 옵션(MD5, SHA, TLS, CRAM-MD5 등등)
- 압축
1.2. 공식적으로 지원되는 백업 서버 OS
- 리눅스
- 윈도우
- 맥
- 다양한 유닉스
1.3. 공식적으로 지원되는 클라이언트용 플랫폼
- 리눅스
- 솔라리스
- Free/Net/OpenBSD
- 윈도우
- 맥
- HP-UX
- Tru64
- Irix
2. 시스템 구성
- 시스템 구성은 Director, File, Storage 데몬과 Catalog라는 DB로 구성된다.
- 각 데몬과 DB는 한 서버에서 설치 하여 동작 가능하고, 필요시 다른 서버들로 분산하여 서비스 할 수 있다.
- 클라이언트들과 통신하여, 백업 및 복원을 직접 제어한다.
- 공식적으로 하나의 Director 데몬은 1천여대 정도의 클라이언트를 제어 할 수 있다.
- 9101 포트 사용
2.2. File Daemon(Clients)
- 디렉터 데몬으로 부터 백업 명령이 들어왔을 시, 어떤 파일들을 백업할 지 대상 목록을 뽑아낸 뒤 해당 파일들을 전송한다.
- 9102 포트 사용
2.3. Storage Daemon
- 디렉터 데몬으로 부터 백업 명령이 들어왔을 시, 파일 데몬과 직접 접속하여 파일들이 저장되어야할 백업 장치를 제공하고, 파일을 실제로 저장하는 역할을 수행한다.
- 9103 포트 사용
2.4. Catalog Daemon
- 백업 시스템 관리용 DB로 백업 파일관리와 빠른 복원을 위해 백업 시 마다 파일들에 대한 목록을 DB에 넣어서 관리한다.
- mysql, postgresql, SQLite 지원
3. 시스템 프로세스
3.1. 백업 프로세스
- Bacula는 3가지 서비스 데몬과 DB로 구성된다.
- 디렉터 데몬은 일종의 관제탑으로서, 백업/복원/모니터 등의 모든 작업데 대한 통솔을 한다.
- 파일 데몬은 어떤 파일이 백업되어야 하는지 목록을 뽑아낸다.
- 스토리지 데몬은 디렉터 데몬의 백업 및 복원 명령에 의해 저장장치를 제공하고, 데이터를 읽고 쓴다.
- 디렉터 데몬은 백업되는 파일들의 목록과 모든 상황을 DB에 기록한다.
- 백업되는 파일들은 볼륨이라는 몇개의 거대한 파일이, 풀(Pool)이라고 불리는 저장소에 저장된다.
3.2. Volume 저장
- 볼륨은 여러 백업 파일이, 저장되는 하나의 백업 파일이다.
- 볼륨의 용량은 제한 될 수 있다.(예를 들어 볼륨 하나당 10G로 지정해두고 백업을 진행하다가 1G가 넘어가게 되면 또 다른 볼륨을 생성)
- 생성되는 볼륨의 갯수를 제한 할 수 있다.
- 특정 백업분을 삭제 할 경우, 사용자는 몇개의 볼륨이 존재하는지, 어떤 파일이 어떤 볼륨에 있는지 상관하지 않아도 된다. 따라서 목적별로 스토리지를 운영 할 수 있다.
- 특정 볼륨에서 특정 백업분만 삭제 할 수 있다.
- 볼륨에 auto-prune을 지원한다.
- 백업되는 파일들의 유지기간(Retention)지정 가능하며, 기일이 지난 백업분은 Bacula가 알아서 삭제해준다.
- 특정 백업분을 특정 볼륨에 지정하는 것이 가능하다. 예를 들어, Incremental은 볼륨 AAA, Differential은 볼륨 BBB, Full은 CCC 이런식
- 따라서, 백업에 쓸 수 있는 스토리지 용량이 한정 되어있어서, 이것을 매번 신경 써줘야하는 관리자라면, 이 문제에서 해방 될 수 있다.
4. 설치
5. 설정
5.1. Director Daemon
- Director {} : 파일을 저장하는 명령을 내리기 위해 어떤 백업은 어떤 스토리지를 이용할 것인지에 대한 스토리지 데몬 지정
- Schedule {} : 스케쥴 지정
- Job {} : Job 지정
- FileSet {} : 어떤 파일들을 백업할 것인지에 대한 백업 대상 지정
- Client {} : 파일 데몬이 설치된 클라이언트 지정
- Message {} : 각종 에러 및 성공 메시지 처리 지정
- Pool {} : 파일이 저장될 공간인 Pool 지정
6. 운영
6.1. bconsole
- bacula의 CLI
- http://www.lghost.ru/docs/bacula/Bacula_Console.html
6.2. 백업
Command |
Comment |
status dir |
디렉터 상태 확인 |
label pool="server-001-pool" storage="backup-001" volume="server-001-1010" |
볼륨 생성 |
show fileset="server-001-fs" |
백업 대상 디렉토리 확인 |
status client="server-001" |
클라이언트 상태 확인 |
run job="server-001-job" fileset="server-001-fs" client="server-001" storage="backup-001" level="Full" |
백업 실행 |
messages |
백업 메시지 확인 |
autodisplay on |
추가생성된 message 자동 출력(엔터 입력) |
6.3. 복원
Command |
Comment |
restore |
1. 마지막 20개 작업 나열 2. 파일이 백업된 장소로 작업 나열 3. 작업별 ID 번호를 콤마 기호로 나열하여 입력 4. SQL 쿼리를 사용한 목록 나열 5. 클라이언트의 가장 최근 작업을 선택 => 가장 많이 쓰인다. 6. 클라이언트의 특정 시간대 이전 작업 선택 7. 복원할 파일명을 직접 입력 8. 특정 시간대 이전에 백업된 파일 중 복원할 파일명을 직접 입력 9. 클라이언트의 가장 최근 백업 ID 찾기 10. 특정 시간대 이전 클라이언트의 가장 최근 백업 ID 찾기 11. 특정 백업 ID에 백업된 디렉토리명 입력 12. 특정 일자로 전체 복원 13. 취소 해당 명령어를 통해서 인터렉티브하게 파일 선택 및 복원 작업을 진행 할 수 있다. 잘못선택했을시 . 를 입력하여 취소 가능하다. |
7. 참조
- http://blog.osti.kr/os/bacula-open-source-backup-solution/
- http://jswlinux.tistory.com/category/Computer/Bacula%20/%20%EB%B0%B1%EC%97%85
'엔지니어링' 카테고리의 다른 글
Python fabric으로 서버 관리 자동화 (0) | 2017.02.07 |
---|---|
MySQL auto_increment 증가와 최대값 (0) | 2017.01.04 |
Nginx + uwsgi unix socket 문제 (0) | 2016.09.13 |
logrotate, copytruncate의 함정 (0) | 2016.09.13 |
kernel: nf_conntrack: table full, dropping packet. (0) | 2016.09.13 |
- Total
- Today
- Yesterday
- code
- MariaDB
- Module
- 번역
- engineering
- check
- mysql
- Windows
- 이슈처리
- deview
- Web
- 명령어
- 코드
- httpd
- Python
- RESTful
- error
- Ansible
- apache
- Linux
- client
- PowerShell
- File
- 예제
- example
- configuration
- command
- monitoring
- limits
- 외부링크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |