نحوه ی ایجاد ماشین مجازی در لینوکس با استفاده از KVM(Kernel Based Virtual Machine) -قسمت اول

در این مقاله در مورد معرفی و پیاده سازی KVM و نحوه ی ایجاد ماشین مجازی در محیط لینوکس در توزیع های RedHat basedهمچون RHEL/CentOS و Fedora بحث می کند.
KVM چیست؟
KVM یک راه حل مجازی سازی برای لینوکس ، برروی سخت افزار های اینتل 64 و AMD 64 که در کرنل لینوکس بعد از 2.6.20 که برای کارهای حجیم بکار می رود، است.
ویژگی های KVM
بسیاری از خصوصیات و قابلیت های مفیدی برای KVM وجود دارد. هایپروایزر kvm ویژگی های زیر را پشتیبانی می کند.
Over-committing: که به معنی تخصیص cpu ها و memory های بیشتر از منابع سیستم می باشد.
Thin provisioning:که اجازه ی تخصیص storage انعطاف پذیر را میدهد و فضای در دسترس را برای هر ماشین مجازی میهمان بهینه می کند.
Disk I/O throttling:قابلیت ست کردن محدودیت هایی برای درخواست هایی I/O ی دیسک ارسال شده از ماشین های مجازی به هاست را فراهم می کند.
Automatic NUMA balancing:کارایی برنامه های در حال اجرا برروی سیسیتم های سخت افزاری NUMA را بهبود می بخشد.
Virtual CPU hot add capability:قابلیت افزایش پروسس پاور را برروی ماشین های مجازی در حال اجرا بدون پایین آوردن آنها را فراهم میکند.
پیش نیاز ها
اطمینا حاصل کنید که سیستم تان امکان گسترش سخت افزاری برای مجازی سازی را دارد: برای سیستم های اینتل،با استفاده از دستور زیر مد مجازی سازی cpu ‘vmx’را بررسی کنید.

برای سیستم های AMD،مد مجازی سازی cpu ،’svm; را بررسی کنید.

اگر هیچ خروجی ای نداد،اطمینان حاصل کنید که مد مجازی سازی در bios فعال است. بررسی کنید که ماژولهای KVM در کرنل بار گذاری شده اند"البته به طور پیش فرض باید بارگذاری شده باشد."..
خروجی باید شامل kvm_intel برای هاست های اینتل و kvm_amd برای هاست های amd باشد.

قبل از شروع شما نیاز به دسترسی کاربر روت داریدو همچنین اطمینان حاصل کنید که سیستم تان آپدیت است.
اطمینان حاصل کنیدکه Selinux در مد Premissive است.
گام اول:نصب و پیاده سازی KVM
1.ما ابتدا می خواهیم پکیج های qemu-kvm و qemu-img را نصب کنیم.این پکیج ها kvm سطح کاربر و مدیر image از دیسک را فراهم میکند.
2.حالا شما پیش نیاز های لازم برای پیاده سازی پلتفرم مجازی بروی هاست خود را دارید،همچنین ما ابزار های مفیدی برای مدیریت پلتفرم خود نیاز داریم:
Virt-manager:یک ابزار گرافیکی را برای مدیریت ماشین های مجازی فراهم می کند.
Libvert-client:یک ابزار خط فرمان برای مدیریت محیط مجازی فراهم می کند که این ابزار virsh نام دارد.
Virt-install:دستور virt-install ایجاد ماشین مجازی را از طریق خط فرمان فراهم می کند.
Libvirt:کتابخانه های سمت سرور و هاست را جهت تعامل با هایپرویزرها و سیستمها فراهم میکند.
بیایید این ابزارها را با استقاده از دستور زیر نصب کنیم.
3.برای کاربران ردهت و Centos،پکیج های گروهی نیز موجود است همچون : Virtualization Client, Virtualization Platform و Virtualization
4.دیمون مجازی سازی که برروی تمام پلتفرم ها مدیریت می کند، libvirtd است.آنرا ریستارت کنید.
5.پس ار ریستارت کردن دیمون،وضعیت آنرا توسط دستور زیر چک کنید.
نمونه خروجی

اکنون به بخش بعدی برای ایجاد ماشین های مجازی مان میرویم.
گام دوم:ایجاد VMها در KVM
همانطور که گفتیم،ما ابزار مفیدی برای مدیریت پلتفرم مجازی و ایجاد ماشین های مجازی داریم.یکی از اینها virt-manager است که ما در بخش بعدی استفاده خواهیم کرد.
6.اگرچه virt-manager یک ابزار گرافیکی است، ولی ما می توانیم آنرا از طریق ترمینال نیز استارت کنیم.
با استفاده از گنوم

با استفاده از گنوم کلاسیک

7.پس از استارت کردن ، این پنجره ظاهر خواهد شد.

8.به صورت پیش فرض این ابزار به localhost متصل است، و خوشبختانه شما این ابزار را برای مدیریت هاست های راه دور نیز می توانید استفاده کنید. از تب File،Add Connection را انتخاب کنید و پنجره ی زیر را مشاهده خواهید کرد.

گزینه ی Connect to Remote Host را تیک بزنید، و Hostname یا IP سرور راه دور را وارد کنید.اگر شما نیاز دارید که ارتباط با هاست دور را هر بار که برنامه استارت شد داشته باشید،گزینه ی Auto Connect را تیک بزنید.
9.قبل از ایجاد ماشین مجازی جدید شما باید تصمیم بگیرید که می خواهید فایل ها را کجا ذخیره کنید.به عبارت دیگر شما باید Volume Disk را برای ماشین مجازی ایجاد کنید.
با راست کلیک کردن روی localhostو انتخاب Detail ، سپس تب Storage را انتخاب کنید.


10.سپس بروی New Volume کلیک کنید،و بعد نام ماشین مجازی جدید تان را وارد کنید. و در بخش Max Capacity حجم مورد نیازتان را وارد کنید.

تخصیص حجم ، حجم واقعی برای دیسکتان است،که بلافاصله از دیسک فیزیکیتان پس از اتمام مراحل تخصیص داده خواهد شد.
نکته:این فناوری مهمی در فیلد مدیریت storage می باشد که thin provision نام دارد. که برای تخصیص حجم مصرف شده ی storage نه تمام حجم در دسترس ، استفاده می شود.
به عنوان مثال،شما دیسک مجازی ای با حجم 60G ایجاد می کنید،اما شما سایز واقعی 20G را استفاده کرده اید،با استفاده از این تکنولوژی سایز تخصیص داده شده از هارد دیسک فیزیکی تان 20G خواهد بود نه 60G.
به عبارت دیگر ،حجم فیزیکی تخصیص داده شده،به صورت داینامیک به حجم واقعی استفاده شده، وابسته خواهد شد.
11.توجه کنید که برچسبی از volume disk جدید شما در لیست ظاهر شده است.

شما باید همچنین به مسیر دیسک جدید (volume disk) توجه کنید.به صورت پیش فرض زیر/var/lib/libvirt/images خواهد بود، شما می توانید آنرا با دستور زیر بررسی کنید.
12.حالا ما برای ایجاد ماشین مجازی مان آماده ایم.دکمه ی VM را در پنجره ی اصلی فشار دهید و ویزارد زیر ظاهر خواهد شد.

روش نصبی که شما می خواهید برای نصب ماشین مجازی می خواهید، را انتخاب کنید.حالا ما میخواهیم روش local install media را بررسی کنیم و بعدا در مورد نصب باقی روش ها بحث خواهیم کرد.
13.بعد از انتخاب local install media ما دو گزینه داریم:
برای این راهنما ما روش iso image را انتخاب میکنیم و مسیر iso image را باید در اینجا وارد کنیم.

نکته مهم:متاسفانه یک اشکال واقعا احمقانه برای کاربران RHEL/Centos وجود دارد.این باگ از نصب فیزیکی از طریق cdrom/dvd جلوگیری می کند، و شما باید به صورت زیر گزینه ها را انتخاب کنید.

و اگر شما اشاره گرتان را روی آن بگیرید، خطای زیر را مشاهده خواهید کرد.

14.ما از دیسک مجازی ای که برای نصب ماشین مجازی ایجاد کرده ایم استفاده خواهیم کرد.

15.در مرحله بعدی از شما در مورد نام ماشین مجازی تان و گزینه های دیگر خواهد پرسید.

اگر شما می خواهید برخی از پیکربندی هارا تغییر دهید گزینه ی Customize configuration befor install را انتخاب کنید. دکمه ی finish را فشار دهید و چند لحظه صبر کنید. کنسولی که ظاهر می شود را کنترل کنید.
در این مقاله در مورد معرفی و پیاده سازی KVM و نحوه ی ایجاد ماشین مجازی در محیط لینوکس در توزیع های RedHat basedهمچون RHEL/CentOS و Fedora بحث می کند.
KVM چیست؟
KVM یک راه حل مجازی سازی برای لینوکس ، برروی سخت افزار های اینتل 64 و AMD 64 که در کرنل لینوکس بعد از 2.6.20 که برای کارهای حجیم بکار می رود، است.
ویژگی های KVM
بسیاری از خصوصیات و قابلیت های مفیدی برای KVM وجود دارد. هایپروایزر kvm ویژگی های زیر را پشتیبانی می کند.
Over-committing: که به معنی تخصیص cpu ها و memory های بیشتر از منابع سیستم می باشد.
Thin provisioning:که اجازه ی تخصیص storage انعطاف پذیر را میدهد و فضای در دسترس را برای هر ماشین مجازی میهمان بهینه می کند.
Disk I/O throttling:قابلیت ست کردن محدودیت هایی برای درخواست هایی I/O ی دیسک ارسال شده از ماشین های مجازی به هاست را فراهم می کند.
Automatic NUMA balancing:کارایی برنامه های در حال اجرا برروی سیسیتم های سخت افزاری NUMA را بهبود می بخشد.
Virtual CPU hot add capability:قابلیت افزایش پروسس پاور را برروی ماشین های مجازی در حال اجرا بدون پایین آوردن آنها را فراهم میکند.
پیش نیاز ها
اطمینا حاصل کنید که سیستم تان امکان گسترش سخت افزاری برای مجازی سازی را دارد: برای سیستم های اینتل،با استفاده از دستور زیر مد مجازی سازی cpu ‘vmx’را بررسی کنید.
کد:
[LEFT][root@server ~]# grep -e 'vmx' /proc/cpuinfo [/LEFT]
برای سیستم های AMD،مد مجازی سازی cpu ،’svm; را بررسی کنید.
کد:
[root@server ~]# grep -e 'svm' /proc/cpuinfo
اگر هیچ خروجی ای نداد،اطمینان حاصل کنید که مد مجازی سازی در bios فعال است. بررسی کنید که ماژولهای KVM در کرنل بار گذاری شده اند"البته به طور پیش فرض باید بارگذاری شده باشد."..
کد:
[root@server ~]# lsmod | grep kvm
خروجی باید شامل kvm_intel برای هاست های اینتل و kvm_amd برای هاست های amd باشد.
قبل از شروع شما نیاز به دسترسی کاربر روت داریدو همچنین اطمینان حاصل کنید که سیستم تان آپدیت است.
کد:
[root@server ~]# yum update
اطمینان حاصل کنیدکه Selinux در مد Premissive است.
کد:
[root@server ~]# setenforce 0
گام اول:نصب و پیاده سازی KVM
1.ما ابتدا می خواهیم پکیج های qemu-kvm و qemu-img را نصب کنیم.این پکیج ها kvm سطح کاربر و مدیر image از دیسک را فراهم میکند.
کد:
[root@server ~]# yum install qemu-kvm qemu-img
2.حالا شما پیش نیاز های لازم برای پیاده سازی پلتفرم مجازی بروی هاست خود را دارید،همچنین ما ابزار های مفیدی برای مدیریت پلتفرم خود نیاز داریم:
Virt-manager:یک ابزار گرافیکی را برای مدیریت ماشین های مجازی فراهم می کند.
Libvert-client:یک ابزار خط فرمان برای مدیریت محیط مجازی فراهم می کند که این ابزار virsh نام دارد.
Virt-install:دستور virt-install ایجاد ماشین مجازی را از طریق خط فرمان فراهم می کند.
Libvirt:کتابخانه های سمت سرور و هاست را جهت تعامل با هایپرویزرها و سیستمها فراهم میکند.
بیایید این ابزارها را با استقاده از دستور زیر نصب کنیم.
کد:
[root@server ~]# yum install virt-manager libvirt libvirt-python libvirt-client
3.برای کاربران ردهت و Centos،پکیج های گروهی نیز موجود است همچون : Virtualization Client, Virtualization Platform و Virtualization
کد:
[root@server ~]#yum groupinstall virtualization-client virtualization-platform virtualization-tools
4.دیمون مجازی سازی که برروی تمام پلتفرم ها مدیریت می کند، libvirtd است.آنرا ریستارت کنید.
کد:
[root@server ~]#systemctl restart libvirtd
5.پس ار ریستارت کردن دیمون،وضعیت آنرا توسط دستور زیر چک کنید.
کد:
[root@server ~]#systemctl status libvirtd
نمونه خروجی
کد:
libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled) Active: active (running) since Mon 2014-12-29 15:48:46 EET; 14s ago Main PID: 25701 (libvirtd)
اکنون به بخش بعدی برای ایجاد ماشین های مجازی مان میرویم.
گام دوم:ایجاد VMها در KVM
همانطور که گفتیم،ما ابزار مفیدی برای مدیریت پلتفرم مجازی و ایجاد ماشین های مجازی داریم.یکی از اینها virt-manager است که ما در بخش بعدی استفاده خواهیم کرد.
6.اگرچه virt-manager یک ابزار گرافیکی است، ولی ما می توانیم آنرا از طریق ترمینال نیز استارت کنیم.
کد:
[root@server ~]#virt-manager
با استفاده از گنوم
با استفاده از گنوم کلاسیک
7.پس از استارت کردن ، این پنجره ظاهر خواهد شد.
8.به صورت پیش فرض این ابزار به localhost متصل است، و خوشبختانه شما این ابزار را برای مدیریت هاست های راه دور نیز می توانید استفاده کنید. از تب File،Add Connection را انتخاب کنید و پنجره ی زیر را مشاهده خواهید کرد.
گزینه ی Connect to Remote Host را تیک بزنید، و Hostname یا IP سرور راه دور را وارد کنید.اگر شما نیاز دارید که ارتباط با هاست دور را هر بار که برنامه استارت شد داشته باشید،گزینه ی Auto Connect را تیک بزنید.
9.قبل از ایجاد ماشین مجازی جدید شما باید تصمیم بگیرید که می خواهید فایل ها را کجا ذخیره کنید.به عبارت دیگر شما باید Volume Disk را برای ماشین مجازی ایجاد کنید.
با راست کلیک کردن روی localhostو انتخاب Detail ، سپس تب Storage را انتخاب کنید.
10.سپس بروی New Volume کلیک کنید،و بعد نام ماشین مجازی جدید تان را وارد کنید. و در بخش Max Capacity حجم مورد نیازتان را وارد کنید.
تخصیص حجم ، حجم واقعی برای دیسکتان است،که بلافاصله از دیسک فیزیکیتان پس از اتمام مراحل تخصیص داده خواهد شد.
نکته:این فناوری مهمی در فیلد مدیریت storage می باشد که thin provision نام دارد. که برای تخصیص حجم مصرف شده ی storage نه تمام حجم در دسترس ، استفاده می شود.
به عنوان مثال،شما دیسک مجازی ای با حجم 60G ایجاد می کنید،اما شما سایز واقعی 20G را استفاده کرده اید،با استفاده از این تکنولوژی سایز تخصیص داده شده از هارد دیسک فیزیکی تان 20G خواهد بود نه 60G.
به عبارت دیگر ،حجم فیزیکی تخصیص داده شده،به صورت داینامیک به حجم واقعی استفاده شده، وابسته خواهد شد.
11.توجه کنید که برچسبی از volume disk جدید شما در لیست ظاهر شده است.
شما باید همچنین به مسیر دیسک جدید (volume disk) توجه کنید.به صورت پیش فرض زیر/var/lib/libvirt/images خواهد بود، شما می توانید آنرا با دستور زیر بررسی کنید.
کد:
[LEFT] [/LEFT] [root@server Downloads]# ls -l /var/lib/libvirt/images -rw-------. 1 root root 10737418240 Jan 3 16:47 vm1Storage.img
روش نصبی که شما می خواهید برای نصب ماشین مجازی می خواهید، را انتخاب کنید.حالا ما میخواهیم روش local install media را بررسی کنیم و بعدا در مورد نصب باقی روش ها بحث خواهیم کرد.
13.بعد از انتخاب local install media ما دو گزینه داریم:
- From physical [CDROM/DVD].
- From ISO image.
برای این راهنما ما روش iso image را انتخاب میکنیم و مسیر iso image را باید در اینجا وارد کنیم.
نکته مهم:متاسفانه یک اشکال واقعا احمقانه برای کاربران RHEL/Centos وجود دارد.این باگ از نصب فیزیکی از طریق cdrom/dvd جلوگیری می کند، و شما باید به صورت زیر گزینه ها را انتخاب کنید.
و اگر شما اشاره گرتان را روی آن بگیرید، خطای زیر را مشاهده خواهید کرد.
14.ما از دیسک مجازی ای که برای نصب ماشین مجازی ایجاد کرده ایم استفاده خواهیم کرد.
15.در مرحله بعدی از شما در مورد نام ماشین مجازی تان و گزینه های دیگر خواهد پرسید.
اگر شما می خواهید برخی از پیکربندی هارا تغییر دهید گزینه ی Customize configuration befor install را انتخاب کنید. دکمه ی finish را فشار دهید و چند لحظه صبر کنید. کنسولی که ظاهر می شود را کنترل کنید.