یک تازه وارد به دنیای سیستم‌عامل‌ها
OSv سیستم‌عاملی برای کلاود و ماشین‌های مجازی
CoreOS و Joyent's SmartOS/Triton هر دو اقدام به بازتعریف مفهومی کرده‌اند که یک سیستم‌عامل به چه چیزی برای اجرای برنامه‌ها در مقیاس ابری نیاز دارد. اما اکنون کاندیدای دیگری به جمع سیستم‌عامل‌های ابری بزرگ پیوسته است. OSv یک هایپروایزر منبع‌باز و بهینه‌سازی شده‌ای است که برای اجرای یک برنامه بدون آن‌که از روش‌های مرسوم سیستم‌عامل‌ها استفاده کند، طراحی شده است.

محاسبات ابری و زیرساخت به عنوان سرویس یا IaaS (سرنام Infrastructure-as-a-Service) از تحقق مفهومی به نام مجازی‌سازی متولد شدند که امکان به اشتراک‌گذاری امن و ساده ماشین‌های فیزیکی را در اختیار سازمان‌های مختلف قرار داد. امروزه ماشین‌های مجازی روی کلاود به طور معمول از سیستم‌عامل‌های سنتی همچون ویندوز، لینوکس و BSD استفاده می‌کنند. با توجه به این‌که زیرساخت‌های ابری در همه جا وجود دارد، انتخاب سیستم‌عامل با حساسیت نسبتا کمتری انجام می‌شود. سیستم‌عامل‌های عمومی ویژگی‌هایی همچون داشتن رابط مدیریتی به ازای هر ماشین و پشتیبانی از طیف گسترده‌ای از سخت‌افزارها ارائه می‌دهند. اما سیستم‌عامل یک ماشین مجازی باید از ویژگی‌های مهم دیگری نیز برخوردار باشد، مواردی همچون سرعت، کوچک بودن و مدیریت ساده آن در مقیاس وسیع از جمله این موارد به شمار می‌روند. اما با وجود این، ویژگی‌های اصلی سیستم‌عامل‌های سنتی در بعضی از بخش‌ها دارای سرباره‌های اضافی هستند، به طوری‌که همین ویژگی‌های تکراری در لایه‌های دیگر پشته ابری تکرار می‌شوند. شکل زیر لایه‌های نرم‌افزاری را در یک ماشین مجازی ابری رایج نشان می‌دهد.

یکی از قواعد مهم در سیستم‌عامل‌های سنتی جدا کردن پردازه‌های (Processes) مختلف از یکدیگر و جدا کردن همه این پردازه‌ها از هسته سیستم‌عامل است. این جداسازی به لحاظ کارایی در فراخوانی‌های سیستم و عملیاتی همچون context switching هزینه‌بر بوده و پیچیدگی‌های زیادی را در سیستم‌عامل به وجود می‌آورد. اما تکنیک ایزوله کردن پردازه‌ها به ویژه زمانی‌که کاربر و برنامه‌های مختلف روی یک سیستم‌عامل‌ به طور همزمان در حال کار هستند، ضروری است؛ اما در کلاود؛ هایپروایزر یک محیط ایزوله مابین ماشین‌های مجازی مختلف به وجود می‌آورد.

ماشین‌های مجازی در کلاود به طور ویژه سیستم‌عامل‌های همه منظوره شبیه به لینوکس را اجرا می‌کنند. هایپروایزرهای ابری از مدت‌ها قبل ویژگی‌هایی همچون ایزوله کردن و سخت‌افزارهای انتزاعی که یک فرآیند دوباره کاری به ارث‌بری شده از سیستم‌عامل‌های سنتی هستند را مورد استفاده قرار داده‌اند که همین موضوع هزینه‌های زیادی به همراه دارد.

اما سؤال اصلی این است، آیا می‌توانیم یک سیستم‌عامل‌ ویژه برای ماشین‌های مجازی طراحی کنیم؟ پاسخ مثبت است. OSv یک سیستم‌عامل‌ متن‌باز برای ماشین‌های مجازی است. شکل جدیدی از یک سیستم‌عامل‌ مهمان که به طور ویژه برای اجرای یک برنامه روی یک ماشین مجازی در کلاود مورد استفاده قرار می‌گیرد. OSv به طور خاص برای اجرای برنامه‌ها در مقیاس و کارایی بالا طراحی شده است و تمرکزش بر مفهوم ابری استوار بوده و دنباله رو فناوری‌های ابری است که از لینوکس یا کانتینرهای سبک داکر استفاده نمی‌کند. به عبارت دیگر OSv سیستم‌عامل‌ جدیدی است که به طور ویژه برای ماشین‌های مجازی ابری ساخته شده است و از APIهای جدید برای برنامه‌های جدید استفاده می‌کند. اما برنامه‌های اصلاح نشده لینوکس را نیز اجرا کرده و به طور ویژه توانایی اجرای یک نسخه اصلاح نشده از JVM و برنامه‌هایی که به صورت سطح بالا ساخته شده‌اند را نیز دارد.

اهداف اصلی که زمینه‌ساز طراحی و ساخت OSv شدند را می‌توان این‌گونه تشریح کرد:

- اجرای برنامه‌های ابری موجود

- اجرای سریع‌تر این برنامه‌ها نسبت به لینوکس

- ساخت ایمیج‌هایی که به اندازه کافی کوچک بوده و از سرعت راه‌اندازی قابل قبولی برخوردار باشند

- کشف APIهای جدید برای برنامه‌های جدیدی که برای OSv نوشته شده‌اند تا کارایی را افزایش دهند

- بهره‌مندی از کدی کوچک در مقایسه با لینوکس

- پیاده‌سازی شده با زبان برنامه‌نویسی مدرن ++C

- محدود نبودن به یک هایپروایزر خاص

- به وجود آوردن یک پلتفرم برای ادامه تحقیقات روی سیستم‌عامل‌های ماشین مجازی

OSv از هایپروایزرها و پردازنده‌های مختلفی تنها با حداقل کدهای موردنیاز برای معماری‌های خاص پشتیبانی می‌کند. این سیستم عامل برای پردازنده‌های 64 بیتی روی هایپروایزرهای Virtual Box ، VMware ، Xen و KVM می‌تواند اجرا شود. همچنین پشتیبانی از پردازنده‌های ARM از نوع 64 بیتی نیز اکنون در دسترس است. OSv روی یک برنامه تکی ( یک پردازه تکی) با یک هسته و چند ریسمان (Thread)  که همه آن‌ها فضای آدرس‌دهی یکسانی را به اشتراک قرار می‌دهند اجرا می‌شود. همین موضوع باعث می‌شود  تا فراخوانی‌های سیستم به شیوه مثمرثمرتری به فراخوانی توابع ( فقط توابع کتابخانه سیستم‌عامل) پرداخته و فرآیند Context switching سریع‌تر انجام شود. این سیستم‌عامل‌ مسائل مربوط به دوباره کاری را با استفاده از طراحی کوچک کتابخانه‌ها حل کرده است. OSv برنامه‌های جاری لینوکس را نیز می‌تواند اجرا کند (اشیاء به اشتراک‌گذاشته شده لینوکس را با پیاده‌سازی یک پیوند دهنده پویای ELF اجرا می‌کند)، البته برای آن‌که به‌توان برنامه‌های لینوکس را اجرا کرده و همچنین برای سازگاری با لینوکس، OSv بیشتر Linux/Glibc ABI را پیاده‌سازی کرده است. البته از وجود بعضی از توابع همچون ()fork و ()exec به دلیل این‌که مناسب با مدل single-application در OSv نبودند صرف‌نظر شده است. OSv به طور کامل از spin-lockها دوری کرده است. به دلیل این‌که بیشتر کار هسته روی ریسمان‌ها است، برای این منظور به جای به‌کارگیری قفل‌ها از mutexها استفاده می‌شود. پیاده‌سازی Mutex بدون استفاده از spin-lock انجام می‌شود. همچنین، زمانبندی از الگوریتم‌های قفل آزاد استفاده می‌کند.

همان‌گونه که پیشتر به آن اشاره کردیم، ماهیت خود OSv لینوکسی نیست، OSv یک موجودیت جدید بوده که به طور کامل و از پایه توسط زبان برنامه‌نویسی ++C نوشته شده است. به عبارت دیگر هسته آن کاملا جدید است. Loader، پیونددهنده پویا، مدیریت حافظه، زمانبندی ریسمان‌ها، همزمان‌سازی فرآیندها (mutex، RCU و...)، درایورهای سخت‌افزاری مجازی، سخت‌افزارهای کامپیوترهای دسکتاپ که به طور معمول توسط هایپروایزرها شبیه‌سازی می‌شوند (صفحه‌کلید، کارت گرافیک، IDE، HPET و غیره) و... همگی از طراحی جدیدی بهره برده‌اند.

همچنین سیستم‌فایلی آن بر مبنای سیستم‌عامل‌ سنتی یونیکس یعنی VFS (سرنام Virtual File System) طراحی شده است. OSv چنان‌که در ابتدای مقاله به آن اشاره شد می‌تواند روی یک گروه از هایپروایزر و ماشین مجازی یا در محیط‌های ابری شبیه به Amazon EC2 یا Google Compute Engine اجرا شود. شرکت سازنده ادعا می‌کند، برنامه‌هایی که روی OSv اجرا می‌شوند عملکرد قابل توجهی به لحاظ کارایی دارند که این موضوع به دلیل تأکید روی یک هایپروایزر است. در طراحی OSv به جای جدا کردن کاربر و فضای آدرس هسته، عناصر به صورت ایزوله شده نگهداری می‌شوند. همچنین به جای استفاده از کانتینرهای داکر، OSv  از سیستم کاربردی خودش موسوم به Capstan استفاده می‌کند. Capstan ابزاری است که برای ساخت و اجرای برنامه‌ها روی OSv تعریف شده است. Capstan در مقایسه با داکر برای ساخت کانتینرها سریع‌تر و ساده‌تر عمل می‌کند، اما خروجی آن یک ایمیج از ماشین مجازی است که روی هر هایپروایزری که ازOSv  پشتیبانی کند، قابل اجرا خواهد بود. یک ایمیج معمولی Capstan فقط 12 تا تا 20 مگابایت بزرگ‌تر از خود برنامه شما خواهد بود و سه ثانیه بیشتر زمان برای ساخت به خود اختصاص می‌دهد. همچنین از Capstan می‌توانید برای اجرای محلی OSv نیز استفاده کنید. (اصطلاح Virtual Machine Image اشاره به یک فایل تکی دارد که حاوی یک دیسک مجازی قابل راه‌اندازی است که یک سیستم‌عامل‌ روی آن قرار دارد. VMIها در قالب‌های مختلفی همچون Raw، gcow2 ، AMI/AKI/ARI ،UEC tarball ،VMDK  و غیره ساخته می‌شوند.)

 OSv روی هایپروایزرهای زیر پشتیبانی می‌شود:

HV

Fully Functional

Experimental

More information

KVM

V

 

Running OSv image under KVM/QEMU

Xen

V

 

Running OSv on Xen

VMWare Workstation

 

V

Running OSv on VMware Workstation, Fusion and Player

VMWare ESXi

 

V

Running OSv on VMware ESXi

VirtualBox

 

V

Running OSv on VirtualBox

 
افرادی که سکان شرکت کلودیوس را بر عهده دارند، شرکتی که اسپانسر این پروژه است، به مدت طولانی در زمینه مجازی‌سازی در تجارت مشغول به کار بوده‌اند. اوی کیویتی مدیر ارشد فنی و دور لائور مدیرعامل کلودیوس هر دو در ساخت نمای اولیه هایپروایزر KVM در Qumranet کمک کرده‌اند و بعدها زمانی‌که ردهت شرکت Quamranet را خریداری کرد، در نگهداری آن به ردهت کمک کردند. این شرکت تاکنون برنامه‌های زیادی را که تحت عنوان اختراعات مجازی برای OSv شناخته می‌شوند طراحی کرده است. Memcached ، Redis و Cassandra از جمله این موارد هستند. شرکت سازنده OSv اعلام کرده است در حال کار روی جاوا و چهارچوب آن و همچنین هادوپ و NoSQL برای بهینه‌سازی و یکپارچه‌ کردن اجرای آن‌ها روی OSv است.

کاربران می‌توانند نمونه‌هایی از OSv را روی سخت‌افزارها یا روی سرور ابری خودشان دانلود کرده و اجرا کنند. سورس کد این سیستم‌عامل‌ تحت مجوز BSD از این آدرس قابل دریافت است.

 این شرکت همچنین سعی در متقاعد کردن کاربران برای ثبتنام و مشارکت در برنامه بتایی که برای OSv در نظر گرفته شده است دارد. برای اطلاع بیشتر در خصوص این برنامه‌ریزی به این آدرس مراجعه کنید.

برچسب: