فشل النسخ الاحتياطي على محرك أقراص خارجي لسبب غير واضح

قمنا بإعداد نسخ احتياطية تلقائية، كما قمنا بنقل /var/discourse/shared/standalone/uploads و /var/discourse/shared/standalone/backups وفقًا لهذا الدليل إلى قرص خارجي، أي أن لدينا تكوين app.yml التالي:

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log
  - volume:
      host: /path/to/external/uploads
      guest: /shared/uploads
  - volume:
      host: /path/to/external/backups
      guest: /shared/backups

يتلقى المسؤول رسالة “فشل النسخ الاحتياطي” مع السجل التالي، المتاح لمدة شهر واحد هنا.

تظهر رسالة الخطأ هذه دون سبب واضح، لأن النسخ الاحتياطي يبدو أنه تم إنشاؤه. مخرجات أمر ls -la /path/to/external/backups/default/:

total 322618
drwxrwxrwx 2 root root         0 Sep 27  2019 .
drwxrwxrwx 2 root root         0 Jun 27  2019 ..
-rwxrwxrwx 1 root root 327798879 Mai  1 04:21 xxx-yyyy-2021-05-01-020805-v20210420015635.tar.gz

هل لديك أي فكرة عما قد يحدث هنا؟ إصدار Discourse لدينا هو 2.7.0.beta8 (656b0ae39e). إعدادات النسخ الاحتياطي لدينا هي التالية:

قد تكون المشكلة متعلقة بالإذن. جرّب تمكين الكتابة على المجلد من قبل الجميع.

أي مجلد تقصده؟ المجلد الذي يحتوي على النسخة الاحتياطية (/path/to/external/backups/default) قابل للكتابة من قبل الجميع بالفعل (انظر مخرجات ls -la أعلاه).

يفشل الأمر فقط بعد 44 ثانية.

ينشئ gzip ملفًا ثانويًا ثم يزيل الملف غير المضغوط عند الانتهاء. وهذا يعني أنه يجب أن تتوفر لديك مساحة قرص لا تقل عن 327 ميجابايت. قد تكون رسائل الخطأ غير واضحة نظرًا لأن هذا قرص خارجي. الفرضية: هل قد تكون مساحة القرص لديك على وشك النفاد؟

نقوم بتركيب gocryptfs على مشاركة SAMBA، ويجب أن يكون هناك مساحة كافية متاحة. إخراج الأمر df -h:

Filesystem                            Size  Used Avail Use% Mounted on
udev                                  1,9G     0  1,9G   0% /dev
tmpfs                                 385M  1,5M  384M   1% /run
/dev/mapper/hermes--vg-root            36G   21G   14G  60% /
tmpfs                                 1,9G     0  1,9G   0% /dev/shm
tmpfs                                 5,0M     0  5,0M   0% /run/lock
tmpfs                                 1,9G     0  1,9G   0% /sys/fs/cgroup
/dev/sda1                             704M  215M  439M  33% /boot
//xxx.file.core.windows.net/storage2  5,0T  491M  5,0T   1% /mnt/storage2/cipher
/mnt/storage2/cipher                  5,0T  491M  5,0T   1% /mnt/storage2/plain
tmpfs                                 385M     0  385M   0% /run/user/1000

من الجدير بالذكر أن نسخة احتياطية يدوية نجحت بعد اختيار “نعم (لا تتضمن التحميلات)” — السجل هنا. لذا قد يكون الفشل بالفعل مرتبطًا بكمية البيانات المضغوطة.

ثم قمت بنقل النسخ الاحتياطية مرة أخرى إلى القرص الداخلي، والآن تعمل النسخ الاحتياطية اليدوية أيضًا مع تضمين التحميلات — السجل هنا.

يبدو أن الفشل محدد لإعدادات gocryptfs / SAMBA لدينا. ومع ذلك، إذا كان لدى أي شخص أفكار لمواصلة التحقيق في هذا الأمر، فسأكون سعيدًا بسماعها. مثلًا، ما الذي يجعل gzip يقول بالضبط “عملية غير مسموح بها”.