OpenEBS چیست؟
OpenEBS یک پروژه متنباز Container-Native Storage است که عضو CNCF (Cloud Native Computing Foundation) محسوب میشود. OpenEBS مدیریت Persistent Volume را در کوبرنیتیز ساده میکند و اجازه میدهد بدون وابستگی به سختافزار خاص، فضای ذخیرهسازی برای کاربردهای Stateful (مثل دیتابیسها) فراهم کنید. OpenEBS برخلاف راهحلهای سنتی ذخیرهسازی که به سختافزار خاصی گره خوردهاند، کاملاً روی نرمافزار اجرا میشود و از دیسکهای محلی نودها برای ساخت Pool و Volume استفاده میکند.
اگر با مفاهیم فایلسیستم و Volume Manager آشنا نیستید، خواندن پست مقایسه فایلسیستمها و Volume Managerها کمک میکند زمینه بهتری از LVM و ZFS داشته باشید که OpenEBS هم از آنها استفاده میکند.
معماری OpenEBS
OpenEBS از چندین لایه تشکیل شده است. لایه اصلی آن Data Engine است که وظیفه سرو دادن I/O به کاربردها را دارد. Data Engineها به دو دسته کلی تقسیم میشوند:
- Local Storage (انجین محلی): فضای ذخیرهسازی را فقط روی همان نودی که Pod اجرا میشود فراهم میکند. داده کپی نمیشود.
- Replicated Storage (انجین تکرارشده): داده را همزمان روی چند نود کپی میکند و در صورت خرابی یک نود، داده همچنان در دسترس است.
انتخاب بین این دو دسته به دو عامل بستگی دارد: قابلیتهای نود (CPU، RAM، شبکه، نوع دیسک) و قابلیتهای کاربرد Stateful (اینکه خودش Replication دارد یا نه).
چه زمانی از کدام انجین استفاده کنیم؟
انتخاب انجین مناسب به معماری کلاستر و نوع کاربرد شما بستگی دارد. جدول زیر راهنمای انتخاب بر اساس اندازه کلاستر و مدل استقرار ذخیرهسازی است:
| معیار | تکنودی | چندنودی Hyperconverged | چندنودی Disaggregated |
|---|---|---|---|
| مدل ذخیرهسازی | Hyperconverged | Hyperconverged | تفکیکشده |
| وضعیت نود | غیرموقت (Non-Ephemeral) | غیرموقت (Non-Ephemeral) | موقت (Ephemeral) |
| انجین پیشنهادی | Local Storage | Local + Replicated | Replicated Storage |
همچنین انتخاب انجین به نوع کاربرد Stateful بستگی دارد:
| نوع کاربرد | قابلیت مورد نیاز | انجین پیشنهادی |
|---|---|---|
| Distributed (مثل MongoDB Cluster، Cassandra) | کارایی | Local Storage |
| Standalone (مثل MySQL تکنودی) | دسترسیپذیری | Replicated Storage |
| Distributed یا Standalone | کارایی + دسترسیپذیری | Replicated Storage |
Local Storage (انجینهای محلی)
انجینهای Local Storage فضای ذخیرهسازی را از دیسکهای محلی نود یا hostpath میگیرند و بدون کپی کردن داده، آن را در اختیار Pod قرار میدهند. این انجینها برای کاربردهایی مناسب هستند که خودشان Replication و Availability را مدیریت میکنند (مثل MongoDB Cluster یا Cassandra) یا برای کاربردهای کوتاهمدت مثل ML jobs یا کلاسترهای Edge تکنودی.
هشدار: Local Storage فقط از همان نودی که Volume ساخته شده در دسترس است. اگر آن نود خراب شود، Pod نمیتواند به نود دیگر منتقل شود و به داده دسترسی پیدا کند.
مقایسه انجینهای Local Storage
| ویژگی | Local PV Hostpath | Local PV LVM | Local PV ZFS |
|---|---|---|---|
| کارایی نزدیک به دیسک | ✓ | ✓ | — |
| بکاپ و Restore با Velero | ✓ | ✓ | ✓ |
| Thin Provisioning | ✓ | ✓ | ✓ |
| افزایش حجم آنلاین | ✓ | ✓ | ✓ |
| Pool / Aggregate دیسک | ✓ | ✓ | ✓ |
| RAID / Disk Resiliency | ✓ | ✓ | ✓ |
| Snapshot | — | ✓ | ✓ |
| بکاپ افزایشی (Incremental) | — | ✓ | ✓ |
| Clone | — | — | ✓ |
Local PV Hostpath
سادهترین انجین OpenEBS است که از hostpath نود برای ساخت Persistent Volume استفاده میکند. مناسبترین گزینه برای شروع کار با OpenEBS و محیطهای توسعه یا Edge است. کارایی آن نزدیک به کارایی دیسک خام است اما قابلیت snapshot و clone ندارد.
Local PV LVM
از LVM2 برای مدیریت Volume استفاده میکند. قابلیت snapshot، بکاپ افزایشی و pooling دیسکها را فراهم میکند. اگر با LVM آشنا هستید (پست مقایسه فایلسیستمها و Volume Managerها را ببینید)، این انجین همان قابلیتها را در بستر کوبرنیتیز ارائه میدهد.
Local PV ZFS
از ZFS برای مدیریت ذخیرهسازی استفاده میکند. کاملترین انجین Local است و علاوه بر snapshot و بکاپ افزایشی، قابلیت Clone را هم ارائه میدهد. ZFS checksum، فشردهسازی و self-healing را هم فراهم میکند. اما به دلیل سربار ZFS، کارایی آن نزدیک به دیسک خام نیست.
Replicated Storage (انجینهای تکرارشده)
انجینهای Replicated Storage داده را همزمان روی چند نود کپی میکنند. اگر یک نود خراب شود، Pod میتواند به نود دیگری که کپی داده روی آن وجود دارد منتقل شود و همچنان به داده دسترسی داشته باشد. این انجینها از قابلیتهای Enterprise مثل snapshot، clone و افزایش حجم هم پشتیبانی میکنند.
نکته مهم: هر Volume Replica یک کپی کامل از داده است. مثلاً یک Volume ۱۰ گیگابایتی با ۳ Replica روی ۳ نود مختلف، مجموعاً ۳۰ گیگابایت فضای ذخیرهسازی مصرف میکند. Volume Replicaها به صورت Thin Provisioned هستند، یعنی فقط به اندازه داده نوشتهشده فضای فیزیکی اشغال میکنند.
Mayastor
Mayastor انجین Replicated Storage نسل جدید OpenEBS است که با تمرکز بر NVMe SSD و کارایی بالا توسعه یافته. Mayastor از SPDK (Storage Performance Development Kit) استفاده میکند و قادر است کارایی نزدیک به دیسک خام NVMe را ارائه دهد در حالی که همزمان داده را روی چند نود کپی میکند. Mayastor برای نودهای با CPU و RAM قدرتمند و شبکه پرسرعت (۱۰G تا ۲۵G) طراحی شده است.
مقایسه کلی Local و Replicated
| ویژگی | Local Storage | Replicated Storage |
|---|---|---|
| Replication داده | — | ✓ (همزمان) |
| تحمل خرابی نود | — | ✓ |
| کارایی (Throughput / IOPS) | حداکثری (نزدیک به دیسک) | کمتر (سربار شبکه و کپی) |
| مصرف فضای ذخیرهسازی | ۱ برابر حجم داده | N برابر (تعداد Replica) |
| نیاز به منابع نود | کم | زیاد (CPU، RAM، شبکه) |
| مقیاسپذیری | بالا | متوسط |
| Dynamic Provisioning | ✓ | ✓ |
| Snapshot / Clone | بستگی به انجین (LVM, ZFS) | ✓ |
| مناسب برای | کاربردهای Distributed، ML، Edge | کاربردهای Standalone، محیط Production |
راهنمای انتخاب نهایی
- اگر کاربرد شما Distributed است و خودش Replication دارد (مثل MongoDB Cluster، Cassandra، Elasticsearch) ← Local Storage
- اگر کاربرد شما Standalone است و به دسترسیپذیری در برابر خرابی نود نیاز دارید (مثل MySQL تکنودی) ← Replicated Storage
- اگر در محیط Edge یا تکنودی هستید ← Local Storage
- اگر به کارایی حداکثری NVMe نیاز دارید و نودهای قدرتمندی دارید ← Mayastor (Replicated)
- اگر به snapshot و clone نیاز دارید و میخواهید Local استفاده کنید ← Local PV ZFS یا LVM
خلاصه: اگر کاربرد شما در Production است و به Replication در سطح ذخیرهسازی نیاز ندارد، Local Storage را انتخاب کنید. اگر کاربرد شما به تأخیر کم و کارایی نزدیک به دیسک نیاز دارد و نودهای با CPU، RAM و NVMe قدرتمند دارید، Replicated Storage گزینه بهتری است.
آیا OpenEBS جایگزین سرویسهای ذخیرهسازی ابری لکسویا است؟
خیر. OpenEBS یک راهحل ذخیرهسازی Container-Native برای کوبرنیتیز است که روی نودهای خودتان اجرا میشود. سرویسهای لکسویا مثل S3 Object Storage و VPS سرویسهای مدیریتشده هستند که نیازی به نصب و مدیریت ندارند. اگر کلاستر کوبرنیتیز خودتان را راهاندازی کردهاید، OpenEBS گزینه خوبی برای مدیریت ذخیرهسازی Stateful Workloadهاست. اگر فقط به فضای ذخیرهسازی یا سرور نیاز دارید، سرویسهای لکسویا سادهتر و مطمئنتر هستند. برای اطلاعات بیشتر به سایت lexoya.com مراجعه کنید.