رفتن به محتوای اصلی
توضیح کوهستانمعماری سرورلسفایرکرکر آمازون· 7 دقیقه مطالعه· در فناوری

حذف شبیه‌سازی رایانه‌های قدیمی چگونه بوت میکرو‌وی‌ام‌های سرورلس را به ۵ میلی‌ثانیه رساند؟

با کنار گذاشتن فلاپی‌درایوهای مجازی و کنترلرهای سخت‌افزاری دهه ۱۹۹۰، هایپروایزرهای مدرن بار اضافی حافظه ماشین مجازی را به ۵ مگابایت رسانده‌اند. این معماری مینیمال به ارائه‌دهندگان ابری اجازه می‌دهد توابع سرورلس تفکیک‌شده در سطح سخت‌افزار را در همان مدت زمانی که یک بسته داده از شهری عبور می‌کند، راه‌اندازی کنند.

به قلم کیان راد

این خبر را به اشتراک بگذارید

به‌طور خلاصه

  • ماشین‌های مجازی سنتی به خاطر شبیه‌سازی قطعات رایانه‌های شخصی دهه ۱۹۹۰، صدها مگابایت رم و چند ثانیه زمان بوت تلف می‌کنند.
  • میکرووی‌ام‌ها این بار زائد را کنار گذاشته و با تکیه بر درگاه‌های شبه‌مجازی VirtIO، هسته لینوکس را ظرف ۵ میلی‌ثانیه و با فقط ۵ مگابایت سربار بالا می‌آورند.
  • این معماری مینیمال امنیت سطح سخت‌افزار ماشین‌های مجازی را در کنار سرعت بوت کانتینرها فراهم می‌کند و اساس پلتفرم‌های مدرن سرورلس را تشکیل می‌دهد.

در سال ۲۰۱۸، مهندسان خدمات وب آمازون (AWS) هنگام تلاش برای توسعه مقیاس پلتفرم سرورلس لمبدا (Lambda) با یک تناقض ریاضی مواجه شدند: آن‌ها باید در هر ثانیه هزاران قطعه‌کد متعلق به کاربران مختلف را روی یک سرور فیزیکی واحد اجرا می‌کردند، در حالی که ماشین‌های مجازی سنتی صدها مگابایت حافظه رم مصرف می‌کردند و راه‌اندازی‌شان چندین ثانیه طول می‌کشید.[1]

گلوگاه اصلی هسته لینوکس نبود، بلکه ردپای شبح‌وار رایانه‌های قدیمی بود. هایپروایزرهای مرسوم مانند QEMU از اساس طوری طراحی شده بودند که سیستم‌عامل مهمان را فریب دهند تا تصور کند روی یک رایانه رومیزی فیزیکی و مستقل در حال اجرا است.[2]

برای پیاده‌سازی این توهم، هایپروایزر ناچار بود یک مادربرد کامل متعلق به دهه ۱۹۹۰ را شبیه‌سازی کند. هر ماشین مجازی استاندارد کار خود را با راه‌اندازی یک کنترلر وقفه برنامه‌پذیر مجازی، یک گذرگاه PCI مجازی و حتی کنترلر درگاه کیبورد PS/2 مجازی آغاز می‌کرد.[2]

شبیه‌سازی این قطعات از رده خارج نیازمند اجرای میلیون‌ها دستورالعمل است، آن هم پیش از آنکه سیستم‌عامل مهمان حتی فرصت شروع بارگذاری پیدا کند. هایپروایزر باید وقفه‌ها و فراخوانی‌های سخت‌افزار عتیقه را رهگیری و ترجمه کند که این کار حدود ۱۳۰ مگابایت حافظه رم را صرفاً برای حفظ وضعیت قطعاتی هدر می‌دهد که از نظر فیزیکی وجود خارجی ندارند.[2]

معماری میکرووی‌ام

نقطه عطف زمانی رقم خورد که مهندسان پرسیدند یک تابع سرورلس واقعاً به چه چیزهایی برای اجرا نیاز دارد. مشخص بود قطعه‌کدی که در ابر صرفاً قرار است به یک درخواست HTTP پاسخ دهد، نه به کنترلر فلاپی‌دیسک مجازی احتیاجی دارد، نه به کارت گرافیک VGA و نه رابط مدیریت مصرف توان (ACPI).[3]

معماری‌های میکرووی‌ام (MicroVM) مانند Firecracker به جای شبیه‌سازی تراشه‌های قدیمی، مستقیماً با ماشین مجازی مبتنی بر هسته لینوکس (KVM) و تنها با اتکا به چهار دستگاه شبه‌مجازی تعامل دارند. این درگاه‌های شبه‌مجازی (VirtIO) کار شبکه، فضای ذخیره‌سازی بلاک، کنسول سریالی و یک کیبورد تک‌کلیدی را انجام می‌دهند که کاربردش فقط اعلام فرمان راه‌اندازی مجدد است.

دور زدن راه‌اندازی سخت‌افزارهای قدیمی به میکرووی‌ام‌ها امکان می‌دهد تا هسته مهمان را تقریباً بدون فوت وقت اجرا کنند.

شبه‌مجازی‌سازی (Paravirtualization) یعنی سیستم‌عامل مهمان آگاه است که در محیطی مجازی کار می‌کند. به جای اینکه داده‌ها را در یک ثبات سخت‌افزاری ساختگی بنویسد و منتظر بماند تا هایپروایزر آن را رهگیری کند، هسته سیستم‌عامل مهمان بسته‌های شبکه را مستقیماً درون یک بافر حلقوی در حافظه مشترک قرار می‌دهد.

حذف این لایه‌های شبیه‌سازی قدیمی، بار اضافی حافظه هایپروایزر را از بیش از ۱۳۰ مگابایت به ازای هر نمونه، به تنها ۵ مگابایت رساند. بدون وجود گذرگاه PCI برای شمارش قطعات و بدون بایوس (BIOS) برای مقداردهی اولیه، میکرووی‌ام مستقیماً سراغ اجرای هسته لینوکس مهمان می‌رود.[1]

شروع سرد در مقیاس میلی‌ثانیه‌ای

این مسیر راه‌اندازی بسیار خلاصه به میکرووی‌ام اجازه می‌دهد در کمترین حالت ظرف ۵ میلی‌ثانیه بالا بیاید. در دنیای برنامه‌های وب، ۵ میلی‌ثانیه کوتاه‌تر از زمانی است که یک بسته شبکه برای رسیدن از گوشی هوشمند یک کاربر در بروکلین به یک مرکز داده در ویرجینیا نیاز دارد.[3]

«فایرکرکر با ارائه یک مدل مینیمال از دستگاه‌ها، بار اضافی حافظه را به کمتر از ۵ مگابایت به ازای هر میکرووی‌ام کاهش می‌دهد و به هسته‌های شدیداً بهینه‌شده اجازه می‌دهد در کمتر از ۵ میلی‌ثانیه بوت شوند»،

این جمله را نویسندگان مقاله پژوهشی کنفرانس USENIX NSDI 2019 که معماری این سامانه را تشریح می‌کرد، نوشته‌اند.

برای ارائه‌دهندگان خدمات ابری، این تراکم بالا اقتصاد زیرساخت سرورلس را متحول می‌کند. یک سرور فیزیکی استاندارد با ۳۸۴ گیگابایت رم می‌تواند میزبان هزاران میکرووی‌ام آماده‌به‌کار باشد، در حالی که هر یک تنها ۵ مگابایت از منابع سیستم میزبان را اشغال می‌کنند.[1]

حذف شبیه‌سازی دستگاه‌های منسوخ، ردپای حافظه هایپروایزر را بیش از ۹۶ درصد کاهش می‌دهد.

با این حال، تبلیغات بازاریابی اغلب زمان بوت هایپروایزر را با زمان واقعی اجرای کد کاربر اشتباه می‌گیرند یا خلط می‌کنند. گرچه محیط سخت‌افزاری میکرووی‌ام ظرف ۵ میلی‌ثانیه بالا می‌آید، اما بالا آمدن یک محیط اجرایی سنگین مانند پایتون یا جاوا درون آن فضا، همچنان تأخیر قابل‌توجهی موسوم به شروع سرد (Cold Start) ایجاد می‌کند.[3]

تفکیک در لایه سخت‌افزار

پیش از پیدایش میکرووی‌ام‌ها، شرکت‌های ابری با دوگانگی سختی میان سرعت و امنیت روبه‌رو بودند: کانتینرهای لینوکسی در کسری از ثانیه بالا می‌آمدند چون از هسته سیستم‌عامل میزبان استفاده مشترک داشتند، اما یک رخنه امنیتی در هسته می‌توانست راه گریز کانتینر و نفوذ به دیگر کاربران را باز کند.

از طرفی، ماشین‌های مجازی مرسوم امنیت بالایی داشتند زیرا KVM بر بسترهای مجازی‌سازی سخت‌افزاری پردازنده اصلی (مانند Intel VT-x) متکی بود. خود پردازنده مرزهای حافظه را کنترل می‌کرد و مانع سرک کشیدن یک کاربر به داده‌های کاربر دیگر می‌شد.[2]

میکرووی‌ام‌ها امنیت مبتنی بر سخت‌افزار ماشین‌های مجازی را در کنار سرعت بارگذاری کانتینرهای اشتراکی قرار دادند. حتی اگر کاربری موفق شود هسته لینوکس مهمان درون میکرووی‌ام را آلوده کند، باز هم پشت حلقه تفکیک سخت‌افزاری پردازنده متوقف می‌شود.[3]

برای کوچک‌تر کردن سطح آسیب‌پذیری، فرآیند مانیتور خود میکرووی‌ام نیز به شدت محدود شده است. هایپروایزر درون یک محیط به‌شدت قرنطینه‌شده اجرا می‌شود و با استفاده از فیلترهای seccomp در لینوکس، دسترسی آن به همه فراخوانی‌های سیستمی به جز ۲۱ فراخوانی خاص مسدود شده است.

اگر یک محیط مهمان آلوده بتواند از سد KVM عبور کند و دست به فراخوانی سیستمی غیرمجازی روی سرور میزبان بزند، هسته لینوکس بلادرنگ پردازش هایپروایزر را متوقف می‌کند. این رویکرد چندلایه امنیتی موجب می‌شود که حتی سوءاستفاده از آسیب‌پذیری‌های روز صفر هایپروایزر نیز فوق‌العاده دشوار باشد.[3]

گلوگاه فضای ذخیره‌سازی در VirtIO

در حالی که راه‌اندازی پردازنده و رم تقریباً آنی رخ می‌دهد، اتصال فضای ذخیره‌سازی به میکرووی‌ام چالش فنی جداگانه‌ای است. دیسک‌های مجازی سنتی به کنترلرهای شبیه‌سازی‌شده SCSI وابسته‌اند که تأخیر آن‌ها هرگز با هدف بوت ۵ میلی‌ثانیه‌ای همخوانی ندارد.[2]

میکرووی‌ام‌ها با استفاده از استاندارد ابزارهای بلاک VirtIO این گره را باز می‌کنند؛ به این شکل که یک فایل روی سیستم‌عامل میزبان، مستقیماً به عنوان یک دیسک خام به ماشین مهمان معرفی می‌شود. هایپروایزر نیز عملیات خواندن و نوشتن مهمان را به فراخوانی‌های سیستمی preadv و pwritev روی سرور میزبان تبدیل می‌کند.

دستگاه‌های شبه‌مجازی VirtIO به سیستم‌عامل مهمان اجازه می‌دهند بدون افتادن در تله‌های سخت‌افزاری مستقیماً با میزبان ارتباط برقرار کند.

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

با این همه، این مینیمالیسم در بخش دیسک به بهای از دست دادن قابلیت‌های سازمانی تمام شده است. میکرووی‌ام‌ها عموماً از مهاجرت زنده (Live Migration) میان سرورهای فیزیکی یا تهیه اسنپ‌شات‌های پیچیده از حافظه پشتیبانی نمی‌کنند؛ ویژگی‌هایی که هایپروایزرهای قدیمی به طور توکار در اختیار داشتند.[2]

هزینه پنهان مینیمالیسم

حذف بی‌رحمانه سخت‌افزارهای مرسوم باعث شده که نشود هر سیستم‌عاملی را روی میکرووی‌ام بالا آورد. نبود فریم‌ور بایوس یا UEFI سبب می‌شود میکرووی‌ام تنها قادر به بوت یک هسته غیرفشرده لینوکس باشد که اختصاصاً با درایورهای VirtIO کامپایل شده است.

سیستم‌عامل‌هایی که متکی به معماری استاندارد رایانه‌ها هستند، مانند ویندوز مایکروسافت یا توزیع‌های قدیمی لینوکس، در تلاش برای بوت شدن روی میکرووی‌ام درجا متوقف می‌شوند؛ زیرا دنبال کنترلرهای سخت‌افزاری می‌گردند که اصلاً وجود ندارند.[2][3]

افزون بر این، هایپروایزر پیراسته فاقد قابلیت عبور مستقیم دستگاه‌های PCIe (یا Passthrough) است. این انتخاب معماری مانع از دسترسی مستقیم میکرووی‌ام به پردازنده‌های گرافیکی (GPU) می‌شود و کارایی آن را برای بارهای کاری سنگین آموزش هوش مصنوعی به شدت محدود می‌کند.[3]

پژوهشگران برای حل مشکل GPU در حال توسعه رابط‌های گرافیکی شبه‌مجازی مبتنی بر فریم‌ورک VirtIO هستند. با این حال، این راهکارها هنوز آزمایشی‌اند و سربار مجازی‌سازی به همراه دارند، در حالی که در حالت عبور مستقیم هیچ سرباری وجود ندارد.

سربار ۵ مگابایتی به یک سرور فیزیکی اجازه می‌دهد تا میزبان هزاران محیط ایزوله از مشتریان گوناگون باشد.

آینده تراکم زیرساخت‌های ابری

شبکه‌سازی در میکرووی‌ام نیز از همین الگوی حداقلی پیروی می‌کند. هایپروایزر به جای شبیه‌سازی یک کارت شبکه گیگابیتی اینتل، از دستگاه شبکه VirtIO متصل به یک رابط کاربری ساده TAP روی ماشین میزبان بهره می‌برد.

وقتی تابع سرورلس می‌خواهد پاسخی برای یک درخواست HTTP بفرستد، هسته مهمان داده‌ها را مستقیماً درون یک صف حافظه می‌گذارد. سپس پشته شبکه سیستم‌عامل میزبان بسته را تحویل می‌گیرد و روال پیچیده مدیریت وقفه‌های ناشی از سخت‌افزارهای شبیه‌سازی‌شده به کلی دور زده می‌شود.[3]

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

امروز، هایپروایزر یک جزء تخصصی و تک‌منظوره در پشته زیرساخت ابری به شمار می‌رود. مهندسان با کنار گذاشتن وهمِ بازسازی رایانه‌های شخصی، تراکمی را ممکن کردند که سرورلس را از نظر اقتصادی توجیه‌پذیر ساخته است.[1][3]

با تداوم بهینه‌سازی این محیط‌های حداقلی توسط شرکت‌های ابری، خط فاصل میان برنامه و هایپروایزر هر روز کم‌رنگ‌تر می‌شود. زمان بوت ۵ میلی‌ثانیه‌ای سقف توان این فناوری نیست، بلکه تنها نقطه آغازی برای نسل آینده رایانش‌های گذرا به حساب می‌آید.[3]

اصطلاحات کلیدی

Hypervisor (هایپروایزر)
لایه نرم‌افزاری که وظیفه ساخت و مدیریت ماشین‌های مجازی را بر عهده دارد و منابع فیزیکی پردازنده، حافظه و دیسک را به سیستم‌عامل‌های مهمان تخصیص می‌دهد.
KVM
ماژول ماشین مجازی مبتنی بر هسته در لینوکس که به سیستم‌عامل اجازه می‌دهد با بهره‌گیری از افزونه‌های مجازی‌سازی پردازنده اصلی، نقش هایپروایزر را ایفا کند.
VirtIO
استانداردی که به ماشین‌های مجازی اجازه می‌دهد برای کارهای شبکه و دیسک مستقیماً با هایپروایزر تبادل داده داشته باشند و نیازی به شبیه‌سازی سخت‌افزار فیزیکی نداشته باشند.
Paravirtualization (شبه‌مجازی‌سازی)
روشی از مجازی‌سازی که در آن سیستم‌عامل مهمان می‌داند در محیط مجازی حضور دارد و به جای تعامل با سخت‌افزارهای ساختگی، از درگاه‌های نرم‌افزاری بهینه استفاده می‌کند.
Seccomp
یک ابزار امنیتی در هسته لینوکس که فراخوانی‌های مجاز سیستمی برای هر فرآیند را محدود می‌کند و دیواری محافظ میان برنامه و سیستم‌عامل پدید می‌آورد.

پرسش‌های متداول

آیا می‌توان ویندوز مایکروسافت را درون یک میکرووی‌ام اجرا کرد؟

خیر. میکرووی‌ام‌ها فاقد بایوس و کنترلرهای سخت‌افزاری سنتی هستند که ویندوز برای بالا آمدن به آن‌ها نیاز دارد. این محیط‌ها منحصراً برای هسته‌های غیرفشرده لینوکس که با درایورهای VirtIO کامپایل شده‌اند طراحی شده‌اند.

آیا بوت ۵ میلی‌ثانیه‌ای به این معناست که کد برنامه هم در ۵ میلی‌ثانیه اجرا می‌شود؟

نه الزاماً. عدد ۵ میلی‌ثانیه فقط مربوط به آماده‌سازی هایپروایزر و هسته سیستم‌عامل است. بارگذاری محیط‌های اجرایی سنگین مانند ماشین مجازی جاوا یا محیط بزرگ Node.js تأخیر شروع سرد جداگانه‌ای به زمان اجرا اضافه می‌کند.

میکرووی‌ام چه تفاوتی با کانتینر داکر دارد؟

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

بررسی عمیق دیدگاه‌ها

مهندسان زیرساخت ابری

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

برای مهندسانی که پلتفرم‌هایی مانند AWS Lambda یا Fly.io را توسعه می‌دهند، هایپروایزر یک گلوگاه صریح محاسباتی و ریاضی به حساب می‌آید. هر مگابایت حافظه‌ای که صرف مانیتور ماشین مجازی شود، مگابایتی است که دیگر نمی‌توان آن را به یک مشتری فروخت. با حذف شبیه‌سازی‌های قدیمی، این مهندسان هایپروایزر را از یک شبیه‌ساز سنگین رایانه‌ای به یک مرز سبک و اختصاصی برای اجرای کدهای نامطمئن تبدیل کردند؛ تحولی که امکان اجرای هزاران بار کاری گذرا را روی یک سرور واحد فراهم ساخت و اقتصاد پایه رایانش ابری را دگرگون کرد.

پژوهشگران امنیت

تفکیک امنیتی در سطح سخت‌افزار KVM و فیلتر سخت‌گیرانه فراخوانی‌های سیستمی را نسبت به مدل هسته اشتراکی کانتینرها بسیار برتر می‌دانند.

معماران امنیت، میکرووی‌ام‌ها را پاسخ لازم به بن‌بست امنیتی کانتینرها ارزیابی می‌کنند. با اینکه کانتینرهای لینوکسی (مانند داکر) پرسرعت هستند، اما همگی در یک هسته سیستم‌عامل با میزبان شریک‌اند؛ بنابراین یک آسیب‌پذیری واحد در هسته می‌تواند امنیت تمام کاربران آن سرور را به خطر بیندازد. میکرووی‌ام‌ها مرز مجازی‌سازی فیزیکی پردازنده (نظیر Intel VT-x یا AMD-V) را بازمی‌گردانند و هم‌زمان سرعتی نزدیک به کانتینرها ارائه می‌دهند. علاوه بر این، مدل سخت‌افزاری حداقلی سطح حمله را بسیار کوچک کرده و کد کمتری برای نفوذ در اختیار مهاجمان باقی می‌گذارد.

معماران راهکارهای سازمانی

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

مدیرانی که سامانه‌های سنتی سازمانی را اداره می‌کنند یادآور می‌شوند که سرعت بالای میکرووی‌ام‌ها به بهای قربانی کردن تقریباً تمام قابلیت‌های پیشرفته مجازی‌سازی به دست آمده است. به دلیل نبود گذرگاه PCI و فریم‌ور بایوس، امکان بالا آوردن سیستم‌عامل‌های قدیمی یا ویندوز مایکروسافت روی آن‌ها وجود ندارد. مهم‌تر از آن برای کاربردهای امروزی، این معماری پیراسته امکان اتصال مستقیم تجهیزات PCIe را ندارد؛ ضعفی که میکرووی‌ام را برای پردازش‌های مبتنی بر کارت گرافیک مانند آموزش مدل‌های هوش مصنوعی نامناسب می‌سازد.

مهندسان زیرساخت ابری 40%پژوهشگران امنیت 35%معماران راهکارهای سازمانی 25%
مهندسان زیرساخت ابری
بالا بردن تراکم میزبانی و کاهش زمان بالا آمدن اولیه را لازمه توجیه اقتصادی پلتفرم‌های محاسبات سرورلس در مقیاس بزرگ می‌دانند.
پژوهشگران امنیت
تفکیک امنیتی در سطح سخت‌افزار KVM و فیلتر سخت‌گیرانه فراخوانی‌های سیستمی را نسبت به مدل هسته اشتراکی کانتینرها بسیار برتر می‌دانند.
معماران راهکارهای سازمانی
به محدودیت‌های میکرووی‌ام‌ها مانند نبود سازگاری با ویندوز، عدم پشتیبانی از مهاجرت زنده سرورها و عدم دسترسی به کارت گرافیک اشاره دارند.

دیدگاه‌هایی که این گزارش پوشش نداده

  • سازندگان قطعات سخت‌افزاری
  • توسعه‌دهندگان سیستم‌عامل‌های قدیمی

منابع

پوشش منابع

3 منبع

3 دیدگاه شناسایی‌شده

مهندسان زیرساخت ابری 40%پژوهشگران امنیت 35%معماران راهکارهای سازمانی 25%
  1. [1]Amazon Web Servicesمهندسان زیرساخت ابری

    Firecracker – Lightweight Virtualization for Serverless Computing

    مطالعه در Amazon Web Services →
  2. [2]QEMU Projectمعماران راهکارهای سازمانی

    QEMU x86 System Emulator Documentation

    مطالعه در QEMU Project →
  3. [3]تیم سردبیری کوهستانپژوهشگران امنیت

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان →

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

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