انتقل إلى المحتوى
HexaTransfer
العودة إلى المدونة
تعمق تقني

شرح التخزين الموزع للملفات: كيف يعمل

افهم أنظمة تخزين الملفات الموزعة مثل IPFS و Ceph. النسخ المتماثل والاتساق والتحمل للأخطاء في التخزين الحديث.

التخزين الموزع للملفات ينشر البيانات عبر عقد متعددة حتى لا يكون أي جهاز منفرد عنق زجاجة أو نقطة فشل واحدة. خيارات التصميم — كيفية وضع البيانات، كيفية نسخها، كيفية التعامل مع فشل العقد، كيفية الحفاظ على الاتساق — تميز أنظمة مثل Ceph (كائن/كتلة/ملف) وGlusterFS (POSIX) وHDFS (دفعات البيانات الضخمة) وMinIO (متوافق S3) والأنظمة المُعنوَنة بالمحتوى مثل IPFS وFilecoin. كل منها يستهدف أحمال عمل مختلفة والمقايضات حقيقية. إليك شرحاً ملموساً لكيفية عمل هذه الأنظمة فعلياً.

النسخ المتماثل مقابل ترميز المحو

استراتيجيتان تحميان من فشل العقد. النسخ المتماثل يُخزِّن عدة نسخ كاملة: الافتراضي في Ceph هو 3x، مما يعني أن كائناً بـ 1 جيجابايت يستخدم 3 جيجابايت من التخزين الخام. بسيط في التفكير، سريع في القراءة، مكلف في التخزين. ترميز المحو يُقسِّم البيانات إلى k جزء بيانات زائد m جزء تحقق باستخدام رموز Reed-Solomon، لذا مخطط (10,4) يُخزِّن 14 جزءاً ويتحمل 4 حالات فشل بأعباء إضافية 40 بالمئة فقط بدلاً من 200 بالمئة. MinIO يعتمد ترميز المحو افتراضياً؛ Backblaze Vaults تستخدم Reed-Solomon 17+3. قراءات ترميز المحو أبطأ لأن إعادة البناء قد تحتاج أجزاء متعددة، لذا البيانات الساخنة كثيراً ما تستخدم النسخ المتماثل والبيانات الباردة ترميز المحو.

التجزئة المتسقة ووضع البيانات

كيف يقرر النظام أي عقدة تُخزِّن أي كائن؟ التجزئة المتسقة، التي قدَّمها Karger وآخرون أكاديمياً عام 1997 وشاعت مع DynamoDB وCassandra، تُشفِّر المفاتيح على حلقة وتُعيِّن كل نطاق لعقدة. إضافة عقدة أو إزالتها تُعيد ترتيب جزء من المفاتيح فقط، ليس المجموعة كلها. Ceph يستخدم CRUSH (Controlled Replication Under Scalable Hashing)، خوارزمية حتمية تضع الكائنات بناءً على خريطة طوبولوجيا (رف، صف، مركز بيانات) حتى تنتهي النسخ في نطاقات فشل متنوعة. العقد الافتراضية (vnodes) لكل عقدة فيزيائية تُخفِّف اختلال التوازن في الحمل.

نماذج الاتساق: قوي ونهائي وسببي

نظرية CAP تقول إنك لا تستطيع امتلاك الاتساق والتوافر وتحمل التقسيم في آنٍ واحد، تختار اثنين. الاتساق القوي (الخطية) يعني أن القراءات ترى آخر كتابة؛ أنظمة مثل Spanner وetcd توفر هذا عبر بروتوكولات توافق مثل Paxos أو Raft. الاتساق النهائي (DynamoDB وCassandra وS3 لبعض العمليات تاريخياً) يعني أن النسخ تتقارب بمرور الوقت، مع إمكانية قراءات متقادمة أثناء الانتشار. الاتساق السببي يحتفظ بترتيب السبب والأثر دون خطية كاملة. تخزين الملفات كثيراً ما يقبل الاتساق النهائي للبيانات الوصفية (القائمة والحجم) مع الاتساق القوي للقراءة بعد كتابة الكائن نفسه.

معمارية Ceph: OSD وMON وMGR وMDS

Ceph يُشغِّل أربعة أنواع من العمليات. OSDs (Object Storage Daemons) تُخزِّن الكائنات وتنسخها؛ الكتلة عادةً 10 إلى 1000 OSD على أقراص دوارة أو NVMe. MONs (المراقبون) يحتفظون بحالة الكتلة عبر Paxos؛ 3 أو 5 MONs توفر النصاب. MGRs (المديرون) يكشفون المقاييس ويستضيفون لوحات التحكم. MDSes (خوادم البيانات الوصفية) تخدم طبقة نظام ملفات CephFS POSIX. تخزين الكائنات عبر RADOS Gateway (RGW) يُقدِّم واجهات S3 وSwift. تخزين الكتل عبر RBD يدعم وحدات تخزين OpenStack وأقراص VMs. قاعدة كود واحدة، ثلاث شخصيات، تُضبَط بـ /etc/ceph/ceph.conf وتعديلات خريطة CRUSH.

HDFS وإرثه من Hadoop

HDFS (Hadoop Distributed File System) يستهدف القراءات التسلسلية الكبيرة لمهام MapReduce وSpark. الملفات تتقسم إلى كتل 128 ميجابايت أو 256 ميجابايت؛ كل كتلة تُنسَخ 3x افتراضياً عبر DataNodes. NameNode يحتفظ بكل البيانات الوصفية في الذاكرة، مما يحدُّ الحجم بنحو 500 مليون ملف لكل NameNode. HDFS Federation وHDFS Router يضيفان دعم متعدد مساحات الأسماء. HDFS ليس رائعاً للملفات الصغيرة (البيانات الوصفية تهيمن) أو توافق POSIX، لكنه ممتاز للتحليلات على مجموعات بيانات بالتيرابايت. ويُزاح أيضاً بواسطة تخزين الكائنات (S3 وGCS) مع فصل الحوسبة عن التخزين في عصر السحابة.

التخزين المُعنوَن بالمحتوى: IPFS وFilecoin

IPFS (InterPlanetary File System) يُعرِّف المحتوى ببصمته (CID، معرِّف المحتوى) لا بموقعه. أي شخص يُخزِّن ملفاً بنفس المحتوى ينتج نفس CID. الاسترداد يستخدم DHT (Distributed Hash Table، قائمة على Kademlia) لإيجاد العقد الحاملة للمحتوى. Filecoin يضيف حوافز اقتصادية، والمعدِّنون يثبتون تخزينهم للمحتوى عبر PoRep وPoSt ويكسبون رموز FIL. IPFS يناسب الأرشفة والنشر اللامركزي (بيانات وصفية NFT ومواقع web3)؛ بطيء للأحمال التفاعلية بسبب تأخير بحث DHT (مئات الميلي ثانية إلى ثوانٍ).

تخزين الكائنات: S3 وR2 وB2 وMinIO

تخزين الكائنات يُقدِّم واجهة مفتاح-قيمة مسطَّحة: PUT كائناً بمفتاح، احصل عليه بـ GET. لا مجلدات، لا دلالات POSIX. هذه البساطة تُتيح الحجم الهائل، AWS S3 يُخزِّن تريليونات الكائنات بمتانة 11 تسعات. نسخ مثل Cloudflare R2 وBackblaze B2 وWasabi وDigitalOcean Spaces تنفِّذ واجهة S3 على خلفيات مختلفة. MinIO يعمل محلياً كمصدر مفتوح AGPL v3، كثيراً في Kubernetes كـ StatefulSet، يوفر تخزيناً متوافقاً مع S3 على أجهزة عادية. تخزين الكائنات فاز في الغالب بسوق التخزين السحابي لأن الواجهة بسيطة والتسعير واضح والمتانة موثوقة.

ترميز المحو عملياً: كيف تعمل إعادة البناء

حين تموت عقدة في نظام مُرمَّز بالمحو، العقد المتبقية تُعيد بناء الأجزاء المفقودة. لكود Reed-Solomon (10,4)، أي 10 من 14 جزءاً تُعيد بناء أجزاء البيانات العشرة الأصلية عبر جبر المصفوفات على حقل محدود. عبء إعادة البناء يقع على العقد الباقية، لذا فقدان عقدة واحدة في كتلة من 100 يُطلِق قراءات من 10 عقد أخرى لكل جزء مفقود. النطاق الترددي أثناء إعادة البناء قلق تشغيلي رئيسي. أنظمة مثل Ceph تُحدِّد معدل إعادة البناء لتجنب التأثير على I/O الإنتاجي. رموز أحدث مثل Local Reconstruction Codes (LRC، تستخدمها Azure) ورموز Hitchhiker تقلِّل النطاق الترددي لإعادة البناء بالسماح بقراءات جزئية.

تأخير الذيل والطلبات المُتحوَّطة

الأنظمة الموزعة لها ذيول طويلة. طلب يصطدم بقرص بطيء أو شبكة مكتظة قد يستغرق 10 ضعف الوسيط. ورقة Google "The Tail at Scale" (Dean وBarroso، 2013) رسَّمت التقنيات: الطلبات المُتحوَّطة تُرسِل قراءات مزدوجة لعقدتين، تلغي الخاسرة؛ الطلبات المربوطة تُنسِّق حتى تُنفِّذ واحدة فقط فعلاً. Ceph وDynamoDB وSpanner كلها تستخدم تنويعات. لأنظمة نقل الملفات، قراءة كائن عبر نسخ متعددة بالتوازي وأخذ أول رد يخفِّض تأخير p99 بشكل ملحوظ بتكلفة نطاق ترددي أكبر قليلاً.

نطاقات الفشل وتنوع البيانات

وضع ثلاث نسخ لا يُفيد إذا كانت الثلاث في نفس الرف وفشل مفتاح أعلى الرف. الوعي بنطاق الفشل يعني أن النسخ تقع في رفوف وصفوف ومراكز بيانات مختلفة. قواعد CRUSH في Ceph تُشفِّر "على الأقل نسختان في رفوف مختلفة، نسخة في مركز بيانات مختلف." تخزين الكائنات السحابي يتعامل مع هذا بشفافية، S3 Standard يُخزِّن عبر 3 مناطق توافر أو أكثر. للنسخ المتماثل عبر المناطق، S3 Cross-Region Replication (CRR) يُعكِّس الكائنات لمنطقة أخرى بشكل غير متزامن، مفيد للتعافي من الكوارث والامتثال لإقامة البيانات الإقليمية.

الآثار العملية لخدمات نقل الملفات

خدمة نقل الملفات عادةً تبني على تخزين الكائنات لا نظام ملفات POSIX. الخلفيات المتوافقة مع S3 (AWS S3 وCloudflare R2 وMinIO) تتعامل مع المتانة والحجم دون أن تُشغِّل الفريق Ceph أو GlusterFS. الخدمة تضيف المصادقة وعناوين URL المُوقَّعة مسبقاً والبيانات الوصفية والميزات التي يراها المستخدم. HexaTransfer يستخدم خلفية متوافقة مع S3 مع تشفير AES-256-GCM من جانب العميل، حتى تتعامل طبقة التخزين الموزع مع المتانة بينما تحتفظ طبقة التطبيق بخصوصية محتوى الملف من كل طبقة.

جرّبها على hexatransfer.com — مجاناً، بدون حساب، حتى 10 جيجابايت.

أرسل ملفات كبيرة بأمان مع تشفير من طرف إلى طرف

انقل ملفات حتى 10 جيجابايت مجاناً مع تشفير من طرف إلى طرف. لا حاجة لحساب. يتم تشفير ملفاتك في متصفحك قبل الرفع — لا أحد آخر يستطيع قراءتها.

إرسال ملف