محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

OS Level Virtualization چیست؟ بررسی مفهوم مجازی سازی در سطح OS

مجازی سازی سطح سیستم عامل چیست؟ قبلا در وب سایت وزین توسینسو در خصوص انواع مجازی سازی صحبت کرده ایم ، مجازی سازی سرور ، مجازی سازی دسکتاپ ، مجازی سازی Application ها و مجازی سازی نرم افزارها از جمله این تنوع های مجازی سازی هستند. امروز می خواهیم در خصوص یک مفهوم جالب در مجازی سازی یا در واقع یک لایه جدید در مجازی سازی به نام OS Level Virtualization یا مجازی سازی در سطح سیستم عامل صحبت کنیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

زمانیکه صحبت از مجازی سازی می شود بلافاصله ما یک نرم افزار Hypervisor و سیستم عامل های مجازی که داخل این Hypervisor ایجاد می شوند را در ذهن تصور می کنیم اما به عنوان یک توسینسو جالب است بدانید که ما می توانیم بدون ایجاد کردن یک سیستم عامل جدید و مجزا هم یک سرور مجازی ایجاد کنیم !!! این در واقع همان تکنولوژی است که ما آن را به عنوان مجازی سازی در لایه سیستم عامل می شناسیم.

مجازی سازی در لایه سیستم عامل چیست ؟

مجازی سازی در لایه سیستم عامل یا Operating System Level Virtualization یک روش مجازی سازی سرور است که هسته یا کرنل سیستم عامل این اجازه را به شما می دهد که چندین سیستم عامل مجازی از درون یک سیستم عامل بصورت کاملا ایزوله بیرون بکشید در واقع شما یک سیستم عامل اصلی دارید که همه چیز بر هسته همین سیستم عامل بنا نهاده شده است و سیستم عامل جدیدی که به شما داده می شود بر پایه و هسته این سیستم عامل اولیه است.

به این ماشین مجازی یا در اصطلاح فنی تر instance ای که توسط مجازی سازی در لایه سیستم عامل خروجی داده می شود در اصطلاح فنی Container یا Software Container ، Virtualization Engine یا VE ، Virtual Private Server یا VPS و برخی اوقات Jail هم گفته می شود. این سیستم مجازی که در اختیار کاربر قرار می گیرد این احساس را به کاربر می دهد که در حال کار کردن با یک سیستم کاملا واقعی است اما در باطن این سیستم کاملا مجازی و وابسته به هسته سیستم عامل اصلی است. در سیستم عامل های خانواده لینوکس و یونیکس با استفاده از مکانیزمی به نام chroot شما می توانید تکنولوژی مجازی سازی در لایه سیستم عامل را پیاده سازی کنید. علاوه بر مکانیزم ایزوله کردن هسته یا کرنل اصلی سیستم عامل می توانید قابلیت مدیریت منابع بر اساس نیاز هر Container را نیز فراهم کند.

Operating system Virtualization چیست ؟

از مجازی سازی در لایه سیستم عامل در کجا استفاده می شود ؟

از تکنولوژی های مجازی سازی در لایه سیستم عامل بیشتر در محیط های هاستینگ مجازی استفاده می شود ، در اینگونه محیط ها مدیران هاستینگ نیاز به راه اندازی و تخصیص منابع سخت افزاری به تعداد زیادی کاربر دارند و سرعت عمل و امنیت و همچنین مدیریت ساده از اولویت ها به حساب می آید. البته ITPRO ها در سازمان های مختلف نیز ممکن است از تکنولوژی مجازی سازی در لایه سیستم عامل استفاده کنند برای مثال ممکن است یک ITPRO بخواهد سرورهای خودش را جمع آوری و آنها را در قالب Container ها برای استفاده بهینه از منابع و کاهش تعداد سرورهای فیزیکی و حتی مجازی استفاده کند. یکی دیگر از مواردی که مجازی سازی لایه سیستم عامل بسیار می تواند کاربردی باشد ایزوله کردن منابع سخت افزاری و نرم افزاری Application ها برای بالا بردن امنیت و تخصیص درست منابع است .

برای مثال شما می خواهید بر روی یک سرور چندین نرم افزار تخصصی و کاربردی را بدون تداخل با سایر نرم افزارها داشته باشید و نمی خواهید دغدغه ها و درگیری های سیستم عامل های جانبی را داشته باشید و منابع را نیز می خواهید بصورت اختصاصی در اختیار هر Application قرار بدهید. یکی از قابلیت های بسیار جذابی که در OS Level Virtualization وجود دارد امکان استفاده از Live Migration یا همان vMotion است که شما می توانید در یک Cluster از Container ها Load کاری بین سیستم عامل ها را تقسیم کنید و ماشین های مجازی را نیز براحتی جابجا کنید.

مجازی سازی در لایه سیستم عامل چه مقدار Overhead بر روی OS دارد؟

مجازی سازی در لایه سیستم عامل در واقع به خاطر کاهش بسیار زیاد Overhead تا حد صفر بسیار معروف شده است ، دلیل آن هم کاملا مشخص است ، برنامه ها در چنین محیطی منابع را در قالب پارتیشن های مجازی دریافت می کنند که همه آنها بر روی سیستم عامل اصلی یا مادر قرار گرفته است ، در واقع هر چقدر ما System Call داشته باشیم بر روی این Container ها ، بصورت مستقیم بر روی سخت افزارها و منابع سخت افزاری اجرا می شود و این میان لایه واسط Hypervisor وجود ندارد ، در اینگونه مجازی سازی در واقع ما هیچگونه Emulation ای در واسطه نداریم و در واقع همه سیستم مجازی سازی می شود نه فقط ماشین های مجازی .

بر خلاف آن در Hypervisor هایی مثل ESXi ، یا QEMU یا Hyper-V این لایه واسط خودش باعث ایجاد شدن ناخودآگاه Overhead بر روی سیستم عامل می شود ، حتی سیستم عامل هایی که فرآیند Paravirtualization نیز انجام می دهند مثل Xen یا UML هم نمی توانند به این اندازه Overhead را بر روی سیستم عامل کاهش بدهند. جالب اینجاست بدانید که در این نوع مجازی سازی بسیاری از وابستگی های سخت افزاری Hypervisor ها وجود ندارد و بر روی سخت افزارهای بسیار زیادی بدون محدودیت قابل پیاده سازی است.

مجازی سازی در لایه سیستم عامل چه مقدار انعطاف پذیری دارد؟

یکی از نقاط ضعفی که در مجازی سازی لایه سیستم عامل وجود دارد همین بحث انعطاف پذیری است. هیچوقت نمی توانید شما در این سطح از مجازی سازی انتظار انعطاف پذیری را داشته باشید که در سایر راهکارهای مجازی سازی سرور استفاده می کنید ، دلیل آن هم کاملا مشخص است ، شما در این سرویس هیچگونه بحثی به نام Host OS و Guest OS دیگر ندارید و در واقع تنها یک Host وجود دارد و یک هسته یا کرنل سیستم عامل وجود دارد.

برای مثال شما با استفاده از این نوع مجازی سازی می توانید بر روی سیستم عامل لینوکس بسیاری از توزیع های مختلف سیستم عامل لینوکس را نصب کنید با توجه به اینکه کرنل آنها یکی است مشکلی پیش نمی آید اما طبیعتا شما نمی توانید بر روی سیستم عامل لینوکس ، سیستم عامل ویندوز را به عنوان Container داشته باشید. البته شما بر روی سیستم عامل ویندوز هم همین محدودیت ها را دارید ، شما در این سیستم عامل در صورت مجازی سازی لایه سیستم عامل فقط می توانید ویندوز داشته باشید.

ذخیره سازی اطلاعات در مجازی سازی لایه سیستم عامل چگونه است ؟

برخی از مکانیزمهای ذخیره سازی در مجازی سازی لایه سیستم عامل در قالب File Level Copy On Write یا CoW عمل می کنند که شما آن را به اسم فایل سیستم می شناسید ، در واقع یک فایل سیستم بین چندین پارتیشن به اشتراک گذاشته می شود و Constrainer نیز به همین شکل به اشتراک گذاشته می شود ، به محض اینکه تغییری در این پارتیشن ها ایجاد شود Container ها تغییرات خودشان را بصورت خودکار کپی می کنند.

این روش برای بکاپ گیری بسیار ساده است و هم فضای کمی اشغال می شود و هم از نظر سادگی بهتر است ، به نوعی یک ساختار ذخیره سازی Cache وجود دارد و از مکانیزم Block Level تا حد زیاد بهتر عمل می کند ( البته در این لایه ) ، برخی دیگر از مکانیزم Whole System Virtualizer یا مجازی سازی کلی سیستم برای ذخیره سازی استفاده می کنند که برای فایل سیستم های غیر بومی سیستم عامل کارایی بهتری دارد و امکان Roll Back و Snapshot را نیز فراهم می کند.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات