पिछले लेख में हमने चर्चा की थी कि KVM हाइपरवाइज़र कैसे इंस्टॉल करें और वर्चुअल मशीन कैसे बनाएं। एक ही लेख में हम KVM वर्चुअल मशीन प्रबंधन को विस्तार से कवर नहीं कर सके। आज हम दिखाने की कोशिश करेंगे कि virsh के साथ कमांड लाइन से वर्चुअल मशीन कैसे प्रबंधित करें: VM सेटिंग्स कैसे बदलें, अतिरिक्त वर्चुअल डिवाइस कैसे जोड़ें, और Linux पर KVM वर्चुअल मशीन प्रबंधित करने के लिए किन कमांड्स का उपयोग करें।
KVM वर्चुअल मशीन प्रबंधित करने के लिए Virsh (वर्चुअल शेल) कमांड्स का उपयोग करना
आइए देखें कि रजिस्टर्ड KVM वर्चुअल मशीन कैसे देखें, उन्हें कैसे शुरू, रोकें या हटाएं। Virsh (libvirt API पर आधारित) का उपयोग Linux कंसोल में KVM वर्चुअल मशीन प्रबंधित करने के लिए किया जा सकता है।
# virsh list – चल रही VMs की सूची दिखाता है
# 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> — VM के vCPU के बारे में जानकारी दिखाता है

वर्चुअल मशीन के बारे में विभिन्न जानकारी प्राप्त करने के लिए कुछ अन्य कमांड्स यहां दिए गए हैं:
# virsh domid <vm name> — वर्चुअल मशीन ID प्राप्त करें
# virsh domuuid <vm name> — वर्चुअल मशीन का UUID दिखाएं
# virsh dominfo <vm name> — वर्चुअल मशीन के बारे में जानकारी प्रदर्शित करता है
# virsh domstate <vm name> — VM स्थिति देखें

# virsh dumpxml <vm name> — वर्चुअल मशीन की कॉन्फ़िगरेशन फाइल को XML फॉर्मेट में सूचीबद्ध करें
KVM वर्चुअल मशीन में मेमोरी और vCPU कैसे जोड़ें?
KVM कंसोल में, आप VM को आवंटित CPU या मेमोरी संसाधनों को दो तरीकों से जोड़ या कम कर सकते हैं:
- virsh का उपयोग करके
- XML कॉन्फ़िगरेशन फाइल के माध्यम से
यदि वर्चुअल मशीन चल रही है, तो इसे बंद करें:
# virsh shutdown test-centos
Domain test-centos is being shutdown
फिर virsh का उपयोग करके वर्चुअल CPUs (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 vCPUs की अधिकतम अनुमत संख्या बढ़ाने के लिए, यह कमांड चलाएं:
# virsh setvcpus test-centos 6 --config --maximum
फिर पिछली कमांड चलाएं और वर्चुअल मशीन शुरू करें:

VM सेटिंग्स में vCPUs की संख्या जांचें:
# 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 एडिटर में, Insert बटन दबाकर वांछित परिवर्तन करें।
निम्न ब्लॉक बदलें:
<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>
उदाहरण के लिए, VM को 2 प्रोसेसर कोर और 1 GB मेमोरी आवंटित करें:

ध्यान दें कि मेमोरी आकार किलोबाइट्स में दिखाया गया है।
फाइल में परिवर्तन सेव करें और अपनी 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>
जैसा कि आप देख सकते हैं, डिस्क जोड़ दी गई है।
KVM वर्चुअल मशीन में दूसरा NIC कैसे जोड़ें?
आइए 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 पता, आदि) खुद जोड़ देगा।
इस लेख में हमने उन मुख्य चीजों को कवर किया है जिनकी आपको Linux सर्वर कंसोल से KVM वर्चुअल मशीन प्रबंधित करने के लिए आवश्यकता हो सकती है। अगले लेख में हम दिखाएंगे कि virt-manager GUI के माध्यम से वर्चुअल मशीन कैसे प्रबंधित करें।