এই নিবন্ধে আমরা Linux RHEL বা CentOS চালিত একটি সার্ভারে KVM হাইপারভাইজার ইনস্টল এবং কনফিগার করার পদ্ধতি দেখব। আমরা KVM-এ ভার্চুয়াল মেশিন তৈরি, এর সেটিংস পরিবর্তন এবং গেস্ট অপারেটিং সিস্টেম ইনস্টল করার পদ্ধতি দেখাব। আমরা VM পরিচালনার জন্য কিছু সাধারণ কমান্ডও বর্ণনা করব।
KVM (Kernel-based Virtual Machine) হল একটি Linux হাইপারভাইজার যা Intel VT- বা AMD SVM হার্ডওয়্যার ভার্চুয়ালাইজেশন টেকনোলজি ব্যবহার করে। KVM ব্যবহার করে আপনি পৃথক ভার্চুয়াল মেশিন তৈরি করতে পারেন যাদের নিজস্ব ভার্চুয়াল হার্ডওয়্যার থাকে: নেটওয়ার্ক অ্যাডাপ্টার, ডিস্ক, গ্রাফিক্স কার্ড বা অন্যান্য ডিভাইস। আপনি ভার্চুয়াল মেশিনে যেকোনো গেস্ট OS ইনস্টল করতে পারেন (শুধুমাত্র Linux নয়)।
CentOS/RHEL-এ KVM ইনস্টল করার পদ্ধতি?
আপনি আপনার সার্ভারে KVM কনফিগার করার সময় CPU চেক দিয়ে শুরু করুন। আপনাকে নিশ্চিত করতে হবে যে আপনার হোস্টে ইনস্টল করা CPU হার্ডওয়্যার ভার্চুয়ালাইজেশন সমর্থন করে কিনা। আপনার সার্ভার কনসোলে নিচের কমান্ড চালান:
# cat /proc/cpuinfo | egrep "(vmx|svm)"
যদি আপনার প্রসেসর VT-x সমর্থন করে, তবে আপনি নিচেরような আউটপুট দেখবেন:

যদি কমান্ডটি কিছুই না ফেরত দেয়, কিন্তু আপনি জানেন যে আপনার CPU ভার্চুয়ালাইজেশন সমর্থন করে, তবে নিশ্চিত করুন যে এই অপশনটি সার্ভার BIOS-এ নিষ্ক্রিয় নয়। Intel Virtualization Technology বা SVM MODE অপশনগুলো খুঁজুন।
আমার সার্ভার VT-x সমর্থন করে এবং এটি সক্রিয়, সুতরাং আমরা yum/dnf ব্যবহার করে CentOS/RHEL-এ প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করতে পারি:
# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y
- qemu-kvm – KVM হাইপারভাইজার
- libvirt – ভার্চুয়ালাইজেশন ম্যানেজমেন্ট লাইব্রেরি
- virt-install – KVM ভার্চুয়াল মেশিন পরিচালনার CLI টুল
আপনার Linux সার্ভারে অনেক প্যাকেজ ইনস্টল হবে। নিশ্চিত করুন যে ইনস্টলেশনের সময় কোনো ত্রুটি হয় না।
তারপর libvirtd সার্ভিসকে স্টার্টআপে যোগ করুন এবং চালু করুন::
# systemctl enable libvirtd
# systemctl start libvirtd

নিশ্চিত করুন যে kvm_intel এবং kvm kernel মডিউলগুলো লোড হয়েছে:
# lsmod | grep kvm
kvm_intel 188688 0 kvm 636931 1 kvm_intel irqbypass 13503 1 kvm
যদি কমান্ডটি কিছুই না ফেরত দেয়, তবে হোস্ট রিস্টার্ট করুন এবং আবার চেক করুন।
KVM-এ ব্রিজ নেটওয়ার্কিং তৈরি এবং কনফিগারেশন
তারপর ভার্চুয়াল মেশিন ডিস্ক এবং ISO ইমেজ সংরক্ষণের জন্য ডিরেক্টরি তৈরি করুন:
# mkdir -p /vz/{disk,iso}
আপনার ভার্চুয়াল মেশিনগুলোর ইন্টারনেট অ্যাক্সেস থাকতে হলে, আপনাকে bridge ব্যবহার করে নেটওয়ার্ক কনফিগার করতে হবে। এর জন্য আপনাকে bridge-utils প্রয়োজন। নিচের কমান্ড ব্যবহার করে চেক করুন যে এটি আপনার Linux হোস্টে ইনস্টল করা আছে কিনা:
# rpm -qa | grep bridge-utils
প্রয়োজনে ইনস্টল করুন:
# yum install bridge-utils -y
প্যাকেজ ইনস্টল করার পর, অপারেটিং সিস্টেমে virbr0 নেটওয়ার্ক ইন্টারফেস দেখাবে:
# ip a

একটি bridge তৈরি করতে, আপনাকে আপনার সার্ভার নেটওয়ার্ক ইন্টারফেসের কনফিগারেশন ফাইল সেট আপ করতে হবে:
# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak – ফাইলটি ব্যাকআপ নিন# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 — এডিট করার জন্য খুলুন
ফাইলের কন্টেন্ট ডিলিট করুন এবং নিচের কন্টেন্ট দিয়ে প্রতিস্থাপন করুন:
DEVICE="enp1s0f0" ONBOOT="yes" BRIDGE=br0
আপনার ক্ষেত্রে ইন্টারফেসের নাম ভিন্ন হতে পারে (ip a কমান্ড ব্যবহার করে পান)।
তারপর একটি ফাইল তৈরি করুন:
# nano /etc/sysconfig/network-scripts/ifcfg-br0
নিচের কনফিগারেশন সহ:
DEVICE="br0" TYPE=BRIDGE ONBOOT=yes BOOTPROTO=static IPADDR="IP_address_of_the_server" NETMASK="255.255.255.0" GATEWAY="Default_gateway" DNS1="8.8.8.8" DNS2="8.8.4.4"
আপনাকে আপনার সার্ভার IP ঠিকানা এবং ডিফল্ট গেটওয়ে নির্দিষ্ট করতে হবে। নেটওয়ার্ক ইন্টারফেস কনফিগারেশন ফাইল সম্পাদনা করার পর, নেটওয়ার্ক রিস্টার্ট করুন:
# service network restart
নেটওয়ার্ক রিস্টার্টের পর আপনি আপনার সার্ভারে অ্যাক্সেস না করতে পারলে, হোস্টটিও রিস্টার্ট করার চেষ্টা করুন। কখনো কখনো ব্রিজ সঠিকভাবে কনফিগার করতে হোস্ট রিস্টার্ট প্রয়োজন হয়।
ব্রিজের অবস্থা দেখতে এই কমান্ড ব্যবহার করুন:
# brctl show
bridge name bridge id STP enabled interfaces br0 8000.ac1f6b654321 no enp1s0f0 virbr0 8000.525400abcdef1 yes virbr0-nic
শেষ ধাপে, নেটওয়ার্ক ট্রাফিক ফরওয়ার্ডিং কনফিগার করুন:
# echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p
তারপর libvirtd রিস্টার্ট করুন:
# service libvirtd restart
KVM নেটওয়ার্কের বেসিক কনফিগারেশন সম্পন্ন, এবং আপনি ভার্চুয়াল মেশিন তৈরি করতে পারেন।
KVM-এ ভার্চুয়াল মেশিন তৈরি
ভার্চুয়াল মেশিন তৈরির আগে, আমি একটি অফিসিয়াল মিরর থেকে CentOS 8 ইমেজ /vz/iso-এ ডাউনলোড করেছিলাম:
# cd /vz/iso && wget https://mirror.imt-systems.com/centos/8.3.2011/isos/x86_64/CentOS-8.3.2011-x86_64-dvd1.iso
একটি নতুন KVM ভার্চুয়াল মেশিন তৈরি করতে, নিচের কমান্ড চালান:
virt-install -n test-centosvm \
--noautoconsole \
--network=bridge:br0 \
--ram 2048 --arch=x86_64 \
--vcpus=4 --cpu host --check-cpu \
--disk path=/vz/disk/test-centosvm.img,size=32 \
--cdrom /vz/iso/CentOS-8.3.2011-x86_64-dvd1.iso \
--graphics vnc,listen=IP,password=p@sswdr0w1 \
--os-type linux --os-variant=rhel7 --boot cdrom,hd,menu=on
test-centosvm— একটি VM নামnoautoconsole– VM তৈরি করার পর আপনি VM কনসোলে স্বয়ংক্রিয়ভাবে সংযুক্ত হবেন নাnetwork– নেটওয়ার্কের ধরন (আমার ক্ষেত্রে bridge);ram— VM-এ RAM-এর পরিমাণ;vcpus– CPU কোরের সংখ্যা (VM-এর জন্য vCPU কনফিগারেশন)disk– একটি ভার্চুয়াল ডিস্ক, path – ডিস্কের পাথ, size – ডিস্কের আকার (আপনি পরে এটি বাড়াতে/কমানো পারেন)cdrom– একটি ভার্চুয়াল CDROM, গেস্ট OS ইনস্টল করার জন্য ISO ইমেজ এখানে মাউন্ট করা হয়;graphics— গ্রাফিক্যাল কনসোল ব্যবহার করে ভার্চুয়াল মেশিনে সংযোগের প্যারামিটার। আমরা VNC ব্যবহার করব সংযোগের জন্য, তাই listen-এ KVM সার্ভারের IP ঠিকানা নির্দিষ্ট করুন যেখানে আপনি VM তৈরি করেছেন, এবং ভার্চুয়াল মেশিন কনসোলে সংযোগের জন্য পাসওয়ার্ড
VM-কে স্বয়ংক্রিয়ভাবে বুট করতে, এই কমান্ড চালান:
# virsh autostart test-centosvm
VNC ব্যবহার করে KVM VM-এ সংযোগ এবং OS ইনস্টলেশন
VNC ব্যবহার করে একটি KVM ভার্চুয়াল মেশিনে সংযোগ করতে, আপনাকে জানতে হবে যে এটি কোন পোর্টে চলছে:# virsh vncdisplay test-centovms
IP:0
0 মানে VNC ব্যবহার করে সংযোগের পোর্ট নম্বর ৫৯০০। আপনি যদি অন্য মান পান, তবে কমান্ডটি যে সংখ্যাটি ফেরত দিয়েছে সেটি ৫৯০০-এর সাথে যোগ করুন।
সার্ভারে VNC ব্যবহার করে সংযোগের জন্য আমি TightVNC ব্যবহার করি। এটি চালু করুন এবং আপনার সার্ভারের IP ঠিকানা এবং আমরা আগে পেয়েছিলাম VNC পোর্টটি নির্দিষ্ট করুন (ডাবল কলন সেপারেটর হিসেবে)।

Connect ক্লিক করুন এবং আপনি KVM VM তৈরি করার সময় সেট করা পাসওয়ার্ড দিন। আপনি যদি সঠিকভাবে করলে, সার্ভার কনসোল প্রদর্শিত হবে, যেখানে CentOS ইনস্টলেশন (বা অন্য যে গেস্ট OS-এর ইমেজ আপনি মাউন্ট করেছেন) চলছে।

আপনার সার্ভারে ফায়ারওয়াল সক্রিয় থাকলে, firewalld/iptables-এ VNC-এর জন্য পোর্ট ৫৯০০-৫৯১০ খুলুন (দশটি পোর্ট যথেষ্ট)। গেস্ট OS ভার্চুয়াল মেশিনে ইনস্টল হয়ে গেলে, সার্ভার কনসোল থেকে VM চালু করুন:

একটি KVM ভার্চুয়াল মেশিন শাট ডাউন করতে এই কমান্ড ব্যবহার করুন:
# virsh shutdown test-centosvm
সকল রেজিস্টার্ড KVM ভার্চুয়াল মেশিনের তালিকা দেখতে:
# virsh list --all
virsh ব্যবহার করে সার্ভার কনসোল থেকে KVM ভার্চুয়াল মেশিন পরিচালনা সম্পর্কে আরও জানুন (RAM, CPU, ডিস্ক বা নেটওয়ার্ক ইন্টারফেস যোগ করা)। আপনি যদি গ্রাফিক্যাল ইন্টারফেস পছন্দ করেন, তবে virt-manager KVM GUI ব্যবহার করতে পারেন।
KVM হোস্টের বেসিক কনফিগারেশন সম্পন্ন, এবং একটি ভার্চুয়াল মেশিন তৈরি করা হয়েছে। আপনি আপনার সার্ভার রিসোর্স এবং প্রয়োজন অনুযায়ী KVM-এ যেকোনো সংখ্যক ভার্চুয়াল মেশিন তৈরি করতে পারেন।