ฉันใช้ qemu-img-0.12.1.2-2.355.0.1.el6 บน CentOS 6.3 โดยใช้อิมเมจดิบสำหรับเครื่องเสมือนของฉัน มีวิธีใดบ้างในการสำรองข้อมูลแขกอย่างปลอดภัยโดยไม่หยุดพวกเขา ฉันพยายามสร้างสแนปชอตกับแขกทดสอบซึ่งไม่ได้ทำงาน แต่มีข้อผิดพลาด: "ไม่รองรับสแน็ปช็อตดิสก์สดด้วยไบนารี qemu นี้" นี่หมายความว่ารูปแบบ raw ไม่เหมาะกับสแน็ปช็อตประเภทใด หรือเป็นบางอย่างในแพ็คเกจ KVM ของฉัน ฉันได้อ่านแล้วว่าการระงับแขกก็เพียงพอที่จะดำเนินการ dd ใช่ไหม ได้โปรด คุณช่วยแบ่งปันแนวปฏิบัติที่ดีที่สุดของคุณในด้านนี้หน่อยได้ไหม

answer

หากคุณกำลังใช้ไฟล์อิมเมจดิบวิธีเดียวที่จะได้รับสแน็ปช็อตที่สอดคล้องกันคือการระงับหรือปิด VM

คุณสามารถถ่ายภาพสแน็ปช็อตโดยใช้ไฟล์อิมเมจ qcow2 โดยไม่ต้องระงับ VM แต่สแน็ปช็อตจะกลายเป็นส่วนหนึ่งของไฟล์นั้น สิ่งนี้อาจจะใช่หรือไม่เหมาะสม ขึ้นอยู่กับสถานการณ์ของคุณ

คุณจะมีตัวเลือกเพิ่มเติมหากคุณใช้ CentOS 7 หรือไฮเปอร์ไวเซอร์ Fedora ปัจจุบัน เช่น วอลุ่ม LVM แบบ snapshottable หรือ ZFS zvols ในระบบที่ทันสมัยเหล่านี้ คุณจะvirsh domfsfreezeเป็นแขกรับเชิญ ถ่ายสแน็ปช็อตvirsh domfsthawแขกรับเชิญ จากนั้นสำรองสแน็ปช็อต สิ่งนี้ต้องการให้ตัวแทน qemu-guest-agent ทำงานในแขก

การระงับ VM-s virsh suspend <domain>เพียงหยุด VM ตามเอกสาร I/O ของดิสก์และ I/O เครือข่ายทั้งหมดถูกระงับ ในขณะที่ VM ยังคงใช้ RAM ของโฮสต์

หากคุณมี Centos มีความเป็นไปได้สูงที่คุณจะมีพาร์ติชัน LVM อยู่ที่นั่นและด้านบนของพาร์ติชัน XFS หากคำสั่งเป็นจริง คุณสามารถสำรองข้อมูลด้วยวิธีต่อไปนี้:

  • วางแคชบน VM และระงับ
  • วางแคชบนโฮสต์และทำสแน็ปช็อต LVM
  • เมานต์สแน็ปช็อต LVM ที่ใดที่หนึ่งในโฮสต์และทำตารางสำรองข้อมูลของคุณ

มันใช้งานได้สำหรับฉันแม้กระทั่งกับเซิร์ฟเวอร์ฐานข้อมูล การสำรองข้อมูลไฟล์เซิร์ฟเวอร์ (เช่น แซมบ้า) นั้นปลอดภัยอย่างสมบูรณ์โดยไม่ต้องวางแคชบนโฮสต์หรือ VM โดยถือว่าพารามิเตอร์เคอร์เนลบนโฮสต์และ guset เป็นค่าเริ่มต้น ข้อมูลสูญหายมีน้อย ตัวอย่างเช่น Ext4 คอมมิตเพจสกปรกใน RAM ทุก ๆ 5 วินาที (การตั้งค่าเริ่มต้น) อาจทำให้ข้อมูลสูญหายได้หากดำเนินการน้อยกว่า 5 วินาทีก่อนการแช่แข็ง การสูญเสียข้อมูลจำนวนนั้นเป็นที่ยอมรับสำหรับฉัน

วิธีการสำรองข้อมูลทุกวิธีมีข้อเสียบางประการ การหยุดทำงานหรือการสูญเสียข้อมูลที่อาจเกิดขึ้น ผู้ดูแลระบบฐานข้อมูลจำนวนมากคิดว่าการสูญหายของข้อมูลอาจนำไปสู่ความเสียหายของข้อมูลเมื่อกลไกฐานข้อมูล (เช่น MS SQL) บังคับต้องส่งทุกธุรกรรมไปยังระบบไฟล์ก่อนที่จะยอมรับการเปลี่ยนแปลง ในทางกลับกันพวกเขายอมรับที่จะกู้คืนข้อมูลจากการสำรองข้อมูลและเห็นด้วยกับการสูญเสียข้อมูล