কম্পিউটার

KVM ভার্চুয়ালাইজেশনে স্বাগতম - পুঙ্খানুপুঙ্খ ভূমিকা

আপনি যদি আমার ভার্চুয়ালাইজেশন বিভাগটি পড়ে থাকেন তবে আপনি জানেন যে আমার ফোকাস এখন পর্যন্ত বেশিরভাগই ভিএমওয়্যার এবং ভার্চুয়ালবক্সে ছিল, কিছুটা ক্লাউড স্টাফ এবং ইমেজ রিমাস্টারিং সহ। ওয়েল, শাখা আউট সময়. আজ, আমি আনুষ্ঠানিকভাবে KVM এর সাথে টিউটোরিয়ালের সম্পূর্ণ নতুন যুগ শুরু করতে চাই। পরে, সেখানে Xen এবং অন্যান্য অদ্ভুত জন্তু থাকবে, কিন্তু আপাতত, আমাদের বিষয় হল KVM।

এই নির্দেশিকা দিয়ে শুরু করে, আমরা KVM (কার্নেল-ভিত্তিক ভার্চুয়াল মেশিন) প্রযুক্তি সম্পর্কে শিখব, যা RedHat দ্বারা তৈরি করা হয়েছে, যা অন্যান্য বাণিজ্যিক সমাধানগুলির একটি বিনামূল্যে, ওপেন-সোর্স বিকল্প হিসাবে উপলব্ধ। আমরা শিখব কিভাবে KVM ডাউনলোড, ইনস্টল এবং সেটআপ করতে হয়, ভার্চুয়াল মেশিন পরিচালনা করতে আমরা কোন সরঞ্জামগুলি ব্যবহার করতে পারি, কোন বিকল্পগুলি উপলব্ধ, কমান্ড-লাইন ব্যবহার এবং স্ক্রিপ্টিং এবং আরও অনেক কিছু। আমরা উন্নত নেটওয়ার্কিং এবং স্টোরেজ কনফিগারেশনের পাশাপাশি অন্যান্য অনেক দুর্দান্ত জিনিসগুলিও দেখব। তাই শুরু করা যাক.

KVM ভার্চুয়ালাইজেশনে স্বাগতম - পুঙ্খানুপুঙ্খ ভূমিকা

KVM - শব্দকোষ

KVM কিভাবে কাজ করে তার একটি সংক্ষিপ্ত বিবরণ দিয়ে শুরু করা যাক। কিছুই বড় নয়, শুধুমাত্র একটি ছোট ভূমিকা যাতে আপনি মৌলিক পরিভাষা জানেন। চিন্তা করবেন না, শীঘ্রই সবকিছু খুব সহজ হয়ে যাবে।

আধুনিক ইন্টেল এবং এএমডি প্রসেসরে সিপিইউ ভার্চুয়ালাইজেশন প্রযুক্তি এক্সটেনশন ব্যবহার করে কেভিএম কাজ করে, যা ইন্টেল-ভিটি এবং এএমডি-ভি নামে পরিচিত। মেমরিতে লোড করা একটি কার্নেল মডিউল ব্যবহার করে, KVM প্রসেসর ব্যবহার করে এবং পরিবর্তিত QEMU-এর উপর ভিত্তি করে ব্যবহারকারী-মোড ড্রাইভারের মাধ্যমে, এটি একটি হার্ডওয়্যার স্তর অনুকরণ করে যার উপর ভার্চুয়াল মেশিন তৈরি এবং চালানো যায়। KVM সিপিইউ এক্সটেনশন ছাড়াই চালানো যেতে পারে, কিন্তু তারপরে, এটি QEMU ব্যবহার করে একটি বিশুদ্ধ ইমুলেশন মোডে চলবে, যার ফলে একটি উল্লেখযোগ্য কর্মক্ষমতা পেনাল্টি হবে।

KVM হয় একটি গ্রাফিকাল ম্যানেজমেন্ট টুলের মাধ্যমে, VMware পণ্য বা ভার্চুয়ালবক্সের অনুরূপ, অথবা বিভিন্ন পদ্ধতি ব্যবহার করে কমান্ড লাইনের মাধ্যমে পরিচালিত হতে পারে।

সবচেয়ে জনপ্রিয় GUI কে ভার্চুয়াল মেশিন ম্যানেজার (VMM) বলা হয়, যা RedHat দ্বারা তৈরি করা হয়েছে। টুলটি এর জেনেরিক প্যাকেজ নাম virt-manager দ্বারাও পরিচিত। এটি virt-install, virt-clone, virt-image, এবং virt-viewer সহ বেশ কয়েকটি সমর্থনকারী সরঞ্জামের সাথে আসে, যা যথাক্রমে ভার্চুয়াল মেশিনের বিধান, ক্লোন, ইনস্টল এবং দেখার জন্য ব্যবহৃত হয়। VMM এছাড়াও Xen মেশিন সমর্থন করে।

জেনেরিক KVM কমান্ড ইন্টারফেস virsh দ্বারা উপলব্ধ করা হয়। বিশেষভাবে, আপনি আপনার ভার্চুয়াল মেশিন তৈরি করার জন্য virt-install-এর মতো সহায়ক সরঞ্জামগুলি ব্যবহার করতে পারেন। উবুন্টুতে, একটি বিশেষ উবুন্টু-ভিএম-বিল্ডার টুল রয়েছে যা ক্যানোনিকাল দ্বারা বিকাশিত উবুন্টু বিল্ডগুলির ব্যবস্থা করার জন্য ব্যবহার করা যেতে পারে।

নামগুলির সংখ্যা বিভ্রান্তিকর হতে পারে, তবে এটিকে সহজভাবে নিন এবং আপনি ধারণাটি পাবেন। যাইহোক, এটিকে আরও কিছুটা বিভ্রান্তিকর করতে, KVM-এর নিজস্ব সিনট্যাক্সও রয়েছে, QEMU-এর মতো। এটি ভার্চুয়াল মেশিন পরিচালনার একটি প্রস্তাবিত উপায় নয়।

আরও তথ্যের জন্য, অনুগ্রহ করে এই পৃষ্ঠাগুলি দেখুন:

কার্নেল ভার্চুয়াল মেশিন - কমিউনিটি উবুন্টু ডকুমেন্টেশন

howtoforge.com

-এ KVM টিউটোরিয়াল

KVM/Virsh - কমিউনিটি উবুন্টু ডকুমেন্টেশন

ঠিক আছে, এটা ছিল ১ম ধাপ।

KVM - সুবিধা এবং অসুবিধা

আপনি কি কেভিএম ব্যবহার করবেন? ঠিক আছে, এটি নির্ভর করে আপনি কী অর্জন করতে চান।

আপনি যদি একজন নৈমিত্তিক হোম ব্যবহারকারী হন, একজন ভার্চুয়ালাইজেশন শখ বা একজন মধ্যবর্তী গীক হন, তাহলে KVM এর সাথে শুরু করা একটু কঠিন হতে পারে। এটি প্রাথমিকভাবে একটি কমান্ড-লাইন টুল, ভিএমওয়্যার এবং ভার্চুয়ালবক্স পণ্যগুলির মতো স্বজ্ঞাত বা বন্ধুত্বপূর্ণ নয়। কেভিএম জিইউআই পরিচালনার ক্ষেত্রে প্রতিযোগিতার অনেক বছর পিছনে অনুভব করে, যদিও এটি সরবরাহ করার ক্ষেত্রে এটি ঠিক ততটাই শক্তিশালী। আসলে, যেহেতু এটি একটি কমান্ড-লাইন টুল হিসাবে ব্যবহার করার জন্য ডিজাইন করা হয়েছে, আপনি দীর্ঘমেয়াদে আরও ভাল উত্পাদনশীলতা এবং আরও নিয়ন্ত্রণ উপভোগ করেন। যেমন, KVM ব্যবসায়িক পরিবেশে সবচেয়ে বেশি অর্থবোধ করে।

উপরন্তু, যদি আপনার CPU ভার্চুয়ালাইজেশন সমর্থন না করে, তাহলে KVM আপনার জন্য একটি বড় অপচয় হবে, কারণ আপনি একটি অত্যন্ত ধীর এবং অদক্ষ এমুলেশন মোডে চলছেন। KVM ভার্চুয়ালবক্সের সাথে বিরোধের জন্যও পরিচিত, তবে একটি পৃথক টিউটোরিয়ালে সে সম্পর্কে আরও কিছু।

অতএব, KVM হল ভার্চুয়ালাইজেশনে গভীর আগ্রহের মানুষদের জন্য, সম্ভবত প্রশাসক এবং পেশাদারদের জন্য। এটি আপনার cuddliest হোম খেলনা নয় এবং আগামী অনেক বছর জন্য নাও হতে পারে. কিন্তু আপনি যদি খনন করতে ইচ্ছুক হন, তাহলে আপনি একটি সম্পূর্ণ নতুন ভাষা আয়ত্ত করতে পারবেন, যা পরবর্তীতে আপনাকে অন্যান্য প্রযুক্তির সাথে একটি শক্তি গুণক হিসেবে কাজ করবে। যদিও VMware বা Virtualbox পছন্দ করে যে আপনি তাদের GUI টুলগুলি ব্যবহার করেন, KVM কমান্ড-লাইন স্ক্রিপ্টিংয়ের কাঁচা দক্ষতার উপর ভিত্তি করে।

সংক্ষেপে বলতে গেলে, KVM আপনার জন্য ভাল যদি আপনি একটি সীমাহীন ব্যবহারের মোড সহ একটি বিনামূল্যের আধুনিক ভার্চুয়ালাইজেশন সমাধান খুঁজছেন এবং অতিরিক্ত লাইসেন্সিং ফি বা বৈশিষ্ট্য টিয়ারিং ছাড়াই, একটি শক্তিশালী কমান্ড লাইন ইন্টারফেস এবং আপনি আপনার হাত নোংরা করতে ভয় পাচ্ছেন না। আপনার CPU-তে ভার্চুয়ালাইজেশন এক্সটেনশন না থাকলে KVM আপনার জন্য ভাল নয়, আপনি স্ক্রিপ্ট লিখতে ভয় পান, কোডে ড্যাবল করার কোনো ইচ্ছা না থাকে এবং VMware সার্ভার, ESXi বা ভার্চুয়ালবক্সের মতো প্রশাসনিকভাবে সহজ সমাধান পছন্দ করেন।

All, right, let's get going.

Test platform

You can use KVM in pretty much any Linux distro. In general, RedHat flavors favor KVM. RHEL ships with KVM enabled in the operating system, so you can also find it in RedHat-based distros like CentOS, Scientific Linux, or Fedora.

Since I'm running mostly Ubuntu at home, I decided to test in Ubuntu, installed on my rather brand-newish HP laptop, which has a revvy i5 processor that supports virtualization. Later this year, I'm planning on deploying either the newest release of CentOS or Scientific Linux on my Linux-dedicated multi-boot machine, so you'll see additional tutorials for those distros, too. We'll get to Xen there, too.

This tutorial shows how to setup KVM on a 64-bit Ubuntu Lucid, the Long Term Release. Sequel guides and howtos will cover many other topics related to KVM, including using it alongside other virtualization technologies and resolving conflicts, advanced management functions, scripting, and more.

Now, finally, let's begin in earnest.

Prerequisites

You need a CPU that supports virtualization. This can be checked thusly:

egrep -c '(vmx|svm)' /proc/cpuinfo

If you get a non-zero value, you're good. BUT ... you will also need to check that virtualization technology is enabled in BIOS. Indeed, after enabling the feature, you will have to cold power-cycle the machine for the change to take effect.

Once this is done, boot into your operating system and get KVM installed.

To check, please run kvm-ok:

KVM ভার্চুয়ালাইজেশনে স্বাগতম - পুঙ্খানুপুঙ্খ ভূমিকা

Download &install KVM

To get KVM install, please get these packages (true for apt commands):

apt-get install qemu-kvm libvirt-bin  

Optionally, you can install these - most recommended:

apt-get install bridge-utils virt-manager python-virtinst

পুনশ্চ. The package names will vary between distributions. For instance, virt-install may come branded as python-virt-install or python-virtinst or even virt-install. The dependencies for virt-clone, virt-image and virt-viewer should be automatically resolved.

Contrary to what most tutorials mention, you do NOT need bridge utilities. You only need them if you want to bridge your virtual adapters with your physical cards. I've shown you a detailed example of this in my Virtualbox networking tutorial. The principle is the same.

Most tutorials also mention the fact that most Wireless network interfaces do not support bridging. This may be the case, but in all my testing, I was able to successfully bridge my Wireless adapters, so keep your hopes high.

VMM (virt-manager) is highly recommended. Likewise, you want all the helper tools, including virt-viewer, virt-install, virt-image, and virt-clone.

Lastly, you can also opt for ubuntu-vm-builder:

apt-get install ubuntu-vm-builder

You will also get a whole bunch of dependencies auto-resolved, so your downloads can take a while. পুনশ্চ. On RedHat, use yum install. On SUSE, use zypper install.

Conflict with Virtualbox

Again, contrary to what most tutorials say:you can have both KVM and Virtualbox installed on the same host. You may not get them running both at the same time. In other words, one or the other kernel module needs to be unloaded from memory. But there's no reason to rush ahead. Try, see if it works for you, and if not, only then take corrective actions.

But this can be done in-vivo, so no worries there. You won't need to reboot or anything as drastic as that. I'll show you a separate tutorial that handles this case. In fact, I have both installed and running on the test host.

Using KVM

Now, the really fun part. We will start with the VMM, as it is a GUI tool and this is what most people will and should start with. For all practical purposes, it's very similar to other tools you know, like the VMware console or perhaps Virtualbox.

Virtual Machine Manager (VMM)

Let's take a tour.

The first time you launch the program, it will show two categories, both not connected. These refer to your localhost KVM modules, still not in use. To use, right-click and choose connect.

To add new connections, click File> Add Connection. This will open a window that lets you specify the Hypervisor type and the connection type. VMM can use both local and remote connections, including QEMU/KVM and Xen. You can connect using all kinds of authentications methods.

You can also autoconnect, which means that the next time you fire up VMM, these connections will be ready for you. This is similar to what VMware Server asks you when you start the program. Just for reference:

Kernel versus Usermode

You may be asking what the difference between normal/default and Usermode is? Well, Usermode allows you to run without administrative privileges, but your network capability will be limited. All right, let's move on.

VMM overview, continued

Let's see other functions, before we create a virtual machine.

Network functionality can be reviewed or changed under Host Details. We will have a separate tutorial that teaches how to work with KVM network. And we'll setup bridge utilities, too, so don't worry.

Likewise, you can change the storage settings. There'll be a dedicated guide, I promise:

Change preferences

The VMM has a handful of options you can tweak to make it look and behave smarter. You can enable the system tray icon, set a statistics polling interval, enable polling for disk and network metrics, which are deselected by default, configure console keyboard grabbing, console scaling, audio options, and set confirmation windows for machine activities.

KVM ভার্চুয়ালাইজেশনে স্বাগতম - পুঙ্খানুপুঙ্খ ভূমিকা

KVM ভার্চুয়ালাইজেশনে স্বাগতম - পুঙ্খানুপুঙ্খ ভূমিকা

Later on, all of these will allow us to view our virtual machine metrics in more detail and with better control. For instance, showing an Ubuntu guest CPU, Disk I/O and Network I/O:

Here's the system tray icon:

Finally, we're ready to create a new virtual machine.

Create virtual machine

We can do this using VMM or the command line. We will begin with the GUI. The first step is quite intuitive. Enter the name and the install media location. You can use local storage in the form of ISO images or CD/DVDs, HTTP or FTP servers, NFS area, or PXE.

We will use local install media. Next, choose either a physical device or an image. In our case, we will use an ISO. Then, choose the OS type and the version. This does not have to be precise, but an educated guess is good. It allows additional virtual machine optimization.

Allocate RAM and CPUs.

The fourth step is quite interesting - storage. You can create a new image or use an existing one. You can set the size and preallocate all space, which is good for performance, plus it reduces fragmentation.

We will focus soon quite a bit more on the storage. For now, let's either assume we have a disk ready - or that we will create one in the default storage pool. Please note that if you're running in Usermode, you won't be able to write to /var, which is the default storage pool location. You will need to create a new storage pool that is accessible by non-admin users, but more about that in a separate article.

Step 5 is a summary, with some advanced options. You can change your network type, set a fixed Mac address, choose the virtualization type, and the target architecture. If you're running in Usermode, your network options will be limited. If you're not using bridge utilities, you won't be able to bridge your interfaces. Lastly, if you have no CPU virtualization extensions, the Virt Type:field will read QEMU and not KVM. We will see an example of this later on, when we discuss the major drawbacks of running in the emulation mode. For now, here's what a typical Ubuntu virtual machine setup looks like:

Our machine is ready to use. We will soon power it up and use it.

Virtual machine options

Like VMM itself, the VM console has a few interesting options. You can send signals to your guest, you can switch virtual consoles, force reboot and power off, clone, migrate, save, take screenshots, and more. Again, very similar to the competition.

Here's a pair of screenshots teasers for the clone and migrate options. Down the road, we will have detailed tutorials, focusing both on the GUI and CLI functionality.

Virtual machines running

The fun part. Here's a handful of nice screenshots ...

Let's begin with Ubuntu 10.10 Maverick, 32-bit version, boot menu:

Puppy Linux, shown against a lovely desktop:

Ubuntu running, NAT-ed, no worries. Notice the CPU utilization is very low. Important, pay attention for later on when we discuss the emulation only mode. I'm nagging you, but please bear with my ultra-turbo education.

You can also scale the console window to fit guest; this is another option available in the viewer menu. Then, you can also use the preferences to autoscale the consoles. Here are Puppy and Ubuntu, side by side:

Here's the system usage; minimal. With this kind of smart consumption, you can generously overcommit and enjoy more virtual machines than your physical hardware would normally permit, with a single machine bound to a core.

Eventually, you can also delete a machine and its associated files:

Now that we're comfortable with basic usage, let's do some command line.

Command line

Now, let's see the infamous command line. For example, using virsh to list all available virtual machines.

virsh 'list --all'

Here's the sequence of commands to get a virtual machine created and running using virt-install. Please note that I'm not a KVM guru. You have template code in the man pages, and you can find a billion examples online.

The actual command is:

virt-install --connect qemu://system -n puppy -r 512 -f puppy.img -c lupu-520.iso --vnc --noautoconsole --os-type linux --accelerate --network=network:default

So what do we have here?

--connect qemu:///system defines the type of hypervisor used. system is used when running on bare metal kernel as root. session is used for non-root users. You can recall the differences in VMM, with Usermode, right-click connect, you get the idea. This also works for xen.

-n puppy is a unique virtual machine name. You can use virsh to rename or delete the guest if you're not satisfied with your choice.

-r 512 specifies the RAM.

-f specifies a disk file. In this case, I'm using a puppy.img disk image I created using a dd command. To conserve space, I created the image as a sparse file. You can learn more about how to create sparse files in my second cool Linux hacks article.

-c specifies the CD-ROM, either a physical device or an ISO image.

--vnc setups a guest console and exports it as a VNC server. --noautoconnect will not automatically open the console when the virtual machine is powered on.

--os-type specifies the operating system for the guest.

--accelerate allows KVM to use optimization functions that accelerate the performance of the guest system, if possible.

--network defines the network type. We're using the default connection.

We could have used many other functions, like setting up the number of cores or bounding the machine to a CPU core, setup a fixed MAC address for NIC, use no storage, change the keyboard map, and more.

All of these are listed in the man pages. Not really intuitive, but becomes easier with use. In fact, the learning curve is not that high, despite the initial impression. Once you get the hang of virt-install, you can fiddle with other commands, start and stop machines with virsh, and Bob's your uncle.

Other things

A few more details worth mentioning.

Running in pure emulation mode (don't)

I told you this is completely inefficient. Now, a proof. For instance, take a look at Host Details Overview. In the Performance graph, CPU usage is max. at 100% of the available resources for the virtual machine, in this case one core, which translates to 25% utilization. Almost like DOS. This means that four virtual machines, no matter how tiny or hungry, will cripple a four-core host.

Additionally, the performance will be horrible. If an Ubuntu guest takes approx. one minute to boot with the image loaded on the internal 7,200rpm disk when running with Intel-VT extensions enabled, it takes about 20 minutes to do that in the emulation mode. I think this is a downside of QEMU/KVM compared to other solutions, which still offer fairly decent performance even without CPU extensions.

More good reading

I highly recommend the KVM series on howtoforge.com, linked above.

Then, you should also read these:

Discover the Linux Kernel Virtual Machine

KVM management tools

উপসংহার

I sincerely hope you've liked this tutorial. It's fairly long and detailed, even though it documents only the first steps to get started with KVM. But it does offer an insight into a lot of things, including initial setup and prerequisites, command-line and GUI tools, management options, how to create and run multiple virtual machines, and more.

There are going to be a ton of sequels, which will cover advanced storage and networking configurations, including bridged networking, how to clone and migrate virtual machines, how to resolve conflicts with other virtualization software and more. Not strictly related, there are also going to be a whole bunch of articles on Xen and ESXi, too.

As you can see, KVM is quite powerful, even though it may appear a bit daunting to new users. Its management options are definitely less newb-friendly than some of its rival, but luckily, some of the fear and confusion have been spirited away today.

Well, I guess that would be all. Enjoy!

চিয়ার্স।


  1. কিভাবে KVM-তে স্টোরেজ পরিচালনা করবেন - টিউটোরিয়াল

  2. VirtualBox 3.0.0 আশ্চর্যজনক!

  3. ভার্চুয়ালাইজেশন সফ্টওয়্যার - প্রচুর পছন্দ

  4. MojoPac - ডেস্কটপ ভার্চুয়ালাইজেশন সফ্টওয়্যার