ในบทความก่อนหน้านี้ เราได้พูดถึงวิธีการติดตั้ง KVM hypervisor และสร้างเครื่องเสมือน ในบทความเดียว เราไม่สามารถอธิบายรายละเอียดเกี่ยวกับการจัดการเครื่องเสมือน KVM ได้ วันนี้เราจะพยายามแสดงวิธีจัดการเครื่องเสมือนจากบรรทัดคำสั่งด้วย virsh
:วิธีเปลี่ยนการตั้งค่า VM เพิ่มอุปกรณ์เสมือนเพิ่มเติม และคำสั่งที่จะใช้เพื่อจัดการเครื่องเสมือน KVM บน Linux
การใช้คำสั่ง Virsh (Virtual Shell) เพื่อจัดการเครื่องเสมือน KVM
มาดูวิธีการดูเครื่องเสมือน KVM ที่ลงทะเบียน วิธีเริ่ม หยุด หรือลบเครื่องเหล่านี้ Virsh
(อิงตาม libvirt API) สามารถใช้จัดการเครื่องเสมือน KVM ในคอนโซล Linux ได้
# virsh list
– แสดงรายการของ VM ที่รันอยู่
# virsh list --all
– แสดงรายการเครื่องเสมือนที่ลงทะเบียนทั้งหมด (รวมถึงเครื่องที่ปิดตัวลง)
ดังที่คุณเห็นในภาพหน้าจอ ในกรณีแรก 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
ต่อไปนี้เป็นคำสั่งอื่นๆ เพื่อรับข้อมูลที่แตกต่างกันเกี่ยวกับเครื่องเสมือน:
# virsh domid <vm name>
— รับ ID เครื่องเสมือน
# virsh domuuid <vm name>
— แสดง UUID ของเครื่องเสมือน
# virsh dominfo <vm name>
— แสดงข้อมูลเกี่ยวกับเครื่องเสมือน
# virsh domstate <vm name>
— ดูสถานะ VM
# 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
จากนั้นรันคำสั่งก่อนหน้าและเริ่มต้นเครื่องเสมือน:
มาตรวจสอบจำนวน 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:
โปรดทราบว่าขนาดหน่วยความจำจะแสดงเป็นกิโลไบต์
บันทึกการเปลี่ยนแปลงในไฟล์และรีบูต 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 ของฉัน ฉันต้องการเพิ่มอินเทอร์เฟซเครือข่ายเสมือนอื่นให้กับ br0 รันคำสั่งเหล่านี้:
# virsh shutdown test-centos
# virsh attach-interface test-centos --type bridge --source br0 --persistent
# virsh start test-centos
ตรวจสอบให้แน่ใจว่าอินเทอร์เฟซเครือข่ายอื่นปรากฏใน VM ของคุณ:
<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.