مقالات
MinIO چیست

MinIO چیست ؟ معرفی و روش کار با آن

MinIO یک سیستم Object Storage با کارایی بالاست و طراحی شده تا جایگزینی برای فضای ابری بومی (cloud-native) باشد. در واقع API آن کاملا با Amazon S3 سازگار است. سازندگان آن ادعا می کنند که این سیستم سازگار ترین جایگزین S3 است و در عین حال، عملکرد و پاسخگویی مناسبی را ارائه می دهد. در ادامه مقاله، کاملا شرح می دهیم که MinIO چیست و چگونه باید آن را با روش های مختلف راه اندازی کرد.

Object storage چگونه کار می کند؟

ذخیره سازی آبجکت ها مفهومی است شبیه به سیستم فایل استاندارد یونیکس (Unix)؛ با این تفاوت که به جای راهنما ها (directories) و فایل ها، از سطل ها (buckets) و آبجکت ها (objects) استفاده می کنیم.

سطل ها را می توان مثل راهنما ها در یک سلسله مراتب قرار داد و آبجکت ها را فقط مجموعه ای از بایت ها (bytes) در نظر گرفت. این مجموعه ها می توانند یا چیدمان منظمی از بایت های دلخواه باشند، یا فایل های معمولی مثل عکس ها و فایل های پی دی اف و… .

به سطل ها و آبجکت ها می توان مجوز و دسترسی داد؛ دقیقا مانند راهنما ها و فایل ها. این موضوع، کنترل دقیقی روی داده ها ایجاد می کند و مخصوصا برای سازمان های بزرگ با کاربران زیاد، بسیار مفید است.

معرفی MinIO

MinIO انواع مختلفی از گزینه های راه اندازی را در دسترس قرار می دهد. این سیستم می تواند به عنوان یک برنامه بومی (native) روی اکثر ساختار های محبوب اجرا شود. همچنین به عنوان یک برنامه کانتینری با استفاده از داکر و کوبرنتیز (Docker و Kubernetes) شناخته می شود.

MinIO یک برنامه متن باز (open-source) است. شرکت ها و سازمان ها می توانند به راحتی و آزادانه (البته تحت شرایط مجوز AGPLv3) از آن استفاده کنند. به این نکته نیز توجه کنید که این سیستم به جز اسناد آنلاین و جامعه کاربرانش، پشتیبانی دیگری ارائه نمی دهد؛ اما برای شرکت های بزرگ تر، اشتراک های پولی با پشتیبانی اختصاصی در دسترس است.

MinIO به دلیل سازگاری با API S3 و قابلیت اجرا در انواع ساختار ها و همچنین ماهیت متن باز، یک ابزار عالی برای توسعه و ارزیابی سناریو ها و برنامه های DevOps است.

نصب و راه اندازی MinIO

MinIO چیست

همان طور که قبلا اشاره کردیم، MinIO برای همه پلتفرم ها در دسترس است؛ اما برای اهداف توسعه و آزمایش، ساده ترین راه برای شروع، استفاده از پخش کانتینری (containerized distribution) است.

در حالی که ساختار کانتینری برای ارزیابی MinIO مناسب است، محدودیت هایی نیز دارد که نیاز است آن ها را بدانیم. به طور کلی، برخی از ویژگی های پیشرفته در این ساختار کار نمی کنند؛ ویژگی هایی مانند «نسخه سازی» (versioning)، قفل کردن آبجکت ها و انتشار (تکرار) سطل ها. این مزیت ها نیازمند راه اندازی پخش شده MinIO است که در راه اندازی تک سروری در دسترس نیست.

البته همان طور که می دانید، نصب کننده های مختلفی برای سرور لینوکس، ویندوز و MacOS وجود دارند؛ اما ما برای راحتی کارمان، از توزیع کانتینری استفاده می کنیم.

کار کردن با MinIO

اکنون که متوجه شدیم MinIO چیست ، باید کار کردن با آن را بررسی کنیم. روش های متفاوتی برای کار کردن و تعامل با سرور MinIO و مدیریت سطل ها و آبجکت ها وجود دارد که در ادامه با تمام آن ها آشنا خواهیم شد:

  • کاربر MinIO

MinIO client جزئی از سرور اصلی MinIO است که روی کامپیوتر شخصی شما نصب می شود و از آن برای مدیریت سرور استفاده می کنید. برای راه اندازی «کاربر MinIO»، آخرین پکیج MinIO Client .deb را از صفحه های MinIO دانلود و استفاده کنید.

این روش، دستورات یکسانی را با مدیریت فایل یونیکس ارائه می دهد مانند cp و Is؛ اما MinIO client (کاربر MinIO) هم برای سیستم های ذخیره سازی محلی و هم برای راه دور طراحی شده است. این کاملا با AWS S3 سازگار است و دستورالعمل آن مطابق با ابزار AWS client است.

 

 

MinIO

  • کنسول MinIO

یک روش دیگر برای مدیریت داده ها در راه اندازی MinIO، استفاده از کنسول مدیریت مبتنی بر وب است. با باز کردن آدرس https://127.0.0.1:9001 در مرورگر شروع می کنیم. در این صفحه، شما می توانید سطل های جدید ایجاد و از گزینه های موجود استفاده کنید. البته امکاناتی مثل نسخه سازی (versioning) باکت ها در دسترس نیستند.

به طور کلی، عملکرد این روش با روش «کاربر MinIO» برابر است؛ اما تفاوت هایی جزئی هم دارند؛ مثلا جا به جایی آبجکت ها بین سطل ها، در روش «کنسول MinIO» امکان ندارد؛ با این حال، با دستورات MinIO client می شود آن را اجرا کرد. مثال دیگر این که، روش کاربر MinIO چند دستور فرعی دارد (مانند du، diff و pipe) که همگی شبیه دستورات استاندارد یونیکس هستند ولی معادلی در روش کنسول مدیریت ندارند.

  • MinIO Java SDK

آخرین شیوه تعامل با سرور MinIO، استفاده از کیت توسعه نرم افزار (SDK) است. برای شروع، dependency مورد نیاز را در اپلیکیشن قرار می دهیم. این روش می تواند تمام اقداماتی که در دو روش قبلی ذکر کردیم انجام دهد. مثلا می توانیم یک سطل ایجاد کنیم و آبجکت ها را به آن انتقال دهیم و خارج کنیم و یا اقدامات دیگر… .

به خاطر داشته باشید که چون MinIO کاملا با S3 سازگار است، می توان از یک کد یکسان با Amazon S3 استفاده کرد.

جمع بندی

در این مقاله، به سوال MinIO چیست جواب دادیم و MinIO را به اختصار معرفی کردیم؛ یک سیستم ذخیره سازی آبجکت ها (Object Storage) که کاملا با S3 سازگار است. متن باز است و همه سازمان ها و شرکت ها می توانند از آن بهره ببرند. البته برای پروژه های کوچک توسعه و ارزیابی مناسب تر است؛ اما اگر بخواهیم برای پروژه های وسیع توسعه و تولیدی از آن استفاده کنیم، باید آن را در حالت پخش شده (distributed mode) راه اندازی کنیم. سپس روش های مختلف اتصال و ارتباط با سرور اصلی MinIO را مشاهده کردیم؛ استفاده از «کاربر MinIO» که روی رایانه شخصی شما راه اندازی می شود. «کنسول MinIO» که از یک صفحه وب استفاده می کند و در آخر، روش «MinIO Java SDK» که امکانات دو روش پیشین را دارد و برای Java طراحی شده است.