Xen چیست؟

Xen Virtual Machine Monitor) Xen VMM) یک پروژه اپن‌سورس است که در آزمایشگاه‌های کامپیوتر دانشگاه کمبریج انگلیس توسعه داده می‌شود. خروجی این پروژه یک برنامه مجازی‌سازی به نام Xen است که امکان ساخت و برپاسازی چندین ماشین مجازی با قابلیت اجرا توسط سیستم‌عامل‌های مختلف روی یک سخت‌افزار واحد را فراهم می‌کند. با این ابزار، سیستم‌عامل‌های میهمان به هسته لینوکس (نسخه‌های ۲٫۴ و ۲٫۶) متصل می‌شوند و امکان یکپارچه‌سازی آن‌ها برای هسته سیستم‌عامل‌های NetBSD/FreeBSD نیز وجود دارد. نتیجتاً کاربران قادر خواهند بود با برنامه Xen چندین سیستم‌عامل میهمان را روی سیستم‌عامل‌های خانواده یونیکس بدون نیاز به تغییر و اصلاح کد و ساختار هسته سیستم‌عامل مادر راه‌اندازی نمایند. در این میان شرکت سان‌مایکروسیستمز نیز تلاش می‌کند Xen را برای سیستم‌عامل سولاریس سازگار نماید.

جالب است به این نکته اشاره شود که پروژه توسعه برنامه Xen از ابتدا منبع‌باز نبود و چندین سال یک پروژه اصطلاحاً کد بسته تلقی می‌شد در عوض پروژه‌های منبع‌بازی مانند Bochs IA-32 Emulator و qemu در دنیای اپن‌سورس مطرح بودند که عمدتاً برنامه‌های شبیه‌سازی معماری‌های سخت‌افزاری بوده و ابداً از کارایی و قابلیت‌های مورد انتظار برخوردار نبوده‌اند. در حقیقت موفقیت پروژه Xen در مقایسه با دیگر پروژه‌های منبع‌باز، سازگاری و یکپارچه‌سازی با هسته سیستم‌عامل لینوکس و فراهم‌سازی بستری برای پشتیبانی سخت‌افزار سیستم‌های کامپیوتری مانند اینتل و ای‌ام‌دی است.

جهش دیگر Xen در آگوست ۲۰۰۵ بود که شرکت XenSource (شرکت رسمی پشتیبان‌ و توسعه‌دهنده تجاری پروژه
Xen اقدام به انتشار‌ Intel Developer Forum) IDF) نمود که امکان استفاده Xen روی سکوهای سخت‌افزاری مبتنی بر Intel TV را فراهم نمود و در پی آن امکان اجرای مجازی‌ ویندوز اکس‌پی سرویس‌پک دو، در کنار لینوکس فراهم شد. در چنین شرایطی برنامه مجازی‌سازی تجاری VMWare که برای سرورهای ESX نیز توسعه داده می‌شود، همکاری جدیدی را با توسعه‌دهند‌گان Xen برای دسترسی به کدهای منبع VMware ESX Server و رابط کاربری آن آغاز کرد. مزیت برجسته برنامه VMWare در عدم یکپارچه‌سازی و اتصال سیستم‌عامل میهمان و ارائه راه‌کارهای اجرای سیستم‌عامل‌های میهمان روی ویندوز است.

در این زمان واقعه مهم دیگری نیز برای Xen روی داد و آن، پشتیبانی توزیع لینوکس Fedora Core4، دبیان و
SuSE Professional9.3 از این برنامه و اضافه‌‌شدن آن به توزیع لینوکس سرور RHEL5 بود. پروژه فدورا حتی به ارائه بسته‌های نرم‌افزاری RPM برنامه Xen پرداخت. تمام این وقایع موجب شد برنامه Xen به عنوان گزینه اول برنامه مجازی‌سازی برای لینوکس و دنیای ‌اپن‌سورس مطرح شود و شرکت‌های سخت‌افزاری مانند IBM و HP به سوی این محصول حرکت نمایند و دیگر توزیع‌ها و برنامه‌های اپن‌سورس Xen را در محصولات خود به کار بگیرند.

روش مجازی‌سازی
تفاوت عمده Xen با دیگر برنامه‌های مجازی‌سازی و شبیه‌ساز در شیوه پیاده‌سازی ماشین‌های مجازی  روی یک سیستم است. برنامه Xen از تکنیک ‌Paravirtualization برای پیاده‌سازی سیستم‌عامل‌های میهمان بهره می‌گیرد.

Paravirtualization سیستم‌عامل و سخت‌افزار مادر را در یک سطح و ماشین‌های مجازی را در سطح‌های دیگر پیاده‌سازی می‌کند. مزیت این روش، عدم تداخل فرایندهای اجرایی سیستم‌عامل‌ و امکان افزودن پروسه‌های جدید به هسته سیستم‌عامل بدون کامپایل هسته یا دستکاری آن است.

Xen از یک مدل چهار لایه‌ای برای سیستم‌های X86، X386 و X64 استفاده می‌کند که به هر لایه یک ring گفته می‌شود. در ring0 سیستم‌عامل مادر و خود برنامه Xen اجرا می‌شود. به برنامه Xen در این مدل اصطلاحاًHypervisor می‌گویند؛ چرا که باید در بالاترین سطح دسترسی برای کدهای سیستم‌عامل میهمان باشد.

ring1 و ring2 به سیستم‌عامل‌های میهمان اختصاص دارد و در ring3 برنامه‌های کاربردی اجرا خواهند شد. در زمان شروع به کار، Xen به حافظه ring0 مراجعه می‌نماید و ماشین مجازی پایه که Domain0 خوانده می‌شود را در ring1  اجرا می‌کند. از این Domain دیگر Domainها ساخته، حذف و جایگزین می‌شوند.

در حقیقت Xen توسط  Domain0 دیگر ماشین‌های مجازی و سخت‌افزار را مدیریت می‌کند.  دایمون xend توسط Domain0 اجرا می‌شود که مدیریت ماشین‌های مجازی را در هسته لینوکس بر عهده می‌گیرد و کاربر توسط ابزار خط فرمان xm آن را کنترل و مدیریت می‌کند. توسط این ابزار دیگر ماشین‌های مجازی نیز برپا می‌شوند.

درایورهای سخت‌افزاری نیز در Domain0 اجرا می‌شوند. Xen به توابع و ماجول‌های سخت‌افزاری موجود در هسته سیستم‌عامل لینوکس تکیه می‌کند و خود را از طراحی و ساخت ماجول‌های سخت‌افزاری برای ماشین‌های مجازی فارغ می‌نماید. این موضوع یک مزیت برای این برنامه محسوب می‌شود. چون توسعه‌دهند‌گان Xen را از نوشتن ماجول‌های جدید برای درایورهای سخت‌افزاری بی‌نیاز می‌کند.

دایمون Xend
دایمون Xend عهده‌دار ساخت Domain جدید و مدیریت آن‌ها، حذف یک ماشین مجازی موجود یا سوییچ میان چندین ماشین مجازی است. یکی از بزرگ‌ترین مسئولیت‌های این دایمون در هسته لینوکس راه‌اندازی و اجرای سرویس‌دهنده HTTP است. پورت پیش‌فرض برای این سرویس‌دهنده ۸۰۰۰‌ است که Xend از آن برای ارتباط باDomain ها شامل ارسال یک درخواست برای ساخت Domain، خذف یک Domain یا ذخیره و شروع به کار مجدد آن و سوییچ میان آن‌ها استفاده می‌کند.

بخش اعظم دایمون Xend توسط زبان اسکریپت‌نویسی پایتون نوشته شده است و در کنار آن برخی توابع زبان C نیز فراخوانی می‌شوند. از پوسته خط فرمان و اجرای فرمان xend start می‌توان دایمون Xend را برای بوت شدنXen فعال نمود. خود دایمون Xend یک سرویس‌دهنده با نام XCS را فعال می‌‌کند. هنگامی که xend را فعال می‌نماییم، باید بررسی شود که آیا XCS نیز اجرا شده است یا خیر. در صورت عدم اجرای آن، باید به صورت دستی اجرا شود. XCS در حقیقت هسته اصلی دایمون Xend را تشکیل می‌دهد و دو پورت TCP برای تبادل اطلاعات و کنترل پروسه‌های در حال اجرا باز می‌کند. تفاوت این دو پورت در همزمان‌سازی درخواست‌ها و هماهنگ‌سازی آن‌ها  است.

Xen در فدوراکور
برنامه Xen همراه با توزیع لینوکس فدوراکور ۴ و ۵ ارائه شده است. همچنین می‌توان بسته نرم‌افزاری نصب آن را از سایت این پروژه به نشانی www.xensource.com/xen/downloads دریافت نمود. برای نصب این برنامه یک ترمینال خط فرمان را باز کنید و دستورات زیر را به ترتیب اجرا نمایید: 

yum update $
yum install xen$
yum install kernel-xen0 $
yum install kernel-xenU
$

از طریق ابزارهای گرافیکی توزیع فدوراکور نیز می‌توانید به نصب برنامه Xen اقدام کنید. برای این منظور از منوی اصلی وارد بخش System و سپس Software Management شوید و از مجموعه برنامه‌های فهرست شده Xen را انتخاب نمایید. پس از نصب، یک گزینه جدید به برنامه بوت‌لودر لینوکس افزوده می‌شود. برای مشاهده تغییرات انجام شده در برنامه بوت‌لودر، فایل grub.conf را باز نمایید. ملا‌حظه می‌کنید که خطوط زیر به این فایل افزوده شده‌اند:

title Xen 3.0 / XenLinux 2.6.9
kernel /boot/xen.gz dom0_ mem=131072
module /boot/vmlinuz-2.6.9-xen0
root=  /dev/hda 1 ro console=tty0

اکنون کامپیوتر را Restart نمایید. همان‌طور که می‌بینید یک گزینه انتخابی جدید به منوی برنامه گراب اضافه شده است. با استفاده از این گزینه سیستم را بوت کنید. زمانی که لینوکس کاملاً اجرا شد، باید دایمون Xend نیز در پس‌زمینه لینوکس فعال شده باشد. دستور xm list را اجرا نمایید تا آرگومان‌های این ابزار مدیریت دایمون xen را مشاهده نمایید. خروجی این دستور باید مشابه با خطوط زیر باشد:

HOSTA:/etc/xen/scripts#xm list

Name    Id Mem(MB)  CPU State  Time(s) Console
Domain-0       ۰     ۱۲۳      ۰         r—-        ۴۱٫۲

برپاسازی ماشین مجازی‌
اکنون زمان ساخت یک ماشین مجازی فرارسیده است. برای برپاسازی ماشین مجازی چندین راهکار وجود دارد: استفاده از فایل‌های chroot image توزیع‌های مختلف که از اینترنت قابل دریافت هستند یا ساختن آن‌ها  توسط خودتان. فایل‌های chroot یک فایل Image از سیستم‌عامل میهمان هستند که توسط برنامه Xen گشوده می‌شوند.

همچنین برنامه Xen می‌تواند از فایل‌های پشتیبان بلوک‌های سخت‌افزاری
(dd 1f=dev/zero of=vmdisk bs=1k seek 2048k count=1)، تجهیزات سخت‌افزاری فیزیکی
(برای مثال  dev/hda9/) و ‌(phy:VolumeGroup/root_volume LVM ) استفاده نماید. حتی امکان به کارگیری فرمت فایلی شبکه NFS برای برپاسازی یک ماشین مجازی وجود دارد.

انتخاب روش راه‌اندازی ماشین مجازی وابستگی زیادی به نوع کارکرد ماشین مجازی مورد نظرتان و امکانات موجود دارد. اما یکی از ساده‌ترین روش‌ها، استفاده از فناوری‌های LVM است. Logical Volume Manager یک فناوری برای ساخت ماشین‌های مجازی روی لایه‌های فیزیکی دیسک سخت و کار با پارتیشن‌های سیستم است. با LVM  می‌توان بدون اضافه کردن فضای فیزیکی روی سیستم از مقدار حافظه بیشتری استفاده کرد. LVM همچنین قابلیت تغییر اندازه پارتیشن را بدون نیاز به پارتیشن‌بندی مجدد فراهم می‌کند. دلیل انتخاب این روش، انعطاف‌پذیری و سادگی آن است. در ادامه با یک مثال ساده چگونگی انجام‌دادن کار را مرور می‌کنیم. فرض کنید روی سیستم شما یک درایو dev/sda5/ وجود دارد. با استفاده از LVM می‌خواهیم یک ماشین مجازی روی sda5 برای استفاده در آینده ایجاد نماییم:


همان‌طور که می‌بینید با دستور lvcreate پارتیشن‌های مجازی همراه با اندازه هر کدام از آن‌ها  روی sda5 تعریف شده است. اکنون وارد دایرکتوری‌ای شوید که پارتیشن‌های خود را به سیستم‌فایل لینوکس متصل (mount)  نموده‌اید (برای مثال mnt/) و دایرکتوری  vhosts/ را ایجاد نمایید. در ادامه از این دایرکتوری برای نصب فایل image توزیع فدوراکور استفاده می‌نماییم:

pvcreate /dev/sda5 $
vgcreate vm_volumes /dev/sda5 $
vgchange -a y vm_volumes$
lvcreate -L4096 -nroot.dokeos vm_volumes$
lvcreate -L2084 -nvar.dokeos vm_volumes$
nswap.dokeos vmًvolumes $ lvcreate L256 –
lvcreate -L1024 -nwww.dokeos vm_volumes
$

 

فایل پیکربندی برنامه Xen غالباً در دایرکتوری /etc/xen قرار دارد. برای ساخت هر ماشین مجازی لازم است این فایل از نو پیکربندی و تنظیم شود. نهایتاً باید فایل پیکربندی مشابه زیر باشد:

yum –instal ‌lroot=/vhosts/root.dokeos/$
y groupinstall Base-
MAKEDEV-d  /path/dev -x console  $
MAKEDEV -d /path/dev -x null$
MAKEDEV -d /path/dev -x zer

اکنون همه‌چیز برای اجرای ماشین مجازی مهیا است. برای این منظور دستور xm create config file را در ترمینال خط فرمان اجرا کنید. اگر آرگومان c- را نیز به این دستور بیفزایید، مراحل بوت شدن ماشین مجازی نیز در خروجی پوسته خط فرمان نمایش داده می‌شود.

root@xen xen] #cat dokeos.x-tend.be ]
“kernel = “/boot/vmlinu-2.6.11-1.1366-fc4xenU
memory = 128
“name = “dokeos.x-tend.be
nics = ۱
“extra  = “selinux=0  ۳
[‘vif=[‘ip=”10.10.11.13″,’ipbridge=xen-br0

 ’disk   =[‘phy:vm_volumes/root.dokeos,sda1,w
‘phy:vm_volumes/var.dokeos,sda3,w’
‘phy:vm_volumes/www.dokeos,sda4,w’
‘phy:vm_volumes/swap.dokeos,sda2,w’
[
“root   = “/dev/sda1 ro

آینده پیش روی Xen
مجازی‌سازی در چندین سال اخیر اهمیت بیشتری پیدا کرده است؛ چرا که کاربران کامیپوتر به سکوی تک سیستم‌عاملی قانع نیستند. انقلاب مجازی‌سازی دارد به سمت و سویی حرکت می‌کند که از یک سخت‌افزار بیشترین استفاده صورت گیرد و چندین سیستم روی یک سخت‌افزار پیاده‌سازی شوند. برنامه Xen کاندیدای عینیت بخشیدن به این اهداف در سکوی سیستم‌عامل و نرم‌افزارهای اپن‌سورس است و آزاد بودن پروژه توسعه آن، موجب شده است شرکت‌های کوچک و بزرگی در آن شرکت نمایند و به پیشرفت آن سرعت بیشتری بدهند.

نسخه سوم این برنامه سروصدای زیادی برپا کرد و در کنفرانس LinuxWorld بوستون یکی از محوری‌ترین موضوعات کنفرانس بود. فکر می‌کنم اگر این برنامه مجازی‌سازی بتواند همچنان به پیشرفت و بهبود خود ادامه بدهد و همکاری‌های گسترده‌تری را با بزرگان صنعت مجازی‌سازی و سخت‌افزار آغاز کند، در آینده‌ای نزدیک فناوری مطرحی در دنیای مجازی سازی باشد.

منبع

969
۱ دیدگاه
۹ تیر ۹۳

فرزانه تقدیسی

کارشناس ارشد هوش مصنوعی – پس از اتمام دوره Elastix & MCSE & CCNA & CCNP و اخذ مدارک بین المللی در این حوزه مشغول به کار شدم

دیدگاه کاربران