Block Storage چیست و چه زمانی باید از آن استفاده کرد؟

وقتی یک سرور یا ماشین مجازی دیگر فضای کافی برای نگهداری اطلاعات ندارد، اضافه کردن فضای ذخیرهسازی در ظاهر کار سادهای است. اما در یک زیرساخت واقعی، فقط مقدار فضا اهمیت ندارد. نحوه دسترسی سیستم به اطلاعات، سرعت خواندن و نوشتن، امکان افزایش ظرفیت و نوع برنامهای که قرار است از این فضا استفاده کند، همگی در انتخاب روش مناسب ذخیرهسازی نقش دارند.
Block Storage یکی از روشهای رایج برای ارائه فضای ذخیرهسازی به سرورها و ماشینهای مجازی است. در این روش، فضای ذخیرهسازی به شکل Volume در اختیار سیستم قرار میگیرد و سیستمعامل میتواند با آن مانند یک دیسک کار کند.
این مدل در سرورها، ماشینهای مجازی، دیتابیسها و بسیاری از زیرساختهای ابری استفاده میشود. با این حال، Block Storage برای همه کاربردها مناسب نیست. در بعضی شرایط، File Storage یا Object Storage انتخاب منطقیتری هستند.
برای اینکه بتوان درباره انتخاب Storage تصمیم درستی گرفت، ابتدا باید نحوه کار Block Storage و تفاوت آن با سایر روشهای ذخیرهسازی را بشناسیم.
Block Storage چیست؟
در Block Storage، فضای ذخیرهسازی به بخشهایی در سطح Block تقسیم میشود و سیستمعامل میتواند آن را مانند یک دیسک در اختیار داشته باشد. این فضا معمولا به شکل یک Volume به سرور یا ماشین مجازی متصل میشود.
بعد از اتصال Volume، سیستمعامل میتواند روی آن Partition ایجاد کند، یک File System بسازد و سپس آن را برای ذخیره فایلها در اختیار برنامهها قرار دهد.
نکته مهم این است که خود Block Storage ساختار فایلها و پوشهها را مدیریت نمیکند. این کار بر عهده سیستمعامل و File System است. برای مثال، در یک سرور Linux میتوان یک Volume را دریافت کرد، روی آن File System مانند ext4 یا XFS ساخت و سپس آن را در یک مسیر مشخص Mount کرد.
به همین دلیل، برنامهای که روی سرور اجرا میشود، در نهایت میتواند با فایلهای موجود روی این فضا تقریبا مانند فایلهای یک دیسک معمولی کار کند.
همچنین Block Storage لزوما به معنی وجود یک هارد یا SSD فیزیکی جداگانه نیست. در یک زیرساخت ابری، ممکن است فضای ذخیرهسازی روی مجموعهای از تجهیزات قرار داشته باشد، اما برای ماشین مجازی به شکل یک Volume مستقل ارائه شود.
Block Storage چگونه کار میکند؟
استفاده از Block Storage معمولاً چند مرحله دارد. جزئیات ممکن است بین سرویسدهندگان مختلف یا سیستمعاملهای متفاوت فرق کند، اما روند کلی تقریباً یکسان است.
ایجاد Volume
ابتدا یک Volume با ظرفیت موردنظر ایجاد میشود. برای مثال، میتوان یک Volume با ظرفیت ۵۰۰ گیگابایت برای یک ماشین مجازی ساخت.
در بعضی سرویسها هنگام ایجاد Volume میتوان نوع فضای ذخیرهسازی و سطح عملکرد آن را نیز مشخص کرد.
اتصال Volume به سرور
در مرحله بعد، Volume به سرور یا ماشین مجازی متصل میشود. پس از اتصال، سیستمعامل باید بتواند فضای جدید را شناسایی کند.
در یک سرور Linux، برای مثال، ابزارهایی مانند lsblk میتوانند برای مشاهده دیسکها و Volumeهای متصل استفاده شوند.
ایجاد Partition و File System
اگر Volume از قبل آماده استفاده نباشد، میتوان روی آن Partition ایجاد کرد و سپس File System موردنظر را ساخت.
این مرحله مهم است، چون سیستمعامل برای مدیریت فایلها به File System نیاز دارد. انتخاب File System نیز میتواند به سیستمعامل و نوع استفاده از فضای ذخیرهسازی بستگی داشته باشد.
Mount کردن Volume
بعد از ایجاد File System، Volume در یک مسیر مشخص Mount میشود. از این مرحله به بعد، برنامهها میتوانند فایلهای خود را روی آن ذخیره کنند یا اطلاعات موجود را بخوانند.
در نتیجه، روند استفاده از Block Storage را میتوان اینطور خلاصه کرد: ایجاد Volume، اتصال آن به سرور، شناسایی توسط سیستمعامل، ایجاد File System و Mount کردن آن.
این روند تفاوت مهم Block Storage با سایر روشهای ذخیرهسازی را نشان میدهد. در اینجا فضای ذخیرهسازی در سطح پایین در اختیار سیستمعامل قرار میگیرد و خود سیستمعامل مسئول مدیریت فایلها و پوشههاست.
مهمترین ویژگیهای Block Storage چیست؟
Block Storage به دلیل نحوه ارائه فضای ذخیرهسازی، ویژگیهایی دارد که آن را برای بعضی از کاربردهای سروری، به گزینهای ایده آل تبدیل میکند.
دسترسی در سطح Block
سیستمعامل در Block Storage با فضای ذخیرهسازی در سطح Block کار میکند. بنابراین میتواند Partition و File System موردنیاز خود را روی آن ایجاد و مدیریت کند.
این ویژگی برای برنامههایی اهمیت دارد که انتظار دارند فضای ذخیرهسازی مانند یک دیسک معمولی در اختیارشان باشد.
امکان استفاده از File Systemهای مختلف
از آنجا که سیستمعامل مسئول مدیریت File System است، میتوان بر اساس سیستمعامل و نیاز برنامه، File System مناسب را انتخاب کرد.
برای مثال، در Linux میتوان از File Systemهایی مانند ext4 و XFS استفاده کرد.
امکان افزایش ظرفیت
در بسیاری از سرویسها میتوان ظرفیت یک Volume را افزایش داد. البته افزایش ظرفیت Volume به این معنی نیست که سیستمعامل همیشه بهصورت خودکار فضای جدید را قابل استفاده میکند.
ممکن است بعد از افزایش حجم، لازم باشد Partition یا File System نیز توسعه داده شود. بنابراین هنگام بررسی قابلیت افزایش ظرفیت باید کل فرایند را در نظر گرفت.
عملکرد قابل اندازهگیری
عملکرد فضای ذخیرهسازی را میتوان با معیارهایی مانند IOPS، Throughput و Latency بررسی کرد.
این سه معیار رفتار فضای ذخیرهسازی را از جنبههای متفاوتی نشان میدهند. برای مثال، یک دیتابیس ممکن است به تعداد زیادی عملیات خواندن و نوشتن سریع نیاز داشته باشد، در حالی که انتقال فایلهای حجیم بیشتر به سرعت انتقال اطلاعات وابسته است.
استفاده در سرورها و ماشینهای مجازی
Block Storage در محیطهای مجازی و ابری کاربرد زیادی دارد. یک Volume میتواند به یک ماشین مجازی متصل شود و در بسیاری از زیرساختها، ظرفیت آن جدا از منابعی مانند CPU و RAM مدیریت شود.
قابلیتهایی مانند جدا کردن Volume، اتصال دوباره آن یا استفاده از یک Volume در ماشین دیگر به معماری سرویس بستگی دارد.
تفاوت Block Storage، File Storage و Object Storage چیست؟
Block Storage، File Storage و Object Storage سه روش متفاوت برای ارائه و مدیریت اطلاعات هستند. تفاوت اصلی آنها در این است که سیستم چگونه به داده دسترسی پیدا میکند و چه بخشی از مدیریت اطلاعات بر عهده سیستمعامل یا خود فضای ذخیرهسازی قرار دارد.
در Block Storage، سیستمعامل با یک فضای ذخیرهسازی در سطح Block کار میکند و خودش File System را مدیریت میکند.
در File Storage، فایلها و پوشهها بخشی از ساختار خود فضای ذخیرهسازی هستند و چند سیستم میتوانند، در صورت پشتیبانی سرویس، به یک مجموعه فایل مشترک دسترسی داشته باشند.
در Object Storage، اطلاعات به شکل Object نگهداری میشوند و برنامه معمولا برای ذخیره یا دریافت آنها از API استفاده میکند.
| ویژگی | Block Storage | File Storage | Object Storage |
|---|---|---|---|
| نحوه دسترسی | در سطح Block | در سطح فایل | در سطح Object |
| ساختار داده | Volume و Block | فایل و پوشه | Object و Metadata |
| مدیریت File System | توسط سیستمعامل | توسط سرویس ذخیرهسازی | ندارد |
| دسترسی معمول | Server و VM | چند سیستم یا کاربر | Application و API |
| کاربرد رایج | VM، Server و Database | فایلهای اشتراکی | فایلهای حجیم، Backup و Archive |
| مقیاسپذیری | وابسته به سرویس | وابسته به سرویس | معمولا بسیار بالا |
هیچکدام از این سه روش را نمیتوان بهصورت مطلق مناسبتر از دیگری دانست. انتخاب باید بر اساس نوع اطلاعات و نحوه استفاده برنامه از آن انجام شود.
Block Storage
در Block Storage، یک Volume مانند یک دیسک در اختیار Server یا VM قرار میگیرد. سیستمعامل میتواند روی آن File System ایجاد کند و برنامهها از طریق همان File System به اطلاعات دسترسی داشته باشند.
این روش برای ماشینهای مجازی، سرورها و برنامههایی که به فضای ذخیرهسازی شبیه دیسک نیاز دارند، کاربرد زیادی دارد.
File Storage
در File Storage، اطلاعات در قالب فایل و پوشه سازماندهی میشوند. یکی از کاربردهای مهم این روش زمانی است که چند سیستم باید به فایلهای مشترک دسترسی داشته باشند.
برای مثال، اگر چند سرور نیاز داشته باشند مجموعهای از فایلها را بخوانند و تغییر دهند، File Storage میتواند با این نیاز سازگار باشد.
Object Storage
در Object Storage، اطلاعات به شکل Object ذخیره میشوند و هر Object میتواند علاوه بر داده اصلی، اطلاعاتی مانند Metadata نیز داشته باشد.
برنامهها معمولا از طریق API با Object Storage ارتباط برقرار میکنند. به همین دلیل این روش برای نگهداری حجم زیادی از فایلها، تصاویر، ویدئوها، Backupها و سایر اطلاعاتی که نیازی به قرار گرفتن روی یک دیسک معمولی ندارند، کاربرد زیادی دارد.
Block Storage چه کاربردهایی دارد؟
Block Storage بیشتر در شرایطی استفاده میشود که برنامه به فضای ذخیرهسازی شبیه یک دیسک نیاز داشته باشد.
ذخیرهسازی ماشینهای مجازی
هر ماشین مجازی برای سیستمعامل و برنامههای خود به فضای ذخیرهسازی نیاز دارد. در بسیاری از زیرساختهای ابری، این فضا به شکل یک یا چند Volume در اختیار ماشین قرار میگیرد.
این روش اجازه میدهد ظرفیت فضای ذخیرهسازی جدا از CPU و RAM ماشین مدیریت شود. برای مثال، ممکن است بدون تغییر مشخصات پردازشی ماشین، یک Volume جدید به آن اضافه شود.
دیتابیسها
دیتابیسها معمولا تعداد زیادی عملیات خواندن و نوشتن انجام میدهند و به زمان پاسخ مناسب نیاز دارند. به همین دلیل، عملکرد فضای ذخیرهسازی میتواند تاثیر مستقیمی بر عملکرد دیتابیس داشته باشد.
Block Storage در چنین شرایطی میتواند گزینه مناسبی باشد، بهخصوص اگر سرویس موردنظر IOPS و Latency مناسبی ارائه دهد.
البته انتخاب فضای ذخیرهسازی مناسب به نوع دیتابیس، حجم اطلاعات و نحوه خواندن و نوشتن دادهها بستگی دارد. MySQL و PostgreSQL هر دو میتوانند روی Block Storage اجرا شوند، اما نیازهای واقعی هر برنامه باید جداگانه بررسی شود.
اجرای برنامهها
بسیاری از برنامهها برای ذخیره اطلاعات به فایل و پوشه نیاز دارند. برای چنین برنامههایی میتوان یک Volume را به سرور متصل کرد و آن را در اختیار سیستمعامل قرار داد.
برنامه در این حالت بدون نیاز به شناخت معماری داخلی فضای ذخیرهسازی، از طریق File System با فایلها کار میکند.
افزایش فضای ذخیرهسازی سرور
گاهی فضای دیسک اصلی سرور برای نگهداری اطلاعات کافی نیست. در این شرایط میتوان یک Volume جداگانه به سرور اضافه کرد و بخشی از اطلاعات را روی آن قرار داد.
برای مثال، میتوان فایلهای حجیم، لاگها یا اطلاعات یک برنامه خاص را روی Volume جداگانه نگهداری کرد.
محیطهای توسعه و آزمایش
در محیطهای توسعه و آزمایش، ماشینهای مجازی ممکن است مرتباً ایجاد یا حذف شوند. استفاده از Volumeهای جداگانه میتواند مدیریت فضای ذخیرهسازی این ماشینها را سادهتر کند.
اگر سرویس موردنظر از Snapshot یا تغییر اندازه Volume پشتیبانی کند، این قابلیتها نیز میتوانند در چنین محیطهایی کاربردی باشند.
چه زمانی باید از Block Storage استفاده کنیم؟
اگر برنامه به یک File System نیاز دارد و قرار است فضای ذخیرهسازی مستقیماً در اختیار یک Server یا ماشین مجازی قرار بگیرد، Block Storage میتواند گزینه مناسبی باشد.
این روش زمانی اهمیت بیشتری پیدا میکند که عملکرد فضای ذخیرهسازی برای برنامه مهم باشد. برای مثال، دیتابیسی که تعداد زیادی عملیات خواندن و نوشتن انجام میدهد، ممکن است به IOPS بالا و Latency پایین نیاز داشته باشد.
قابلیت افزایش ظرفیت نیز میتواند عامل مهمی باشد. اگر حجم اطلاعات برنامه در آینده افزایش پیدا میکند، امکان بزرگتر کردن Volume بدون جایگزین کردن کل فضای ذخیرهسازی میتواند مدیریت سرور را سادهتر کند.
در بعضی زیرساختها نیز ممکن است بخواهید فضای ذخیرهسازی را از خود ماشین جدا نگه دارید. در این حالت، Volume میتواند مستقل از ماشین مدیریت شود و در صورت پشتیبانی سرویس، در شرایط مشخص به ماشین دیگری متصل شود.
بهطور کلی، اگر برنامه به فضای ذخیرهسازی شبیه یک دیسک نیاز دارد، عملکرد آن اهمیت دارد و احتمال افزایش ظرفیت در آینده وجود دارد، Block Storage یکی از گزینههایی است که باید بررسی شود.
چه زمانی Block Storage انتخاب مناسبی نیست؟
Block Storage برای هر نوع اطلاعاتی طراحی نشده است. گاهی انتخاب روش دیگری میتواند مدیریت دادهها را سادهتر و متناسبتر با نیاز برنامه کند.
زمانی که حجم زیادی از اطلاعات غیرساختاریافته دارید
اگر قرار است حجم بسیار زیادی از تصاویر، ویدئوها، فایلهای Backup یا اطلاعات مشابه نگهداری شود و برنامه از طریق API با آنها کار کند، Object Storage میتواند گزینه مناسبتری باشد.
در چنین شرایطی، استفاده از یک فضای ذخیرهسازی شبیه دیسک همیشه ضروری نیست.
زمانی که چند سیستم باید به فایلهای مشترک دسترسی داشته باشند
اگر چند سرور باید به یک مجموعه فایل و پوشه مشترک دسترسی داشته باشند، File Storage میتواند انتخاب مناسبتری باشد.
Block Storage معمولاً به شکل یک Volume در اختیار یک سرور یا ماشین قرار میگیرد و اشتراکگذاری آن میان چند سیستم به قابلیتهای زیرساخت بستگی دارد.
زمانی که هدف اصلی Backup و Archive است
برای Backup و Archive، عواملی مانند هزینه، ظرفیت، مدت نگهداری و امکان بازیابی اهمیت زیادی دارند.
بنابراین نباید صرفاً به دلیل اینکه Block Storage مانند یک دیسک در دسترس است، تمام نسخههای پشتیبان را روی آن نگهداری کرد. بسته به نیاز، Object Storage یا روشهای دیگر ذخیرهسازی میتوانند گزینههای مناسبتری باشند.
زمانی که برنامه به روش خاصی برای ذخیره اطلاعات نیاز دارد
برخی برنامهها برای کار کردن به ویژگی مشخصی از فضای ذخیرهسازی نیاز دارند. ممکن است یک برنامه به فایلهای مشترک نیاز داشته باشد، برنامه دیگری از API برای ذخیره اطلاعات استفاده کند و برنامهای دیگر به یک دیسک مستقیم نیاز داشته باشد.
به همین دلیل، انتخاب فضای ذخیرهسازی باید از نیاز برنامه شروع شود، نه از اینکه کدام نوع فضای ذخیرهسازی در یک سرویس در دسترس است.
هنگام انتخاب Block Storage باید چه معیارهایی را بررسی کنیم؟
ظرفیت تنها یکی از معیارهای انتخاب است. اگر قرار است Block Storage برای یک پروژه واقعی استفاده شود، موارد زیر نیز باید بررسی شوند.
ظرفیت
مشخص کنید برنامه در حال حاضر به چه مقدار فضا نیاز دارد و اطلاعات آن در آینده با چه سرعتی افزایش پیدا میکند.
اگر رشد اطلاعات قابل توجه است، امکان افزایش ظرفیت Volume میتواند اهمیت زیادی داشته باشد.
IOPS
IOPS تعداد عملیات خواندن و نوشتن در واحد زمان را نشان میدهد.
این معیار برای برنامههایی که تعداد زیادی عملیات کوچک انجام میدهند، اهمیت بیشتری دارد. دیتابیسها نمونهای از چنین برنامههایی هستند.
Throughput
Throughput مقدار دادهای را نشان میدهد که در واحد زمان خوانده یا نوشته میشود.
اگر برنامه با فایلهای بزرگ یا حجم زیادی از داده سروکار دارد، Throughput میتواند اهمیت بیشتری نسبت به تعداد عملیات داشته باشد.
Latency
Latency مدت زمانی است که فضای ذخیرهسازی برای پاسخ به یک درخواست نیاز دارد.
در برنامههایی که به پاسخ سریع برای هر عملیات ذخیرهسازی نیاز دارند، Latency پایین اهمیت زیادی پیدا میکند.
نوع دیسک
SSD و HDD رفتار متفاوتی دارند. SSD معمولا برای کاربردهایی که به زمان دسترسی کمتر و عملیات خواندن و نوشتن بیشتری نیاز دارند، مناسبتر است، در حالی که HDD میتواند برای برخی کاربردهای کمهزینهتر و کمتر حساس به عملکرد استفاده شود.
البته عملکرد نهایی فقط به نوع دیسک وابسته نیست و مشخصات سرویس نیز اهمیت دارد.
Snapshot
اگر سرویس موردنظر از Snapshot پشتیبانی میکند، باید بررسی کنید Snapshot چگونه ایجاد میشود، چه مقدار فضا مصرف میکند، هزینه آن چقدر است و بازیابی اطلاعات از آن چگونه انجام میشود.
Snapshot میتواند برای ایجاد یک نقطه بازگشت سریع مفید باشد، اما نباید آن را با Backup یکی دانست.
Backup
Backup باید جدا از Snapshot بررسی شود. یک نسخه پشتیبان مناسب باید در برابر سناریوهای مختلف از دست رفتن اطلاعات قابل استفاده باشد.
محل نگهداری نسخههای پشتیبان، تعداد نسخهها، مدت نگهداری و روش بازیابی از جمله مواردی هستند که باید از قبل مشخص شوند.
امکان افزایش ظرفیت
بررسی کنید آیا میتوان حجم Volume را افزایش داد و برای استفاده از فضای اضافه چه تغییراتی در سیستمعامل لازم است.
همچنین باید مشخص شود که افزایش ظرفیت بدون خاموش کردن سرور انجام میشود یا به توقف سرویس نیاز دارد.
دسترسپذیری و افزونگی
فضای ذخیرهسازی باید از نظر دسترسپذیری و مقاومت در برابر خرابی نیز بررسی شود.
اینکه دادهها روی یک دیسک فیزیکی قرار دارند یا در یک زیرساخت دارای افزونگی نگهداری میشوند، تفاوت مهمی در میزان ریسک از دسترس خارج شدن اطلاعات ایجاد میکند.
هزینه
قیمت را فقط بر اساس مقدار فضا مقایسه نکنید. در بعضی سرویسها هزینه IOPS، Snapshot، Backup یا انتقال اطلاعات نیز میتواند روی هزینه نهایی تاثیر داشته باشد.
بنابراین بهتر است هزینه واقعی استفاده از فضای ذخیرهسازی را بر اساس نیاز کل پروژه محاسبه کنید.
IOPS، Throughput و Latency در Block Storage چه تفاوتی دارند؟
برای درک عملکرد Block Storage، سه مفهوم IOPS، Throughput و Latency اهمیت زیادی دارند.
IOPS تعداد عملیات ورودی و خروجی در واحد زمان است. هرچه تعداد عملیات خواندن و نوشتن یک برنامه بیشتر باشد، IOPS اهمیت بیشتری پیدا میکند.
Throughput مقدار دادهای است که در واحد زمان منتقل میشود. برای مثال، هنگام خواندن یا نوشتن فایلهای بسیار بزرگ، سرعت انتقال داده اهمیت زیادی دارد.
Latency مدت زمانی است که طول میکشد فضای ذخیرهسازی به یک درخواست پاسخ دهد. در برنامههایی که عملیات زیادی با اندازه کوچک انجام میدهند، Latency میتواند تاثیر قابل توجهی داشته باشد.
برای مثال، یک دیتابیس ممکن است به IOPS بالا و Latency پایین نیاز داشته باشد، زیرا دائماً درخواستهای کوچک خواندن و نوشتن انجام میدهد. در مقابل، هنگام انتقال یک فایل چند گیگابایتی، Throughput اهمیت بیشتری پیدا میکند.
به همین دلیل، نمیتوان عملکرد دو فضای ذخیرهسازی را فقط با یک عدد مقایسه کرد. باید دید برنامه دقیقاً چه نوع عملیات ذخیرهسازی انجام میدهد.
آیا Block Storage برای دیتابیس مناسب است؟
Block Storage میتواند برای دیتابیس مناسب باشد، اما پاسخ این سوال برای همه دیتابیسها و همه شرایط یکسان نیست.
دیتابیسهایی مانند MySQL و PostgreSQL معمولاً عملیات خواندن و نوشتن زیادی انجام میدهند و به فضای ذخیرهسازی با عملکرد پایدار نیاز دارند. در چنین شرایطی، IOPS و Latency میتوانند تاثیر زیادی بر عملکرد دیتابیس داشته باشند.
با این حال، انتخاب فضای ذخیرهسازی باید بر اساس نوع دیتابیس، حجم اطلاعات، تعداد درخواستها و نحوه خواندن و نوشتن دادهها انجام شود.
برای مثال، یک دیتابیس کوچک با تعداد کاربران محدود ممکن است به همان سطح عملکردی نیاز نداشته باشد که یک دیتابیس بزرگ با حجم بالای درخواستهای همزمان نیاز دارد.
بنابراین نمیتوان صرفاً گفت «Block Storage برای دیتابیس مناسب است». باید مشخصات واقعی دیتابیس و فضای ذخیرهسازی در کنار یکدیگر بررسی شوند.
Snapshot در Block Storage چیست و چه تفاوتی با Backup دارد؟
Snapshot یک تصویر از وضعیت Volume در یک زمان مشخص است که میتوان از آن برای بازگرداندن فضای ذخیرهسازی به یک وضعیت قبلی استفاده کرد.
برای مثال، پیش از انجام یک تغییر مهم روی سرور میتوان از Volume مربوط به آن Snapshot گرفت. اگر تغییرات باعث ایجاد مشکل شوند، در صورت پشتیبانی سرویس میتوان Volume را از Snapshot بازیابی کرد.
اما Snapshot جایگزین Backup نیست.
Snapshot معمولا برای ایجاد یک نقطه بازگشت سریع استفاده میشود، در حالی که Backup با هدف محافظت بلندمدت از اطلاعات و بازیابی آنها در شرایط مختلف طراحی میشود.
یکی از تفاوتهای مهم این است که Snapshot ممکن است همچنان به همان زیرساخت ذخیرهسازی وابسته باشد. بنابراین اگر مشکل گستردهای برای آن زیرساخت ایجاد شود، تکیه صرف بر Snapshot میتواند کافی نباشد.
در یک سیستم مناسب، Snapshot و Backup میتوانند در کنار یکدیگر استفاده شوند، اما هرکدام نقش متفاوتی دارند.
Block Storage در محیطهای ابری چه نقشی دارد؟
در بسیاری از سرویسهای ابری، ماشین مجازی و فضای ذخیرهسازی میتوانند جدا از یکدیگر مدیریت شوند.
برای مثال، ابتدا یک VM ایجاد میشود و سپس یک یا چند Volume به آن متصل میشوند. در صورت پشتیبانی سرویس، میتوان ظرفیت Volume را جداگانه افزایش داد یا از آن Snapshot گرفت.
در بعضی سرویسها حتی میتوان یک Volume را از یک ماشین جدا کرد و به ماشین دیگری متصل کرد. البته چنین قابلیتی در همه سرویسها یکسان نیست و باید محدودیتهای سرویس موردنظر بررسی شود.
این ساختار به مدیر سیستم اجازه میدهد فضای ذخیرهسازی را متناسب با نیاز ماشین مدیریت کند، بدون اینکه الزاماً مشخصات CPU و RAM را تغییر دهد.
یک مثال عملی برای انتخاب نوع فضای ذخیرهسازی
فرض کنید یک فروشگاه اینترنتی در حال رشد است و چند نوع اطلاعات مختلف دارد: دیتابیس محصولات و سفارشها، تصاویر محصولات، فایلهای Backup، فایلهای لاگ و اطلاعات کاربران.
همه این اطلاعات الزاماً به یک نوع فضای ذخیرهسازی نیاز ندارند.
دیتابیس محصولات و سفارشها ممکن است به فضای ذخیرهسازی با IOPS مناسب و Latency پایین نیاز داشته باشد. در این قسمت، Block Storage میتواند یکی از گزینههای مناسب برای بررسی باشد.
تصاویر محصولات و فایلهای حجیم شرایط متفاوتی دارند. اگر برنامه فقط لازم باشد این فایلها را ذخیره و دریافت کند، Object Storage میتواند انتخاب مناسبتری باشد.
اگر چند سرور باید به مجموعهای از فایلها و پوشههای مشترک دسترسی داشته باشند، File Storage میتواند گزینه مناسبتری باشد.
برای Backup نیز میتوان از فضای ذخیرهسازی جداگانه استفاده کرد تا نسخههای پشتیبان از اطلاعات اصلی مستقل باشند.
در نتیجه، یک پروژه واقعی ممکن است همزمان از چند روش ذخیرهسازی استفاده کند. انتخاب درست به نوع اطلاعات و نحوه استفاده برنامه از آنها بستگی دارد.
چکلیست سریع؛ آیا Block Storage برای پروژه من مناسب است؟
برای یک بررسی اولیه، این سوالها را درباره پروژه خود مطرح کنید:
- آیا برنامه به File System نیاز دارد؟
- آیا فضای ذخیرهسازی باید مستقیماً در اختیار یک Server یا VM قرار بگیرد؟
- آیا IOPS و Latency روی عملکرد برنامه تاثیر دارند؟
- آیا احتمال افزایش فضای ذخیرهسازی در آینده وجود دارد؟
- آیا میخواهید فضای ذخیرهسازی را جدا از CPU و RAM مدیریت کنید؟
- آیا برنامه با فایل و پوشه کار میکند؟
اگر پاسخ چند مورد از این سوالها «بله» است، Block Storage میتواند یکی از گزینههای قابل بررسی باشد. با این حال، این پاسخها بهتنهایی برای انتخاب نهایی کافی نیستند.
نوع اطلاعات، نحوه دسترسی برنامه، میزان استفاده، عملکرد موردنیاز، دسترسپذیری، روش Backup و هزینه نیز باید در نظر گرفته شوند.
انتخاب فضای ذخیرهسازی باید از نیاز برنامه شروع شود
Block Storage روشی برای ارائه فضای ذخیرهسازی در سطح Block است که در آن سیستمعامل میتواند Volume را مانند یک دیسک مدیریت کند. این ویژگی باعث میشود Block Storage برای سرورها، ماشینهای مجازی، برنامههایی که به File System نیاز دارند و بسیاری از دیتابیسها کاربرد داشته باشد.
در کنار آن، ویژگیهایی مانند امکان افزایش ظرفیت، Snapshot و جداسازی فضای ذخیرهسازی از سرور میتوانند مدیریت زیرساخت را سادهتر کنند. البته نحوه ارائه این قابلیتها به سرویس مورد استفاده بستگی دارد.
در مقابل، Block Storage برای همه اطلاعات انتخاب مناسبی نیست. File Storage زمانی کاربرد بیشتری دارد که چند سیستم به فایلهای مشترک نیاز داشته باشند و Object Storage برای بسیاری از فایلهای حجیم، Backupها، آرشیوها و اطلاعاتی که از طریق برنامه به آنها دسترسی پیدا میشود، گزینه متفاوتی ارائه میکند.
بنابراین برای انتخاب روش مناسب، ابتدا باید ببینید برنامه با اطلاعات چگونه کار میکند. بعد از آن میتوان ظرفیت، IOPS، Throughput، Latency، نوع دیسک، قابلیت Snapshot، Backup، دسترسپذیری و هزینه را بررسی کرد.
در نهایت، انتخاب بین Block Storage، File Storage و Object Storage نباید بر اساس نام یا محبوبیت یک فناوری انجام شود. نیاز برنامه و نحوه استفاده از اطلاعات باید نقطه شروع انتخاب باشد.
سوالات متداول
Block Storage نوعی فضای ذخیرهسازی است که دادهها را در بلوکهای مستقل ذخیره میکند و سیستمعامل میتواند آن را مانند یک دیسک یا درایو مجزا شناسایی و استفاده کند. این نوع ذخیرهسازی معمولا برای سرورها، پایگاههای داده و برنامههایی که به دسترسی مستقیم و قابل پیشبینی به فضای ذخیرهسازی نیاز دارند استفاده میشود.
در Block Storage، فضای ذخیرهسازی بهصورت بلوک در اختیار سیستمعامل قرار میگیرد و سیستمعامل میتواند روی آن فایلسیستم ایجاد کند. در File Storage، فایلها و پوشهها مستقیما توسط سرویس ذخیرهسازی مدیریت میشوند و معمولا از طریق پروتکلهایی مانند NFS یا SMB در دسترس قرار میگیرند.
از دید سیستمعامل، Block Storage میتواند مانند یک دیسک یا درایو معمولی دیده شود، اما لزوما یک هارد فیزیکی مستقل نیست. در زیرساختهای ابری، Block Storage معمولا بهصورت یک فضای ذخیرهسازی مجازی ارائه میشود که به یک سرور متصل است.
اجرای پایگاه داده، ذخیره فایلهای برنامه، نصب سیستمعامل، نگهداری ماشینهای مجازی و برنامههایی که به دسترسی مستقیم به دیسک نیاز دارند، از کاربردهای رایج Block Storage هستند.
این موضوع به سرویس و زیرساخت ارائهدهنده بستگی دارد. برخی سرویسهای Block Storage امکان اتصال همزمان به چند سرور را فراهم میکنند، اما در حالت عادی باید فرض کرد هر فضای ذخیرهسازی برای استفاده توسط یک سرور در نظر گرفته شده است؛ مگر اینکه سرویس از دسترسی اشتراکی و فایلسیستم مناسب پشتیبانی کند.
Block Storage مانند یک دیسک در اختیار سیستمعامل قرار میگیرد، در حالی که Object Storage دادهها را بهصورت شیء و همراه با اطلاعات توصیفی ذخیره میکند و معمولا از طریق API قابل دسترسی است. Block Storage برای اجرای برنامهها و پایگاههای داده مناسبتر است، در حالی که Object Storage بیشتر برای آرشیو، پشتیبانگیری و نگهداری حجم زیادی از فایلها استفاده میشود.
بله. امکان دسترسی مستقیم سیستمعامل به فضای ذخیرهسازی و قابلیت ارائه عملکرد قابل پیشبینی، Block Storage را به گزینهای رایج برای پایگاههای داده تبدیل کرده است. سرعت و کارایی واقعی آن به فناوری ذخیرهسازی، IOPS، تاخیر و مشخصات سرویس ارائهدهنده بستگی دارد.
در بسیاری از سرویسها میتوان ظرفیت Block Storage را افزایش داد. البته بعد از افزایش ظرفیت فضای ذخیرهسازی، ممکن است لازم باشد فایلسیستم یا پارتیشن نیز در سیستمعامل گسترش پیدا کند تا فضای اضافهشده قابل استفاده باشد.




























شما میتوانید دیدگاه خود را در مورد این مطلب با ما با اشتراک بگذارید.