ميو كخيار بديل لـ Aws S3. نظرة عامة على ميو وتركيبه.

نظرة عامة وتثبيت Minio

Page content

MinIO هو نظام تخزين كائنات موزع عالي الأداء ومفتوح المصدر، تم تصميمه ليكون متوافقًا تمامًا مع واجهة برمجة التطبيقات (API) الخاصة بـ Amazon S3.

يمكن تثبيته داخل الموقع، في السحابة، أو في الحافة، ويتم تحسينه للسرعة والتوسع والأمان. يُستخدم MinIO على نطاق واسع في أعباء العمل الحديثة، بما في ذلك الذكاء الاصطناعي/التعلم الآلي، والتحليلات، والنسخ الاحتياطي، والبيئات السحابية المختلطة.

aws-s3 vs minio

MinIO سهل الاستخدام للغاية

  • النشر البسيط: يُعرف MinIO بعملية التثبيت والتكوين البسيطة. يُعتبر أسهل في التثبيت والإدارة مقارنة بالحلول الذاتية المُعقدة مثل Ceph.
  • توافق واجهة برمجة التطبيقات (API) مع S3: التزامه الصارم مع واجهة برمجة التطبيقات (API) الخاصة بـ S3 يعني أن التطبيقات والأدوات المبنية لـ AWS S3 يمكن أن تعمل مع MinIO دون أي تعديل، مما يبسط عملية الهجرة والتكامل.
  • تجربة المستخدم: يوفر MinIO واجهة مستخدم عبر الويب وواجهة سطر الأوامر (CLI)، وكلاهما مُشيدان ببساطتهما وسهولة استخدامهما.
  • التوثيق والمجتمع: على الرغم من أن MinIO لديه مجتمع متزايد وتوثيق جيد، إلا أنه قد لا ينافس الموارد الشاملة المتاحة لـ AWS S3.

مقارنة: MinIO مقابل AWS S3

الميزة MinIO AWS S3
النشر مُنشر ذاتي/داخل الموقع/السحابة/الحافة مُدار تمامًا بواسطة AWS
التوسع التوسع اليدوي/التوسع الأفقي تلقائي، تقريبًا لا حدود له
توافق واجهة برمجة التطبيقات (API) متوافق مع S3 واجهة برمجة التطبيقات (API) الأصلية لـ S3
التخصيص قابل للتخصيص بشكل كبير محدود (داخل نظام AWS)
التكامل واسع النطاق (أي أداة متوافقة مع S3) تكامل عميق مع خدمات AWS
الامتثال مُدار من قبل المستخدم مُدار من قبل AWS، معترف به لمعايير معينة
الأداء مُحسّن للسرعة، يعتمد على الأجهزة يختلف حسب المنطقة/الدرجة
الدعم دعم مجتمعي/الدعم التجاري دعم AWS للشركات
التكلفة لا توجد رسوم ترخيص، يعمل على الأجهزة العادية تكلفة استهلاكية، دفع حسب الاستخدام

تثبيت Minio كخدمة systemd

يُنصح بتنزيل حزمة deb وتثبيتها باستخدام dpkg - هذا سيقوم أيضًا بإنشاء ملف خدمة systemd لـ Minio.

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20250422221226.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb

كيفية تثبيت MinIO باستخدام Docker

MinIO يمكن تثبيته بسرعة باستخدام Docker فقط بوسيلة واحدة. فيما يلي تعليمات خطوة بخطوة لتكوين بسيط لوحدة واحدة وقرص واحد.

1. إعداد دليل البيانات

أنشئ دليلًا على نظامك المضيف لحفظ بيانات MinIO:

mkdir -p ~/minio/data

هذا يضمن الاحتفاظ ببياناتك حتى لو تم إزالة أو إعادة تشغيل الحاوية.

2. تشغيل MinIO باستخدام Docker

استخدم الأمر التالي لبدء MinIO:

docker run -p 9000:9000 -p 9001:9001 \
  --name minio1 \
  -e "MINIO_ROOT_USER=minioadmin" \
  -e "MINIO_ROOT_PASSWORD=minioadmin" \
  -v ~/minio/data:/data \
  minio/minio server /data --console-address ":9001"
  • -p 9000:9000: يعرض واجهة برمجة التطبيقات (API) لـ MinIO على منفذ 9000.
  • -p 9001:9001: يعرض واجهة Console لـ MinIO على منفذ 9001.
  • --name minio1: يُعطي اسمًا للحاوية لتسهيل الإدارة.
  • -e "MINIO_ROOT_USER=minioadmin" و -e "MINIO_ROOT_PASSWORD=minioadmin": يحدد المستخدم الجذري وكلمة المرور (غيرها في الإنتاج).
  • -v ~/minio/data:/data: يُثبت دليل البيانات المحلي في الحاوية لتخزين البيانات بشكل دائم.
  • minio/minio server /data --console-address ":9001": يبدأ خادم MinIO ويُفعّل واجهة Console.

3. الوصول إلى واجهة MinIO

  • افتح متصفحك وانتقل إلى http://localhost:9001
  • سجّل الدخول باستخدام بيانات الاعتماد التي حددتها أعلاه (minioadmin / minioadmin بشكل افتراضي).

4. (اختياري) استخدام Docker Compose

للمشاريع المتقدمة أو التطوير، يمكنك استخدام Docker Compose. توجد ملفات Compose وتعليمات في مستودعات المجتمع.

5. (اختياري) تثبيت MinIO Client

للتواصل مع خادم MinIO عبر واجهة سطر الأوامر (CLI)، قم بتثبيت MinIO client (mc):

curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/mc

ثم قم بتكوينه للاتصال بخادم MinIO:

mc alias set local http://127.0.0.1:9000 minioadmin minioadmin

هذا التكوين يمنحك خادم تخزين كائنات متوافق مع S3 يعمل محليًا عبر Docker. للمشاريع الإنتاجية، راجع الوثائق الرسمية لـ MinIO للحصول على خيارات تكوين متقدمة، والأمان، والتوسع.

الخطوات لتكوين MinIO باستخدام Docker Compose

1. إعداد دليل البيانات

أنشئ دليلًا على جهازك المضيف لحفظ بيانات MinIO:

mkdir -p ~/minio/data

هذا الدليل سيتم تثبيته في الحاوية لضمان استمرار البيانات عبر إعادة التشغيل.


2. إنشاء ملف Docker Compose

في دليل العمل الخاص بك، أنشئ ملفًا باسم docker-compose.yml وأضف المحتوى التالي (قم بتخصيصه حسب الحاجة):

version: '3.7'

services:
  minio:
    image: minio/minio
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    volumes:
      - ~/minio/data:/data
    command: server /data --console-address ":9001"
  • قم بتغيير MINIO_ROOT_USER و MINIO_ROOT_PASSWORD إلى قيم آمنة للاستخدام في الإنتاج.
  • قم بتعديل مسار الحجم إذا كنت تستخدم دليلًا مختلفًا.

3. بدء خدمة MinIO

قم بتشغيل الأمر التالي في نفس الدليل الذي يحتوي على ملف docker-compose.yml:

docker-compose up -d

هذا الأمر سيقوم بتنزيل صورة MinIO إذا لم تكن متوفرة، وإنشاء الحاوية، وبدء الخدمة في الوضع المفصّل.


4. التحقق من الخدمة

تحقق من تشغيل MinIO:

docker-compose ps

يمكنك أيضًا عرض السجلات للتأكد من عدم وجود أخطاء:

docker-compose logs minio

5. الوصول إلى واجهة MinIO

  • افتح متصفحك وانتقل إلى http://localhost:9001
  • سجّل الدخول باستخدام بيانات الاعتماد التي حددتها (minioadmin / minioadmin بشكل افتراضي).

جدول الموجز

الخطوة الوصف
إعداد الدليل mkdir -p ~/minio/data
ملف Compose إنشاء وتحرير docker-compose.yml
بدء الخدمة docker-compose up -d
التحقق docker-compose ps و docker-compose logs
الوصول إلى واجهة Console زيارته http://localhost:9001 في المتصفح

للمشاريع المتقدمة (مثل الوضع الموزع، التكوينات المخصصة)، راجع الوثائق الرسمية لـ MinIO Compose أو أدلة المجتمع.

مزايا MinIO

  • التكاليف المنخفضة: لا توجد رسوم ترخيص؛ يعمل على أجهزة عادية، مما يمكن أن يقلل بشكل كبير من تكلفة الملكية الإجمالية مقارنة بتخزين السحابة المُدار.
  • مفتوح المصدر: مفتوح المصدر بالكامل، مما يسمح بتخصيصه وشفافيته.
  • توافق واجهة برمجة التطبيقات (API) مع S3: هجرة سلسة للتطبيقات القائمة على S3؛ تعمل مع الأدوات والعمليات الحالية لـ S3.
  • الأداء: مُحسّن للتدفق العالي والتأخير المنخفض، خاصة على الأجهزة الحديثة؛ غالبًا ما يتفوق على AWS S3 في بعض الأعباء.
  • المرونة في النشر: يمكن نشره في أي مكان - داخل الموقع، في أي سحابة، أو في الحافة - مما يسمح بالاستراتيجيات المختلطة والمتعددة للسحابة.
  • التحكم في البيانات: تظل المنظمات تحت سيطرة كاملة على موقع البيانات ووصولها، وهو أمر حيوي للسيادة على البيانات والأمان.

التحديات المتعلقة بـ MinIO

  • التوسع اليدوي: يتطلب التوسع تكوينًا وتشغيلًا يدويًا، على عكس التوسع التلقائي لـ AWS S3.
  • العبء الامتثال: مسؤولية الامتثال مع المعايير (مثل GDPR، HIPAA) تقع على المنظمة المُ depositer، وليس على MinIO نفسه.
  • الدعم: على الرغم من أن MinIO يوفر دعمًا تجاريًا، إلا أن مدى وعمق الدعم قد لا ينافس عروض AWS على مستوى الشركات.
  • العبء التشغيلي: كحل وسطي، يتطلب MinIO صيانة مستمرة ومراقبة وتحديثات من قبل المستخدم.
  • الفجوات في الميزات: بعض الميزات المتقدمة والتكاملات المتاحة في AWS S3 قد لا تكون موجودة أو ناضجة في MinIO.

Minio مقابل ASW S3 التسعير

  • MinIO: مجاني للاستخدام تحت ترخيص مفتوح المصدر (AGPL v3). تكاليفها تكاد تكون مكلفة فقط من البنية التحتية الأساسية (الخوادم، التخزين، الشبكة) وعقود الدعم التجاري الاختيارية.
  • AWS S3: تسعير دفع حسب الاستخدام بناءً على التخزين المستخدم، نقل البيانات، والطلبات API. يقدم عدة فئات تخزين بتكاليف مختلفة، مما يسمح بتحسين التكلفة لـ حالات الاستخدام المختلفة.

الموجز

MinIO هو بديل قوي ومفتوح المصدر لـ AWS S3، يقدم توافقًا مع واجهة برمجة التطبيقات (API) لـ S3، وعالي الأداء، والمرونة في النشر بتكاليف أقل - خاصة للمنظمات التي تفضل أو تتطلب النشر الذاتي للتخزين. إنه سهل الاستخدام ويتكامل جيدًا مع الأدوات القائمة على S3. ومع ذلك، فإنه يتطلب إدارة أكثر يدويًا، خاصة في التوسع والامتثال، ويفتقر إلى التكامل العميق وبيئة الدعم التي توفرها AWS S3. يعتمد الاختيار بين MinIO وAWS S3 على احتياجاتك الخاصة للسيطرة، والتكاليف، والتوسع، والامتثال، والعبء التشغيلي.

تم تصميم MinIO ليكون متوافقًا تمامًا مع واجهة برمجة التطبيقات (API) الخاصة بـ Amazon S3، مما يجعله واحدة من أكثر حلول تخزين الكائنات المتوافقة مع S3 اعتمادًا خارج AWS. MinIO يتبع واجهة برمجة التطبيقات (API) لـ S3 بدقة، ويدعم توقيعات V2 وV4، ويستخدمه العديد من المنظمات كخيار بديل مباشر لـ AWS S3 في البيئات الداخلية، المختلطة، والمتعددة للسحابة.

النقاط الرئيسية حول توافق Minio مع AWS S3

  • دعم واجهة برمجة التطبيقات (API): يقوم MinIO بتنفيذ واجهة برمجة التطبيقات (API) الأساسية لـ S3، مما يسمح لأغلب التطبيقات والأدوات المبنية لـ AWS S3 بالعمل بسلاسة مع MinIO دون أي تعديل.
  • المرونة في النشر: يمكن نشر MinIO داخل الموقع، في السحابة، أو في الحافة، مما يوفر مرونة غير متوفرة مع AWS S3، الذي يتم إدارته تمامًا داخل AWS.
  • المجتمع والاعتماد: مع ملايين التثبيتات، يُعتبر MinIO المعيار للتوافق مع S3 خارج AWS، ويُستخدم على نطاق واسع في أعباء العمل السحابية، والذكاء الاصطناعي/التعلم الآلي، والتحليلات.

القيود والاختلافات

رغم درجة عالية من التوافق، لا يُعتبر MinIO بديلًا مباشرًا 100% لـ AWS S3 في كل السيناريوهات. قد يبلغ بعض المستخدمين والمطورين عن اختلافات طفيفة في السلوك، خاصة في الحالات الحواف أو الميزات الأقل استخدامًا من واجهة برمجة التطبيقات (API):

  • الاختلافات في السلوك: قد يختلف بعض مكالمات واجهة برمجة التطبيقات (API) لـ S3، مثل قائمة الكائنات وتعاملها مع الدليل الافتراضي، في MinIO مقارنة بـ AWS S3. يمكن أن يؤثر هذا على التطبيقات التي تعتمد على سلوكيات S3 المحددة.
  • التفاصيل التنفيذية: قد يختلف MinIO عن AWS S3 في بعض المجالات، أحيانًا لأسباب هندسية. هذا يعني أن معظم أدوات وواجهات برمجة التطبيقات (SDKs) لـ S3 تعمل مع MinIO، لكن قد تظهر اختلافات نادرة، خاصة في الاستخدامات المعقدة أو المخصصة لـ S3.
  • الامتثال والتكامل: توفر AWS S3 تكاملًا عميقًا مع خدمات AWS الأخرى وشهادات الامتثال لعدد كبير من المعايير التنظيمية، وهو أمر لا يوفره MinIO من البداية.

يمكن لجميع الأدوات الرئيسية والواجهات (SDKs) التواصل مع MinIO بشكل مثالي، إلا أن هناك اختلافات في التفاصيل حول الحواف… MinIO يوفر بالتأكيد توافقًا مع S3، [لكن] قد لا يكون متوافقًا تمامًا، لكنه بالتأكيد متوافقًا بما يكفي لمعظم الاستخدامات.

جدول المقارنة: MinIO مقابل AWS S3 (تركيز على التوافق)

الميزة MinIO AWS S3
دعم واجهة برمجة التطبيقات (API) مرتفع (واجهات API الأساسية) أصلي
الاختلافات في السلوك ممكنة في الحالات الحواف لا توجد
التكامل أدوات متوافقة مع S3 تكامل عميق مع خدمات AWS
الامتثال مُدار من قبل المستخدم مُدار من قبل AWS، معترف به
الدعم مجتمعي/تجاري دعم AWS للشركات

MinIO يقدم توافقًا قويًا مع واجهة برمجة التطبيقات (API) لـ S3، وهو مناسب لمعظم الأعباء التي تستخدم AWS S3. ومع ذلك، لا يمكن ضمان أن يكون بديلًا مباشرًا 1:1 لكل ميزة أو سلوك لـ AWS S3. يُنصح بإجراء تقييم دقيق واختبارات للتطبيقات التي تعتمد على استخدامات S3 المعقدة أو غير القياسية.

روابط مفيدة