جدول محتوا
برای پاسخ به سؤال vmkernel چیست ؟ میتوان به طور خلاصه گفت VMkernel یک هستهی اختصاصی سیستمعامل است که در سیستمعامل VMware ESXi استفاده میشود. این هسته وظیفه مدیریت منابع سختافزاری را در یک محیط مجازیسازی شده بر عهده دارد و به ماشینهای مجازی اجازه میدهد تا به منابع فیزیکی مانند پردازندهها، حافظه، شبکه و ذخیرهسازی دسترسی پیدا کنند. VMkernel یک نقش کلیدی در مدیریت و تخصیص منابع ایفا میکند و امکان اجرای چندین ماشین مجازی به طور همزمان و بهینه را فراهم میسازد. در ادامه مقاله به آشنایی کامل با این هسته اختصاصی میپردازیم؛ با ما همراه باشید.
vmkernel چیست ؟
همانطور که هر سیستمعاملی دارای یک هسته مرکزی به نام کرنل است، سیستم ESXi نیز از این قاعده مستثنا نیست. VMkernel یک سیستمعامل با عملکرد بسیار بالا است که توسط شرکت VMware ایجاد شده و مستقیماً بر روی سختافزار اجرا میشود. یکی از وظایف اصلی VMkernel مدیریت منابع سرور نظیر RAM، CPU، شبکه و ذخیرهسازی و فراهمکردن این منابع برای ماشینهای مجازی است. بهعنوانمثال، VMkernel برای مدیریت ذخیرهسازی با زیرسیستم ذخیرهسازی (که شامل کنترلر دیسک و دیسکها است) ارتباط برقرار میکند و از انواع پروتکلهای ارتباطی مانند SCSI، SAS، iSCSI، FCoE و FC پشتیبانی میکند.
بنابراین مهمترین وظیفه VMkernel کنترل و مدیریت منابع سختافزاری سرورهاست و یکی دیگر از وظایف آن توزیع فرایندهای vCPU ماشینهای مجازی بر روی CPUهای سرور فیزیکی-سرورهایی مانند سرور HP – و مدیریت RAM و تخصیص آن به ماشینهای مجازی است. یکی دیگر از وظایف حیاتی VMkernel شناسایی تمامی سختافزارها در اولین بار که سرور بوت میشود است. پس از شناسایی، بهترین درایور را پیدا کرده و بارگذاری میکند تا سختافزار قابل استفاده باشد.
در نهایت VMkernel یک رابط بین ماشینهای مجازی و سختافزار است و بسته به تنظیمات هر ماشین، منابع را به آنها اختصاص میدهد. این کار را به گونهای انجام میدهد که ماشین مجازی تصور کند تمام منابع به طور کامل در اختیار خودش و به صورت فیزیکی هستند.
وظایف VMkernel
پس از پاسخ به سؤال vmkernel چیست ؟ نوبت به آشنایی با کاربردهای آن است؛ از وظایف اصلی VMkernel میتوان به موارد زیر اشاره کرد:
- مدیریت حافظه: تخصیص و مدیریت حافظه به ماشینهای مجازی.
- مدیریت پردازنده: تخصیص زمان پردازنده به ماشینهای مجازی.
- مدیریت شبکه: پیکربندی و مدیریت ترافیک شبکه بین ماشینهای مجازی و شبکههای فیزیکی.
- مدیریت ذخیرهسازی: دسترسی به دیسکهای فیزیکی و مجازیسازی ذخیرهسازی.
VMkernel به طور خاص برای عملکرد با کارایی بالا و قابلیت اطمینان بالا طراحی شده است تا به نیازهای محیطهای سرور مجازیسازی شده پاسخ دهد.
معرفی VMkernel Port
پورت VMkernel یک رابط ویژه است که میزبان vSphere برای ارتباط با دنیای خارجی استفاده میکند. هدف اصلی این رابط، ارائه خدمات در لایه 2 و لایه 3 برای سرور ESXi است. پورت VMkernel چندین سرویس را به ESXi ارائه میدهد که شامل Provisioning، ترافیک vMotion، FT، ترافیک مدیریت، تکثیر vSphere، vSAN، iSCSI و NFS است. لازم به ذکر است که هنگام ایجاد پورت VMkernel، سرویسهای iSCSI و NFS را نخواهید دید زیرا این دو سرویس به طور پیشفرض در VMkernel وجود دارند و نیازی به فعالسازی ندارند؛ تنها کاری که باید انجام دهید این است که یک آدرس IP برای پورت VMkernel تنظیم کنید.
پس از نصب ESXi، یک پورت VMkernel با نام vmk0 ایجاد میشود که برای مدیریت استفاده میگردد. به بیان دقیقتر، این همان آدرسی است که پس از نصب بر روی سرور تنظیم میکنید و به طور خودکار تیک مدیریت ترافیک برای این vmk0 فعال میشود تا امکان اتصال به سرور ESXi را فراهم کند.
نحوه ایجاد پورت VMkernel در VMware vSphere
حالا که فهمیدیم vmkernel چیست ؟ نوبت به ایجاد پورت VMkernel در VMware vSphere است؛ این اقدام یکی از اساسیترین نیازها در شبکههای امروزی محسوب میشود. این اقدام به تحمل پذیری در برابر خطا (Fault tolerance)و افزایش دسترسپذیری ( (Availabilityکمک میکند، زیرا ارتباطات مهمی مانند ارتباط با vCenter و تبادل اطلاعات میان میزبانهای ESXi و vCenter برای عملکرد بهینه نیازمند هستند. در ادامه برای ایجاد پورت یک سناریوی فرضی را مطرح میکنیم:
در این سناریو برای ایجاد افزونگی، یک VMkernel با نام vmk1 و آدرس IP 192.168.1.201 را به میزبان ESXi اضافه میکنیم. این اقدام به ما این امکان را میدهد که ترافیکهای مختلف مانند vMotion و Storage را از یکدیگر جدا کنیم و برای هر کدام از آنها آدرسهای لایه 3 منحصر به فرد تعریف کنیم.
برای پیادهسازی این اقدام در vCenter، ابتدا میزبان ESXi مورد نظر را انتخاب و در منوی Configure، بخش Networking را انتخاب میکنیم و به VMkernel adapters میرویم. سپس با کلیک بر روی Add Networking، نوع VMkernel Network Adapter را انتخاب و به مراحل ایجاد آن میپردازیم. در این مراحل سوئیچ مورد نظر برای این VMkernel را انتخاب کرده و تنظیمات شبکه از جمله آدرس IP، Subnet mask، Gateway و MTU را تعیین میکنیم.
با اتمام این مراحل، VMkernel adapter با نام vmk1 بر روی میزبان ESXi ایجاد میشود و میتوان با استفاده از یک کامپیوتر در شبکه، از این آدرس IP برای تست و پینگ استفاده نمود.
چند سرویس فعال در VMkernel
در vSphere سرویسهایی که میتوانند در رابط کاربری VMkernel فعال شوند، شامل موارد زیر هستند:
- vMotion
- آمادهسازی
- ثبت خطاهای Fault Tolerance
- مدیریت
- همسانسازی vSphere
- همسانسازی NFC یا Network File Copy در vSphere
- vSAN
وقتی به طور دقیقتر به انتقال بارهای کاری نگاه میکنیم، سه سرویس شبکههای vMotion، آمادهسازی و مدیریت فعال نقش حیاتی ایفا میکنند. فعالسازی یک سرویس در یک رابط کاربری خاص VMkernel به این معناست که این شبکه اکنون میتواند برای سرویس تنظیمشده استفاده شود. برخلاف سرویس مدیریت که به طور پیشفرض در اولین رابط کاربری VMkernel فعال است، سایر سرویسها و رابطهای کاربری VMkernel معمولاً پس از نصب ESXi تنظیم میشوند. اگر بخواهیم vMotion یا ترافیک آمادهسازی از یک رابط کاربری خاص VMkernel استفاده کنند، میتوان آنها را برای این منظور تنظیم کرد.
انتقالات Cold چیست؟
انتقالات Cold به سادگی، کپی و ثبت دوباره یک ماشین مجازی و دادههای آن به یک Host یا Datastore مربوط به ESXi است. این نوع انتقالات معمولاً زمانی انجام میشوند که نیاز به انتقال یک ماشین مجازی بین دو Host ESXi با معماریهای CPU مختلف، مانند Intel و AMD، وجود دارد. vSphere vMotion قادر نیست Live-Migration را بین این دو معماری CPU انجام دهد. انجام این نوع انتقالات ممکن است به دلایلی نظیر نیاز به خاموش بودن ماشین مجازی در طول انتقال، کاهش ریسک از دست دادن دادهها یا به دلیل چالشهای دسترسی داخل بار کاری صورت گیرد.
بزرگترین اشتباه درک انتقالات و دادههای Cold این است که فرض شود شبکه vMotion برای انجام این نوع انتقالات استفاده میشود. در واقع دادههای Cold مانند ماشینهای مجازی خاموش، Snapshotها و Cloneها توسط شبکه Provisioning یا آمادهسازی منتقل میشوند و این منجر به فعال بودن این شبکه نمیشود؛ به طور پیشفرض این شبکه غیرفعال است و در صورت نیاز به پیکربندی، شبکه مدیریت یا Management برای استفاده انتخاب میشود.
انتقالات Hotچیست؟
اصطلاح “انتقال Hot” به عنوان “انتقال Live” شناخته میشود که در این نوع انتقال، ماشین مجازی با استفاده از قابلیت vSphere vMotion، همزمانسازی کامل اولیه و Delta Sync پس از آن انجام میشود. لازم به ذکر است که در صورت ایجاد یک رابط کاربری VMkernel برای vMotion در TCP/IP Stack، تنها میتوان از این Stack برای انجام vMotion داخل Host استفاده نمود. رابطهای کاربری VMkernel که در Stack پیشفرض TCP/IP وجود دارند، برای سرویس vMotion غیرفعال شدهاند.
پیچیدگی در اینجا این است که حتی با استفاده از شبکه فعال vMotion برای انتقال Live، دادههای Cold مانند Snapshotهای ماشین مجازی، Delta Diskهای Non-Child و Logهای vmx همچنان با استفاده از شبکه Provisioning منتقل میشوند و در صورت عدم پیکربندی این شبکه، انتقال از طریق شبکه Management انجام میشود.
یک نکته مهم درباره انتقالات On-Prem وقتی که Workloadها را به یک Public Cloud مانند VMware Cloud در AWS منتقل میکنیم، استفاده از VMware HCX است. HCX کاملاً Agnostic نسبت به On-Prem vMotion یا شبکههای Provisioning است و با تعریف یک پروفایل رایانشی برای HCX، امکان انتخاب شبکه مناسب برای انتقال فراهم میشود.