مرحبا يا هبر.
بالتأكيد فكر الكثير من الناس في الأمر ، ربما شخص ما لديه هذه الفكرة في TODO. لقد رقدت معي لمدة عام تقريبًا ، لكنها ما زالت قادرة على تنفيذه في شكل نموذج أولي عملي.
TgCloud:
- المصدر المفتوح لنظام الملفات الظاهري g **** code.
- على القرص المحلي - البيانات الأولية فقط: الأسماء ، الحجم ، بنية المجلد ، إلخ.
- يتم تخزين البيانات في Telegram ويتم تنزيلها فقط عند العمل مع ملف
- لا يقتصر حجم الملفات ونوعها ، ويمكن استخدامها مع أي نظام تشغيل
تفاصيل التنفيذ ورابط إلى مستودع تحت القط.

فكرة
ظهرت فكرة إنشاء VFS استنادًا إلى Telegram أثناء العمل على
AudioTubeBot و
VideoTubeBot - بعد أن وجدت طريقة
للتغلب على حد 50 ميغابايت لتنزيل الملفات للروبوتات - درست
شفرة مصدر Telegram - اكتشفت الكثير من الأشياء المثيرة للاهتمام. على سبيل المثال ، تقتصر سرعة التنزيل في الغالب على العميل نفسه ، وليس على الخادم.
ونتيجة لذلك ، قمت بزيادة سرعة التنزيل إلى سحابة Telegram إلى ~ 240 ميجابت / ثانية لكل جلسة (كانت تعمل بثبات لأكثر من عام) ، وهو أسرع بمعدل 15 مرة من العميل الرسمي.
كانت الخطوة المنطقية هي استخدام سعة تخزين غير محدودة للملفات مع سرعة تنزيل عالية كمحرك أقراص شبكي - على الأرجح أن الكثير من المستخدمين يقومون بذلك ، لكن المشكلة تكمن في أن عملاء telegram غير ملائمين لاستخدامهم في البحث عن الملفات وتنظيمها. بالإضافة إلى ذلك ، يوجد حد 1.5 جيجابايت لكل حجم ملف.
FUSE
لحل هذه المشكلات ، قررت أولاً إجراء تصحيح kernel Linux وإنشاء نظام الملفات الظاهري الخاص بي ، والذي من شأنه تجميع الملفات التي تم تحميلها إلى Telegram بشكل ملائم ، باستخدام البيانات الأولية فقط.
في عملية دراسة المشكلة ، اتضح أن ترقيع النواة ليس ضروريًا على الإطلاق. يحتوي Linux على
وحدة نواة FUSE خاصة تسمح للمطورين بإنشاء أنواع جديدة من أنظمة الملفات يمكن للمستخدمين الوصول إليها بدون امتيازات. توجد أغلفة لجميع اللغات الشائعة تقريبًا للوحدة.

تيليثون
للوصول إلى Telegram ، استخدم إصدار مكتبة
Telethon 0.19.1 مع تحميل ملفي متعدد الخيوط المعدّل (TelegramClientX).
VFS
من أجل عدم كتابة نظام ملفات من نقطة الصفر -
يتم استخدام python
dedupfs ، باستخدام fuse و sqlite لتخزين البيانات
الأولية ، التي
تقسم الملفات إلى كتل ، وتراعي تجزئة sha1 ويعيد استخدام نفس الكتل - تحتاج فقط إلى استبدال طرق تحميل البيانات في التخزين الخاصة بك.
TgCloud
من خلال الجمع بين كل هذا ، حصلنا على نموذج أولي يعمل
tgcloud ، حتى الآن دون سرعات فضائية ، ولكن ما زلت تعمل ، آمل أن تجذب المجتمع إلى التطوير. تنقسم الملفات التي تم تنزيلها إلى كتل بسعة 10 ميغابايت ، ويتم حساب sha1 وتحميله في SavedMessages ، ويتم تخزين التجزئة في قاعدة البيانات المحلية ، وعند قراءة الكتلة ، يوجد الملف عليه. يتم لصق الكتل معاً بالترتيب الضروري ويتم إصدار دفق من البايتات - كما لو كنت تقرأها من القرص.
لتشغيل الكود
- تحتاج إلى الحصول على api_hash و api_id على my.telegram.org وإدراج هذه البيانات مع رقم هاتف حسابك في tg_access.py
- إنشاء جلسة عن طريق تشغيل من مجلد المشروع
python3.6 download_service.py
sudo yum install python-fuse
mkdir storage
- VFS:
python dedupfs/dedupfs.py -df --block-size 10240000 storage/
python dedupfs/dedupfs.py --block-size 10240000 storage/
- , filebrowser
.
P.S. ( )
— , .. — « », — — , , — — . — , , 90% , VFS — .
— , — , Telegram — « — .. ..»Telegram
GitHub
DEDIC.SH Intel Scalable 2019 :
- 2x Xeon Silver 4214 — 24
- 2x Xeon Gold 5218 — 32
- 2x Xeon Gold 6240 — 36 .
Xeon Silver 4214 —
15210 /—
!
—
VDS 150 / — , !