একটি পূর্ববর্তী নিবন্ধে আমরা KVM হাইপারভাইজার ইনস্টল এবং একটি ভার্চুয়াল মেশিন তৈরি করার পদ্ধতি আলোচনা করেছিলাম। একক নিবন্ধে আমরা KVM ভার্চুয়াল মেশিন পরিচালনাকে বিস্তারিত কভার করতে পারিনি। আজ আমরা কমান্ড লাইন থেকে virsh ব্যবহার করে ভার্চুয়াল মেশিন পরিচালনা করার পদ্ধতি দেখতে চেষ্টা করব: VM সেটিংস কীভাবে পরিবর্তন করতে হয়, অতিরিক্ত ভার্চুয়াল ডিভাইস কীভাবে যোগ করতে হয়, এবং Linux-এ KVM ভার্চুয়াল মেশিন পরিচালনার জন্য কোন কমান্ডগুলো ব্যবহার করতে হয়।
KVM ভার্চুয়াল মেশিন পরিচালনার জন্য Virsh (Virtual Shell) কমান্ড ব্যবহার
দेखি রেজিস্টার্ড KVM ভার্চুয়াল মেশিনগুলো কীভাবে দেখতে হয়, কীভাবে সেগুলো শুরু, বন্ধ বা ডিলিট করতে হয়। Virsh (libvirt API-র উপর ভিত্তি করে) Linux কনসোলে KVM ভার্চুয়াল মেশিন পরিচালনা করতে ব্যবহার করা যেতে পারে।
# virsh list – চলমান VM-দের তালিকা দেখায়
# virsh list --all – সমস্ত রেজিস্টার্ড ভার্চুয়াল মেশিনের তালিকা দেখায় (শাট ডাউন করা VM-ও dahil)

স্ক্রিনশটে আপনি দেখতে পাচ্ছেন, প্রথম কেসে একটি শাট ডাউন 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 ব্যবহার করে ভার্চুয়াল CPU (vCPU) সংখ্যা ৬ করে পরিবর্তন করুন:
# 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
তারপর আগের কমান্ডটি চালান এবং ভার্চুয়াল মেশিন চালু করুন:

VM সেটিংসে vCPU সংখ্যা চেক করুন:
# 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-এ ২ প্রসেসর কোর এবং ১ 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 মাধ্যমে ভার্চুয়াল মেশিন পরিচালনা দেখাব।