برنامه نویسی

قفل شده در: وابستگی جدا نشدنی به VMWare

Summarize this content to 400 words in Persian Lang

مقدمه

خرید اخیر VMware توسط Broadcom و متعاقب آن اعلام مدل اشتراک جدید آنها، نگرانی های قابل توجهی را در صنعت IT در رابطه با وابستگی به فروشندگان نرم افزار ایجاد کرده است.

در حالی که بیشتر مشتریان با افزایش هزینه های سرسام آور سروکار دارند، برخی در حال بررسی جایگزین هایی هستند که اغلب مبتنی بر نرم افزار منبع باز است تا تأثیر آن بر عملیات خود را کاهش دهند. علی‌رغم حمایت متخصصان منبع باز برای راه‌حل‌های ترجیحی‌شان، VMware در دهه‌های گذشته یک اکوسیستم بی‌نظیر متشکل از فروشندگان سخت‌افزار، یکپارچه‌کننده‌های نرم‌افزار و فروشندگان ایجاد کرده است.

تکرار چنین مجموعه جامعی، چه از ابتدا و چه با استفاده از نرم افزار منبع باز، نیازمند سرمایه گذاری قابل توجهی است و خطر شکست بالایی را به همراه دارد.

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

سلب مسئولیت: این اکتشافات در یک محیط آزمایشگاهی انجام شد. استفاده از آن در محیط تولید نیازمند یک استراتژی متن باز کاملاً توسعه یافته است.

هایپروایزرها

ESXi هایپروایزر VMWare است. نقش Hypervisor یا VMM (مدیر ماشین مجازی) ایجاد و مدیریت ماشین های مجازی (VM) است. با انتزاع سخت‌افزار زیربنایی و تخصیص منابع فیزیکی به ماشین‌های مجازی، چندین سیستم عامل را قادر می‌سازد تا به طور همزمان روی یک میزبان فیزیکی اجرا شوند.

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

هایپروایزرهای فلزی برهنه

هایپروایزورهای فلزی لخت که به عنوان هایپروایزر نوع 1 نیز شناخته می شوند، مستقیماً بر روی سیستم عامل های اختصاصی (OS) طراحی شده اند که به طور خاص برای مجازی سازی طراحی شده اند. این سیستم‌عامل‌ها معمولاً دارای یک معماری میکروکرنل هستند و حداقل مجموعه‌ای از ویژگی‌ها را از طریق یک API سطح پایین شامل توابع ممتاز به نام Hypercalls در معرض دید ماشین‌های مجازی قرار می‌دهند. علاوه بر این، برنامه ها و ابزارهایی را که صفحه کنترل هایپروایزر را تشکیل می دهند با APIهای سطح بالاتر برای کنترل و نظارت بر هایپروایزر فراهم می کند.

این رویکرد چندین مزیت از جمله بهبود امنیت و قابلیت اطمینان با کاهش مقدار کد اجرا شده با امتیازات بالای CPU را ارائه می دهد. همچنین تأیید رسمی نرم افزار Hypervisor را برای موارد استفاده حیاتی تسهیل می کند. به عنوان مثال، چنین تأییدی ممکن است برای دستیابی به بالاترین سطوح گواهینامه ایمنی در سیستم های هوابرد (DO-178) ضروری باشد. یک اشکال ممکن است سازگاری سخت افزاری محدود باشد.

ESXi یک هایپروایزر نوع 1 است که از یک سیستم عامل سفارشی به نام VMkernel استفاده می کند. نمونه های دیگر عبارتند از Xen، PikeOS، QNX، L4Re و غیره.

هایپروایزرهای میزبانی شده

در هایپروایزرهای میزبانی شده که با نام هایپروایزر نوع 2 نیز شناخته می شوند، هایپروایزر به عنوان یک برنامه کاربردی فضای کاربر در سیستم عامل میزبان اجرا می شود. هنگامی که ماشین مجازی در حال اجرا بر روی یک هایپروایزر نوع 2 نیاز به انجام عملیاتی دارد، هایپروایزر معمولاً فراخوانی های سیستمی (syscalls) را به سیستم عامل میزبان صادر می کند که به نوبه خود دسترسی به منابع سخت افزاری را مدیریت می کند و عملیات درخواستی را از طرف ماشین مجازی اجرا می کند.

قابل حمل بودن و سهولت استفاده آنها را برای محیط های مجازی سازی محلی ایده آل می کند. با این حال، آنها باید منابع سخت افزاری را با سایر برنامه ها به اشتراک بگذارند که می تواند بر عملکرد، ثبات و امنیت تأثیر بگذارد. به عنوان مثال می توان به Oracle VirtualBox و VMware Workstation اشاره کرد.

هایپروایزورهای ترکیبی

همچنین پیاده سازی های ترکیبی مانند KVM و Bhyve وجود دارد که به ترتیب در هسته های لینوکس و FreeBSD یکپارچه شده اند. Syscalls از ماشین های مجازی مهمان، توسط ماژول هسته برای تعامل با لایه مجازی سازی سخت افزار به فراخوانی تبدیل می شوند. آنها خطوط بین هایپروایزر نوع 1 و نوع 2 را محو می کنند و اغلب به عنوان هایپروایزر نوع 1.5 شناخته می شوند. با ترکیب مزایای هایپروایزر نوع 1 و نوع 2، با پشتیبانی از طیف وسیعی از سخت افزارها و ابزارها، انعطاف پذیری زیاد و محیطی آشنا را ممکن می سازد. با این حال، جداسازی نگرانی‌ها سخت‌تر است و شعاع انفجار بالقوه را در صورت شکست یا سازش افزایش می‌دهد.

پشته نرم افزار

برای ساخت معادلی برای VMware ESXi، منطقی است که از یک رویکرد مشابه استفاده کنید. ESXi و Xen هر دو هایپروایزرهای فلزی هستند که مستقیماً روی سخت افزار اجرا می شوند و از تماس های مستقیم بین ماشین های مجازی و لایه هایپروایزر استفاده می کنند. این ابزار ارتباط ایمن و کارآمد بین ماشین های مجازی و هایپروایزر را فراهم می کند و از قابلیت های مجازی سازی قوی و در عین حال حفظ مرزهای ایزوله و امنیتی بین ماشین های مجازی مختلف اطمینان می دهد. با این حال، برخی از تفاوت های ظریف در اجرای آنها وجود دارد. به عنوان مثال، در Xen، صفحه کنترل در بالای هایپروایزر به عنوان یک ماشین مجازی ممتاز (VM)، معروف به Dom0 اجرا می شود. در مقابل، سرویس های ESXi به عنوان فرآیندهای درون سیستم عامل VMkernel اجرا می شوند.

Xen یک هایپروایزر منبع باز نوع 1 است که تحت شرایط مجوز GPLv2 منتشر شده و توسط بنیاد لینوکس حمایت می شود. این یک نرم افزار بالغ است که از تحقیقات دانشگاه کمبریج صادر شده است و به طور گسترده توسط بسیاری از شرکت ها از جمله ارائه دهندگان ابر عمومی مشهور مانند آمازون برای پشتیبانی از زیرساخت AWS خود استفاده شده است. طول عمر آن اکوسیستم بزرگی از فروشندگان سخت افزار و یکپارچه سازان را پرورش داده است. علاوه بر این، به خوبی مستند شده است و از پشتیبانی و ابزار قوی جامعه بهره می برد.Xen حداقل به یک ماشین مجازی یا دامنه ممتاز نیاز دارد که اغلب به عنوان dom0 نامیده می شود. Dom0 APIها و ابزارهایی را فراهم می کند که صفحه کنترل هایپروایزر را تشکیل می دهند. مسئولیت مدیریت domUs (VMs)، دستگاه ها، امنیت، شبکه و ذخیره سازی را بر عهده دارد.FreeBSD برای این منظور مناسب است. این یک سیستم عامل Unix/POSIX است که از دانشگاه برکلی صادر شده و تحت شرایط مجوز BSD مجاز توزیع شده است. FreeBSD که به دلیل ثبات و امنیت خود شناخته شده است، برای چندین دهه در برنامه های آموزشی، تحقیقاتی، غیرنظامی و نظامی مورد استفاده قرار گرفته است. از Xen به عنوان dom0 و domU پشتیبانی درجه یک دارد.

libvirt یک کتابخانه C است که توسط RedHat تحت شرایط مجوز GNU LGPL توسعه یافته است، که یک API عمومی ارائه می‌کند که بیت‌ها و بایت‌های هایپروایزر، شبکه و فناوری‌های ذخیره‌سازی زیرین را انتزاع می‌کند. استفاده از API عمومی libvirt امکان بهره مندی از اکوسیستم بزرگی از نرم افزارها و ابزارهای منبع باز را می دهد. به عنوان مثال، می توان از مشتری virt-manager برای ایجاد و مدیریت ماشین های مجازی استفاده کرد.از طیف وسیعی از هایپروایزرها از جمله Xen از طریق درایور libxl، KVM، BHyve، Hyper-V و پشتیبان‌های ذخیره‌سازی، از جمله ZFS پشتیبانی می‌کند.

ZFS یک سیستم فایل و مدیریت حجم کامل است که برای اولین بار توسط Sun Microsystems تحت شرایط مجوز CDDL توسعه یافت. اکنون ویژگی Oracle، توسعه متن‌باز ZFS در حال انجام به پروژه OpenZFS منتقل شده است. این RAID نرم افزار کارآمد، عکس های فوری، فشرده سازی، حذف مجدد، رمزگذاری و سایر ویژگی های پیشرفته را فراهم می کند. ZVol ها برای ذخیره سازی اولیه VM بسیار کاربردی هستند. به دلیل قابلیت اطمینان آن شناخته شده است، در FreeBSD و بسیاری از وسایل ذخیره سازی ادغام شده است.

سمت سرور

Xen

برای نصب FreeBSD به عنوان یک میزبان Xen، مراحل توضیح داده شده در کتابچه راهنمای FreeBSD را دنبال کنید.در زیر خلاصه ای از مراحل کلیدی آورده شده است.

ابتدا بسته های xen را نصب کنید:

# pkg update
# pkg install -y xen-kernel xen-tools

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس، برخی از پارامترهای سیستم مورد نیاز برای xen dom0 را تنظیم کنید:

# echo “vm.max_wired=-1″ >> /etc/sysctl.conf
# sed -i ” -e ‘s/memorylocked=64K/memorylocked=unlimited/’ /etc/login.conf
# cap_mkdb /etc/login.conf
# echo ‘xc0 “/usr/libexec/getty Pc” xterm onifconsole secure’ >> /etc/ttys

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هسته را برای بارگذاری پیکربندی کنید tap ماژول، Xen را با مشخص کردن مسیر هسته Xen فعال کنید و خط فرمان لازم برای بوت کردن FreeBSD را به عنوان dom0 ارائه دهید:

# sysrc -f /boot/loader.conf if_tap_load=”YES”
# sysrc -f /boot/loader.conf xen_kernel=”/boot/xen”
# sysrc -f /boot/loader.conf xen_cmdline=”dom0_mem=8192M dom0_max_vcpus=4 dom0=pvh console=com1,vga com1=115200,8n1 guest_loglvl=all loglvl=all”

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

را فعال کنید xencommons خدمات:

# sysrc xencommons_enable=yes

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پل شبکه را پیکربندی کنید و یک رابط شبکه به پل اضافه کنید (جایگزین کنید em0 با نام رابط شبکه شما):

# sysrc cloned_interfaces=”bridge0″
# sysrc ifconfig_bridge0=”addm em0 SYNCDHCP”
# sysrc ifconfig_em0=”up”

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سیستم را مجدد راه اندازی کنید

# reboot

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

libvirt

اگرچه امکان نصب یک باینری از پیش کامپایل شده libvirt با مدیریت بسته FreeBSD وجود دارد، اما با پشتیبانی Xen ساخته نشده است. با این حال، برای غلبه بر این محدودیت، می توان یک نسخه سفارشی را با استفاده از سیستم پورت کامپایل کرد.

ابتدا درخت پورت های خود را از مخزن گیت FreeBSD به روز کنید:

# pkg install -y git
# git clone https://git.freebsd.org/ports.git /usr/ports

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اطمینان حاصل کنید که نسخه درختی پورت ها با مدیریت بسته پیکربندی شده شما مطابقت دارد /etc/pkg/FreeBSD.conf. به طور پیش فرض pkg برای استفاده از مخزن سه ماهه پیکربندی شده است:

FreeBSD: {
url: “pkg+http://pkg.FreeBSD.org/${ABI}/quarterly”,
mirror_type: “srv”,
signature_type: “fingerprints”,
fingerprints: “/usr/share/keys/pkg”,
enabled: yes
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در درخت پورت‌های خود، همه شاخه‌های موجود را مرور کنید:

# cd /usr/ports
# git branch -a

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و آخرین شعبه سه ماهه را بررسی کنید:

# git checkout 2024Q2

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به منظور کامپایل و نصب libvirt پورت، ابتدا وابستگی ها را با استفاده از مدیر بسته نصب کنید:

# cd /usr/ports/devel/libvirt/
# make install-missing-packages

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ویرایش کنید /etc/make.conf برای فعال کردن پشتیبانی Xen:

OPTIONS_SET+=XEN

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کامپایل و نصب کنید libvirt:

# export BATCH=”yes”
# make clean install

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

xen را به عنوان پشتیبان پیش‌فرض hypervisor libvirt تنظیم کنید:

cat

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

libvirtd را پیکربندی کنید تا اجازه دهد libvirt اعضای گروه برای خواندن و نوشتن در سوکت libvirt:

# cat

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اطمینان حاصل کنید libvirt گروه وجود دارد و کاربران مورد نیاز را به عنوان اعضای گروه اضافه کنید:

# pw groupadd libvirt
# pw groupmod libvirt -m username

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پارامترهای libxl بیشتری را می توان در آن پیکربندی کرد /usr/local/etc/libvirt/libxl.conf.

در نهایت فعال کنید libvirtd خدمات

# sysrc libvirtd_enable=”YES”
# service libvirtd start

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سمت مشتری

یکی از مزایای استفاده از libvirt که ابروایزر، ذخیره‌سازی و پشتیبان‌های شبکه را با افشای یک API عمومی انتزاع می‌کند، بهره‌مندی از اکوسیستم بزرگی از نرم‌افزارها و ابزارها، از جمله خط فرمان، کلاینت‌های گرافیکی از جمله، کلاینت‌های وب و ابزارهای تأمین‌کننده است.

رابط گرافیکی

استفاده از libvirt به عنوان یک API عمومی اجازه استفاده از مشتری گرافیکی virt-manager را برای مدیریت ماشین های مجازی می دهد.

در زیر چند اسکرین شات از نصب مهمان FreeBSD آورده شده است:

خط فرمان

Virsh کلاینت خط فرمان است که با libvirt بسته بندی شده است. این یک رابط خط فرمان بصری (CLI) را فراهم می کند که امکان مدیریت چرخه عمر ماشین های مجازی و شبکه و منابع ذخیره سازی مرتبط با آنها را فراهم می کند.

برای مثال می‌توان از virsh برای بررسی موفقیت‌آمیز بودن نصب و راه‌اندازی dom0 استفاده کرد:

root@lab-01:~ # virsh list
Id Name State
————————–
0 Domain-0 running

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه گیری

این آزمایش نشان می‌دهد که امکان بازتولید ویژگی‌های کلیدی ESXi با تکیه بر یک اکوسیستم بالغ از فناوری‌های منبع باز مانند Xen و FreeBSD وجود دارد.در مقاله بعدی، می‌خواهم جایگزین‌های VMWare VCenter از جمله خوشه‌بندی، در دسترس بودن بالا و نظارت را بررسی کنم.

مقدمه

خرید اخیر VMware توسط Broadcom و متعاقب آن اعلام مدل اشتراک جدید آنها، نگرانی های قابل توجهی را در صنعت IT در رابطه با وابستگی به فروشندگان نرم افزار ایجاد کرده است.

در حالی که بیشتر مشتریان با افزایش هزینه های سرسام آور سروکار دارند، برخی در حال بررسی جایگزین هایی هستند که اغلب مبتنی بر نرم افزار منبع باز است تا تأثیر آن بر عملیات خود را کاهش دهند. علی‌رغم حمایت متخصصان منبع باز برای راه‌حل‌های ترجیحی‌شان، VMware در دهه‌های گذشته یک اکوسیستم بی‌نظیر متشکل از فروشندگان سخت‌افزار، یکپارچه‌کننده‌های نرم‌افزار و فروشندگان ایجاد کرده است.

تکرار چنین مجموعه جامعی، چه از ابتدا و چه با استفاده از نرم افزار منبع باز، نیازمند سرمایه گذاری قابل توجهی است و خطر شکست بالایی را به همراه دارد.

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

سلب مسئولیت: این اکتشافات در یک محیط آزمایشگاهی انجام شد. استفاده از آن در محیط تولید نیازمند یک استراتژی متن باز کاملاً توسعه یافته است.

هایپروایزرها

ESXi هایپروایزر VMWare است. نقش Hypervisor یا VMM (مدیر ماشین مجازی) ایجاد و مدیریت ماشین های مجازی (VM) است. با انتزاع سخت‌افزار زیربنایی و تخصیص منابع فیزیکی به ماشین‌های مجازی، چندین سیستم عامل را قادر می‌سازد تا به طور همزمان روی یک میزبان فیزیکی اجرا شوند.

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

توضیحات تصویر

هایپروایزرهای فلزی برهنه

هایپروایزورهای فلزی لخت که به عنوان هایپروایزر نوع 1 نیز شناخته می شوند، مستقیماً بر روی سیستم عامل های اختصاصی (OS) طراحی شده اند که به طور خاص برای مجازی سازی طراحی شده اند. این سیستم‌عامل‌ها معمولاً دارای یک معماری میکروکرنل هستند و حداقل مجموعه‌ای از ویژگی‌ها را از طریق یک API سطح پایین شامل توابع ممتاز به نام Hypercalls در معرض دید ماشین‌های مجازی قرار می‌دهند. علاوه بر این، برنامه ها و ابزارهایی را که صفحه کنترل هایپروایزر را تشکیل می دهند با APIهای سطح بالاتر برای کنترل و نظارت بر هایپروایزر فراهم می کند.

این رویکرد چندین مزیت از جمله بهبود امنیت و قابلیت اطمینان با کاهش مقدار کد اجرا شده با امتیازات بالای CPU را ارائه می دهد. همچنین تأیید رسمی نرم افزار Hypervisor را برای موارد استفاده حیاتی تسهیل می کند. به عنوان مثال، چنین تأییدی ممکن است برای دستیابی به بالاترین سطوح گواهینامه ایمنی در سیستم های هوابرد (DO-178) ضروری باشد. یک اشکال ممکن است سازگاری سخت افزاری محدود باشد.

ESXi یک هایپروایزر نوع 1 است که از یک سیستم عامل سفارشی به نام VMkernel استفاده می کند. نمونه های دیگر عبارتند از Xen، PikeOS، QNX، L4Re و غیره.

هایپروایزرهای میزبانی شده

در هایپروایزرهای میزبانی شده که با نام هایپروایزر نوع 2 نیز شناخته می شوند، هایپروایزر به عنوان یک برنامه کاربردی فضای کاربر در سیستم عامل میزبان اجرا می شود. هنگامی که ماشین مجازی در حال اجرا بر روی یک هایپروایزر نوع 2 نیاز به انجام عملیاتی دارد، هایپروایزر معمولاً فراخوانی های سیستمی (syscalls) را به سیستم عامل میزبان صادر می کند که به نوبه خود دسترسی به منابع سخت افزاری را مدیریت می کند و عملیات درخواستی را از طرف ماشین مجازی اجرا می کند.

قابل حمل بودن و سهولت استفاده آنها را برای محیط های مجازی سازی محلی ایده آل می کند. با این حال، آنها باید منابع سخت افزاری را با سایر برنامه ها به اشتراک بگذارند که می تواند بر عملکرد، ثبات و امنیت تأثیر بگذارد. به عنوان مثال می توان به Oracle VirtualBox و VMware Workstation اشاره کرد.

هایپروایزورهای ترکیبی

همچنین پیاده سازی های ترکیبی مانند KVM و Bhyve وجود دارد که به ترتیب در هسته های لینوکس و FreeBSD یکپارچه شده اند. Syscalls از ماشین های مجازی مهمان، توسط ماژول هسته برای تعامل با لایه مجازی سازی سخت افزار به فراخوانی تبدیل می شوند. آنها خطوط بین هایپروایزر نوع 1 و نوع 2 را محو می کنند و اغلب به عنوان هایپروایزر نوع 1.5 شناخته می شوند. با ترکیب مزایای هایپروایزر نوع 1 و نوع 2، با پشتیبانی از طیف وسیعی از سخت افزارها و ابزارها، انعطاف پذیری زیاد و محیطی آشنا را ممکن می سازد. با این حال، جداسازی نگرانی‌ها سخت‌تر است و شعاع انفجار بالقوه را در صورت شکست یا سازش افزایش می‌دهد.

پشته نرم افزار

برای ساخت معادلی برای VMware ESXi، منطقی است که از یک رویکرد مشابه استفاده کنید. ESXi و Xen هر دو هایپروایزرهای فلزی هستند که مستقیماً روی سخت افزار اجرا می شوند و از تماس های مستقیم بین ماشین های مجازی و لایه هایپروایزر استفاده می کنند. این ابزار ارتباط ایمن و کارآمد بین ماشین های مجازی و هایپروایزر را فراهم می کند و از قابلیت های مجازی سازی قوی و در عین حال حفظ مرزهای ایزوله و امنیتی بین ماشین های مجازی مختلف اطمینان می دهد. با این حال، برخی از تفاوت های ظریف در اجرای آنها وجود دارد. به عنوان مثال، در Xen، صفحه کنترل در بالای هایپروایزر به عنوان یک ماشین مجازی ممتاز (VM)، معروف به Dom0 اجرا می شود. در مقابل، سرویس های ESXi به عنوان فرآیندهای درون سیستم عامل VMkernel اجرا می شوند.

توضیحات تصویر

Xen یک هایپروایزر منبع باز نوع 1 است که تحت شرایط مجوز GPLv2 منتشر شده و توسط بنیاد لینوکس حمایت می شود. این یک نرم افزار بالغ است که از تحقیقات دانشگاه کمبریج صادر شده است و به طور گسترده توسط بسیاری از شرکت ها از جمله ارائه دهندگان ابر عمومی مشهور مانند آمازون برای پشتیبانی از زیرساخت AWS خود استفاده شده است. طول عمر آن اکوسیستم بزرگی از فروشندگان سخت افزار و یکپارچه سازان را پرورش داده است. علاوه بر این، به خوبی مستند شده است و از پشتیبانی و ابزار قوی جامعه بهره می برد.
Xen حداقل به یک ماشین مجازی یا دامنه ممتاز نیاز دارد که اغلب به عنوان dom0 نامیده می شود. Dom0 APIها و ابزارهایی را فراهم می کند که صفحه کنترل هایپروایزر را تشکیل می دهند. مسئولیت مدیریت domUs (VMs)، دستگاه ها، امنیت، شبکه و ذخیره سازی را بر عهده دارد.
FreeBSD برای این منظور مناسب است. این یک سیستم عامل Unix/POSIX است که از دانشگاه برکلی صادر شده و تحت شرایط مجوز BSD مجاز توزیع شده است. FreeBSD که به دلیل ثبات و امنیت خود شناخته شده است، برای چندین دهه در برنامه های آموزشی، تحقیقاتی، غیرنظامی و نظامی مورد استفاده قرار گرفته است. از Xen به عنوان dom0 و domU پشتیبانی درجه یک دارد.

libvirt یک کتابخانه C است که توسط RedHat تحت شرایط مجوز GNU LGPL توسعه یافته است، که یک API عمومی ارائه می‌کند که بیت‌ها و بایت‌های هایپروایزر، شبکه و فناوری‌های ذخیره‌سازی زیرین را انتزاع می‌کند. استفاده از API عمومی libvirt امکان بهره مندی از اکوسیستم بزرگی از نرم افزارها و ابزارهای منبع باز را می دهد. به عنوان مثال، می توان از مشتری virt-manager برای ایجاد و مدیریت ماشین های مجازی استفاده کرد.
از طیف وسیعی از هایپروایزرها از جمله Xen از طریق درایور libxl، KVM، BHyve، Hyper-V و پشتیبان‌های ذخیره‌سازی، از جمله ZFS پشتیبانی می‌کند.

ZFS یک سیستم فایل و مدیریت حجم کامل است که برای اولین بار توسط Sun Microsystems تحت شرایط مجوز CDDL توسعه یافت. اکنون ویژگی Oracle، توسعه متن‌باز ZFS در حال انجام به پروژه OpenZFS منتقل شده است. این RAID نرم افزار کارآمد، عکس های فوری، فشرده سازی، حذف مجدد، رمزگذاری و سایر ویژگی های پیشرفته را فراهم می کند. ZVol ها برای ذخیره سازی اولیه VM بسیار کاربردی هستند. به دلیل قابلیت اطمینان آن شناخته شده است، در FreeBSD و بسیاری از وسایل ذخیره سازی ادغام شده است.

توضیحات تصویر

سمت سرور

Xen

برای نصب FreeBSD به عنوان یک میزبان Xen، مراحل توضیح داده شده در کتابچه راهنمای FreeBSD را دنبال کنید.
در زیر خلاصه ای از مراحل کلیدی آورده شده است.

ابتدا بسته های xen را نصب کنید:

# pkg update
# pkg install -y xen-kernel xen-tools
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس، برخی از پارامترهای سیستم مورد نیاز برای xen dom0 را تنظیم کنید:

# echo "vm.max_wired=-1" >> /etc/sysctl.conf
# sed -i '' -e 's/memorylocked=64K/memorylocked=unlimited/' /etc/login.conf
# cap_mkdb /etc/login.conf
# echo 'xc0     "/usr/libexec/getty Pc"         xterm   onifconsole  secure' >> /etc/ttys
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هسته را برای بارگذاری پیکربندی کنید tap ماژول، Xen را با مشخص کردن مسیر هسته Xen فعال کنید و خط فرمان لازم برای بوت کردن FreeBSD را به عنوان dom0 ارائه دهید:

# sysrc -f /boot/loader.conf if_tap_load="YES"
# sysrc -f /boot/loader.conf xen_kernel="/boot/xen"
# sysrc -f /boot/loader.conf xen_cmdline="dom0_mem=8192M dom0_max_vcpus=4 dom0=pvh console=com1,vga com1=115200,8n1 guest_loglvl=all loglvl=all"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

را فعال کنید xencommons خدمات:

# sysrc xencommons_enable=yes
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پل شبکه را پیکربندی کنید و یک رابط شبکه به پل اضافه کنید (جایگزین کنید em0 با نام رابط شبکه شما):

# sysrc cloned_interfaces="bridge0"
# sysrc ifconfig_bridge0="addm em0 SYNCDHCP"
# sysrc ifconfig_em0="up"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سیستم را مجدد راه اندازی کنید

# reboot
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

libvirt

اگرچه امکان نصب یک باینری از پیش کامپایل شده libvirt با مدیریت بسته FreeBSD وجود دارد، اما با پشتیبانی Xen ساخته نشده است. با این حال، برای غلبه بر این محدودیت، می توان یک نسخه سفارشی را با استفاده از سیستم پورت کامپایل کرد.

ابتدا درخت پورت های خود را از مخزن گیت FreeBSD به روز کنید:

# pkg install -y git
# git clone https://git.freebsd.org/ports.git /usr/ports
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اطمینان حاصل کنید که نسخه درختی پورت ها با مدیریت بسته پیکربندی شده شما مطابقت دارد /etc/pkg/FreeBSD.conf. به طور پیش فرض pkg برای استفاده از مخزن سه ماهه پیکربندی شده است:

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در درخت پورت‌های خود، همه شاخه‌های موجود را مرور کنید:

# cd /usr/ports
# git branch -a
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و آخرین شعبه سه ماهه را بررسی کنید:

# git checkout 2024Q2
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به منظور کامپایل و نصب libvirt پورت، ابتدا وابستگی ها را با استفاده از مدیر بسته نصب کنید:

# cd /usr/ports/devel/libvirt/
# make install-missing-packages
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ویرایش کنید /etc/make.conf برای فعال کردن پشتیبانی Xen:

OPTIONS_SET+=XEN
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کامپایل و نصب کنید libvirt:

# export BATCH="yes"
# make clean install
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

xen را به عنوان پشتیبان پیش‌فرض hypervisor libvirt تنظیم کنید:

cat 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

libvirtd را پیکربندی کنید تا اجازه دهد libvirt اعضای گروه برای خواندن و نوشتن در سوکت libvirt:

# cat 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اطمینان حاصل کنید libvirt گروه وجود دارد و کاربران مورد نیاز را به عنوان اعضای گروه اضافه کنید:

# pw groupadd libvirt
# pw groupmod libvirt -m username
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پارامترهای libxl بیشتری را می توان در آن پیکربندی کرد /usr/local/etc/libvirt/libxl.conf.

در نهایت فعال کنید libvirtd خدمات

# sysrc libvirtd_enable="YES"
# service libvirtd start
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سمت مشتری

یکی از مزایای استفاده از libvirt که ابروایزر، ذخیره‌سازی و پشتیبان‌های شبکه را با افشای یک API عمومی انتزاع می‌کند، بهره‌مندی از اکوسیستم بزرگی از نرم‌افزارها و ابزارها، از جمله خط فرمان، کلاینت‌های گرافیکی از جمله، کلاینت‌های وب و ابزارهای تأمین‌کننده است.

رابط گرافیکی

استفاده از libvirt به عنوان یک API عمومی اجازه استفاده از مشتری گرافیکی virt-manager را برای مدیریت ماشین های مجازی می دهد.

در زیر چند اسکرین شات از نصب مهمان FreeBSD آورده شده است:

توضیحات تصویر

توضیحات تصویر

توضیحات تصویر

خط فرمان

Virsh کلاینت خط فرمان است که با libvirt بسته بندی شده است. این یک رابط خط فرمان بصری (CLI) را فراهم می کند که امکان مدیریت چرخه عمر ماشین های مجازی و شبکه و منابع ذخیره سازی مرتبط با آنها را فراهم می کند.

برای مثال می‌توان از virsh برای بررسی موفقیت‌آمیز بودن نصب و راه‌اندازی dom0 استفاده کرد:

root@lab-01:~ # virsh list
 Id   Name       State
--------------------------
 0    Domain-0   running
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه گیری

این آزمایش نشان می‌دهد که امکان بازتولید ویژگی‌های کلیدی ESXi با تکیه بر یک اکوسیستم بالغ از فناوری‌های منبع باز مانند Xen و FreeBSD وجود دارد.
در مقاله بعدی، می‌خواهم جایگزین‌های VMWare VCenter از جمله خوشه‌بندی، در دسترس بودن بالا و نظارت را بررسی کنم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا