ไม่ นี่ไม่ใช่วิธีการทั่วไปเกี่ยวกับการใช้ virt-clone ในขณะที่ virt-clone เป็นเครื่องมือที่ค่อนข้างมีประโยชน์สำหรับการสร้างเครื่องเสมือนของคุณซ้ำกัน แต่ในการกำหนดค่าปัจจุบัน มันจะกำหนดเฉพาะ ID และที่อยู่ MAC ที่ไม่ซ้ำกันให้กับระบบที่โคลนของคุณ บังคับให้คุณปรับแต่งและปรับแต่งเพิ่มเติมเมื่อโคลนบูท ซึ่งหมายความว่าคุณอาจต้องเข้าไปยุ่งเล็กน้อย ซึ่งไม่ใช่สิ่งที่คุณต้องการ
เอาล่ะ ฉันจะแสดงวิธีอื่นในการสร้างสำเนาที่เหมือนกันของเครื่องเสมือนของคุณในเทคโนโลยี KVM พร้อมข้อมูลเฉพาะสำหรับแต่ละโฮสต์ เพื่อให้สำเนาจำนวนเท่าใดก็ได้กลายเป็นแต่ละโฮสต์บนเครือข่ายของคุณ กล่าวอีกนัยหนึ่ง ติดตั้งครั้งเดียวแล้วสร้างอินสแตนซ์ของผู้เยี่ยมชมได้มากเท่าที่คุณต้องการ แต่ละอินสแตนซ์มีชื่อโฮสต์ ที่อยู่ MAC ที่อยู่ IP และอื่นๆ ของตัวเอง เขียนสคริปต์ได้อย่างสมบูรณ์และทั้งหมดนั้น ดังนั้นโปรดติดตามฉัน
หมายเหตุ:ภาพนี้นำมาจาก Wikimedia ซึ่งได้รับอนุญาตภายใต้ CC BY 2.0
วิธีที่มีประสิทธิภาพน้อยกว่า
เรามาคุยกันสั้น ๆ เกี่ยวกับ virt-clone สักครู่ ไม่ใช่ยูทิลิตี้ที่ไม่ดี แต่การใช้งานนั้นไม่ได้มาตรฐานในการแจกจ่าย บางตัวจัดส่งทั้งคอมโพเนนต์ GUI ซึ่งเป็นส่วนหนึ่งของ Virtual Machine Manager บางตัวยังมีเครื่องมือบรรทัดคำสั่งอีกด้วย ในทั้งสองกรณี การโคลนจะได้รับเพียง ID เฉพาะใหม่และที่อยู่ MAC เท่านั้น แต่ไม่มีข้อมูลอื่น ไฟล์การกำหนดค่าจะถูกเก็บไว้ภายใต้ /etc/libvirt/qemu
นี่คือตัวอย่าง:
ตอนนี้เราไม่ต้องการสิ่งนี้ ไม่สมบูรณ์แบบ
การโคลนนิ่ง + เครื่องมือการค้า
ตอนนี้มาถูกทางแล้ว คุณจะต้องใช้เครื่องมือน้อยมากเพื่อให้ได้ผลลัพธ์ที่ต้องการ ในความเป็นจริงเป็นเพียงเครื่องมือเดียวและเรียกว่า kpartx ซึ่งเป็นยูทิลิตี้ที่สามารถสร้างแผนผังอุปกรณ์จากตารางพาร์ติชันได้ โดยเฉพาะที่นี่ คุณสามารถใช้เพื่อสร้างการแมปพาร์ติชันสำหรับเครื่องแขกของคุณโดยการสอบถามดิสก์เสมือน เราจะสาธิตการใช้ Linux แต่ระบบที่ใช้ UNIX ส่วนใหญ่จะใช้งานได้
สิ่งที่เราต้องทำคืออ่านตารางพาร์ติชันจากดิสก์เสมือน อันดับแรก เราต้องสร้างสำเนาของดิสก์เสมือน เนื่องจากแต่ละเครื่องจะมีเป็นของตัวเอง นี่เป็นขั้นตอนเดียวที่ช้าของขั้นตอนการโคลน และจะขึ้นอยู่กับขนาดไฟล์ของคุณและความเร็วของดิสก์ โดยทั่วไป คุณจะต้องใช้เวลาสองสามนาทีในการคัดลอกไฟล์ดิสก์ทั่วไปขนาด 20GB
cp <ไฟล์ดิสก์เก่า> <ไฟล์ดิสก์ใหม่>
ตอนนี้ตารางพาร์ติชัน:
kpartx -a <ไฟล์ดิสก์เสมือน>
สิ่งนี้จะสร้างผลลัพธ์บางอย่าง ในความเป็นจริง คุณจะเห็น mapper แยกต่างหากสำหรับแต่ละพาร์ติชันที่อยู่ภายในเครื่องเสมือน ตัวอย่างเช่น ถ้าคุณมี / และ /บ้าน คุณจะมีผู้ทำแผนที่สองคน
kpartx -av /kvm/disk.raw
เพิ่มแผนที่ loop0p1 (253:0):0 4206592 เชิงเส้น /dev/loop0 2048
เพิ่มแผนที่ loop0p2 (253:1):0 79677440 เชิงเส้น /dev/loop0 4208640
ตอนนี้เป็นเรื่องของการติดตั้งอุปกรณ์ที่เกี่ยวข้องและทำการเปลี่ยนแปลงต่อโฮสต์:
เมานต์ /dev/mapper/<วนกลับพาร์ติชันที่เกี่ยวข้อง> /mountpoint
ตัวอย่างเช่น:
เมานต์ /dev/mapper/loop0p1 /mnt
การเปลี่ยนแปลงโฮสต์ที่ไม่ซ้ำกัน
ตอนนี้เครื่องเสมือนของคุณต้องการการเปลี่ยนแปลงดังต่อไปนี้:
/ etc / โฮสต์
/etc/ชื่อโฮสต์
และขึ้นอยู่กับว่าคุณใช้ Debian หรือ RedHat/SUSE การกำหนดค่าเครือข่าย แม้ว่าสิ่งเหล่านี้อาจไม่จำเป็นหากคุณใช้ DHCP อย่างไรก็ตาม หากคุณกำลังใช้ที่อยู่ IP แบบคงที่ คุณต้อง:
/etc/sysconfig/network/ifcfg-<อุปกรณ์>
หรือ
/etc/network/อินเทอร์เฟซ
การเปลี่ยนแปลงอื่น ๆ อาจจำเป็น แต่มีการเปลี่ยนแปลงพื้นฐาน เมื่อคุณบันทึกการเปลี่ยนแปลงแล้ว ให้ต่อเชื่อม ขั้นตอนต่อไปคือแก้ไขไฟล์การกำหนดค่า KVM สำหรับโคลนใหม่ ไฟล์ XML จะถูกเก็บไว้ในไดเร็กทอรี /etc/kvm/vm หรือ /etc/libvirt/qemu หากเครื่องถูกสร้างขึ้นโดยอัตโนมัติโดยใช้ Virtual Machine Manager
การเปลี่ยนแปลงไฟล์ XML
ขั้นแรก สร้างสำเนาของการกำหนดค่าเทมเพลต
ตอนนี้ คุณจะต้องแก้ไข ID ชื่อ และที่อยู่ MAC เฉพาะของโดเมนของคุณ เช่นเดียวกับก่อนหน้านี้ คุณจะต้องใช้ตรรกะเอกลักษณ์บางประเภท อาจใช้ grep, awk และการค้นหาแบบอินไลน์ &แทนที่ด้วย sed รวมถึงนิพจน์ทั่วไปที่เหมาะสมเมื่อจำเป็น เพื่อให้คุณสามารถเขียนสคริปต์ขั้นตอนของคุณได้อย่างเต็มที่ โดยปกติคุณจะต้องชี้คำสั่งของฮาร์ดดิสก์ไปยังไฟล์ที่ถูกต้อง
ตัวอย่างเช่น นี่คือชุดคำสั่งที่คุณอาจต้องใช้:
sed -i -e 's/\
ไฟล์.xml
และด้วย grep เพื่อให้แน่ใจว่าใช้งานได้:
sed -i -e 's/\
ไฟล์.xml. | เกรป เดโดอิเมโด
รวมทุกอย่างเข้าด้วยกัน
ดังนั้นสคริปต์โคลนที่สมบูรณ์จะเป็น - ฉันให้ตัวอย่างทั่วไปคือ RedHat คุณสามารถปรับเปลี่ยนได้เอง ในทำนองเดียวกัน บางส่วนของสคริปต์ต้องการตรรกะของคุณเอง เช่น การตัดสินใจว่าจะแยกพาร์ติชันเอาต์พุตอย่างไร ยิ่งไปกว่านั้น คุณอาจต้องการงานเพิ่มเติมในการแยกวิเคราะห์เอาต์พุตของไฟล์ XML และถอดวงเล็บเปิดและปิด เครื่องหมายคำพูด และอักขระอื่นๆ
#!/bin/bash
# ระงับระบบปฏิบัติการเทมเพลตขณะทำการโคลน
virsh ระงับ <โดเมน>
cp <ดิสก์เก่า> <ดิสก์ใหม่>
virsh เรซูเม่ <โดเมน>
kpartx -a <ดิสก์ใหม่>
# ตรรกะบางอย่างในการอ่านพาร์ติชันที่เกี่ยวข้อง
เมานต์ <พาร์ติชันที่ต้องการ> <จุดเมานต์>
# ตรรกะบางอย่างในการแยกวิเคราะห์เนื้อหาของไฟล์เฉพาะของโฮสต์
sed -i -e 's/old hostname line/new hostname line/' /etc/HOSTNAME
sed -i -e 's/old hostname line/new hostname line/' /etc/hosts
sed -i -e 's/old IP config/new IP config/' /etc/sysconfig/network/ifcfg-eth0
umount <จุดเมานต์>
cp /etc/kvm/vm/old.xml /etc/kvm/vm/new.xml
# ตรรกะบางอย่างเพื่อสร้าง uuid, ชื่อ, mac, ฯลฯ ใหม่
# ตรรกะบางอย่างในการแยกวิเคราะห์ไฟล์ XML อย่างถูกต้อง
sed -i -e 's/old uuid/new uuid/' /etc/kvm/vm/new.xml
sed -i -e 's/ชื่อเก่า/ชื่อใหม่/' /etc/kvm/vm/new.xml
sed -i -e 's/old mac/new mac/' /etc/kvm/vm/new.xml
sed -i -e 's/old disk/new disk/' /etc/kvm/vm/new.xml
virsh สร้าง /etc/kvm/vm/new.xml
ทางออก 0
และเราทำเสร็จแล้ว บูตและสนุกได้เลย!
อนาคตที่เป็นไปได้มากที่สุด:virt-sysprep
บทช่วยสอนทั้งหมดนี้จะไร้ประโยชน์หากคุณมี virt-sysprep ในกล่องของคุณ ซึ่งอาจหมายความว่าคุณกำลังใช้ระบบปฏิบัติการโปรดรุ่นใดรุ่นหนึ่งในภายหลัง อย่างไรก็ตาม ในสภาพแวดล้อมทางธุรกิจ มักจะไม่เป็นเช่นนั้น ดังนั้นเครื่องมือนี้จะไม่พร้อมใช้งานสำหรับผู้ดูแลระบบส่วนใหญ่ หากคุณมีโอกาสใช้มัน มันจะมีการปรับปรุงเครื่องมือโคลนพื้นฐานที่มีประโยชน์มาก ๆ การอ้างอิงเอกสารต้นฉบับ:
Virt-sysprep รีเซ็ตหรือยกเลิกการกำหนดค่าเครื่องเสมือนเพื่อให้สามารถทำการโคลนได้ ขั้นตอนในกระบวนการนี้รวมถึงการลบคีย์โฮสต์ SSH การลบการกำหนดค่า MAC ของเครือข่ายถาวร และการลบบัญชีผู้ใช้ แต่ละขั้นตอนสามารถเปิดหรือปิดได้ตามต้องการ Virt-sysprep ปรับเปลี่ยนเกสต์หรือดิสก์อิมเมจ แขกต้องปิดตัวลง หากคุณต้องการรักษาเนื้อหาที่มีอยู่ของเกสต์ คุณต้องคัดลอกหรือโคลนดิสก์ก่อน
เราจะพูดถึงเครื่องมือที่มีประโยชน์นี้แยกกันในบทช่วยสอนอื่น
อ่านเพิ่มเติม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความสนุกของ KVM:
KVM + VirtualBox อยู่ร่วมกันอย่างกลมกลืน
บทช่วยสอนเกี่ยวกับเครือข่ายบริดจ์ KVM
การจัดเก็บ KVM และการจัดการเครือข่าย
และนี่คือวิธีการโคลนเครื่อง ESXi ซึ่งมีแนวคิดคล้ายกัน
แหล่งข้อมูลอื่นสำหรับเครื่องมืออิมเมจดิสก์ของเครื่องเสมือน - libguestfs
สรุป
นี่เป็นบทช่วยสอนที่เรียบง่ายและสง่างาม ฉันคิดว่าคุณจะพบว่ามีประโยชน์อย่างมากเนื่องจากช่วยเสริมขั้นตอนการโคลนนิ่งด้วยตนเองเป็นส่วนใหญ่ด้วยเครื่องมืออื่นๆ คุณได้รับชุดคำสั่งที่คุณสามารถใส่ลงในสคริปต์ BASH เดียวได้อย่างง่ายดาย จากนั้น Bob ก็เป็นอาของคุณ
ในหมายเหตุที่ร้ายแรงกว่านั้น คุณได้เรียนรู้เพิ่มเติมเล็กน้อยเกี่ยวกับการกำหนดค่า KVM และตำแหน่งไฟล์ การใช้ virt-clone แบบพื้นฐาน วิธีติดตั้งดิสก์เครื่องเสมือนและแก้ไขข้อมูลในพาร์ติชันที่เกี่ยวข้องโดยใช้ partx รวมถึงการกำหนดค่าเครือข่ายและโฮสต์ และ วิธีกำหนดฟิลด์เฉพาะให้กับโดเมนเสมือนของคุณ และยังมี libguestfs ด้วย รวมถึงคำแนะนำที่เป็นประโยชน์อย่างยิ่งอื่นๆ สรุปไม่เลวสำหรับการทำงานห้านาที
สุดท้าย virt-sysprep ทำให้การโคลนง่ายขึ้นมาก อย่างไรก็ตาม วิธีการแบบแมนนวล แม้จะซับซ้อนกว่าเล็กน้อย แต่ก็ไม่มีทางเข้าใจผิดได้ คุณสามารถทำอะไรก็ได้ที่ต้องการโดยใช้มัน และคุณไม่จำกัดเฉพาะสวิตช์และตัวเลือกบรรทัดคำสั่งที่มีอยู่ มันจะใช้งานได้เสมอและสามารถเขียนสคริปต์ได้อย่างสมบูรณ์ ยอดเยี่ยม
ฉันเดาว่าจะเป็นทั้งหมด
ไชโย