مجازی سازی
معرفی NVME
این مقاله را با یک جمله بسیار مهم شروع می کنیم
Nvme یک پروتکل است نه یک نوع حافظه !
برای تبیین بیشتر لازم است بدانیم nvme پروتکلی است که برای استفاده از تجهیزات با
سرعت بسیار بالا طراحی شده است.
ما از قبل، پروتکل های قدیمی و شناخته شده ای همانند sata یا serial ATA و sas یا
Serial attached scsi را برای دسترسی به انواع دیسک ها می شناسیم، حال باید بدانیم
پس از ظهور حافظه های ssd که مبتنی بر flash یا nvram ها بودند ما همچنان از این
پروتکل های قدیمی برای بهره برداری از آنها استفاده میکردیم که در حقیقت مناسب این
تجهیزات پر سرعت نیستند و از نظر پهنای باند و iops (i/o per second) نمیتوانستند
آنچنانکه باید سرویس کامل را از این حافظه های پر سرعت بگیرند،
علاوه بر آن ما امروزه شاهد ظهور حافظه های بسیار پرسرعت تری همانند intel 3d
xpoint هستیم که به هیچ وجه با پروتکل های قدیمی مانند sas و sata نمیتوان به صورت
کامل از آنها بهره برداری کرد، به همین دلیل پروتکل جدیدی ایجاد شد تحت عنوان nvme
یا non-volatile memory express!
Nvme به دلیل افزایش تعداد queue ها در مقایسه با پروتکل های قدیمی سرعت دسترسی به
اطلاعات را به شدت افزایش میدهد.
همانطور که گفته شد nvme پروتکل دسترسی به حافظه است و با توجه به این جمله میتوان
گفت دسترسی به تجهیزاتی همچون دیسک های ssd و یا دیسک های M.2 form factor با
استفاده از این پروتکل امکان پذیر است اما آنچه که امروزه بیشتر شاهد آن هستیم این
است که بیشتر انواع جدیدی از حافظه های بسیار پرسرعت تحت عنوان pmem یا nvdimm و یا
nvm به صورت پیش فرض با قابلیت پشتیبانی از nvme ارایه می شوند .
PERSISTENT MEMORY PMEM در
VSPHERE 6.7
Pmem یا persistent memory که آن را با نام های دیگری مانند
non-volatile dual inline memory module NVDIMM یا
non-volatile memory NVM هم می شناسیم، نسل جدیدی از حافظه ها هستند که
همانطور که از نام pmem پیداست و از دو بخش persistent به معنی مانا یا ماندگار و
بخش memory که نشان میدهد این حافظه ها از نوع مموری های DRAM هستند تشکیل شده ،
ایجاد شده اند.
به معنی دیگری تجهیزات pmem تجهیزاتی هستند با سرعت دسترسی بسیار نزدیک به RAM و با
قابلیت ماندگاری حتی در صورت قطعی برق ! (این مورد با پشتیبانی باتری هایی که در
آنها گنجانده شده است در زمان قطع شدن برق سرور برآورده خواهد شد)
این تکنولوژی مزیت های قابل توجهی را بر روی تکنولوژی های رایج زیر پیشنهاد می دهد:
DRAM- شبیه تاخیر و پهنای باند.
CPU که میتواند از یک ساختار آدرس دهی بایتی منظم جهت load/store استفاده نماید.
ماندگاری اطلاعات در حین restart و crashes.
حافظه ماندگار یا PMEM ویژگی های بسیار جذابی را برای طیف وسیعی از برنامه ها و
سناریوها ایجاد می کند.
از نمونه محصولاتی که در این زمینه تولید شده اند میتوان به intel 3D Xpoint (intel
3D cross point) و HPE Persistent Memory اشاره کرد.
همانطور که در تصویر قابل مشاهده است این تجهیزات هم میتوانند به صورت DIMM که بر
روی اسلات های RAM مینشینند تولید شوند و هم با اینترفیس ها جدید و یا برخی از آنها
میتوانند از اسلات های M.2 نیز استفاده کنند.
این حافظه ها به صورت مستقیم از طریق bus به cpu متصل می شوند و بسیاری از اینترفیس
های واسط برای دسترسی به حافظه ها و ذخیره ساز های سنتی یا traditional دیگر در
اینجا مطرح نیستند و برای اتصال مستقیم این حافظه ها به cpu بهترین پروتکل nvme می
باشد. پروتکل nvme میتواند پهنای باند 16 گیگابایت بر ثانیه و تا 500 هزار iops
برای دسترسی به حافظه های pmem یا NVDIMM فراهم کند.
راهکاری های PMEM
در حال حاضر دو نوع راهکار PMEM در مارکتینگ وجود دارد:
NVDIMM-N by DELL EMC and HP
نوعی از DIMM می باشد که شامل DRAM و NAND-flash در خود DIMM می باشد، اطلاعات
بین این دو ماژول در زمان startup,shutdown یا هر نوع از دست رفتن برق جابجا
میشود. اطلاعات DIMM در زمان قطع برق توسط باطری که بر روی مادربورد وجود دارد بک
آپ گرفته می شود. هم کمپانی HPE و هم DELL EMC حافظه های با ظرفیت 16 GB از نوع
NVDIMM-N پیشنهاد می دهند.
حافظه Scalable PMEM توسط شرکت HPE
این روش با ترکیب حافظه های هوشمند DIMM توسط HPE و NVMe و استفاده از یک باطری
بک آپ حافظه منطقی NVDIMMs را تولید می نماید. روش کار به این صورت می باشد که
اطلاعات بین DIMMs و NVMe جابجا می شود.این تکنولوژی می تواند برای ساخت سیستم های
PMEM در مقیاس بسیار بزرگتر استفاده شود.
ادامه مطلب به شرح زیر می باشد:
در ادامه ما توضیح می دهیم چگونه می توان PMEM را در یک محیط vSphere پیکربندی و
استفاده کرد.
آزمایش های انجام شده و تنظیمات مختلف PMEM را شرح می دهیم.
برخی از بهترین شیوه ها در مورد چگونگی استفاده بهتر از PMEM در vSphere را تشریح
خواهیم کرد.
1.استفاده از PMEM در vSphere
به صورت کلی در صورتی که هاست شما به این نوع حافظه های پرسرعت مجهز باشد و
نسخه esxi آن 6.7 به بعد باشد، حافظه های pmem به دو صورت (و بسته به ورژن سخت
افزارماشین مجازی و نوع سیستم عامل) در زیرساخت بستر مجازی مورد استفاده قرار
میگیرند
مورد اول: به صورت مستقیم یا virtual NVDIMM
در این حالت که برای ماشین های مجازی ای که ورژن سخت افزار آنها از 14 بالاتر
باشد و سیستم عامل آنها ویندوز 2016 و یا centos 7 به بالا باشد میتوان به صورت
مستقیم و با اضافه کردن یک nvme controller به همراه اضافه کردن حافظه nvdimm ، این
ماشین را به حافظه pmem یا nvdimm تجهیز نمود.
NVDIMM مجازی مورد دوم: به صورت غیرمستقیم ویا از طریق ایجاد vPmemdisk
در این روش که برای سیتم عامل های قدیمی می باشد میتوان دیسک ماشین مجازی را
بر روی دیتااستوری که به صورت اتوماتیک پس از نصب حافظه pmem یا nvdimm بر روی هاست
ایجاد می شود، قرار داد. لازم به ذکر است در این مورد پروتکل مورد استفاده دیگر
nvme نیست و همچنان از virtual scsi استفاده می شود.
در این حالت هیچ گونه تغییری در Guest OS یا برنامه نیاز نمی باشد،. توجه داشته
باشید که پیکربندی vPMEMDisk فقط در vSphere وجود دارد نه در سیستم عامل های
bare-metal.
تنظیمات مربوط به هاست vSphere
vSphere 6.7 سخت افزار PMEM را در بخش منابع سخت افزاری هاست در vCenter
نشان می دهد ، همانطور که در شکل 2 نشان داده شده است، سخت افزار شناخته شده PMEM
که در شکل 3 نشان داده شده است به عنوان PMEM datastore متصل شده است.
تنظیمات مربوط به هاست vSphere
vSphere showing PMEM as a hardware resource
تنظیمات مربوط به هاست vSphere-2vSphere showing
PMEM datastore
تنظیمات مربوط به ماشین مجازی:
vPMEMDisk مانند هر دیسک معمولی همانطور که در شکل 4 نشان داده شده است
می تواند به VM اضافه شود. اطمینان حاصل کنید که Storage Policy VM به Host-local
PMem Default Storage Policy تنظیم شده باشد.
vPMEM را می توان به عنوان دستگاه NVDIMM جدید همانطور که در شکل 5 نشان داده شده
است ، به VM اضافه کرد.
Adding vPMEMDisk to a VMAdding vPMEMDisk to a VM
Adding vPMEM (NVDIMM) to a VMAdding vPMEM (NVDIMM) to a VM
2. راه اندازی آزمایشی
ما این عملکرد را در هر دو پلت فرم PMEM انجام دادیم: پلت فرم PMEM در HPE(جدول
1) و پلت فرم PMEMدر Dell EMC NVDIMM-N (جدول 2). باید به این نکته توجه داشت که
عملکرد در هر دو پلت فرم PMEM یکسان است زیرا هر دو راه حل مبتنی بر DRAM هستند.
پلت فرم PMEM در HPEجدول شماره (1)
پلت فرم PMEMدر Dell EMC NVDIMM-N
جدول شماره (2)
توجه: تمام اندازه گیری ها (آزمایش های SQL سرور در DELL EMC NVDIMM-N انجام شده
است) با استفاده از HPE مقیاس پذیری PMEM با 512 گیگابایت PMEM در یک سرور 2 سوکت
HPE 380 Gen 10 انجام شد. معتقدیم که همان روند عملکرد عمومی در سایر سرورهای 2 یا
4 سوکت با استفاده از فناوری های NVDIMM-N مشاهده می شود.
پیاده سازی:
ما عملکرد workload های مختلف را در 4 پیکربندی مختلف مقایسه می کنیم ، همانطور
که در جدول 3 نشان داده شده است. توجه داشته باشید که تنظیمات vPMEM-aware فقط برای
برخی از workload ها قابل اجرا است.
جدول vPMEMجدول شماره (3)
3.استفاده موردی از PMEM در vSphere:
استفاده از :I/O Performance with FIO
FIO یک میکرو بنچ مارک I/O برای اندازه گیری عملکرد I/O است. از آن برای تعیین کمیت
overhead مجازی سازی و اندازه گیری پهنای باند و تأخیر استفاده می شود.
نکات برجسته:
اورهد مجازی سازی با استفاده از PMEM کمتر از 3 درصد می باشد.
پیکربندی vPMEM-aware می تواند پهنای باند 8 برابر بیشتر را نسبت به SSD NVMe داشته
باشد.
تأخیر با تنظیمات vPMEM کمتر از 1 میکرو ثانیه است.
پیکربندی vPMEM-aware می تواند به پهنای باند نزدیک به پهنای باند حافظه (Memory)
دست یابد.
پیاده سازی:
در جدول 4 جزئیات FIO آورده شده است:
جزئیات FIOجدول شماره (4)
جدول 5 پارامترهای FIO استفاده شده را نشان می دهد:
پارامترهای FIOجدول شماره (5)
Virtualization Overhead
برای تعیین کمیت سربار مجازی PMEM، ما توان FIO را در نصب bare-metalدر Cent OS
و Cent OS VM که با ESXi کار می کند مقایسه کردیم.در شکل شماره 6 نسبت مجازی به
حالت بومی را نشان می دهد.ر همه این سناریوها،ما سربار کمتر از 3 درصد را اندازه
گیری کردیم. ما FIO را برای نشان دادن سرور مجازی انتخاب کرده ایم زیرا
microbenchmarks معمولاً بیشترین فشار را بر سیستم دارند و انتظار می رود هنگام
مجازی حداکثر سربار را نشان دهد.
پهنای باند و تأخیر
شکل 7 پهنای باند اندازه گیری شده در مگابایت در ثانیه را برای تنظیمات مختلف
با اندازه KB I/O 4 نشان می دهد.مقایسه بین randread و randrw و randwrite را نشان
می دهد.
شکل شماره 8 پهنای باند اندازه گیری شده با 512 KB I/O را نشان می دهد.در تست
خواندن به صورت تصادفی یا همان random read test، مورد vPMEM-aware بیش از 11
گیگابایت در ثانیه با یک thread پهنای باند مصرف کرده است، که در مقایسه با NVMe
SSD حدود 8 برابر است.
شکل 9 تأخیر خام(raw) در میکرو ثانیه با تنظیمات مختلف را نشان می دهد. هر دو
تنظیمات vPMEM دارای تأخیرهای زیر میکرو ثانیه ای بودند.
برای سناریوهایی که به پهنای باند I / O بیشتری نیاز دارند ، از موضوعات FIO I / O
استفاده بیشتری کردیم و مشاهده کردیم که مقیاس پهنای باند بصورت خطی می باشد. برای
اندازه گیری پهنای باند حافظه در حالت peak در این سیستم ، از STREAM استفاده کردیم
که 67 گیگ در ثانیه را با استفاده از 8 thread گزارش کرده است. با استفاده از FIO
با استفاده از 8 thread ، 66 گیگابایت در ثانیه با استفاده از پیکربندی vPMEM-aware
اندازه گیری شد.
نتیجه گیری
به طور خلاصه:
vSphere می تواند به پهنای باند و تأخیر PMEM device نزدیک باشد.
Virtualization overhead در PMEM در vSphere از کمتر است 3 درصد می باشد.
vSphere PMEM حداکثر توان 8 برابر و بهبود در معیارهای micro benchmarks و تا 35
درصد بهبود در workloads درجه 1 (Tier-1) در مقایسه با NVMe SSD را دارد.
مقیاس پذیری (scaling out) ماشین ها در vSphere PMEM می تواند از پهنای باند دستگاه
نهایت استفاده را ببرد.
عملکرد ماشین ها با PMEM در حین vMotion بسیار بهتر از عملکرد NVMe SSD یا
(All-flash SAN) است (حتی در صورت عدم وجود vMotion).
نیاز روز افزون اپلیکیشن ها به حافظه های پر سرعت، زمینه را برای ایجاد تکنولوژی
های جدید چه در زمینه ذخیره سازها و چه در زمینه پروتکل های اتصال به این تجهیزات
فراهم کرده است و حافظه های pmem یا nvdimm یا NVM و همچنین پروتکل nvme مثال هایی
از این نوع می باشند