Xen-pocalypse (Bash)로 Citrix Xen VM을 무료로 백업하는 방법
Citrix Xen Virtual Machines (VM)를 백업해야하지만 은행에서 해체하기를 원하지 않았습니까? HTG에는 Xen-pocalypse가있는 bash 스크립트가 있습니다..
h.koppdelaney 님의 이미지, Custom 및 Hotfortech에서 멈춤.
Citrix Xen의 멋진 기능 중 하나는 비어 있는 요금. 즉, "자동화 된 VM 보호 및 복구"기능을 원한다면 "고급"라이센스 비용을 지불해야합니다. 그럼에도 불구하고 Active Directory, Databases 및 기타와 같은 많은 유형의 작업 부하에는 충분하지 않은 디스크 수준의 백업에 대해서만 지불하고 있습니다.이 문제를 극복하려면 "라이브 메모리 스냅 샷 및 되돌리기"가 필요할 수 있습니다. RAM의 내용을 포함한 컴퓨터 상태 그러나이 기능은 훨씬 더 비싼 "엔터프라이즈"및 "플래티넘"버전의 일부입니다. HTG에서 진정한 백업 소프트웨어의 가치를 무시하는 것은 아니지만 예산이 부족하고 백업 작업의 가동 중단에 신경 쓰지 않는다면 Xen-pocalypse가 완벽하게 합리적인 솔루션이라고 생각할 수 있습니다 예산을 책정하기 전에.
개요
"유스 케이스": 백업이 필요한 몇 개의 VM이 있습니다. 마우스 오른쪽 버튼을 사용하여 "Xen Center"에서 "VM 끄기 및 파일 내보내기"는 제대로 작동하지만이 프로세스가 자동으로 일정대로 수행되기를 원합니다. 이 Bash 스크립트는 "XE"명령을 사용하여 임무를 수행합니다. XE는 "Xen Center"에서 "마우스 오른쪽 버튼 클릭"을 자동으로 실행하는 Xen 명령 줄 인터페이스 (CLI)입니다. 우리는 "일정"부분을 제공 할 Cron의 스크립트를 호출 할 것입니다. 가장 간단한 형태의 백업 흐름은 다음과 같습니다.
- 대상 VM 끄기.
- VM을 백업 위치에 파일로 내 보냅니다..
- VM을 켜면 백업이 시작되기 전에 다시 켜집니다..
하자 균열 :)
스크립트를 얻습니다.
Xen-pocalypse는 정규 git 메소드를 사용하여 github에서 자유롭게 얻을 수 있습니다. 그 말로는 아직 git에 정통하지 않으면이 링크로 zip 파일을 가져올 수 있습니다. 스크립트가 Xen 서버 중 하나에서 실행되어야하므로 실행 권한이 보존되도록 스크립트를 압축 해제해야합니다.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
마스터 압축 풀기
위의 방법이 효과가 있지만 GIT 방법을 사용하는 것이 좋습니다. 그러면 향후 업데이트 혜택을받을 수 있습니다..
SendEmail 받기 (선택 사항)
과거에는 SendEmail perl 프로그램에 대해 작성 했으므로 여기서 다시 언급 할 필요가 없습니다. 리눅스에서 Windows에서와 같은 방식으로 작동합니다..
이메일 사용은 선택 사항이지만 스크립트는 다음 작업을 수행 할 수 있으므로 적극 권장합니다.
- 시작 및 실행 완료 알림.
- 감지하고 처리 할 수있는 오류를 경고합니다..
- 공간 문제로 인한 백업 실격에 대한 정보. (이 동작은 원할 경우 비활성화 할 수 있습니다)
Xen 서버로 다운로드하여 압축을 풉니 다..
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
추출한 위치를 기록하십시오. 설정 파일에 필요합니다..
태그 정의하기
Citrix Xen은 필터링 기능을 위해 "사용자 정의 필드"를 구성 할 수있는 기능을 제공합니다. 필드를 만들고 Xen-pocalypse에서 사용한 정보로 필드를 채 웁니다. Xen-pocalypse는 백업용 태그의 이름과 부모 - 자식 관계를 지정하는 3 개의 제어 태그를 인식합니다. 파일 입력 방법을 사용하지 않으려면 적어도 백업 태그 이름 필드를 작성해야합니다.
이렇게하려면 서버 또는 VM의 속성을 엽니 다. 탐색 창에서 "사용자 정의 필드"를 선택하십시오..
위의 예와 같이 관계를 처음 정의하는 경우 데이터를 입력 할 필드가 없기 때문에 데이터를 만들어야합니다. 이렇게하려면 팝업 대화 상자에서 "사용자 정의 필드 편집"을 클릭하고 "추가 ..."를 클릭하십시오.
3 개의 "텍스트"유형 필드를 작성하십시오. 하나는 "BackupTAG"이고 나머지는 "Parent"및 "Children"입니다..
노트 : 사용자 정의 필드의 이름은 스크립트에 "하드 코딩"되어 있으므로 관련 코드도 변경하지 않으면 위의 철자를 벗어나지 않아야합니다..
모든 필드가 만들어지면 다음과 같이 표시됩니다.
창을 닫습니다. 아래 그림과 같이 "BackupTAG", "Parent"및 "Children"필드를 채워야합니다..
이제 "백업 TAG"에 속한 VM을 지정하면됩니다..
예를 들어, 스크립트가 성장한 회사에서 매주 목요일과 금요일에 백업 할 VM, Atlassian 제품 VM에 대한 일정 및 매월 백업해야하는 VM이있었습니다. 그래서 우리의 개요는 다음과 같습니다 :
예를 들어 "weekly-fri"는 "BackupTAG" "Custom Field"에 입력 한 텍스트입니다. 알았어? :)
부모와 자녀 (선택 사항)
이 스크립트의 진정한 아름다움은 "부모"대 "자식"관계를 지원한다는 것입니다. 즉, 부모보다 먼저 끄고 백업 할 "자식"VM 목록을 설정할 수 있으며 부모가 백업을 마치고 되돌아온 후에 만 다시 켜게됩니다. 에. 이것은, 친 VM를 오프로하면 (자), 아이의 서비스가 무효가되는 경우에 편리합니다. 이러한 일은 자식 VM의 서비스가 자식 백업 프로세스에 한 번, 부모 프로세스에 대해 한 번 두 번 사용할 수 없다는 것을 의미합니다. 이 관계를 생성하면 그 문제를 극복 할 수 있습니다..
예를 들어, 모든 Atlassian VM은 단일 DataBase (DB) VM을 사용했으며이 VM도 백업하도록 설정되었습니다. 따라서 DB VM이 다른 VM에 대한 "부모"임을 알면 적절한 종료 순서 -> 백업 -> 시작이 보장 될 수 있습니다.
이 글을 쓰는 시점에서,이 함수에는 다음과 같은 몇 가지주의 사항이 있습니다.
- 이러한 관계가있는 VM의 이름에는 공백이 포함될 수 없습니다. 아래 예제에서와 같이 공백으로 구분되므로 VM 이름에서 공백을 제거해야합니다..
- 부모는 한 명일 수 있습니다. 하나 이상의 지정은 테스트를 거치지 않고 계획된 것이 아닙니다..
이 관계를 만들려면 VM의 속성으로 이동하십시오. 이것이 "학부모"인 경우, 자녀가 누구인지 작성하고 이것이 "자녀"인 경우 그의 부모가 누구인지 적 으십시오. 예 :
참고 : 자녀를 위해 부모를 지정하지 않으면 부모가 준비되기 전에 자녀가 시작되어 두 번 백업 될 수 있습니다.
FILE 메서드 (선택 사항)
역사적인 이유로 Xen-pocalypse는 백업 할 VM 목록을 텍스트 파일로 가져 오는 기능도 지원합니다. "코드"는 아직 거기에 있지만 기능은 TAG 방식보다 심각하므로 권장하지 않습니다. 그렇다면 어떤 이유로 든 list 메소드를 사용하기를 원한다면 다음과 같은 제한이 적용됩니다 :
- VM의 이름에는 공백이나 특수 문자를 사용할 수 없습니다..
- 한 줄에 하나의 VM 이름 만있을 수 있습니다..
- 빈 줄은 허용되지 않습니다..
목록을 생성하려면 Xen 센터에서 VM의 이름을 복사하거나 Xen 호스트에서 실행합니다.
xe vm-list | grep 이름 - 레이블 | awk
'print $ 4'| 종류
위의 목록을 일반 텍스트 파일로 복사하십시오..
백업 위치
Citrix Xen에서 임의로 파고 들기는했지만 "/ var / run / sr-mount / % UUID %"에서 SR (Storage Repositories)을 사용할 수 있음을 발견했습니다. 여기서 UUID는 SR의 고유 식별자이며 GUI에서 얻은.
즉, 다음 "다음 -> 다음 -> 마침"마법사를 사용하여 원하는 백업 위치에 대한 마운트를 생성 한 다음 스크립트에서 해당 경로를 사용하도록 할 수 있습니다 (명령 줄에서 마운트를 망쳐 놓을 수도 있습니다). 이 가이드의 범위를 벗어납니다..
새 "마운트"를 만들려면 서버 이름을 마우스 오른쪽 단추로 클릭하고 새 SR을 선택합니다..
이 예제에서 Xen은 Windows 공유를 가리킬 것이므로 "Windows 파일 공유 (CIFS)"를 선택하십시오.
다음 -> 다음 -> 완료를 완료하십시오..
SR의 UUID 얻기
SR의 UUID를 얻으려면 Xen Center에서 해당 이름을 클릭하고 "일반"탭으로 이동하십시오..
UUID를 복사하려면 마우스 오른쪽 버튼으로 클릭하고 "복사"를 선택하십시오..
이 정보를 가지고 설정 파일을 편집 할 준비가되었습니다..
설정 파일 구성.
Xen-pocalypse 프로젝트에는 "설정"파일 템플리트가 번들로 제공됩니다. 이 템플릿은 설정을 반영하여 편집되어야하며 스크립트의 첫 번째 인수로 전달되어야합니다. 설정 파일은 다음을 지정합니다.
방법 백업 할 VM을 얻는 방법 - 기본 방법은 TAG입니다. 이것을 FILE로 변경할 수도 있지만 권장하지는 않습니다..
위치 백업 지점의 가이드 -이 시점에서 가이드를 수행 한 경우 위에서 얻은대로 % UUID %를 SR로 바꾸기 만하면됩니다.
SendEmail의 위치 - 이메일을 사용하도록 선택한 경우 여기에서 펄 실행 파일의 압축을 푼 위치를 입력해야합니다.
이메일 세부 정보 - 다시 말하지만 이메일을 사용하도록 설정 한 경우 다음과 같은 세부 정보를 정의해야합니다.받는 사람, 보낸 사람, 서버 이름 / IP 및 기타 '.
압축 - 이 옵션은 기본적으로 "아니요"로 설정됩니다.이 옵션을 활성화하면 더 작은 백업 파일이 만들어지며 백업 절차가 상당히 오랜 시간 동안 실행되기 때문입니다.
여유 공간 확인 대상에 - VM의 백업을 만들면 백업 위치의 여유 공간이 10GB 미만이되지 않는 스크립트 확인이 수행됩니다. 이는 하나의 매우 큰 VM 대신 많은 양의 VM이 백업되도록 보장하기 위해 수행됩니다. 계산은 VM과 관련된 모든 HD의 총 디스크 크기를 사용하여 수행됩니다..
디버깅 - 기본값은 "0"값으로 디버깅을 해제하는 것입니다. 이 기능을 사용하지 않아도되지만, 그렇게하면 문제 해결 부분에 더 많은 정보가 기록됩니다..
실행 / 스케줄링
가장 간단한 형태로, Xen-pocalypse의 호출은 다음과 같습니다.
./Xen-backup.sh settings.cfg weekly-fri
위의 경우 스크립트와 설정 파일이있는 디렉토리 안에 있습니다. 스크립트에서 찾을 태그는 "weekly-fri"입니다..
위에서 언급했듯이 우리는 Cron을 사용하여 실행을 예약합니다. 구성을 시작하기 전에 추천 Xen 서버에 이미 설치된 SSMTP 패키지를 구성합니다. 이것은 선택적인 단계이지만 그렇게하면 역 세척 수집가가됩니다. 그런 "역류 수집가"가 있으면 스크립트가 할 수없는 것들을 알려줄 수 있습니다..
다음을 발행하여 cron의 편집에 들어가십시오.
crontab -e
위 지침을 수행 한 후 금요일 오후 18:01 (오후 6:01)에 예약 된 백업을 추가하려면 다음을 입력하십시오.
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg weekly-fri
위의 내용은 스크립트 파일과 설정 파일이 모두 "/ root / Xen-pocalypse-master /"아래에 있다고 가정합니다..
문제 해결
스크립트를 최대한 사용하기 쉽고 최대한 간단하게 만드는 데 많은 노력을 기울이긴했지만 "세상은 더 큰 실험실입니다". 아래 정보는 문제의 원인을 확인하는 데 도움이 될 수 있습니다..
진행
이 한 개의 라이너를 사용하여 진행중인 모든 작업을 빠르게 "감시"하여 실제로 진행했는지 또는 실제로 멈췄는지 확인할 수 있습니다..
while [-e / dev / null]; "$ (xe task-list | grep uuid | awk 'print $ 5')에서 VM에 대해 수행 할 작업"; do xe task-param-get param-name = progress uuid = $ VM; sleep 1; 끝난; 끝난
시청을 멈추려면 Ctrl + C를 사용하여 "while 루프".
벌채 반출
모든 "로깅"은 syslog 메커니즘에서 스크립트를 실행하는 Xen 호스트에서 수집됩니다. 이것은 물론 다음과 같이 볼 수 있습니다 :
less + F / var / log / messages
당신은 핵심어 "Xen-pocalypse"를 찾고 있습니다..
참고 : Citrix는 서버의 syslog에 대해 2 일의 보존 정책을 설정했습니다. 사후에 대한 염두에두고 싶을 수도 있습니다..
디버깅
설정 파일 세그먼트에서 언급했듯이 디버깅을 활성화하는 지시문이 있습니다. 디버깅을 활성화하면 스크립트가 자세한 로깅을 콘솔에 출력하고 관련 플래그가 설정되어 있지 않으면 전자 메일을 보내지 않고 실제로 내보내기를 수행합니다. 가능한 플래그는 설정 파일 템플리트에 표시되며 디버그 할 내용을 세부적으로 정의 할 수 있습니다.
당신이 디버깅을 필요로하지 않고 내 노동의 결실을 거두고 있다는 것은 내 희망이다. :)
찌르다, 내 남자, 너는 이제 1 호 디 시피콘이 될거야 ...