KVM، ماشینهای مجازی، کانتینرها و سختافزار اختصاصی مرزهای عملیاتی متفاوتی را توصیف میکنند. مرزی را انتخاب کنید که پروژه شما نیاز دارد، قابلیتهای ارائهشده در پیشنهاد را تأیید کنید و نرمافزار را درون آن محیط نگهداری کنید.
ماشین مجازی یک محیط مهمان است
یک ماشین مجازی یک سیستمعامل را با سختافزار مجازیشده مانند پردازندهها، دیسکها و رابطهای شبکه ارائه میدهد. میزبان فیزیکی ماشینآلاتی را اجرا میکند که آن مهمانها را ممکن میسازد. VPS یک محصول میزبانی است که حول یک سرور مجازی ساخته شده، با تخصیص منابع اعلامشده و یک محیط عملیاتی که مشتری میتواند استفاده کند. تخصیص را بهعنوان بخشی از پیشنهاد بخوانید، نه اینکه پشت هر CPU مجازی یک ماشین فیزیکی تصور کنید.
یک سرور اختصاصی به پروژه یک مرز ماشین فیزیکی میدهد. میتواند یک سیستمعامل اجرا کند یا وقتی سختافزار و استقرار از آن طراحی پشتیبانی میکنند، خودش میزبان ماشینهای مجازی باشد. این مالکیت منابع و مدیریت را تغییر میدهد، اما آسیبپذیریهای نرمافزاری، کار بهروزرسانی یا نیاز به پشتیبانگیری را حذف نمیکند. مرز را بر اساس یک نیاز واقعی به جداسازی یا ظرفیت انتخاب کنید.
KVM یک فناوری مجازیسازی را مشخص میکند
KVM پشتیبانی مجازیسازی را در هسته Linux فراهم میکند. QEMU یک مدل ماشین ارائه میدهد و میتواند از KVM بهعنوان شتابدهنده مجازیسازی استفاده کند، در حالی که نرمافزار مدیریتی مانند libvirt میتواند پیکربندی و چرخه عمر مهمان را سازمان دهد. این اجزا توضیح میدهند چگونه یک محیط میتواند ساخته شود؛ حروف KVM زمانبندی CPU، عملکرد ذخیرهسازی یا دسترسپذیری سرویس را مشخص نمیکنند.
مستندات مجازیسازی گاهی هایپروایزرهای نوع 1 و نوع 2 را بر اساس رابطهشان با پلتفرم میزبان از هم تفکیک میکند. برای یک تصمیم میزبانی، یک برچسب کمتر از دانستن مرز مهمان، مسئولیت نگهداری و سختافزار افشاشده مفید است. بپرسید آیا سیستمعامل مهمان و درایورهای موردنیاز پشتیبانی میشوند. قابلیتهایی که یک پروژه نرمافزاری توصیف میکند، بهطور خودکار در محصول هر ارائهدهنده فعال نیستند.
کنترل مهمان را با کنترل میزبان اشتباه نگیرید
دسترسی ریشه یا مدیر درون یک مهمان به شما امکان مدیریت آن مهمان را میدهد. به شما دسترسی به هایپروایزر فیزیکی، مستأجر دیگر یا هر قابلیت ممکن میزبان را نمیدهد. مجازیسازی تودرتو، عبور دستگاه و تنظیمات شبکه تخصصی نیازمند پشتیبانی صریح هستند. یک VPS را بر این فرض انتخاب نکنید که قابلیتی که روی لپتاپ شما موجود است، بهطور یکسان توسط محیط میزبانی افشا خواهد شد.
CPU، حافظه، ذخیرهسازی، شبکه و مجوزهای طرح واقعی را مقایسه کنید. تأخیر و فشار منابع برنامه خود را با کار نمونه پس از تحویل مشاهده کنید. یک فناوری مجازیسازی میتواند یک مرز جداسازی مفید ایجاد کند و در عین حال منابع سختافزاری زیربنایی را طبق سیاست ارائهدهنده به اشتراک بگذارد. نه برچسب مهمان و نه برچسب اختصاصی جایگزین اندازهگیریها و مشخصات عملیاتی کامل نیست.
| مرز | آنچه پروژه مدیریت میکند | قابلیتی برای تأیید |
|---|---|---|
| ماشین مجازی | سیستمعامل مهمان و سرویسهای آن | سیستمعامل، درایورها و قابلیتهای افشاشده پشتیبانیشده |
| کانتینر | پیکربندی فرایند و ایمیج | قابلیتهای هسته، محدودیتها و دامنه mount |
| سرور اختصاصی | محیط ماشین فیزیکی انتخابشده | نیازمندیهای سختافزار و مجازیسازی |
کانتینرها فرایندها را درون یک محیط سازمان میدهند
یک کانتینر معمولاً هسته میزبان خود را به اشتراک میگذارد و در عین حال فرایندها و منابع آنها را گروهبندی میکند. یک ماشین مجازی یک هسته مهمان اجرا میکند. وقتی سیستمعامل و رانتایم از پیکربندی موردنظر پشتیبانی میکنند، میتوانید کانتینرها را درون یک VPS اجرا کنید. این ترکیب میتواند بستهبندی وابستگیها را آسانتر کند، بدون اینکه جایگزین نگهداری امنیتی مهمان یا طرح بازیابی شود.
کنترلهای منابع Docker نیازمند تنظیمات آگاهانه هستند: بهطور پیشفرض، رانتایم محدودیتهای CPU و حافظه را روی هر کانتینر اعمال نمیکند. مصرف منابع را محدود کنید و از امتیازهای دسترسی غیرضروری یا mountهای میزبان بپرهیزید. در صورت عملی، بارهای کاری با نیازهای اعتماد متفاوت را جدا کنید. میزبان و ایمیجها را نگهداری کنید. با یک ایمیج کانتینر مانند نرمافزاری رفتار کنید که باید تأیید شود، نه بهعنوان یک تصمیم امنیتی خودکار به دلیل آسانی راهاندازی.
پوسته یک مفسر است، نه خود سرور
یک ترمینال سطح تعامل فراهم میکند؛ یک پوسته فرمانها را تفسیر و برنامهها را اجرا میکند. در Linux، Bash یک پوسته رایج است، در حالی که پوستههای دیگر نحو و قابلیتهای تعاملی متفاوتی ارائه میدهند. یک اسکریپت باید مفسری را هدف بگیرد که انتظار دارد. تغییر پوسته ورود، مفسر هر برنامه را تغییر نمیدهد یا اسکریپتی که برای پوسته دیگری نوشته شده را سازگار نمیکند.
ورودی پوسته ممکن است پیش از دریافت آرگومانها توسط برنامه، دچار بسط، تغییر مسیر و جایگزینی فرمان شود. این پردازش را پیش از ساخت فرمانهای نگهداری از نام فایلها یا داده کاربر درک کنید. ورودی نامعتبر را از متن فرمان اجرایی دور نگه دارید، آرگومانها را درست نقلقول کنید و برای کار خودکار، رابط ساختاریافته یک برنامه را ترجیح دهید. تاریخچه، لاگها و آرگومانهای فرایند ممکن است مقادیر حساس را نگه دارند، بنابراین از مکانیزم اعتبارنامه خصوصی مناسب برنامه استفاده کنید.
مرزی را که انتخاب کردهاید اداره کنید
پس از تحویل، سیستمعامل مهمان، مسیر دسترسی و مکانیزم بازیابی را مشخص کنید. بهروزرسانیها را اعمال کنید، یک حساب مدیریتی محدود ایجاد کنید و فقط سرویسهایی را افشا کنید که پروژه نیاز دارد. پیش از انتقال دادههای مهم، یک استقرار کوچک را آزمایش کنید. رانتایم، ایمیجها و پیکربندی لازم برای بازسازی آن را ثبت کنید؛ مرز به شما نمیگوید آیا وضعیت برنامه قابل بازیابی است.
از مقایسه SwissOctet برای فهرست کوتاه Vector، DeskLink یا یک محدوده Metal بر اساس بار کاری و محیط عملیاتی استفاده کنید. پیش از آمادهسازی سفارش، قابلیتهای تخصصی را تأیید کنید. کار سیستمعامل، کار برنامه و کار ارائهدهنده را در رانبوک متمایز نگه دارید. یک مرز روشن مفید است زیرا به شما میگوید چه چیزی را میتوانید پیکربندی کنید و درباره چه چیزی باید بپرسید، در حالی که مسیری عملی برای مهاجرت و بازیابی حفظ میکند.
چکلیست عملی شما.
- دسترسی مهمان را از دسترسی میزبان تفکیک کنید.
- نیازمندیهای سختافزار تخصصی و مجازیسازی را تأیید کنید.
- پیکربندی کامل را اندازهگیری کنید، نه یک برچسب هایپروایزر را.
- محدودیتها و مجوزهای کانتینر را پیکربندی کنید.
- از پوسته موردنظر استفاده کنید و ورودیهای فرمان را محافظت کنید.
جزئیاتی که اهمیت دارند.
آیا KVM به این معناست که هستههای فیزیکی اختصاصی CPU دریافت میکنم؟+
خیر. KVM فناوری مجازیسازی را مشخص میکند. تخصیص CPU و سیاست منابع محصول را جداگانه بخوانید.
آیا کانتینرها میتوانند جایگزین نگهداری مهمان شوند؟+
خیر. محیط میزبان، رانتایم کانتینر و ایمیجها همگی نیازمند نگهداری، مجوزهای مناسب و برنامهریزی بازیابی هستند.
آیا ترمینال و پوسته یک چیز هستند؟+
خیر. ترمینال یک رابط فراهم میکند. پوسته ورودی فرمان را تفسیر و برنامهها را درون آن رابط اجرا میکند.
به منبع بروید.
این منابع از مفاهیم فنی این راهنما پشتیبانی میکنند. پیش از تغییر یک سیستم تولیدی، مستندات جاری را دنبال کنید.
- پروژه KVM: ماشین مجازی کرنل www.linux-kvm.org
- QEMU: مقدمهای بر شبیهسازی سیستم www.qemu.org
- Docker: محدودیتهای منابع docs.docker.com
- GNU Bash: بسطهای پوسته www.gnu.org
راهنمایی تحریریه توسط SwissOctet. مثالها نمایشی هستند. مشخصات خدمات، گزینههای موجود و شرایط قراردادی باید جداگانه تأیید شوند.