Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

จัดการเครื่องเสมือน KVM จาก CLI ด้วย Virsh

ในบทความก่อนหน้านี้ เราได้พูดถึงวิธีการติดตั้ง KVM hypervisor และสร้างเครื่องเสมือน ในบทความเดียว เราไม่สามารถอธิบายรายละเอียดเกี่ยวกับการจัดการเครื่องเสมือน KVM ได้ วันนี้เราจะพยายามแสดงวิธีจัดการเครื่องเสมือนจากบรรทัดคำสั่งด้วย virsh :วิธีเปลี่ยนการตั้งค่า VM เพิ่มอุปกรณ์เสมือนเพิ่มเติม และคำสั่งที่จะใช้เพื่อจัดการเครื่องเสมือน KVM บน Linux

การใช้คำสั่ง Virsh (Virtual Shell) เพื่อจัดการเครื่องเสมือน KVM

มาดูวิธีการดูเครื่องเสมือน KVM ที่ลงทะเบียน วิธีเริ่ม หยุด หรือลบเครื่องเหล่านี้ Virsh (อิงตาม libvirt API) สามารถใช้จัดการเครื่องเสมือน KVM ในคอนโซล Linux ได้

# virsh list – แสดงรายการของ VM ที่รันอยู่

# virsh list --all – แสดงรายการเครื่องเสมือนที่ลงทะเบียนทั้งหมด (รวมถึงเครื่องที่ปิดตัวลง)

จัดการเครื่องเสมือน KVM จาก CLI ด้วย Virsh

ดังที่คุณเห็นในภาพหน้าจอ ในกรณีแรก VM การปิดระบบไม่แสดงขึ้น

# virsh shutdown <vm name> — ปิดเครื่องเสมือน

# virsh start <vm name> — เริ่มเครื่องเสมือน

# virsh suspend <vm name> — ระงับ VM

# virsh resume <vm name> — เริ่มเครื่องเสมือนที่ถูกระงับ

# virsh reboot <vm name> — รีสตาร์ท VM

# virsh destroy <vm name> — เริ่มต้นการปิดระบบโดยทันทีและหยุด VM (ใช้คำสั่งนี้เมื่อเครื่องเสมือนของแขกไม่ตอบสนอง)

# virsh undefine <vm name> — ยกเลิกการลงทะเบียน VM และลบโวลุ่มการจัดเก็บ

# virsh vcpuinfo <vm name> — แสดงข้อมูลเกี่ยวกับ vCPU ของ VM

จัดการเครื่องเสมือน KVM จาก CLI ด้วย Virsh

ต่อไปนี้เป็นคำสั่งอื่นๆ เพื่อรับข้อมูลที่แตกต่างกันเกี่ยวกับเครื่องเสมือน:

# virsh domid <vm name> — รับ ID เครื่องเสมือน

# virsh domuuid <vm name> — แสดง UUID ของเครื่องเสมือน

# virsh dominfo <vm name> — แสดงข้อมูลเกี่ยวกับเครื่องเสมือน

# virsh domstate <vm name> — ดูสถานะ VM

จัดการเครื่องเสมือน KVM จาก CLI ด้วย Virsh

# virsh dumpxml <vm name> — แสดงรายการไฟล์การกำหนดค่าของเครื่องเสมือนในรูปแบบ XML

จะเพิ่มหน่วยความจำและ vCPU ให้กับเครื่องเสมือน KVM ได้อย่างไร

ในคอนโซล KVM คุณสามารถเพิ่มหรือลดทรัพยากร CPU หรือหน่วยความจำที่กำหนดให้กับ VM ได้สองวิธี:

  • การใช้ virsh
  • ผ่านการกำหนดค่า VM XML ไฟล์

หากเครื่องเสมือนกำลังทำงานอยู่ ให้ปิดเครื่อง:

# virsh shutdown test-centos

Domain test-centos is being shutdown

จากนั้นใช้ virsh เพื่อเปลี่ยนจำนวน virtual CPU (vCPU) เป็น 6:

# virsh setvcpus <vm name> <vcpu_count> --config

ตัวอย่างเช่น:

# virsh setvcpus test-centos 6 --config

หลังจากที่ฉันเรียกใช้คำสั่งแล้ว มีข้อผิดพลาดปรากฏขึ้น:

error: invalid argument: requested vcpus is greater than max allowable vcpus for the persistent domain: 6 > 4

คุณไม่สามารถกำหนดจำนวนคอร์ที่มากกว่าจำนวนสูงสุดได้ หากต้องการเพิ่มจำนวน VM vCPU สูงสุดที่อนุญาต ให้เรียกใช้คำสั่งนี้:

# virsh setvcpus test-centos 6 --config --maximum

จากนั้นรันคำสั่งก่อนหน้าและเริ่มต้นเครื่องเสมือน:

จัดการเครื่องเสมือน KVM จาก CLI ด้วย Virsh

มาตรวจสอบจำนวน vCPU ในการตั้งค่า VM:

# virsh dumpxml test-centos

<domain type='kvm'>
<name>test-centos</name>
<uuid>3b223aa2-b322-1ff1-ab23-c1223abc1f01</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>6</vcpu>

ในทำนองเดียวกัน คุณสามารถเพิ่ม RAM เพิ่มเติมให้กับเครื่องเสมือน:

# virsh setmem <vm_name> <memsize> --config

ตัวอย่างเช่น:

# virsh setmem test-centos 4G --config

เกิดข้อผิดพลาดด้วยเหตุผลเดียวกัน:

error: invalid argument: cannot set memory higher than max memory.

มาเพิ่มจำนวนหน่วยความจำสูงสุดกันเถอะ:

# virsh setmaxmem test-centos 6G --config

จากนั้นคุณสามารถเพิ่มหน่วยความจำให้กับ VM ได้

ก่อนทำการเปลี่ยนแปลงใดๆ โปรดปิดเครื่องเสมือนแล้วเริ่มการทำงาน

นอกจากนี้ คุณสามารถเปลี่ยนจำนวนทรัพยากรของ KVM VM ในไฟล์การกำหนดค่า XML ได้ คุณสามารถแก้ไขออนไลน์หรือสำรองไฟล์ VM XML แก้ไขและนำไปใช้กับเครื่องเสมือนได้

มาแก้ไขไฟล์ VM XML ออนไลน์กันเถอะ:

# virsh edit <vm_name>

ใน vi ตัวแก้ไขที่ปรากฏขึ้น ทำการเปลี่ยนแปลงที่คุณต้องการโดยกดปุ่ม แทรก ปุ่ม.

เปลี่ยนบล็อกต่อไปนี้:

<domain type='kvm'>
<name>test-centos</name>
<uuid>3b223aa2-b322-1ff1-ab23-c1223abc1f01</uuid>
<memory unit='KiB'>6291456</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>6</vcpu>
<os>

ตัวอย่างเช่น มาจัดสรรแกนประมวลผล 2 คอร์และหน่วยความจำ 1 GB ให้กับ VM:

จัดการเครื่องเสมือน KVM จาก CLI ด้วย Virsh

โปรดทราบว่าขนาดหน่วยความจำจะแสดงเป็นกิโลไบต์

บันทึกการเปลี่ยนแปลงในไฟล์และรีบูต VM ของคุณ:

# virsh reboot <vm_name>

คุณสามารถทำได้เช่นเดียวกันหากคุณสำรองไฟล์ XML:

# virsh dumpxml <vm_name> > /root/test.xml
# vi /root/test.xml

เปลี่ยนการตั้งค่าที่คุณต้องการ บันทึกไฟล์ และนำไปใช้กับเครื่องเสมือน:

# virsh shutdown test-centos

Domain test-centos is being shutdown

# virsh define /root/test.xml

Domain test-centos defined from /root/test.xml

# virsh start test-centos

Domain test-centos started
บางครั้ง เมื่อคุณเปลี่ยนไฟล์การกำหนดค่า VM ทางออนไลน์ ทรัพยากรที่กำหนดจะถูกรีเซ็ตหลังจากการรีบูต ในกรณีนี้ ให้หยุดเครื่องเสมือนแล้วเริ่มการทำงาน

เพิ่มดิสก์ไปยัง KVM VM ที่มีอยู่

ในบทความหนึ่งของเรา เราได้อธิบายวิธีขยายหรือลดขนาดดิสก์ของเครื่องเสมือน KVM แต่เราไม่ได้บอกวิธีเพิ่มดิสก์เพิ่มเติม

ก่อนอื่น สร้างไฟล์ดิสก์ใหม่สำหรับเครื่องเสมือน:

# qemu-img create -f qcow2 -o size=20G /vz/disk/test.img

แทนที่จะใช้ qcow2 คุณสามารถใช้รูปแบบดิสก์ที่คุณต้องการได้ ระบุเส้นทางของไฟล์ด้วย ที่เก็บข้อมูลดิสก์ของฉันอยู่ใน /vz/disk/.

จากนั้นคุณสามารถเพิ่มอุปกรณ์ดิสก์เสมือนใน VM:

# virsh attach-disk <vm_name> /vz/disk/test.img vdb --type disk --persistent

ปิดเครื่องและรีบูต VM ของคุณ จากนั้นดูสิ่งที่คุณมี:

# virsh shutdown test-centos

Domain test-centos is being shutdown

# virsh start test-centos

Domain test-centos started

# virsh dumpxml test-centos

<domain type='kvm' id='14'>
<name>test-centos</name>
<uuid>3b223aa2-b322-1ff1-ab23-c1223abc1f01</uuid>
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
<vcpu placement='static'>6</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='cdrom'/>
<boot dev='hd'/>
<bootmenu enable='yes'/>
</os>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/vz/disk/test.img'/>
<backingStore/>
<target dev='vdb' bus='virtio'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>

อย่างที่คุณเห็น เพิ่มดิสก์แล้ว

จะเพิ่ม NIC ตัวที่สองไปยัง KVM Virtual Machine ได้อย่างไร

มาลองเพิ่มอินเทอร์เฟซเครือข่ายอื่นให้กับ VM ก่อนอื่น ตรวจสอบอินเทอร์เฟซเครือข่ายบนโฮสต์ Linux:

# brctl show

จัดการเครื่องเสมือน KVM จาก CLI ด้วย Virsh

ฉันมีเครื่องเสมือนหนึ่งเครื่องพร้อมอินเทอร์เฟซเครือข่ายหนึ่งเครื่องบนโฮสต์ KVM ของฉัน ฉันต้องการเพิ่มอินเทอร์เฟซเครือข่ายเสมือนอื่นให้กับ br0 รันคำสั่งเหล่านี้:

# virsh shutdown test-centos
# virsh attach-interface test-centos --type bridge --source br0 --persistent
# virsh start test-centos

ตรวจสอบให้แน่ใจว่าอินเทอร์เฟซเครือข่ายอื่นปรากฏใน VM ของคุณ:

จัดการเครื่องเสมือน KVM จาก CLI ด้วย Virsh

<interface type='bridge'>
<mac address='52:54:00:7e:c1:9f'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
<mac address='52:54:00:2f:23:79'/>
<source bridge='br0'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</interface>

นอกจากนี้ คุณสามารถเปลี่ยนการตั้งค่าเครือข่ายของเครื่องเสมือนได้โดยตรงผ่านไฟล์ XML:

# virsh edit test-centos

หลังจากอินเทอร์เฟซเครือข่ายแรก ให้เพิ่มบรรทัดเหล่านี้:

<interface type='bridge'>
<source bridge='br0'/>
</interface>

บันทึกไฟล์และเริ่มต้น VM KVM จะเพิ่มการกำหนดค่าส่วนที่เหลือ (ที่อยู่ MAC เป็นต้น) เอง

ในบทความนี้ เราได้กล่าวถึงสิ่งสำคัญที่คุณอาจต้องใช้เพื่อจัดการเครื่องเสมือน KVM จากคอนโซลเซิร์ฟเวอร์ Linux ในบทความถัดไปเราจะแสดงวิธีจัดการเครื่องเสมือนผ่าน virt-manager GUI.