วิธีการสำรองข้อมูล Citrix Xen VMs ฟรีด้วย Xen-pocalypse (Bash)
คุณเคยต้องการสำรอง Citrix Xen Virtual Machines (VMs) ของคุณ แต่ไม่ต้องการทำลายธนาคารหรือไม่ HTG มีเพียงสคริปต์ทุบตีสำหรับคุณด้วย Xen-pocalypse.
ภาพโดย h.koppdelaney ติดอยู่ใน Custom และ Hotfortech.
หนึ่งในสิ่งที่ดีใน Citrix Xen คือคุณสมบัติหลายอย่างของมันคือ ฟรี เสียค่าใช้จ่าย จากที่กล่าวมาหากคุณต้องการคุณสมบัติ“ การป้องกันและกู้คืนข้อมูลอัตโนมัติของ VM” คุณจะต้องเริ่มชำระเงินสำหรับใบอนุญาต“ Advance” ถึงแม้ว่าคุณจะจ่ายเงินสำหรับการสำรองข้อมูลในระดับดิสก์ซึ่งไม่เพียงพอสำหรับปริมาณงานหลายประเภทเช่น Active Directory, ฐานข้อมูลและอื่น ๆ เพื่อที่จะเอาชนะสิ่งนี้คุณอาจต้องการ“ Live memory snapshot and revert” ซึ่งสามารถบันทึกได้ทั้งหมด สถานะเครื่องรวมถึงเนื้อหาของ RAM อย่างไรก็ตามคุณลักษณะดังกล่าวเป็นส่วนหนึ่งของรุ่น“ Enterprise” และ“ Platinum” ซึ่งมีราคาแพงกว่า ไม่ใช่ว่าเราที่ HTG กำลังยกเลิกมูลค่าของซอฟต์แวร์สำรองข้อมูลจริง แต่ถ้าคุณมีงบประมาณ จำกัด และไม่ต้องกังวลกับการหยุดทำงานของการสำรองข้อมูลคุณอาจพบว่า Xen-pocalypse เป็นโซลูชั่นที่เหมาะสมอย่างสมบูรณ์ ก่อนที่คุณจะใช้งบประมาณ.
ภาพรวม
The“ use case”: คุณมี VM สองสามตัวที่ต้องมีการสำรองข้อมูล “ การปิด VM และส่งออกเป็นไฟล์” จาก“ Xen Center” โดยใช้การคลิกขวานั้นใช้ได้ผล แต่คุณต้องการให้กระบวนการนี้เกิดขึ้นโดยอัตโนมัติและตามกำหนดเวลา สคริปต์ Bash นี้ใช้คำสั่ง“ XE” เพื่อทำหน้าที่ XE คืออินเตอร์เฟสบรรทัดคำสั่ง Xen (CLI) ซึ่งเทียบเท่ากับการออกคำสั่ง“ คลิกขวา” ใน“ Xen Center” โดยอัตโนมัติ เราจะเรียกสคริปต์จาก Cron ซึ่งจะให้ส่วน "การตั้งเวลา" ในรูปแบบที่ง่ายที่สุดโฟลว์การสำรองข้อมูลคือ:
- ปิด VM เป้าหมาย.
- ส่งออก VM เป็นไฟล์ไปยังตำแหน่งสำรอง.
- หาก VM เปิดอยู่ก่อนที่การสำรองข้อมูลจะเริ่มขึ้นจะเปิดอีกครั้ง.
ช่วยให้แคร็ก :)
รับสคริปต์
Xen-pocalypse สามารถรับได้อย่างอิสระจาก Github โดยใช้วิธีการ git ปกติ ด้วยที่กล่าวว่าหากคุณยังไม่เชี่ยวชาญในคอมไพล์คุณสามารถคว้าไฟล์ซิปด้วยลิงค์นี้ เนื่องจากสคริปต์ต้องการเรียกใช้บนเซิร์ฟเวอร์ Xen ของคุณคุณควรแตกไฟล์นั้นเพื่อให้สิทธิ์การดำเนินการนั้นถูกเก็บรักษาไว้.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
เปิดเครื่องรูดปริญญาโท
แม้ว่าวิธีการข้างต้นจะได้ผลคุณควรใช้วิธีการ GIT เพื่อให้คุณได้รับประโยชน์จากการอัปเดตในอนาคต.
รับ SendEmail (เป็นทางเลือก)
เราเคยเขียนเกี่ยวกับโปรแกรม Perl Sendmail ในอดีตที่ผ่านมาดังนั้นจึงไม่จำเป็นต้องย้ำที่นี่ เพียงพอที่จะบอกว่ามันใช้งานได้เหมือนกันบน Linux เช่นเดียวกับบน 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 ในบานหน้าต่างนำทางเลือก“ ฟิลด์ที่กำหนดเอง”.
หากนี่เป็นครั้งแรกที่คุณกำหนดความสัมพันธ์ (ดังในตัวอย่างด้านบน) คุณจะไม่มีฟิลด์ใด ๆ สำหรับป้อนข้อมูลดังนั้นคุณต้องสร้างความสัมพันธ์ ในการทำเช่นนี้คลิกที่ "แก้ไขฟิลด์ที่กำหนดเอง" ในกล่องโต้ตอบที่ปรากฏขึ้นคลิกที่ "เพิ่ม ... "
สร้างฟิลด์ประเภท“ Text” สาม (3) ตัว หนึ่งจะถูกเรียกว่า "BackupTAG" และอื่น ๆ "ผู้ปกครอง" และ "เด็ก ๆ ".
บันทึก: ชื่อของฟิลด์ที่กำหนดเองนั้นถูก "เข้ารหัสยาก" ไว้ในสคริปต์ดังนั้นคุณต้องไม่เบี่ยงเบนจากการสะกดข้างต้นเว้นแต่คุณจะเปลี่ยนรหัสที่เกี่ยวข้องเช่นกัน.
เมื่อสร้างฟิลด์ทั้งหมดแล้วคุณควรเห็น:
ปิดหน้าต่างตอนนี้คุณควรจะมีช่อง“ BackupTAG”,“ ผู้ปกครอง” และ“ เด็ก ๆ ” ที่จะเติมเต็มดังภาพด้านล่าง.
ตอนนี้สิ่งที่คุณต้องทำคือกำหนดว่า VM ใดเป็นของ "BackupTAG".
ตัวอย่างเช่นใน บริษัท ที่สคริปต์เติบโตขึ้นเรามี VM ที่ต้องสำรองทุกสัปดาห์ในวันพฤหัสบดีและวันศุกร์ตารางเวลาสำหรับผลิตภัณฑ์ Atlassian VM ของเราและบางส่วนที่ต้องสำรองข้อมูลรายเดือนเท่านั้น ดังนั้นภาพรวมของเราดูเหมือน:
ตัวอย่างเช่น“ Week-fri” เป็นข้อความที่เราป้อนเข้าไปใน“ BackupTAG”“ ฟิลด์ที่กำหนดเอง” เรียบร้อยเหรอ :)
ผู้ปกครองและเด็ก (ไม่จำเป็น)
ความงดงามที่แท้จริงของบทนี้คือมันสนับสนุนความสัมพันธ์แบบ "พ่อแม่" กับ "เด็ก" นั่นคือมันเป็นไปได้ที่จะตั้งค่ารายการของ "เด็ก" VMs ที่จะปิดและสำรองข้อมูลก่อนที่ผู้ปกครองและว่าเด็กเหล่านี้จะถูกเปิดใช้งานอีกครั้งเมื่อผู้ปกครองได้สำรองข้อมูลเสร็จสิ้นและได้หันกลับ บน. สิ่งนี้มีประโยชน์ในกรณีที่การปิด VM แม่จะทำให้บริการในลูกไม่พร้อมใช้งาน สิ่งดังกล่าวจะหมายถึงบริการบน child VM ไม่สามารถใช้ได้สองครั้งครั้งเดียวสำหรับกระบวนการสำรองข้อมูลของเด็กและอีกครั้งสำหรับผู้ปกครอง การสร้างความสัมพันธ์นี้จะเอาชนะปัญหานั้นได้.
ตัวอย่างเช่น Atlassian VM ทั้งหมดของเราใช้ DataBase (DB) VM เดียวซึ่งถูกตั้งค่าให้สำรองข้อมูลด้วย ดังนั้นโดยการสังเกตว่า DB VM เป็น“ พาเรนต์” ไปยัง VM อื่น ๆ สามารถสั่งปิด -> backup -> startup ได้อย่างถูกต้อง.
ในช่วงเวลาของการเขียนนี้ฟังก์ชั่นนี้มีสองประการ:
- ชื่อของ VM ที่จะมีความสัมพันธ์ดังกล่าวจะต้องไม่มีช่องว่าง คุณจะต้องลบช่องว่างออกจากชื่อ VM ของคุณเพราะจะเป็นการเว้นวรรคแบบเว้นวรรคดังตัวอย่างด้านล่าง.
- มีได้เพียงผู้ปกครองเดียวเท่านั้น การกำหนดมากกว่าหนึ่งรายการนั้นไม่ได้มีการวางแผนไว้แม้แต่อย่างเดียว.
เพื่อสร้างความสัมพันธ์นี้ไปที่คุณสมบัติของ VM หากนี่คือ "ผู้ปกครอง" ให้เขียนว่าใครเป็นลูกและถ้านี่เป็น "ลูก" ให้เขียนว่าผู้ปกครองของเขาคือใคร ตัวอย่างเช่น:
หมายเหตุ: การไม่กำหนดผู้ปกครองสำหรับเด็กอาจทำให้เด็กเริ่มต้นก่อนที่ผู้ปกครองพร้อมและอาจทำให้สำรองสองครั้ง.
วิธีการ FILE (ไม่จำเป็น)
ด้วยเหตุผลทางประวัติศาสตร์ Xen-pocalypse ยังสนับสนุนการรับรายการของ VM เพื่อสำรองข้อมูลเป็นไฟล์ข้อความ ในขณะที่ "รหัส" ยังคงอยู่ในนั้นฟังก์ชั่นจะด้อยกว่าอย่างมากกับวิธีการแท็กและดังนั้นจึงไม่แนะนำ ด้วยวิธีที่กล่าวมาหากคุณต้องการใช้วิธีรายการด้วยเหตุผลบางประการจะมีข้อ จำกัด ดังต่อไปนี้:
- ชื่อของ VM ไม่สามารถมีช่องว่างหรืออักขระพิเศษใด ๆ.
- สามารถมีชื่อ VM ได้เพียงชื่อเดียวต่อบรรทัด.
- ไม่อนุญาตให้ใช้บรรทัดว่าง.
ในการสร้างรายการให้คัดลอกชื่อของ VM จากศูนย์ Xen หรือดำเนินการกับโฮสต์ Xen:
xe vm-list | grep name-label | awk
'พิมพ์ $ 4' | ประเภท
คัดลอกรายการข้างต้นลงในไฟล์ข้อความปกติ.
ตำแหน่งสำรอง
ในขณะที่สุ่มโผล่ใน Citrix Xen ฉันพบว่า Storage Repositories (SRs) พร้อมใช้งานภายใต้“ / var / run / sr-mount /% UUID%” โดยที่ UUID เป็นตัวระบุเฉพาะของ SR ซึ่งสามารถ ได้รับจาก GUI.
ซึ่งหมายความว่าเราสามารถใช้ตัวช่วยสร้าง“ ถัดไป -> ถัดไป -> เสร็จสิ้น” เป็นประจำเพื่อสร้างการติดตั้งไปยังตำแหน่งสำรองที่ต้องการจากนั้นให้สคริปต์ใช้เส้นทางนั้น ดังนั้นอยู่นอกเหนือขอบเขตของคู่มือนี้.
หากต้องการสร้าง“ mount” ใหม่ให้คลิกขวาที่ชื่อเซิร์ฟเวอร์และเลือก New SR.
ในตัวอย่างนี้เราจะชี้ Xen ไปที่หน้าต่างแชร์ดังนั้นเลือก“ Windows File Sharing (CIFS)”:
ทำต่อไป -> ถัดไป -> เสร็จสิ้น.
รับ UUID ของ SR
ในการรับ UUID ของ SR เพียงคลิกที่ชื่อใน Xen Center แล้วไปที่แท็บ“ ทั่วไป”.
ในการคัดลอก UUID เพียงแค่คลิกขวามันเป็น "คัดลอก" เลือก.
ด้วยข้อมูลนี้อยู่ในมือคุณพร้อมที่จะแก้ไขไฟล์การตั้งค่า.
กำหนดค่าไฟล์การตั้งค่า.
โครงการ Xen-pocalypse มาพร้อมกับเทมเพลตไฟล์“ settings” เทมเพลตนี้ควรได้รับการแก้ไขเพื่อแสดงการตั้งค่าของคุณและส่งผ่านเป็นอาร์กิวเมนต์แรกของสคริปต์ ไฟล์การตั้งค่ากำหนดสิ่งต่อไปนี้:
วิธีการ สำหรับการรับ VMs เพื่อสำรองข้อมูล - วิธีการเริ่มต้นคือ TAG คุณสามารถเปลี่ยนเป็น FILE ได้ แต่ไม่แนะนำ.
สถานที่ ของปลายทางการสำรองข้อมูล - หากคุณทำตามคำแนะนำจนถึงจุดนี้คุณจะต้องแทนที่% UUID% ด้วย SR ของตามที่ได้รับมาจากด้านบน.
ตำแหน่งของ SendEmail - หากคุณเลือกที่จะเปิดใช้งานอีเมลคุณจะต้องป้อนข้อมูลที่คุณได้แยกไฟล์ปฏิบัติการที่นี่.
รายละเอียดอีเมล - อีกครั้งหากคุณเปิดใช้งานอีเมลคุณจะต้องกำหนดรายละเอียดเช่น: ถึง, จาก, ชื่อเซิร์ฟเวอร์ / IP & อื่น ๆ '.
การอัด - สิ่งนี้ถูกตั้งค่าเป็น "ไม่" โดยค่าเริ่มต้นเนื่องจากในขณะที่เปิดใช้งานมันจะสร้างไฟล์สำรองที่มีขนาดเล็กลงก็จะทำให้กระบวนการสำรองข้อมูลทำงานได้นานขึ้น.
ตรวจสอบพื้นที่ว่าง บนปลายทาง - นี่จะมีการตรวจสอบสคริปต์ที่ทำให้การสำรองข้อมูลของ VM จะไม่ทำให้พื้นที่ว่างของตำแหน่งการสำรองข้อมูลลดลงต่ำกว่า 10GB สิ่งนี้ทำเพื่อให้แน่ใจว่ามีการสำรองข้อมูล VMs จำนวนมากที่สุดแทนที่จะเป็น VM ขนาดใหญ่เพียงหนึ่งเดียว การคำนวณทำโดยใช้ขนาดดิสก์รวมทั้งหมดของ HD ทั้งหมดที่เกี่ยวข้องกับ VM.
แก้จุดบกพร่อง - ค่าเริ่มต้นคือปิดการดีบักด้วยค่า“ 0” (ศูนย์) คุณไม่จำเป็นต้องเปิดใช้สิ่งนี้ แต่หากทำจะมีการบันทึกข้อมูลเพิ่มเติมในส่วนการแก้ไขปัญหา.
การดำเนินการ / กำหนดการ
ในรูปแบบที่ง่ายที่สุดการเรียกใช้ Xen-pocalypse จะมีลักษณะดังนี้:
./Xen-backup.sh settings.cfg Week-fri
ในกรณีข้างต้นเราอยู่ในไดเรกทอรีที่เก็บสคริปต์และไฟล์การตั้งค่า "แท็ก" สคริปต์ที่จะค้นหาคือ "รายสัปดาห์ฟรี".
ดังที่กล่าวไว้ข้างต้นเราจะใช้ Cron เพื่อกำหนดการดำเนินการ ก่อนที่เราจะเข้าสู่การกำหนดค่ามันเป็น ขอแนะนำอย่างยิ่ง คุณกำหนดค่าแพ็คเกจ SSMTP ที่ติดตั้งไว้แล้วบนเซิร์ฟเวอร์ Xen ของคุณ แม้ว่านี่จะเป็นขั้นตอนที่ไม่จำเป็น แต่การทำเช่นนั้นจะทำให้คุณมีตัวรวบรวมย้อนกลับ การมี“ ผู้สะสมย้อนกลับ” เช่นนี้อาจเตือนคุณถึงสิ่งที่สคริปต์ไม่สามารถทำได้.
เข้าสู่การแก้ไข cron เพิ่มเติมโดยการออก:
crontab -e
หากคุณทำตามคำแนะนำด้านบนและคุณต้องการเพิ่มการสำรองข้อมูลตามกำหนดเวลาสำหรับวันศุกร์เวลา 18:01 น. (18:01 น.) ให้ป้อนข้อมูลด้านล่าง:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg รายสัปดาห์ -fri
ด้านบนถูกต้องสมมติว่าไฟล์สคริปต์และการตั้งค่าของคุณอยู่ภายใต้“ / root / Xen-pocalypse-master /”.
การแก้ไขปัญหา
ในขณะที่ฉันใช้ความพยายามอย่างมากในการทำให้สคริปต์ใช้งานง่ายและเข้าใจผิดได้มากที่สุด“ โลกเป็นห้องแล็บที่ใหญ่กว่า” ข้อมูลด้านล่างอาจช่วยให้คุณมั่นใจได้ว่าแหล่งที่มาของปัญหาของคุณคืออะไร.
ความคืบหน้า
คุณอาจต้องการใช้สายการบินนี้เพื่อ“ เฝ้าดู” งานทั้งหมดที่กำลังดำเนินอยู่อย่างรวดเร็วเพื่อดูว่าพวกเขากำลังก้าวหน้าจริง ๆ หรือไม่หรือพวกเขากำลังติดอยู่จริง ๆ.
ในขณะที่ [-e / dev / null]; ทำเพื่อ VM ใน "$ (xe task-list | grep uuid | awk 'พิมพ์ $ 5')"; ทำ xe task-param-get param-name = progress uuid = $ VM; sleep 1; ทำ; เสร็จแล้ว
หากต้องการหยุดดูให้ใช้ Ctrl + C เพื่อเบรก“ while loop”.
เข้าสู่ระบบ
“ การบันทึก” ทั้งหมดจะถูกรวบรวมโดยโฮสต์ Xen ที่เรียกใช้สคริปต์ในกลไก syslog หลักสูตรนี้สามารถดูได้ด้วย:
น้อย + F / var / log / ข้อความ
คุณกำลังมองหาคำสำคัญ“ Xen-pocalypse”.
หมายเหตุ: Citrix ได้กำหนดนโยบายการเก็บรักษาสอง (2) วันสำหรับ syslog ของเซิร์ฟเวอร์ คุณอาจต้องการเก็บไว้ในใจสำหรับ postmortems.
แก้จุดบกพร่อง
ตามที่ระบุไว้ในส่วนของไฟล์การตั้งค่ามีคำสั่งให้เปิดใช้งานการดีบัก การเปิดใช้งานการดีบักจะทำให้สคริปต์ออกการบันทึกข้อมูล verbose ไปที่คอนโซลและส่งออกจากการส่งอีเมลและดำเนินการส่งออกจริงยกเว้นว่ามีการตั้งค่าสถานะที่เกี่ยวข้อง ธงที่เป็นไปได้จะถูกบันทึกไว้ในเทมเพลตไฟล์การตั้งค่าและช่วยให้คุณสามารถกำหนดสิ่งที่คุณต้องการตรวจแก้จุดบกพร่องอย่างละเอียด.
มันเป็นความหวังของฉันที่คุณไม่ต้องการแก้จุดบกพร่องและคุณกำลังเก็บเกี่ยวผลของแรงงานของฉัน :)
ชายของฉันคุณกำลังจะกลายเป็นเซพติคอนอันดับหนึ่ง ...