خلاصه اجرایی
معماری Cache Accelerated Sequely Layout (CASL) از شرکت Hewlett Packard Enterprise نقاط قوت فناوری HPE Nimble Storage را که شامل عملکرد بالا، بازده ظرفیت، محافظت از دادههای یکپارچه و سادهسازی مدیریت را فراهم میکند. CASL یک LFS (سیستم فایل با ساختار ورود به سیستم) است که بهترین ویژگیهای رسانههای مدور (ورودی/خروجی ترتیبی) و فلش (ورودی/خروجی تصادفی) را با هم ترکیب میکند.
هدف مقاله
این مقاله لایههای معماری CASL را بیان میکند، اهداف مختلف آنها را توضیح و نحوه تعامل آنها با یکدیگر را نشان و همچنین مکانیسمهای محافظت از دادهها و یکپارچگی دادهها، همراه با مزایای معماری را توضیح میدهد.
هنگامی که CASL در سال 2008 طراحی شد، حافظه فلش مورد توجه قرار گرفت. در آن زمان، بنیانگذاران (Umesh Maheshwari و Varun Mehta) در ابتدا نخستین سیستم SSD 2U 24x را طراحی کردند تا با پیگیری درخواستهای NFS مشتری/سرور، به عنوان یک شتابدهنده حافظه پنهان فلش عمل کند. در شکل زیر مزایای آن بیان شده است:
FIGURE 1. Original graphic of the storage accelerator from the Nimble Storage1 founders’ slide deck in 2008
پس، در سال ۲۰۰۹ آنها تصمیم گرفتند تا از شتابدهنده چشمپوشی کرده و با گسترش استفاده از معماریِ موجود و سیستم file که قبلاً توسعه داده بودند، یک سیستم ذخیرهسازی مستقل و نیز یک آرایۀ فلش ترکیبی ایجاد کنند. از all-flash تا هیبریدی و دوباره به all-flash، معماریِ HPE Nimble Storage CASL تحول صنعتی بیسابقهای را به وجود آورده است که انعطافپذیری و انطباق آن را با نیازهای در حال تغییر بازار به نمایش میگذارد.
مرکز طراحی
اصول طراحی که زیر بنای معماری CASL است، این پلتفرم را قادر میسازد تا قابلیت اطمینان بالا، محافظت از industry-standard و یکپارچگی دادهها و عملکرد قطعی را در مقیاس فراهم کند - در عین حال باعث کاهش ریسک و تسریع نتایج تجاری میشود. این اصول دامنه وسیعی دارند:
- همیشه با نوشتن full stripeها، از یک طرح کاملاً ترتیبی پشتیبانی کنید.
- از اندازههای I/O بلوک متغیر استفاده کنید.
- با افزایش تعداد هستههای پردازنده عملکرد را گسترش دهید.
- از معماری scale-up و scale-out برای سازگاری IOPS/TB استفاده کنید.
- قبل از نوشتن دادهها به صورت full stripeها در RAID، به طور مداوم بافرهایی را در حافظه غیر فرار مینویسد.
- Cache از حافظه پنهان فلش روی آرایههای هیبریدی به صورت تصادفی خوانده میشود.
- Cache از AFA (all–flash arrye) ذخیرساز به صورت تصادفی خوانده میشود.
- اطمینان حاصل کنید که همه نوشتهها ازجمله overwriteها، همیشه در فضای آزاد و همجوار اتفاق میافتد.
- از پر کردن حفرهها خودداری کنید و تکهتکه کردن را از صفر شروع کنید.
- همیشه از روشهای فشردهسازی انطباقی درون خطی برای عملکرد بهتر ذخیرهساز استفاده کنید.
- رای عملکرد بهتر ذخیرهساز، از حذف دادههای تکراری درون خطی استفاده کنید که از موقعیت مکانی استفاده میکند.
- از مکانیسمهای محافظت از داده و یکپارچگی دادهها در برابر خطاهای غافلگیر کننده استفاده کنید که سایر سیستمهای RAID و سیستم کنترل نمیتوانند برطرف کنند.
- اولویتبندی داخلی ویژگیهای مختلف workload و وظایف مدیریت داخلی با استفاده از QoS (کیفیت سرویس) خودکار.
به چهار دلیل مهم این معماری یک طرح کاملاً پیدرپی را پیادهسازی میکند:
کارایی: هنگامی که رسانه ذخیرهساز نوشتن ترتیبی را سریعتر از نوشتن تصادفی انجام میدهد، سیستم فایل، زمینهای نیاز دارد که نوشتنهای تصادفی را به نوشتنهای ترتیبی تبدیل کند. این مهم برای دیسکهای چرخان اعمال میشود، زیرا نوشتنهای تصادفی برای حرکت دادن به هد دیسک نیاز دارند.
طول عمر: در مورد NAND flash نیز صدق میکند، زیرا قبل از نوشتن یک صفحه متشکل از چندین کیلوبایت، باید کل بلوک چند مگابایتی (بسیاری از صفحات NAND) پاک شود. نوشتن در بلوکهای بزرگ به طور پیدرپی باعث ایجاد بارکاری مناسب NAND میشود که طول عمر رسانه فلش افزایش مییابد.
انعطافپذیری: نوشتن متوالی محاسبات RAID، هزینههای سربار را در سیستمها کم میکند، که باعث میشود سازههای RAID با انعطافپذیری شدید مانند Triple Parity + RAID بدون افت عملکرد مورد استفاده قرار گیرند.
پایداری: طرح کاملاً پیدرپی، عملکرد پایدار طولانی مدت را در سطوح مختلف بهرهوری ظرفیت فراهم میکند.
THE BUILDING BLOCKS
معماری CASL متشکل از چند لایه است که با هم کار میکنند:
- لایه RAID
- لایه قطعه (SL)
- لایه LFS
- لایه ذخیره منحصر به فرد بلوک (BUS)
- لایه بلوک شاخص (BI)
- لایه مدیریت حجم (VM)
- لایه SCSI
لایه RAID
هدف از طراحی Triple + Parity RAID HPE Nimble Storage در مقایسه با سایر روشهای حفاظت RAID این است که بیش از حد انعطافپذیر است، حتی برای موارد شدید خطاهای خواندن غیرقابل بازیابی وابسته به زمان (URE) که از یک حد تجاوز میکنند هم انعطافپذیر است، در حالی که قابلیت استفاده به طور چشمگیر حفظ میشود: نسبت خام (raw ratio) و عملکرد بالا.
مرکز طراحی و مزایای Triple + Parity RAID
انواع مختلف رسانهها مشخصه خرابی را از خود نشان میدهند. برخی از رسانهها ممکن است به طور ناگهانی خراب شوند (به عنوان مثال، موتور یک درایو چرخشی ممکن است به راحتی از کار بیفتد) و انواع دیگر رسانهها به تدریج خراب میشوند (به عنوان مثال، با افزایش طول عمر SSDها بیشتر UREها را به نمایش میگذارند). این رفتار هیچ ارتباطی به میزان سایش SSDها و اینکه آیا SLC ،eMLC یا 3D-TLC هستند، ندارد.
سوابق: یک مطالعه علمی جالب که با همکاری Google completed انجام شده است، میلیونها SSD ازهر نوع را پوشش داد. رسانههایی مانند QLC (و سایر موارد) ممکن است این رفتار URE را سریعتر نشان دهند، مخصوصاً برای درایوهای بزرگ در سطح بایگانی.
مهمتر از همه، هرچه درایوها بزرگتر میشود، احتمال آماری UREهای وابسته به زمان در هنگام بازسازی RAID بیشتر میشود، علاوهبر این، بازسازی RAID ممکن است مدت زیادی طول بکشد (اگر چند هفته نباشد، چند روز، تصور کنید که یک درایو 200 TB را دوباره بسازید)، که خطرناشی از وقوع URE را تشدید میکند.
RAID سنتی برای درایوهای بسیار بزرگ مناسب نیست و هنگام مواجهه با خطر ناشی از وقوع URE از یک حد بیشتر نمیتواند در برابر آنها مقاومت کند. به عنوان مثال، RAID 5 میتواند در برابر یک URE مقاومت کند. RAID 6 میتواند به طور موازی دو URE را تحمل کند. triple parity RAID نرمال میتواند سه URE را به طور موازی تحمل کند.
Triple + Parity RAID میتواند N URE را به طور موازی تحمل کند، در واقع N تعداد درایوهای گروه RAID است، حتی اگر همه parity از بین رفته باشد. این بدان معناست که یک سیستم میتواند سه درایو موجود درگروه Triple + Parity RAID را به طور کامل از دست بدهد و در همه درایوهای باقیمانده همزمان URE داشته باشد این سیستم دچار خرابی اطلاعات نخواهد شد. برای مقایسه در یک سیستم RAID 5، اگر یک درایو از بین رفته باشد (هیچ parityباقی نماند)، URE صفر میتواند بدون از دست دادن سیستم داده، رخ دهد.
در نتیجه، طراحی Triple + Parity RAID دارای ویژگیهای زیر است:
- این برنامه میتواند هر دو رسانههای فعلی و آینده را با هم سازگار کند، از جمله رسانههایی که با وقوع غیره منتظره و زیاد UREهای وابسته زمانی روبرو هستند، تا حدی که UREها به طور موازی در همه درایوها اتفاق میافتد.
- این برنامه میتواند درایوهای بسیار بزرگی را در خود جای دهد و زمان بازسازی بسیار طولانی را با اطمینان کامل تحمل کند (به عنوان مثال یک درایو 100 ترابایتی ناکارآمد را بازسازی میکند در حالی که انعطافپذیری بسیار بالایی را برای درایوهای باقی مانده حفظ میکند).
- فضای قابل استفاده با ظرفیت بسیار بالا را فراهم میکند: فضای استفاده نشده از گروههای بزرگ RAID را میتواند با اطمینان استفاده کند، این بدان معنی است که فضای parity کمتری هدر میرود. رسانه (اعم از فلش یا چرخان) به طور خودکار در گروههای RAID سازماندهی میشود که کاملاً از کاربر نهایی جدا شدهاند. علاوه بر گروههای RAID، این معماری یک الگوریتم Triple + Parity RAID را که از parity توزیع شده استفاده میکند، با یک parity اضافی در هر درایو مرتبط با هر قطعه ("+" در Triple +) پیادهسازی میکند.
FIGURE 2. The RAID layer
بلوک بخشی از نوار است. این بلوک مقدار دادهای را که در یک درایو نوشته میشود تعریف میکند و دارای parity اضافی خاص و checksumها است. اندازه بلوک و طرح RAID بین HPE Nimble Storage AFA و سیستمهای هیبریدی متفاوت است.
محافظت از دادههای Extreme
علاوه بر Triple Parity، که به صورت افقی در کل یک نوار محاسبه میشود، تعادل هر درایو را هم محاسبه میکند. این نوع تعادل که به آن Triple + Parity RAID نیز گفته میشود، با استفاده از مقدار قابل توجه داده و متا دادهای که در هر درایو نوشته و به صورت محلی ذخیره شده، محاسبه میشود. از Parity هر درایو میتوان برای بازیابی از URE استفاده کرد، حتی اگر هیچ افزونگی در این نوار باقی نماند (به عنوان مثال، اگر سه درایو خراب شود و URE در هنگام بازسازی ایجاد شود.) Parity در هر درایو اجرا شده است.
Parity موجود در هر درایو در هر دو سیستمعامل HPE Nimble Storage All Flash (AF) و Hybrid Flash (HF) پیادهسازی شده است. این امر امکان بازیابی از چهار خطای ECC متوالی در SSDها یا دو خطای خواندن سکتور در HDDها با فرمت 512B یا یک خطای خواندن سکتور در HDDها با فرمت 4KB را فراهم میکند. علاوهبر این، ریکاوری هیچ ارتباطی با وضعیت درایوهای باقی مانده ندارد. این بدان معنی است که یک گروه RAID Triple + Parity میتواند سه درایو را از دست بدهد و همچنان از خطاهای خواندن سکتور محافظت کند، امری که با RAID استاندارد غیر ممکن است.
FIGURE 3. Intra-drive parity per chunk
برخلاف خواندن و نوشتن در دیسکهای چرخشی، خواندن و نوشتن در حافظههای فلش توسط رسانه به طور نامتقارن انجام میشود. به عنوان مثال، پاک کردن و نوشتن سلولهای حافظه فلش زمان بسیار بیشتری نسبت به خواندن آن نیاز دارد. فلش همچنین دارای چرخه عمر نوشتاری محدودی است؛ بنابراین نحوه نوشتن سیستم ذخیرهساز برای آن بسیار مهم میشود.
CASL همیشه از یک طرح کاملاً پیدرپی برای نوشتن دادهها به صورت خطی استفاده میکند، بدون اینکه باعث تغییر نوشتن، تاخیر در خواندن شود حتی در ظرفیت بسیار بالای نرخهای بهروری. این روش با سایر پیادهسازیهای LFS مانند (ZFS و WAFL) که یک سیستم فایل پر از حفره است، متفاوت است.
اندازه نوار یا اندازه سگمنت با ضرب تعداد درایوهای داده در اندازه سگمنت تعیین میشود و این اندازه بین AFA و سیستم عاملهای ترکیبی متفاوت است.
FIGURE 4. How HPE Nimble Storage writes to stable media in chunks
Triple + Parity RAID در مقایسه با انواع RAID سنتی
تمام سیستمهای محافظت از داده دارای زمان متوسط برای از دست دادن دادهها (MTTDL) هستند. این میانگین زمان از دست دادن داده است که با عملکردهای سیستم ذخیرهساز (Parity، پشتیبانگیری و بازسازی) قابل بازیابی نیست. هدف یک سیستم ذخیرهساز با یکپارچگی و انعطافپذیری داده قوی این است که زمان از دست رفتن دادهها را هم در نظر میگیرد بنابراین در آینده حتی در شرایط نامساعد هیچ دلیلی برای نگرانی در مورد آن وجود ندارد.
انتشار بالای URE به طرز چشمگیری MTTDL را کاهش میدهد. جدول 1 مقایسه MTTDL را با فرضیات مختلف نشان میدهد. این کار با استفاده از ریاضی استاندارد MTTDL انجام شده است و چندین ماشین حساب آنلاین وجود دارد. یک مدل URE پیدا کنید و یک triple parity RAID مانند Z3 را نشان دهید - سپس MTTDL را برای Z3 در ضریبی از 5 ضرب کنید تا تقریب parity درون هر درایو برای Triple + Parity RAID بدست آید.
TABLE 1. Triple+ Parity RAID MTTDL compared to typical legacy RAID types and group sizes
توجه داشته باشید که اندازه گروه RAID Triple + Parity RAID در این مثالها بسیار بیشتر از بقیه است (24 درایو). در ریاضیات RAID، هر چه تعداد درایوها در گروههای RAID بیشتر باشد، قابلیت اطمینان آن پایین است. Triple+ Parity RAID به قابلیت اطمینان فوقالعاده بالایی دست مییابد در حالی که امکان استفاده از اندازههای بزرگ گروه RAID را فراهم میکند که این، به دستیابی بسیار زیاد دادههای خام از دست رفته کمک میکند. حتی پیادهسازی بسیار محافظه کارانه RAID 6 که فقط 8 دیسک در هر گروه RAID دارد، دسترسی ضعیفی خواهد داشت: از آنجا که میزان Parity دادههای خام برای 24 دیسک دو برابر در مقابل Triple + Parity RAID است، با این وجود محافظت ارائه شده برای Triple + Parity RAID بسیار کمتر است. درمیان انواع RAID، Triple + Parity RAID انعطافپذیرتر هستند.
توجه: برای محاسبات MTTDL در جدول، از متغیرهای زیر استفاده شده است:
- 150 MB/s rebuild speed
- Normal quality drives: 1.2M hours MTBF, 1 in 1017 URE
- Bad batch of drives: 36.5K hours MTBF, 1 in 106 URE
Checksumهای چند مرحلهای آبشاری
هدف طراحی HPE Nimble Storage checksum ایجاد فضای ذخیرهسازی ایمن توسط انواع checksumهای سنتی با ایجاد روشی برای شناسایی و تصحیح خطاهای آرایه داخلی است که غیر قابل شناسایی هستند.
مرکز طراحی برای checksumهای HPE Nimble Storage:
یک تصور غلط رایج در مورد RAID این است که یکپارچگی دادهها را تضمین میکند. RAID به خودی خود، هر چقدر هم که قوی باشد، نمیتواند از انواع مختلف خرابی دادهها جلوگیری کند.
checksumهای سنتی و industry-standard (همانطورکه در بسیاری از دستگاههای ذخیرهسازی یافت میشود) نمیتواند از خطاهایی مانند نوشتن از دست رفته، خواندن اشتباه و نوشتن نابهجا جلوگیری کند. صنعت ذخیرهساز این نوع خطاها را خطاهای silent مینامد. تا زمانی که سیستم ذخیرهساز مکانیسمهای لازم برای شناسایی و بازیابی را فراهم نکند، این خطاها همیشه منجر به خرابی دادهها میشوند و ردیابی آنها بسیار دشوار است.
در نتیجه، بسیاری از کاربران از وجود چنین خطاهایی آگاهی ندارند، فقط به این دلیل که اکثر سیستمهای ذخیرهساز به راحتی مکانیسمهای تشخیص و اصلاح لازم را ارائه نمیدهند. علاوهبر این، سیستمهای ذخیرهساز مدرن، متا داده زیادی تولید میکنند. بنابراین هرگونه خرابی متا داده ممکن است عواقب فاجعه باری برای اکثر دادهها به همراه داشته باشد. با حذف دادههای تکراری، snapshotها، cloneها و کپیها، هرگونه خرابی روی بالاترین دادههایی که ارجاع شده است به این معنی است که چندین بلوک منطقی اکنون خراب شدهاند. بدترین انحراف، خطاهای silent است که منجر به خواندن دادههای اشتباه میشود.
FIGURE 5. The catastrophic domino effect of silent corruption in a single block
سناریوی نشان داده شده در شکل 5 را در نظر بگیرید تصور کنید که یک خطای خواندن نادرست بر بلوک منحصر به فرد تأثیر میگذارد، خطایی که توسط checksumهای استاندارد قابل تشخیص نیست.
تمام بلوکهای منطقی متکی به این بلوک منحصر به فرد خراب میشوند بدون اینکه کاربران از خطا اطلاع داشته باشند. همه موارد تکراری، snapshotها، cloneها و remote replicaها، که بر چندین LUN (Logical Unit Number) در سیستم تأثیر میگذارد از همان بلوک منحصر به فرد استفاده میکنند. به طور بالقوه صدها منبع مجازی از این بلوک، هنگام خواندن، داده اشتباه را بر میگردانند.
این نوع انحراف منطقی اثر دومینو، اطمینان از صحت دادههای داخلی را بیش از گذشته مهم میکند. در سیستمهای ذخیرهسازی قدیمی با LUNها که در یک گروه RAID واحد قرار میگیرند. هرگونه انحراف، محدود به LUN و برخی snapshotها خواهد بود. در سیستمهای امروزی چنین انحرافی گسترده خواهد بود - به همین دلیل HPE Nimble Storage یک سیستم جامع برای محافظت کامل در برابر چنین خطاهایی ساخته است.
شناسایی خطا دشوار است
سه دسته اصلی وجود دارد:
- Lost write: نوشتن در ابتدا کامل به نظر میرسد و کل فرآیند RAID را به درستی طی میکند. اما ممکن است رسانه ذخیرهسازی دادههای نوشته شده را ثبت نکند. هنگام خواندن این داده، دادههای قدیمی موجود در آن مکان به جای آن خوانده میشوند. ممکن است از نظر فنی دادهها خراب نباشد اما از نظر زمانی اشتباه باشد. از آنجا که این دادهها خراب به نظر نمیرسند، سیستمهای کنترلی سنتی خطا را تشخیص نمیدهند.
- Misdirected write: نوشتن، کل فرآیند RAID را به درستی تکمیل و طی میکند. همچنین کاملاً به محیط ذخیرهساز ولی نه در مکان صحیح متعهد است. هنگام تلاش برای خواندن دادهها، دادههای قدیمی (قبلاً صحیح) به جای آن از مکان صحیح خوانده میشوند. این امر توسط checksumهای سنتی تشخیص داده نمیشود زیرا داده خراب نیست بلکه نسخه قدیمی دادهها خوانده میشود.
- Misdirected read: دادهها از مکان اشتباه خوانده میشوند. دادههای خوانده شده صحیح اما دادههای اشتباهی هستند. checksumها دوباره این نوع مشکل را تشخیص نمیدهند.
تحقیقات نشان میدهد که این نوع خطاها معمولاً به دلیل اشکال میانافزار در درایوها رخ میدهند. تشخیص این خطاها بسیار سخت است (و در واقع با بسیاری از آرایهها قابل تشخیص نیست). در نتیجه ممکن است خطاها برطرف نشوند تا زمانی که شخصی با ابزار تشخیص خطاها به تولید کنندگان درایو هشدار دهد. خوشبختانه محاسبات کنترل HPE Nimble Storage به قدری قوی هستند که حتی درایوهای فوقالعاده مشکلساز نیز منجر به انحراف اطلاعات نمیشوند.
Checksumهای چند مرحلهای آبشاری HPE Nimble Storage چگونه کار میکنند؟
علاوهبر ذخیره دادههای checksum، به هر شی ذخیره شده یک شناسه منحصر به فرد نیز اختصاص داده میشود. شناسه منحصر به فرد یک شماره واحد نیست - شامل چندین داده از جمله آدرس بلوک همراه با یک شماره سریال منحصر به فرد تکرار نشدنی است.
SBN (sequential block number) برای همه دادهها متفاوت خواهد بود حتی اگر دادههای مشابه بخواهند رونویسی شوند (به عنوان مثال تلاش برای بهروز رسانی یک بلوک با دادههای مشابه). این امر با استفاده از شاخصهای مختلف، نقشههای CASL و ردیابی SBNها، checksumها و محل بلوک بر روی دیسک حاصل میشود، که این کار تشخیص و اصلاح خطای silent را آسانتر میکند و قوانین دقیق دستور نوشتن را حفظ میکنند.
سیستمهای سنتی کنترلی بخش شناسه خود را حذف میکنند (یا یک مجموعه ساده و کوچک از اعداد غیر منحصر به فرد دارند) و دقیقاً این شناسه منحصر به فرد است که امکان شناسایی کامل خطاها مانند نوشتنهای از دست رفته را فراهم میکند. هنگام خواندن، هر دو بخش كنترل و شناسه منحصر به فرد با آنچه در رسانه ذخیره و مقایسه میشوند. اگر هر دو با آنچه هست مطابقت نداشته باشند انتظار میرود، دادههای خراب به طور شفاف از Triple + Parity RAID بازسازی شود:
1. در صورت خراب بودن دادهها، checksum آنها را برطرف میکند.
2. اگر دادهها از مکان اشتباه خوانده شوند، دارای شناسه منحصر به فرد اشتباه هستند – دادههای صحیح از Triple + Parity RAID بازسازی میشوند.
3. اگر نوشتهها از بین برود، دادههای قدیمی دارای شناسه منحصر به فرد اشتباه هستند – دادههای صحیح از Triple + Parity RAID بازسازی میشوند.
جمعبندی checksum strong در چندین سطح انجام میشود، نه فقط در هر بلوک. که اینکار منجر به یک آبشار از checksumها در چندین مرحله از مسیر I/O میشود.
برای علامتگذاری قطعهای از دادهها به صورت صحیح، تمام مراحل checksum باید صحیح باشد:
- همانطور که دادهها به حافظه و NVDIMM وارد میشوند.
- قبل و بعد از کاهش دادهها
- در هر بلوک ذخیره شده
- به ازای هر قطعه
- در هر snapshot
- برای دادههای تکراری
بسیاری از سیستمها بر اساس هر بلوک ذخیره شده، checksumها را پیش میبرند، این بدان معنی است که ممکن است خرابی منطقی دادههای تکثیر شده شناسایی نشود. در همه مراحل با استفاده از CASL، صحت دادهها در تمام مراحل چک میشود.
ویژگیهای عملکرد checksumهای چند مرحلهای آبشاری
این محافظت گسترده بخشی اساسی از سیستم است و نمیتواند غیرفعال شود (دقیقاً مانند یک نوع +RAID: Triple). یک سوال متداول این است که آیا این سطح شدید حفاظتی عملکرد را پایین میآورد؟
از آنجا که CASL تمام دادهها را به طور متوالی مینویسد، ذخیره این اطلاعات اضافی از نقطه نظر I/O کار دشواری نیست. این در مقایسه با checksumهایی که از خطاهای احتمالی (موذی) محافظت نمیکنند، به پردازنده اضافی نیاز دارد اما این معاوضه ارزشمند است زیرا بازده یکپارچگی دادهها بسیار زیاد است. اطلاعات checksum فضای اضافی بیشتری را اشغال میکند و این مقدار در اندازهگیری در نظر گرفته میشود. ابزار اندازهگیری HPE هنگام تخمین عملکرد و ظرفیت، شامل سیستم کاملی است که تمام هزینههای سربار، متا دادهها، checksumming و Triple + Parity RAID را در بر میگیرد.
پاکسازی دیسک
پاکسازی دیسک روشی است که به موجب آن یک آرایه ذخیرهساز، دادههای موجود را به تنهایی میخواند، اسکن خطاها را انجام میدهد و خطاهای خواندن را برطرف میکند. سیستمهای HPE Nimble Storage پاکسازی مداوم انجام میدهند. توجه به این نکته مهم است که پاکسازی دیسک ممکن است مفید باشد، اما جایگزین RAID strongو checksum نمیشود. این امر از نظر ماهیت اولویت پایینی دارد و نمیتواند خطاهایی که در زمان واقعی کار نمیکنند را فراتر از انچه که checksumها و RAID میتوانند رفع کنند برطرف کند. (ورودی و خروجی کاربر همیشه در تمام آرایههای دیسک از اولویت پاکسازی دیسک بالاتر است).
لایه Segment
در بالای لایهRAID ،CASL یک SL منطقی را پیادهسازی میکند. SL دیسک را به فضای فیزیکی مجاور بنام اسلات تقسیم میکند. اسلاتها به بخشهایی نگاشت میشوند که هرکدام ازاین بخشها به full RAID stripeهایی نگاشت میشوند. بنابراین یک رابطه 1:1 بین یک بخش و یک نوار RAID کامل وجود دارد.
SL اسلاتها را به صورت بخشهای منطقی در معرض لایههای بالایی قرار میدهد. برای ردیابی و مدیریت همه منابع به طور منطقی، معماری شناسههای بخش (ID) را پیادهسازی میکند. این شناسههای منحصر به فرد به ترتیب از صفر تا بینهایت به بخشها اختصاص مییابد. بنابراین برای یک شناسه بخش مشخص، سیستم میتواند به راحتی مکان اسلات فیزیکی را روی دیسک نگاشت کند.
FIGURE 6. The segment layer
سرانجام، CASL هرگز جایگزینی درجا انجام نمیدهد. به همین دلیل، شناسههای بخش موجود قابل استفاده مجدد نیستند، به این معنی است تا زمانی که دادههای نادرست بازیابی نشود نمی توان از همان بخش استفاده کرد.
لایه LFS
LFS در قسمت بالای SL قرار دارد. LFS بلاکهای اطلاعات کاربر با طول متغیر را به صورت self-descriptive سازماندهی میکند که سیستم را قادر میسازد تا به سرعت مکان بلوک در LFS را شناسایی کند و به درخواست کننده بازگرداند. پس از پر شدن بخشها، لایه LFS آنها را به سمت ذخیرهساز دائمی سوق میدهد.
FIGURE 7. The LFS layer
این لایه همچنین مسئول کاهش و یکپارچگی داده است که از checksumها استفاده میکند. علاوهبر این، میتواند خطاهای احتمالی را شناسایی کند (به عنوان مثال، هنگامی که یک بلوک نوشته نشده یا در جای دیگری نوشته شده درایو ممکن است نشان دهد که بلوک با موفقیت برای آن نوشته شده است). این خطاها در صنعت ذخیرهسازی، نوشتن از دست رفته یا نوشتن/خواندن اشتباه است. لایه LFS برای تعیین اینکه آیا بلوک درخواستی از مکان صحیح خوانده شده است یا خیر و از همه مهمتر اینکه آیا حاوی دادههای معتبر است از checksum و شناسههای بلوک استفاده میکند. این ویژگی کلیدی یکپارچگی داده است که تعداد کمی از سیستم عاملهای ذخیرهساز آن را پیادهسازی میکنند. این محافظت در برابر خطاهای احتمالی بسیار حیاتی است زیرا RAID استاندارد به خودی خود نمیتواند از چنین مسائلی محافظت کند. علاوهبر این، دستگاههای ذخیرهساز مدرن که حذف دادههای تکراری را انجام میدهند به ردیابی متا داده متکی هستند. بنابراین هرگونه تخریب متا داده میتواند برای سیستمهای ذخیرهساز مضر باشد، به همین دلیل معماری، چنین مکانیزمهای قوی را برای یکپارچگی داده اجرا میکند.
لایه ذخیره منحصر به فرد را مسدود کنید
بعد از اینکه سیستم نحوه خواندن و نوشتن را از طریق لایه LFS تعیین کرد، پیگیری مکان نوشتن مهم میشود. برای تکمیل ردیابی بلوک، به هر بلوک در سیستم یک شناسه منحصر به فرد به نام SBN اختصاص داده شده است که با شناسه LUN یا آفست متفاوت است.
ردیابی از طریق یک مکانیسم نمایهسازی بسیار بهینه به نام DI (Disk Index) انجام میشود، که یک ID بلوک منحصر به فرد (SBN) را در مکان LFS نگاشت میکند و سایر متا دادههای مربوط به بلوک مانند checksum کنترل بلوک، تعداد مرجع و مقدار fingerprint بلوک را نیز حفظ میکند.
FIGURE 8. The BUS layer and the fingerprint index
در سیستمهای ترکیبی، DI در حافظه پنهان پین شده و در memcache ذخیره میشود. در AFAها، DI در memcache ذخیره میشود. Memcache یک ساختار داده در حافظه است که در هر دو سیستم عامل ترکیبی و AFA وجود دارد و وظیفه ذخیرهسازی شاخصها را بر عهده دارد.
شاخص Fingerprint
برای حذف دادههای تکراری، همراه با SBN، به هر بلوک منحصر به فرد که وارد سیستم شده، یک Fingerprint 256 بیتی منحصر به فرد نیز اختصاص داده میشود. در این معماری از یک طرح Fingerprint دو لایه استفاده شده است که از Fingerprint بلند و کوتاه تشکیل شده است. از مقدار کوتاه Fingerprint برای شناسایی سریع موارد تکراری احتمالی استفاده میکند، سپس با انجام مقایسههای کامل Fingerprint تأیید میشود. هنگام بهروز رسانی یا حذف بلوکها، شاخص Fingerprint (FI) نیز بهروز میشود تا این تغییرات را منعکس کند. از آنجا که SBNها به ترتیب تعیین میشوند، اهمیت مطابقت Fingerprint کمرنگ میشود. این امر مکانیابی بهتری را برای جستجوی SBN فراهم میکند زیرا بلوکهای تکراری، مجاور یکدیگر هستند و در بسیاری از موارد در نتیجه شبیهسازی دادهها رخ میدهند. علاوهبر این، به دلیل طراحی Fingerprint دو لایه، از دست دادن FI باعث از دست رفتن اطلاعات نمیشود. طراحی دو لایه FI چندین مورد را فراهم میکند.
مزایا:
- سیستم را قادر میسازد تا نیازهای کوچک DRAM را حفظ کند.
- یک مکانیزم مقایسه سریع hash برای شناسایی تطابق بالقوه Fingerprint را فراهم میکند.
- در مقایسه با پیشنهادات مشابه، این پلتفرم از محدود شدن ظرفیت DRAM به حافظه فلش جلوگیری میکند.
- هزینه کنترل کننده را کاهش میدهد و صرفهجویی در هزینه را به کاربر نهایی منتقل میکند.
- ظرفیت پشتیبانی شده توسط هر کنترل کننده را افزایش میدهد در حالی که برای دستیابی به ظرفیت کامل، به کنترل کنندههای کمتری نیاز است.
لایه بلوک شاخص را مسدود کنید
لایه BI (block index) به تهیه snapshotها، cloneها و حذف دادههای تکراری کمک میکند. همانطور که قبلا ذکر شد، به هر بلوک در سیستم یک شناسه بلوک منحصر به فرد اختصاص داده شده است. از دید پروتکل، درخواستهای خواندن و نوشتن وارد شده به سیستم شامل شناسههای بلوک نیست. بلکه آنها شامل دستورات SCSI با آدرس بلوک منطقی، آفست، شناسه LUN و موارد دیگر نیز هستند. BI یک ساختار داده است که بر روی هر volume generation حفظ میشود. یک volume generation نمایی از volume در یک زمان خاص است. BI یک volume را نگاشت میکند و برای هر volume در سیستم به SBN مربوطه آفست میشود. همچنین امکان اشتراکگذاری بلوک برای استفاده توسط deduplication و snapshotها وجود دارد زیرا ممکن است چندین LBA، از چندین volume، به یک SBN واحد اشاره کنند. یکی دیگر از مولفههای BI ،DBB (dirty block buffer) است که بلوکهای داده را در NVDIMM ردیابی میکند. DBB وظیفه تخلیه این بلوکها به دیسک را بر اساس علامتهای مشخص شده توسط سیستم و تعداد بلوکهای ورودی دارد.
FIGURE 9. The block index layer
لایه volume manager
لایه VM (volume manager) چرخه حیات نسلها را مدیریت کرده و همچنین چندین شی متا داده را حفظ، checkpointها و بازیابی گردش کار سیستم را هماهنگ میکند. همچنین عملکرد striped volume را در چندین سیستم HPE Nimble Storage فراهم میکند.
FIGURE 10. The VM layer and the protocols
بازیافت حافظه
بازیافت حافظه (GC) فرآیندی است که مسئول آزادسازی بخشهای متوالی است. اگرچه سیستم همیشه در بخشهای کامل مینویسد اما با گذشت زمان، با حذف یا بهروز رسانی بلوکها، تعداد بلوکهای معتبر در یک بخش اختصاص یافته کاهش مییابد. در این زمان سیستم به طور هوشمند بخشهای کم استفاده را بر اساس بازخورد از لایه BUS انتخاب میکند. بلوکهای معتبر موجود را در یک بخش جدید کپی میکند در حالی که ترتیب بلوکها را حفظ میکند (یعنی بلوکهای معتبری که با هم جمع شدهاند با هم نوشته میشوند) و بخش قدیمی را تمیز و برای نوشتههای جدید علامتگذاری میکند.
این تکنیک فوق سبک GC در HPE Nimble Storage AFA و پلتفرمهای هیبریدی (که یک ویژگی منحصر به فرد در صنعت است) پیادهسازی شده است. این تکنیک تضمین میکند که همیشه فضای آزاد و پیوسته برای پاسخگویی به درخواستهای نوشتن وجود دارد و عملکرد قطعی با استفاده از ظرفیت بالا را ارائه میکند. GC یک تمایز قابل توجه در مقایسه با سایر پیادهسازیهای صنعت LFS است. در نرخهای استفاده با ظرفیت بالا، این پیادهسازیها ، حفرههای سیستم فایل پراکنده را پر میکنند. بنابراین، هر درخواست خواندن/نوشتن را به یک درخواست I/O تصادفی تبدیل میکنند. این رویکرد عملکرد را کاهش و بار CPU را به شدت افزایش میدهد، در نهایت زمان پاسخ را طولانی میکند.
FIGURE 11. Garbage collection
لایه SCSI
در بالای لایه VM لایه SCSI قرار دارد. این لایه دستورات SCSI را پیادهسازی میکند و با پروتکلهای Fiber Channel و iSCSI ارتباط برقرار میکند که به نوبه خود درخواستهای خواندن و نوشتن میزبان را پاسخ میدهد.
FIGURE 12. NVDIMM
NVRAM/NVDIMM
همه درخواستهای نوشتن ورودی، صرف نظر از اندازه ورودی/خروجی، باید در NVRAM/NVDIMM باشند. NimbleOS از این درخواستها با کپی کردن آنها در NVRAM/NVDIMM کنترلکننده ثانویه قبل از تأیید شدن توسط میزبان محافظت میکند. NVRAM به عنوان یک فناوری NVDIMM-N آدرسپذیر بایت در هر کنترلکننده پیادهسازی میشود. NVDIMM-N پیادهسازی مداوم حافظه JEDEC است که از DRAM (DDR4) و حافظه فلش با تأخیر کم به عنوان یک لایه پشتیبان دائمی و یک سوپر خازن استفاده میکند. در هنگام قطع برق، سوپر خازن محتویات NVRAM را قادر میسازد تا با خیال راحت در ماژول فلش onboard بارگذاری شوند. در هنگام اتصال برق محتوای DRAM از حافظه فلش بازیابی میشود. سیستم به طور مداوم سطح خازن را بررسی میکند (و هشدار می دهد) و اطمینان حاصل میکند که شارژ کافی همیشه در دسترس است.
نوشتن مسیر
در محیطهای AFA، نوشتن مسیر شامل مراحل زیر است:
1. از land host در NVRAM/NVDIMM مینویسد.
2. نوشتن از طریق PCIe DMA به کنترلر یدکی NVRAM/NVDIMM منعکس میشود.
3. کنترلر آماده به کار، نوشتههای کنترل کننده فعال را تأیید میکند.
4. کنترلکننده فعال، نوشتههای میزبان را تایید میکند.
5. محتویات NVRAM/NVDIMM به روشهای زیر سازماندهی میشوند:
آ. دادهها با استفاده ازحذف دادههای تکراری بلوکهای متغیر حذف میشوند.
ب. دادهها با استفاده از فشردهسازی بلوک متغیر فشرده میشوند.
ج. بلوکها به چند بخش مگابایتی تبدیل میشوند.
د. بخشها به صورت متوالی در SSD نوشته میشوند و ایندکسها بهروز میشوند.
FIGURE 13. Write I/O path for AFA
نوشتهها در پلتفرمهای ترکیبی معمولاً از مسیر مشابهی برای نوشتن ورودی/خروجی پیروی میکنند، اما تفاوتهایی نیز وجود دارد. اندازه بخش با اندازه AFA متفاوت است. بلوکهایی که ارزش ذخیرهسازی را دارند بلافاصله در لایه حافظه پنهان فلش SSD بر اساس heuristics سیستم و استراتژی ذخیرهسازی ذخیره میشوند.
خواندن مسیر
در محیط AFA، خواندن مسیر برای درخواستهای خواندن میزبان بعدی، شامل مراحل زیر است:
1.الگوریتم، برای بلوک NVDIMM را چک میکند.
2. اگر بلوک پیدا نشد، الگوریتم DRAM را بررسی میکند.
3. اگر بلوک در آنجا یافت نشد، الگوریتم سریع، فهرست را جستجو میکند و از SSD میخواند.
4.اگر بلوک یافت شد، سیستم checksum و شناسه بلوک خود را برای شناسایی خواندنهای اشتباه، نوشتنهای اشتباه، یا نوشتههای گم شده تأیید میکند.
5. سپس، سیستم بلوک را از حالت فشرده خارج کرده و به میزبان بر میگرداند.
اگرچه مسیرهای خواندن برای AFA و پلتفرمهای ترکیبی مشابه هستند، مسیر ترکیبی شامل پیادهسازی cache index (CI) اضافی است، که شناسایی و بازیابی سریع بلوکهای ذخیره شده از لایه حافظه پنهان فلش SSD را امکانپذیر میسازد.
FIGURE 14. Read I/O path for AFA
انواع حافظه پنهان
معماری از سه نوع cache استفاده میکند:
- Flash cache فقط در سیستمهای هیبریدی وجود دارد که از SSDها به عنوان یک لایه cache استفاده میکنند و نسخههایی از بلوکها را نگهداری میکند. Flash cache نیز به عنوان یک LFS سازماندهی شده است، با استفاده از همان اصولی که قبلا ذکر شد، اما با اندازه مختلف بخشها. بلوکها در Flash cache ذخیره، فشرده، کپی و رمزگذاری میشوند (در صورت استفاده از رمزگذاری). پیادهسازی این امکان را فراهم میکند که به صورت پویا اندازه حافظه پنهان یک پلتفرم را بدون نگرانی در مورد تشکیل، مدیریت یا اصلاح گروههای SSD RAID که زیر آنها خط کشیده شده است افزایش یا کاهش دهید. علاوهبر این، SSD خراب نیازی به بازیابی اطلاعات ندارد زیرا بلوکهای داده نیز به طور دائم روی دیسک ذخیره میشوند. در نهایت، ایندکسها نیز در Flash cacheها پین شده و در memcache ذخیره میشوند.
- Memcache بخشی از DRAM است که به عنوان یک لایه ذخیره ایندکس بکار گرفته میشود. این در هر دو پلتفرم AFA و هیبریدی وجود دارد.
- Storage class memory (SCM) در نسخه NimbleOS 5.2.x پشتیبانی میشود.
Intel® Optane™ PCIe SSDs (3D XPoint™) به طور قابل ملاحظهای تأخیر خواندن را در مقایسه با SAS/SATA و NVMe NAND SSDهای معمولی بهبود میبخشد. دستگاههای SCM میتوانند در AFA وجود داشته باشند و به عنوان یک لایه گسترش دهنده DRAM برای ذخیرهسازی ایندکس و بلوک عمل کنند. این طراحی باعث ایجاد یک معماری هیبریدی 2.0 میشود که از DRAM و SCM به عنوان لایههای cache استفاده میکند در حالی که از SSDهای پشتیبان به عنوان یک لایه ذخیرهسازی پایدار استفاده میکند. در مقایسه با یک AFA معمولی که از NVMe NAND SSD و یک الگوریتم جستجوی cache بهبود یافته برای تطبیق با تأخیر بسیار کم SCM استفاده میکند، نتیجه افزایش ده برابری تأخیر خواندن است.
FIGURE 15. Performance comparisons: SCM (3D XPoint) vs. SAS/SATA NAND versus NVMe NAND (graphic courtesy of Intel®)
ذخیرهسازی در پلتفرمهای هیبریدی
به طور کلی، بلوکهایی که در هارد دیسک نوشته میشوند در لایه cache فلش SSD ذخیره میشوند. خطای خواندن باعث میشود بلوک وارد حافظه پنهان فلش شود.
معماری CASL از دو روش برای تعیین مقدار cache یک بلوک استفاده میکند:
- Heuristics: به طور پیش فرض، جریانهای خواندن/نوشتن متوالی در حافظه پنهان ذخیره نمیشوند. ذخیره کردن این جریانها ممکن است حافظه پنهان را با بلوکهای ناخواسته آلوده کند و باعث بیرون راندن بلوکهای مفید شود. در مقابل، جریانهای خواندن/نوشتن تصادفی همیشه در حافظه پنهان ذخیره میشوند.
- استراتژی ذخیرهسازی حافظه پنهان به ازای هر volume: چهار گزینه ذخیرهسازی انتخابی وجود دارد:
Normal: این استراتژی از heuristics برای تعیین اینکه چه چیزی باید ذخیره شود استفاده میکند.
Pinned: کل volume در حافظه پنهان قرار دارد، بنابراین میتوان نرخ موفقیت cache را صد درصد تضمین کرد.
Aggressive: این استراتژی، استراتژی heuristics را نادیده میگیرد و همه چیز، از جمله ورودی/خروجی متوالی (فقط گزینه CLI) را در حافظه پنهان نگه میدارد. با این حال، بر خلاف استراتژی حافظه پنهان Pinned، بلوکهای حافظه پنهان میتوانند خارج شوند.
Cache disable: این استراتژی امکان غیرفعال کردن حافظه پنهان در volume خاصی را فراهم میکند.
تخلیه بلوک در پلتفرمهای هیبریدی
پس از درج بلوک در حافظه نهان فلش، فرآیندی به نام تخلیه مبتنی بر دسترسی (ABE) کاندیدهای بالقوه تخلیه را شناسایی میکند. ABE مکانیسمی بر اساس یک نقشه حرارتی است که دمای هر بلوک را حفظ میکند. در زمان درج، به هر بلوک یک دمای اولیه اختصاص داده میشود. محدوده دمای بلوک میتواند مفید بودن بلوک را در حافظه پنهان نشان دهد. دمای بلوک با هر دسترسی افزایش مییابد، اما در صورت عدم دسترسی به بلوک کاهش مییابد (سرد میشود).
علاوه بر این، اگر GC تشخیص دهد که حافظه نهان فلش به اندازه کافی در دسترس نیست، دمای تمام بلوکها را در بخشی از حافظه فلش SSD کاهش میدهد. نقشه حرارتی به همراه یک کپی از دیسک در حافظه ذخیره میشود. در نهایت، نقشه حرارتی به معماری اجازه میدهد تا volumeها و شاخصها را در حافظه پنهان پین کند و به برنامهها اجازه میدهد تا به نرخهای caching بسیار بالایی دست یابند.
همه چیز را کنار هم بگذارید
طرحبندی کامل متوالی همیشه میتواند به سه هدف دست یابد:
- نوشتن تصادفی متوالی (تبدیل بسیاری از نوشتههای تصادفی به تعداد کمی از عملیات متوالی بزرگ که کارآمدتر هستند)
- تخلیه سریع از حافظه، نوشتن بافر را برای ارائه عملکرد نوشتن سریع و قطعی فعال میکند.
- تسریع RAID مبتنی بر parity
به عنوان مثال، در یک نوار RAID با 20 داده و سه تکه parity بدون طرحبندی کامل متوالی، ممکن است هر نوشتن تصادفی منجر به، بهروز رسانی سه تکه parity شده و تعداد نوشتنها در چهار ضرب شود. اما از دیدگاه کلی I/O، این اثر حتی چشمگیرتر خواهد بود زیرا نسبت نوشتن به کل مقدار ورودی/خروجی انجام شده back end به میزان هشت برابر افزایش مییابد.
در مثال قبلی، با استفاده از طرحبندی کامل متوالی، بهروز رسانیهای parity در کل نوار سرشکن میشوند و ضریب تقویت نوشتن را به (20+3)/20 یا 1.15 کاهش میدهند. پیادهسازی CASL Triple Parity+ RAID در صورت خرابی همزمان سه درایو دسترسی مداوم به دادهها را فراهم میکند. همچنین مکانیسمهای بازیابی امکان دسترسی به دادهها از UREها را زمانی که هیچ افزونگی در نوار وجود ندارد، فراهم میکند.
معماری CASL از یک طرح کاملاً متوالی پشتیبانی میکند، که این طرح از اندازههای بلوک متغیر پشتیبانی میکند، بلوکها بدون توجه به تراز کردن مرزهای بلوک با مرزهای بخش در ذخیرهساز زیر بنایی بهم متصل میشوند. همچنین اندازههای بلوک متغیر از inline سریع، فشردهسازی بلوک متغیر بدون اصلاح مفاهیم خواندن و نوشتن و حذف دادههای تکراری بلوک متغیر inline و تنظیم خاص برنامهها پشتیبانی میکنند.
نکته بسیار مهم این است که اندازههای بلوک متغیر توانایی اضافه کردن شناسه بلوک (SBN) و جمع کنترلی را به هر بلوک فراهم میکند. داشتن SBN و checksum پلتفرم را قادر میسازد تا شرایط خطای غافلگیرکننده از جمله خرابی بلوک، نوشتن از دست رفته، نوشتن اشتباه و خواندن اشتباه را شناسایی و بازیابی کند.
CASL همچنان به راحتی معماری حافظه پنهان خود را با فناوریهای جدید از پشتیبانی شتابدهندههای تمام فلش تا دیسکهای چرخان و آرایههای تمام فلاش - با تغییر رسانههای زیربنایی، تطبیق میدهد. نقشه راه بعدی SCM و NVMe است.