شاید عباراتی مانند “یک ماشین مجازی راهاندازی کن” یا “تستش کن در یک ماشین مجازی” را شنیده باشید. اما ماشینهای مجازی چیستند و چطور میتوانید از آنها استفاده کنید؟
ماشین مجازی چیست؟
ماشین مجازی (VM) یک شبیهسازی نرمافزاری از یک کامپیوتر است. برنامهای به نام هایپروایزر روی کامپیوتر شما اجرا میشود. این برنامه به شما این امکان را میدهد که ماشینهای مجازی (کامپیوترهای مجازی) ایجاد کنید و آنها را با مقدار حافظه RAM، فضای دیسک سخت، هستههای CPU و جزئیات دیگری که معمولاً در سختافزار پیکربندی میشوند، تنظیم کنید. پس از پیکربندی ماشین مجازی، میتوانید آن را روشن کرده و یک سیستمعامل نصب کنید.
هایپروایزر باید سختافزار یک کامپیوتر فیزیکی را شبیهسازی کند، به طوری که سیستمعامل فکر کند که روی یک کامپیوتر فیزیکی و عادی در حال اجرا است. همچنین باید درخواستهایی که نیاز به خدماتدهی توسط سختافزار کامپیوتر واقعی شما (که به آن “کامپیوتر میزبان” گفته میشود) دارند را از طریق میزبان ارسال کند. برای مثال، اگر یک برنامه در ماشین مجازی شما بخواهد به یک وبسایت دسترسی پیدا کند، با کارت شبکه مجازی در ماشین مجازی تعامل دارد، اما درخواستهای شبکه واقعی توسط کارت شبکه میزبان پردازش میشود.
از آنجایی که ماشینهای مجازی به راحتی ایجاد میشوند، قابل استفاده مجدد هستند و همانند استفاده از یک کامپیوتر واقعی عمل میکنند، معمولاً برای تست، توسعه و آموزش مورد استفاده قرار میگیرند. شما میتوانید ماشینهای مجازی را به سرعت خاموش و روشن کنید و وضعیت فعلی آنها را ذخیره کنید.
همچنین، چون ماشینهای مجازی نمیتوانند به کامپیوتر میزبان آسیب بزنند، شما میتوانید به راحتی آزمایش کنید. اینها اغلب به عنوان یک راه عالی برای بررسی یک توزیع لینوکس که به آن علاقه دارید پیشنهاد میشوند، و این یک کاربرد عالی برای یک ماشین مجازی است.
شما میتوانید از ماشینهای مجازی (VM) در سیستمعاملهای macOS، ویندوز و سیستمعاملهای مشابه یونیکس مانند لینوکس، BSD و OpenIndiana استفاده کنید. در تمام این پلتفرمها، نسخههای رایگان هایپروایزرهای سابق تجاری مانند VMware Workstation و گزینههای متنباز مانند Oracle VirtualBox موجود است.
من از ماشینهای مجازی روی ویندوز و لینوکس استفاده کردهام که بیشتر آنها روی لینوکس بوده است. اما در واقع، استفاده از ماشین مجازی در هر پلتفرم مشابه است. هایپروایزر خود را نصب کنید، یک ماشین مجازی پیکربندی کنید و سیستمعاملی در آن نصب کنید. به جز چند نکته خاص لینوکس، همه چیز در اینجا برای تمام پلتفرمها قابل اعمال است.
کامپیوتر شما باید توانایی انجام این کار را داشته باشد
ماشینهای مجازی ممکن است مجازی باشند، اما برای عملکرد نیاز به سختافزار واقعی دارند. متأسفانه نمیتوانیم سختافزار را از هوا بسازیم. بنابراین اگر کامپیوتر شما ۱۶ گیگابایت رم داشته باشد، نمیتوانید ۳۲ گیگابایت رم را به یک ماشین مجازی اختصاص دهید. همچنین نمیتوانید تمام رم موجود را به ماشین مجازی اختصاص داده و هیچ رم دیگری برای سیستمعامل میزبان باقی نگذارید.
شما به فضای دیسک سخت کافی نیاز دارید تا بتوانید درایوهای سخت ماشینهای مجازی خود را ذخیره کنید. هایپروایزرهای مدرن به شما این امکان را میدهند که حداکثر اندازه دیسک سخت برای یک ماشین مجازی را مشخص کنید. به این ترتیب، ماشین مجازی فقط قسمت استفادهشده از دیسک سخت خود را ذخیره میکند.
اگر میخواهید اسنپشاتهایی از ماشینهای مجازی خود ذخیره کنید، به فضای دیسک سخت برای این کار نیز نیاز خواهید داشت. اسنپشات وضعیت کامل ماشین مجازی را ضبط میکند، به طوری که میتوانید آن را با برنامههای باز و در حال اجرا ببندید و زمانی که دوباره آن را فعال میکنید، به همان وضعیت قبلی برگردد.
اسنپشاتها یک شبکه ایمنی برای آزمایشهای شما فراهم میکنند. اگر قصد دارید کاری انجام دهید که ممکن است به ماشین مجازی شما آسیب بزند، ابتدا یک اسنپشات بگیرید. اگر آزمایش شما به طور بدی به نتیجه رسید، اسنپشات ذخیرهشده خود را بازیابی کنید و ماشین مجازی شما به وضعیتی که قبل از تغییرات ناموفق شما بوده، بازخواهد گشت.
پردازنده شما باید از مجازیسازی پشتیبانی کند، و گاهی اوقات باید مجازیسازی را در BIOS خود فعال کنید. اکثر پردازندههای مدرن از مجازیسازی پشتیبانی میکنند، از جمله خانوادههای پردازندههای Intel VT-x و AMD-V.
همچنین به قدرت پردازش کافی نیاز دارید تا ماشینهای مجازی و میزبان شما با سرعت مناسب اجرا شوند. اگر روزی نیاز داشتید که شبکههای کوچکی از ماشینهای مجازی را راهاندازی کنید و آنها را همزمان بر روی یک میزبان اجرا کنید، به پردازندهای سریع و مقدار زیادی رم نیاز خواهید داشت.
ماشینهای مجازی در لینوکس
از سال ۲۰۰۷، هسته لینوکس از ماشینهای مجازی مبتنی بر هسته (KVM) پشتیبانی میکند. این به این معنی است که هسته میتواند مانند یک هایپروایزر عمل کند. ایجاد و کنترل ماشینهای مجازی KVM با استفاده از یک مانیتور ماشین مجازی، مانند QEMU، انجام میشود.
QEMU به شما این امکان را میدهد که سختافزار خاصی را شبیهسازی کنید، از جمله پردازندههایی با معماری متفاوت از پردازنده فیزیکی موجود در کامپیوتر میزبان شما. QEMU یک برنامه خط فرمان است. مبتدیان ممکن است با رابط گرافیکی مانند GNOME Boxes راحتتر باشند. GNOME Boxes پیچیدگیهای QEMU را در یک نمایش گرافیکی قابل دسترس و شهودی جمعآوری میکند.
VirtualBox نقطه تعادل بین داشتن قابلیتها و تنظیمات کافی بدون پیچیدگی زیاد و زمانبر بودن در راهاندازی را دارد.
شبکهسازی و دسترسی به دستگاهها
گاهی اوقات ممکن است بخواهید VM شما با دستگاه دیگری در شبکه شما، مانند پرینتر، تعامل داشته باشد. روشهای مختلفی برای انجام این کار با شبکهسازی وجود دارد، و احتمالاً هایپروایزر شما منویی از گزینهها خواهد داشت تا بتوانید یک پارادایم شبکهسازی برای VM خود انتخاب کنید.
پیشفرض معمولاً ترجمه آدرس شبکه (NAT) است، که به VM شما اجازه میدهد به اینترنت دسترسی پیدا کند، فایلها را دانلود کند و غیره. اما نمیتواند هیچیک از شبکههایی را که کامپیوتر میزبان شما به آن متصل است مشاهده کند. اگر جداسازی VMها برای شما مهمترین چیز است، از این حالت استفاده کنید.
سادهترین روش برای دسترسی به یکی از شبکههایی که کامپیوتر میزبان شما به آن متصل است، استفاده از شبکهبندی بریج است. اگر دسترسی به دستگاههای دیگر شبکه فیزیکی شما برای شما مهم است، VM خود را با شبکهبندی بریج تنظیم کنید. این کار VM شما را در همان شبکهای قرار میدهد که کامپیوتر میزبان شما قرار دارد.
همچنین میتواند مفید باشد که به VM خود اجازه دهید به دستگاههای USB متصل به میزبان شما دسترسی داشته باشد. معمولاً برای انجام این کار باید قابلیت USB را در VM خود روشن کنید. ممکن است انتخابی برای استفاده از USB 1.0، ۲.۰ یا ۳.۰ داشته باشید.
زمانی که یک دستگاه USB را به میزبان خود متصل میکنید، VM شما این فرصت را دارد که آن را تصاحب کند. زمانی که این اتفاق میافتد، کامپیوتر میزبان شما فکر میکند که دستگاه از درگاه USB جدا شده است. برای VM شما، به نظر میرسد که دستگاه USB فیزیکی به یکی از درگاههای مجازی USB آن وصل شده است.
فضایل ماشین مجازی
یک ماشین مجازی روش عالی برای ارزیابی سیستمعاملهای دیگر است، البته به شرطی که چند نکته را در نظر داشته باشید.
یک سیستمعامل در ماشین مجازی همیشه کمی کندتر از زمانی که روی سختافزار اصلی اجرا میشود، عمل میکند. شما یک احساس خوب از سرعت عملکرد آن خواهید داشت، اما این اندازهگیری دقیق نخواهد بود. علاوه بر این، ماشین مجازی شما به همان کارت گرافیک موجود در میزبان شما مجهز نیست، بنابراین نمیتوانید آزمایش کنید که چگونه برنامههای گرافیکی پیچیده یا بازیهای سنگین در آن سیستمعامل روی یک کامپیوتر فیزیکی با کارت گرافیک مخصوص بازی اجرا خواهند شد.
اما به عنوان روشی برای بررسی راحتی نصب یک توزیع لینوکس و بررسی اینکه آیا یک محیط دسکتاپ خاص یا مدیر پنجره تایلینگ با ترجیحات و روند کاری شما تطابق دارد، ماشینهای مجازی عالی هستند. آیا لینوکس را اجرا میکنید اما گاهی به دسترسی به ویندوز نیاز دارید؟ آن را در یک ماشین مجازی اجرا کنید.
و بهترین قسمت این است که میتوانید به طور کامل یک سیستمعامل جدید را بررسی کنید و بدون آسیب به کامپیوتر میزبان خود، آن را ترک کنید.