Data Storage Networking؛ LUN چیست و کش چه نقشی در آرایه‌های ذخیره‌ساز دارد؟-بخش دوم

Data Storage Networking؛ LUN چیست و کش چه نقشی در آرایه‌های ذخیره‌ساز دارد؟-بخش دوم

Data Storage Networking؛ LUN چیست و کش چه نقشی در آرایه‌های ذخیره‌ساز دارد؟-بخش دوم

Data Storage Networking؛ LUN چیست و کش چه نقشی در آرایه‌های ذخیره‌ساز دارد؟-بخش دوم

مزایای عملکردی کش

دلیل وجود حافظه نهان در یک آرایه ذخیره‌سازی مبتنی بر دیسک چرخان، افزایش عملکرد است. اگر بتوان یک عملیات I/O را از حافظه نهان، بدون نیاز به رفتن به دیسک پشتیبان، مدیریت کرد، عملیات صدها برابر سریع‌تر انجام می‌شود. یک کش که به‌خوبی پیاده‌سازی شده باشد، ضعف‌های دیسک‌های مکانیکی را می‌پوشاند. در رابطه با آرایه‌های تمام فلش، کش DRAM عملکردی سریع‌تر از فلش دارد و می‌توان از آن به روشی مشابه استفاده کرد، ولی مزایای عملکردی مستقیم آن چندان آشکار نیست.

به همین دلیل ضروری است قبل از آن‌که یک تأییده ACK برای میزبان صادر شود، عملیات خواندن و نوشتن به آرایه ابتدا به کشی وارد شود که خود از دو بخش برای نوشتن در نظر گرفته شده‌اند. در ادامه این امکان ‌وجود دارد تا عملیات ورودی/خروجی را به دیسک انتقال داد. این رفتار سرعت ACK‌ها را بهبود می‌بخشد. این روش عملیاتی write-back caching نامیده می‌شود. اگر خطاهایی در حافظه نهان وجود داشته باشد، به‌طوری که اطلاعات دریافتی را نتوان به حافظه نهان وارد کرد، آرایه تا زمانی که داده‌ها در وضعیت ایمن قرار نگرفته باشند، هیچ پیام ACK صادر نمی‌کنند.

در این حالت، بازدهی آرایه به میزان قابل توجهی کاهش پیدا می‌کند، زیرا آرایه به حالت write-through mode وارد می‌شود و عملیات نوشتن کندتر می‌شود.

هنگامی که آرایه‌ای به وضعیت write-through mode وارد شود و حجم زیادی از اطلاعات درون حافظه کش قرار داشته باشند، این امکان وجود دارد تا در بازه‌های زمانی بلندمدت اطلاعاتی که درون حافظه کش قرار دارند، از دست بروند. در این سناریو، حافظه نهان می‌تواند تا حد مشخصی خدمت‌رسانی کند که اغلب به آن واترمارک در انتظار نوشتن بالا (high write pending watermark) گفته می‌شود.

پس از وارد شدن به این حالت، آرایه‌ها به حالت فلش اجباری یا حالت دستاژ حافظه نهان اضطراری می‌روند، جایی که سعی می‌کنند در حالت write-through به‌طور مؤثر فرآیند نوشتن از حافظه نهان را مدیریت کنند و در همان زمان دستوراتی برای میزبان‌ها ارسال و آن‌ها را مجبور می‌کنند تا سرعت عملیات خواندن/نوشتن را کاهش دهند که به هیچ عنوان اتفاق خوبی نیست.

Read Cache and Write Cache

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

البته در ارتباط با آرایه‌های کوچک‌تر که بارهای کاری خاص و شناخته شده‌ای دارند، بهتر است این مدیریت توسط کاربر انجام شود، ارتباط با آرایه‌های بزرگ‌تر با بارهای کاری تصادفی و مکرر در حال تغییر، بهتر است مدیریت کارها به آرایه واگذار شود.

کش داده و کش کنترل (Data Cache and Control Cache)

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

Cache Hits و Cache Misses

یک cache hit هنگامی اتفاق می‌افتد که درخواست خواندنی توسط آرایه دریافت می‌شود و داده‌های درخواست شده از قبل در حافظه نهان قرار دارند. این موضوع گاهی تحت عنوان read hit نامیده می‌شود. Read Hit سریع‌ترین نوع عملیات خواندن هستند. البته اگر داده‌ها در حافظه کش وجود نداشته باشند و باید از دیسک پشتیبان واکشی شوند، در این حالت وضعیتی به‌نام Cache Misses یا read miss به وجود می‌آید.

خطاهای مربوط به عملیات خواندن read misses به طرز قابل توجهی کندتر از read hits هستند. تعداد read hits دریافتی به حجم بارهای کاری I/O بستگی دارد. اگر حجم کاری شما دارای موقعیت ارجاعی بالایی است، باید نتایج خواندن خوبی (read hits) دریافت کنید. در ارتباط با عملیات نوشتن، اگر حافظه نهان به‌درستی کار کند، هنگامی‌که داده‌ها در حافظه نهان قرار می‌گیرند، می‌توان یک ACK برای میزبان صادر و اعلام کرد که cache hit در حال انجام است. در یک آرایه کاملاً کارآمد، باید آمار ۱۰۰ درصدی در ارتباط با cache hit را مشاهده کنید.

محافظت از کش (Protecting Cache)

از آن‌جایی که حافظه کش در عملکرد روان یک آرایه نقش کلیدی دارد، اغلب از طریق مکانیزم‌هایی مثل قرینه‌سازی و باتری‌ها از آن محافظت می‌شود. در محیط‌های مبتنی بر شبکه‌های مجازی یا شبکه‌های SAN که آرایه‌های ذخیره‌ساز در آن‌ها قرار دارد، باید به طریقی    از کش آرایه‌های ذخیره‌ساز اصلی در برابر قطعی برق یا خرابی‌ها محافظت کرد.

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

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

همه آرایه‌های ذخیره‌ساز خوب، علاوه بر قرینه‌سازی، دارای باتری‌هایی هستند که در صورت قطع برق، نیروی کش را تأمین می‌کنند. به یاد داشته باشید که کش DRAM فرار است و با قطع برق محتویات خود را از دست می‌دهد. باتری‌ها در چنین شرایطی مانع از دست رفتن اطلاعات درون DRAM می‌شوند.

باتری‌ها توان کافی را برای آرایه فراهم می‌کنند تا محتویات حافظه کش را قبل از خاموش شدن کامل به رسانه‌های ذخیره‌ساز انتقال دهد یا به اندازه کافی انرژی موردنیاز ماژول‌های حافظه درونی دوگانه (DIMM) سرنام Dual Inline Memory Modules را تأمین‌ می‌کنند تا بتوان پس از بازگشت برق محتویات آن‌ها را بازیابی یا انتقال داد.

در ارتباط با حافظه کش توجه داشته باشید که تنها عملیات نوشتن باید به حافظه کش قرینه شوند. داده‌های خوانده شده از قبل در پشتیبان به شکل غیرفرار و در وضعیت محافظت‌شده قرار دارند، از این‌رو، انعکاس عملیات خواندن‌ها در حافظه کش تنها باعث اتلاف حافظه کش می‌شود. محافظت از حافظه کش با استفاده از باتری‌ها مشکل فرار بودن اطلاعات در کش را برطرف می‌کنند. حافظه کش غیرفرار اغلب به عنوان حافظه دسترسی تصادفی غیرفرار (NVRAM) سرنام nonvolatile random access memory نامیده می‌شود.

مطالب مرتبط

پاسخی بگذارید