‫Syncthing: الأستاذ في إزالة تكرار البيانات‬

نُشر 
 

هذا المقال مترجم عن Syncthing: The data dedup­lica­tion master، المنشور . وقد نشرت هذه الترجمة أيضا في مجتمع أسس.

‫Syncthing هو برنامج حر ومفتوح المصدر للمزامنة المعمّاة للمجلدات بين نظيرين (peer-to-peer). ويستعمل أساليب إزالة التكرار لتقليل مقدار البيانات التي يحتاج نقلها عبر الشبكة، مما يوفّر لك تكاليف الاتصال، والطاقة، والوقت. ويمكنك الآن (اختياريًّا) أن تسمح له بإزالة التكرار في البيانات المخزنة على الحاسوب، لتقليل تكاليف التخزين.‬

يمكنك اعتبار Syncthing خدمة تخزين سحابي مثل Dropbox أو OneDrive، لكن بغير خادوم وسيط أو تكاليف. فهو ينقل ملفاتك بين أجهزتك مباشرةً. ويتيح لك مزامنة المجلدات بأمان بغير أن تضطر إلى ائتمان مزود خدمة تخزين سحابي على بياناتك.

يقسّم Syncthing الملفات الكبيرة إلى «كتل»، مثلما تفعل أنظمة الملفات. ثم ينظر أيّها تغيرت، فلا يرسل غيرها عبر الشبكة. ويستطيع مشاركة الكتل بين الملفات وحتى بين المجلدات المزامنة المختلفة. فهذا يوفر زمن النقل، واستعمال الشبكة، والطاقة.

ويجمع Syncthing بيانات الاستخدام من مستخدميه. فيسجّل مقدار التقليل في نقل البيانات الناتج عن هذه الخاصية. وحتى وقت النشر، ٥٦٫٤٨٪ من البيانات المزامنة أُعيد استعمالها من الملفات المحلية. (ويمكن افتراض أن التوفير المتوقع من خاصية إزالة التكرار في التخزين قريب من هذه النسبة.)

فخاصية إزالة التكرار في التخزين تعتمد على هذه الخاصية المستعملة لتقليل استعمال الشبكة وتطوّعها من أجل توفير مساحة القرص المحلي. فالآلية نفسها تُستعمل لمشاركة كتل الملفات المتطابقة على القرص بين الملفات المختلفة.

ويمكن لهذه الخاصية أن تقلل تقليلًا كبيرًا من المساحة التي يستهلكها نظام Syncthing لنُسخ الملفات. (أنظمة نُسخ الملفات (file versioning) تحفظ نسخ الملفات عند تعديلها. ربما هذا سبب ارتفاع نسبة إزالة التكرار في نقل Syncthing الشبكي.) فبحسب ملفاتك وطبيعة استخدامك، قد تجري تغييرات طفيفة على الملفات، فلا يحتاج Syncthing إلا أن يخزّن كتلتين مختلفتين من البيانات المعدّلة، وليس أن يخزّن الملف كله مرتين. (وهذه الطريقة موفرة جدا في حال ملفات أقراص الأجهزة الوهمية، وملفات السجلات، وملفات الأرشفة التي تضيف إليها في نهايتها، وهياكل بيانات «الإلحاق فقط» (append-only) الأخرى.)

وهذه الخاصية مدعومة في أغلب أنظمة الملفات التي تدعم الاستنساخ (cloning)، مثل Btrfs وXFS وEXT4 على لينكس وسولارس، وReFS على وندوز. (NTFS هو نظام الملفات المبدئي على وندوز. وليس ReFS متاحًا إلا على إصدارات Workstation وServer.)

نظام الملفات OpenZFS غير مدعوم، ولا نظام ZFS، لأنهما لا يتيحان نداءات النظام (syscall) المطلوبة. ونظام APFS المستعمل في macOS ليس مدعومًا أيضًا، مع أنه يتيح نداء clonefile؛ فهذا النداء يستنسخ الملفات بكاملها، وليس مثل لينكس وسولارس يستطيع استنساخ الكتل المفردة.

وهذه الخاصية مقيدة بنفس التقييد المفروض على استنساخ الملفات المعتاد: يجب عمل الاستنساخات على نفس تقسيم القرص، ولا يمكن لها عبور حدود أنظمة الملفات أو اجتياز تقسيمات الأقراص. قد يسبب هذا التقييد بعض الأخطاء في المزامنة لأن Syncthing قد يشارك بعض الكتل بين المجلدات المزامنة لأنه لا يدرك حدود أنظمة الملفات.

إزالة التكرار في التخزين ليست خاصية مفعلة مبدئيّا، على الأقل حتى نسخة 1.19.1 من Syncthing. لكن يمكنك تفعيلها لكل مجلد أو جعلها السلوك المبدئي من نافذة الخيارات المتقدمة (Advanced settings): ابحث عن خيار ”Copy Range Method“ وأعطه قيمة مقبولة.

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

أُضيفت خاصية إزالة التكرار في Syncthing النسخة 1.8.0 (المُصدرة في يوليو / تموز عام ٢٠٢٠م)، وما زالت تعتبر تجريبية. وغالبا ستبقى هكذا وقتًا، بسبب احتمال أن هذه الخاصية قد تسبب علة تتسبب في فقد بيانات.

(الصورة من المنشور الأصلي من Daniel Aleksandersen بترخيص CC BY 4.0 License.)