โฮมเพจ » ทำอย่างไร » วิธีการสำรองข้อมูล Citrix Xen VMs ฟรีด้วย Xen-pocalypse (Bash)

    วิธีการสำรองข้อมูล 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 ได้อย่างถูกต้อง.

    ในช่วงเวลาของการเขียนนี้ฟังก์ชั่นนี้มีสองประการ:

    1. ชื่อของ VM ที่จะมีความสัมพันธ์ดังกล่าวจะต้องไม่มีช่องว่าง คุณจะต้องลบช่องว่างออกจากชื่อ VM ของคุณเพราะจะเป็นการเว้นวรรคแบบเว้นวรรคดังตัวอย่างด้านล่าง.
    2. มีได้เพียงผู้ปกครองเดียวเท่านั้น การกำหนดมากกว่าหนึ่งรายการนั้นไม่ได้มีการวางแผนไว้แม้แต่อย่างเดียว.

    เพื่อสร้างความสัมพันธ์นี้ไปที่คุณสมบัติของ VM หากนี่คือ "ผู้ปกครอง" ให้เขียนว่าใครเป็นลูกและถ้านี่เป็น "ลูก" ให้เขียนว่าผู้ปกครองของเขาคือใคร ตัวอย่างเช่น:

    หมายเหตุ: การไม่กำหนดผู้ปกครองสำหรับเด็กอาจทำให้เด็กเริ่มต้นก่อนที่ผู้ปกครองพร้อมและอาจทำให้สำรองสองครั้ง.

    วิธีการ FILE (ไม่จำเป็น)

    ด้วยเหตุผลทางประวัติศาสตร์ Xen-pocalypse ยังสนับสนุนการรับรายการของ VM เพื่อสำรองข้อมูลเป็นไฟล์ข้อความ ในขณะที่ "รหัส" ยังคงอยู่ในนั้นฟังก์ชั่นจะด้อยกว่าอย่างมากกับวิธีการแท็กและดังนั้นจึงไม่แนะนำ ด้วยวิธีที่กล่าวมาหากคุณต้องการใช้วิธีรายการด้วยเหตุผลบางประการจะมีข้อ จำกัด ดังต่อไปนี้:

    1. ชื่อของ VM ไม่สามารถมีช่องว่างหรืออักขระพิเศษใด ๆ.
    2. สามารถมีชื่อ VM ได้เพียงชื่อเดียวต่อบรรทัด.
    3. ไม่อนุญาตให้ใช้บรรทัดว่าง.

    ในการสร้างรายการให้คัดลอกชื่อของ 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 ไปที่คอนโซลและส่งออกจากการส่งอีเมลและดำเนินการส่งออกจริงยกเว้นว่ามีการตั้งค่าสถานะที่เกี่ยวข้อง ธงที่เป็นไปได้จะถูกบันทึกไว้ในเทมเพลตไฟล์การตั้งค่าและช่วยให้คุณสามารถกำหนดสิ่งที่คุณต้องการตรวจแก้จุดบกพร่องอย่างละเอียด.

    มันเป็นความหวังของฉันที่คุณไม่ต้องการแก้จุดบกพร่องและคุณกำลังเก็บเกี่ยวผลของแรงงานของฉัน :)


    ชายของฉันคุณกำลังจะกลายเป็นเซพติคอนอันดับหนึ่ง ...