انتقل إلى المحتوى

مجموعات بيانات ZFS

تنسخ صفحة ZFS مجموعات بيانات ZFS احتياطياً. العنصر هو مجموعة بيانات واحدة مع كل مجموعات البيانات التي تحتها. في كل نسخة احتياطية يلتقط BombVault لقطة ZFS واحدة للشجرة كلها، فتُلتقط كل مجموعة بيانات فيها في اللحظة نفسها. ثم يقرأ ملفات كل مجموعة بيانات من تلك اللقطة، ويخزنها باستخدام restic بالطريقة نفسها التي يخزن بها مجلداً، ويزيل اللقطة مباشرة بعد ذلك. النسخ الاحتياطية خالية من التكرار، ويمكنك تصفح كل واحدة منها، ويمكن استعادة ملفات منفردة.

لا يستخدم BombVault أبداً zfs send لمجموعات البيانات، ولا يعيد أي مجموعة بيانات إلى حالة سابقة، ولا يدمر أياً منها.

المتطلبات

  • اتصال SSH بهذا الخادم. تستخدم مجموعات بيانات ZFS المفتاح والمضيف والمستخدم أنفسهم الذين تستخدمهم نسخ VM الاحتياطية. إذا كانت نسخ VM تعمل بالفعل، فهذا يعمل أيضاً. وإلا فاتبع دليل نسخ VM احتياطياً عبر SSH على GitHub. أسماء حقول القالب هي Host SSH: Address وHost SSH: Port وHost SSH: User.
  • الأمر zfs على ذلك المضيف. يتوفر في Unraid 6.12 وما بعده وفي TrueNAS SCALE.
  • Host Data مربوط كـ /mnt مع Access Mode بقيمة Read/Write - Slave. هذه هي القيمة الافتراضية في القالب. لا تظهر لقطة مجموعة البيانات داخل مجلدها .zfs/snapshot إلا بعد أن يبدأ BombVault، لذا يجب أن تصل إلى الحاوية عمليات التركيب التي يجريها المضيف لاحقاً.
  • مجموعات البيانات مركّبة تحت /mnt. في Unraid توجد المجمعات في /mnt/<pool>، فهذا متحقق بالفعل.

فعّل النطاق من الإعدادات، عام (مجموعات بيانات ZFS). تعرض صفحة ZFS عندها بطاقة الاتصال بهذا الخادم. تختبر البطاقة اتصال SSH، وتذكر المستخدم والمضيف اللذين تتصل بهما، وتقول ما الناقص عندما ينقص شيء. ويعرض فحص التكامل مع المضيف (/spike) النتيجة نفسها.

العناصر ومجموعات البيانات الفرعية

افتح أضف مجموعات بيانات في صفحة ZFS. تأتي القائمة من الخادم. اختر مجموعة البيانات الأعلى فيما تريد نسخه احتياطياً، مثلاً cache/appdata، فيغطي العنصر هذه المجموعة وكل مجموعة بيانات تحتها.

  • تنضم مجموعات البيانات الفرعية الجديدة من تلقاء نفسها. مجموعة البيانات التي تُنشأ لاحقاً تحت العنصر تُنسخ في التشغيل التالي، ويذكرها ذلك التشغيل على أنها جديدة. تقرأها نسختها الأولى كاملة مرة واحدة، وبعد ذلك تُقرأ التغييرات فقط.
  • يمكنك استبعاد مجموعات فرعية منفردة. أوقف إحداها في إعدادات العنصر فتُستبعد مع كل ما تحتها. المجموعة الفرعية المستبعدة التي لم تعد موجودة على الخادم تُعلَّم بذلك ويمكن إزالتها من القائمة.
  • المجموعات الفرعية التي لا يمكن قراءتها تُتخطى، ولكن ليس بصمت أبداً. يعرضها التشغيل، ويبين العنصر عدد ما تُخطي منها، وتعد بطاقة التغطية في لوحة التحكم كل واحدة منها غير محمية. ومع ذلك ينسخ التشغيل كل ما عداها ولا يفشل بسبب مجموعة فرعية متخطاة. الأسباب موجودة في جدول رموز الأسباب: مجموعة بيانات غير مركّبة، أو لها canmount=off، أو نقطة تركيب legacy أو بلا نقطة تركيب، أو مفتاح تشفير غير محمّل، أو الوصول إلى اللقطات معطّل، أو نقطة تركيب لا يراها BombVault.
  • مجموعة البيانات المتخطاة لا تجر معها مجموعاتها الفرعية. مجموعة بيانات بقيمة canmount=off لا تحوي إلا مجموعات بيانات أخرى تُتخطى (وتظهر بوصف "بنية فقط")، وتُنسخ مجموعاتها الفرعية المركّبة. مجموعة البيانات المشفرة التي لم يُحمّل مفتاحها تُتخطى مع المجموعات الفرعية التي تشاركها المفتاح.
  • المجموعات الفرعية التي هي أقراص VM أو بيانات نظام تبدأ متوقفة في نافذة الإضافة، مع السبب بجانب المفتاح. وإضافة مجمع كامل تطلب تأكيداً يعرض ما يحتويه.

وحدات التخزين

تحتوي وحدة التخزين (zvol) على قرص افتراضي بدلاً من ملفات، ولا تنسخ صفحة ZFS أي وحدة تخزين أبداً.

  • وحدة التخزين التي تستخدمها VM تُنسخ مع تلك الـ VM في صفحة VMs.
  • وحدة التخزين التي لا تستخدمها أي VM (iSCSI extent، أو قرص فصلته) لا ينسخها BombVault. تعد نافذة الإضافة وصفحة ZFS هذه الوحدات وتذكر ذلك. ستنسخها نسخة لاحقة.

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

تخزين Docker

مع مشغّل تخزين ZFS في Docker، تكون كل طبقة صورة مجموعة بيانات بنقطة تركيب legacy. تجمعها نافذة الإضافة في سطر واحد لكل أصل. الشجرة التي تحوي أكثر من 20 مجموعة من هذا النوع لا يمكن أن تصبح عنصراً: فطالما توجد لقطة لها، لا يستطيع Docker إزالة طبقات الصور. أضف بدلاً من ذلك مجموعات البيانات التي تحتها، مثلاً appdata.

العناصر لا تتداخل أبداً

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

إيقاف الحاويات وتشغيل أوامر حول اللقطة

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

  • أوقف هذه الحاويات من أجل اللقطة. يوقف BombVault الحاويات المدرجة، ويلتقط اللقطة، ثم يشغّلها من جديد فوراً. تتوقف حاويات مستوى الاعتماد الواحد بالتوازي، والتابعة أولاً، فتستغرق النافذة كلها عادة بضع ثوانٍ، ويعرض التشغيل مدتها. ثم تقرأ النسخة الاحتياطية اللقطة المجمدة بينما تعمل التطبيقات من جديد. لا تُوقف إلا الحاويات التي كانت تعمل.
  • أمر قبل اللقطة وبعدها. يعمل داخل حاوية تختارها، مثلاً لتفريغ قاعدة بيانات داخل مجموعة البيانات قبل اللقطة مباشرة دون إيقاف أي شيء. إذا فشل الأمر الذي قبل اللقطة، تفشل النسخة الاحتياطية ولا تُلتقط لقطة. أما فشل الأمر الذي بعد اللقطة فيظهر في التشغيل لكنه لا يُفشل النسخة الاحتياطية.

ما الذي يحدث عندما يسوء شيء:

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

يعمل التفريغ التلقائي لقواعد البيانات (راجع الميزات) مع النسخة الاحتياطية الخاصة بالحاوية في صفحة Containers، لا مع عنصر ZFS. قاعدة البيانات التي لا تُنسخ حاويتها إلا عبر مجموعة بياناتها لا تحصل على تفريغ، لذا أعطها أمراً هنا.

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

الاستعادة

افتح النسخ الاحتياطية في العنصر، واختر النسخة، ثم مجموعة البيانات. القيمة الافتراضية هي مجموعة البيانات العليا في العنصر.

  • استعد داخل مجموعة البيانات. تُكتب ملفات النسخة الاحتياطية في نقطة تركيب مجموعة البيانات. تُستبدل الملفات التي تحمل الاسم نفسه، وتبقى الملفات الأخرى. لا تُعاد مجموعة البيانات أبداً إلى حالة سابقة ولا تُستبدل. يتحقق BombVault من أن مجموعة البيانات مركّبة ومرئية وقابلة للكتابة، مرة قبل أن يبدأ ومرة أخرى قبل الكتابة مباشرة. حيث تكون مجموعة بيانات فرعية مركّبة بداخلها لا يُكتب شيء: تحتفظ المجموعة الفرعية بملفاتها ومالكها وأذوناتها، وتُستعاد من نسختها الاحتياطية الخاصة.
  • استعد إلى مجلد. اختر مجلداً تحت /mnt. يتحقق BombVault من أن المجلد يقع على مجمع أو مشاركة مركّبة ومن وجود مساحة حرة كافية. يعمل هذا دون اتصال SSH ولمجموعات بيانات لم تعد موجودة.
  • إلى مجموعة بيانات جديدة. اكتب اسم مجموعة بيانات غير موجودة بعد. ينشئها BombVault بخصائص ZFS المحفوظة في النسخة الاحتياطية ويستعيد إليها، راجع الاستعادة كمجموعة بيانات جديدة.
  • اختر ملفات (متقدم): اكتب في مجموعة البيانات الملفات والمجلدات التي تختارها فقط.
  • كل مجموعات بيانات هذه النسخة (متقدم): كل مجموعة بيانات في الشجرة إلى مجلد فرعي خاص بها في المجلد الذي تختاره. تُذكر مجموعات البيانات التي تُخطيت في تلك النسخة.
  • من خادم آخر: تستعيد صفحة الاستعادة من مستودع BombVault آخر، دائماً إلى مجلد: كل مجموعات بيانات نسخة واحدة، كل منها إلى مجلد فرعي خاص بها، أو مجموعة بيانات واحدة من الشجرة، كاملة أو ملفات مختارة.

تُعرض قائمة الحاويات المطلوب إيقافها في العنصر أيضاً عند الاستعادة داخل مجموعة البيانات. تبقى تلك الحاويات متوقفة طوال الاستعادة، وتنتظر نسخ الحاويات خلال ذلك.

لقطة الأمان

قبل أن يكتب في مجموعة بيانات، يلتقط BombVault لقطة ZFS لتلك المجموعة وحدها باسم bombvault-prerestore-<الوقت>. تكون مفعّلة افتراضياً، وإيقافها يتطلب تأكيداً ثانياً. إذا تعذر التقاط اللقطة، لا يُستعاد شيء.

لا يحذف BombVault لقطة الأمان من تلقاء نفسه أبداً. يعرضها العنصر مع عمرها وحجمها، ولكل منها إجراء حذف، وينبه عندما يزيد عمر أقدمها على 30 يوماً، لأنها تُبقي البيانات المحذوفة والمعدلة في المجمع.

للعودة بعد الاستعادة، انسخ ملفات منفردة من .zfs/snapshot/bombvault-prerestore-<الوقت> داخل مجموعة البيانات. لا يعمل zfs rollback <dataset>@bombvault-prerestore-<الوقت> إلا ما دامت هي أحدث لقطة لتلك المجموعة. ويحذف zfs rollback -r كل لقطة أحدث، بما فيها اللقطات التلقائية.

الاستعادة كمجموعة بيانات جديدة

يحفظ BombVault مع كل نسخة احتياطية خصائص ZFS المضبوطة محليًا لكل مجموعة بيانات: compression وrecordsize وquota وreservation وatime وxattr وacltype وcasesensitivity وخصائص المستخدم الخاصة بك. تُترك القيم الموروثة والقيم للقراءة فقط، لأنها تعود وحدها. النسخ التي سبقت حفظ BombVault لها لا تحتوي على أي منها.

  • إلى مجموعة بيانات جديدة يشغّل zfs create مع كل خاصية محفوظة. لا يمكن ضبط casesensitivity وnormalization وutf8only إلا بهذه الطريقة. أما الحصص والحجوزات فتُضبط بعد الملفات، حتى لا ترفض كتابتها. تُترك نقطة التركيب حتى لا تتعارض النسخة مع الأصل، وكذلك canmount وreadonly وإعدادات التشفير، حتى تتمكن الاستعادة من الكتابة. تأخذ مجموعة البيانات الجديدة الواقعة تحت مجموعة مشفّرة تشفيرها. يجب أن تكون مجموعة البيانات التي فوقها موجودة. إذا فشل شيء بعد الإنشاء، تبقى مجموعة البيانات الجديدة على الخادم، لأن BombVault لا يدمّر مجموعة بيانات أبدًا.
  • استعد داخل مجموعة البيانات تعرض الخصائص المحفوظة بجانب الاستعادة. يضبط ضبط هذه الخصائص أيضًا ما لا تزال مجموعة البيانات الموجودة تقبله، قبل كتابة أي ملف. أما الحصص والحجوزات فتُضبط بعد الملفات، حتى لا ترفض كتابتها. بدون هذا المفتاح تحتفظ مجموعة البيانات بإعداداتها.

ما الذي تحتويه النسخة الاحتياطية

في النسخة الاحتياطية: ملفات ومجلدات كل مجموعة بيانات منسوخة، مع الملكية والأذونات والطوابع الزمنية والسمات الممتدة كما يخزنها restic، وخصائص ZFS المضبوطة محليًا لكل مجموعة بيانات.

ليس في النسخة الاحتياطية:

  • مالك وأذونات المجلد العلوي لكل مجموعة بيانات نفسه (كل ما تحته مشمول). الاستعادة داخل مجموعة البيانات تترك المجلد العلوي الموجود كما هو، والاستعادة إلى مجلد تنشئه بالأذونات 0755؛
  • لقطات ZFS الموجودة؛
  • المجموعات الفرعية التي تُخطيت أو استُبعدت؛
  • وحدات التخزين.

للاستعادة إلى تجمع جديد، أنشئ التجمع واستعد كل مجموعة بيانات إلى مجموعة بيانات جديدة. لم يُتحقق بعد مما إذا كانت قوائم NFSv4 ACL، كما يستخدمها TrueNAS على مجموعات بيانات SMB، تعود كما تتوقع، لذا جرّب استعادة على بياناتك قبل الاعتماد عليها.

مجموعات البيانات المشفرة

لا تُنسخ مجموعة البيانات المشفرة إلا ما دام مفتاحها محمّلاً. وإلا فتُتخطى مع تحذير؛ حمّل المفتاح بالأمر zfs load-key وركّب مجموعة البيانات. يقرأ BombVault البيانات بعد فك تشفيرها ويخزنها في مستودع restic المشفر. إذا عطّلت التشفير في BombVault، فذلك المستودع غير مشفر.

اللقطات المتبقية

اسم لقطة النسخة الاحتياطية هو <dataset>@bombvault-<14 رقماً>، مثلاً cache/appdata@bombvault-20260924021500 (UTC). يزيلها BombVault بعد النسخة الاحتياطية مباشرة. إذا فشل ذلك، مثلاً لأن مجموعة البيانات مشغولة أو لأن BombVault أُوقف، فإن BombVault يزيلها:

  • قبل النسخة الاحتياطية التالية لذلك العنصر،
  • عند بدء BombVault، لكل عنصر، حتى مع إيقاف النطاق،
  • عندما تحذف العنصر،
  • عندما تضغط أزل الآن في العنصر، الذي يعرض أيضاً عدد المتبقي.

لا تُزال إلا الأسماء التي تطابق تماماً bombvault- يليها 14 رقماً. لا تُمس أبداً لقطات الأمان ولا لقطاتك الخاصة ولا اللقطات التلقائية. لإزالة واحدة يدوياً:

zfs destroy -r cache/appdata@bombvault-20260924021500

الحالات الشاذة

المجموعة الفرعية التي أُفرغت بالكاد تغير مجموع شجرة كبيرة، لذا يراقب كشف الحالات الشاذة كل مجموعة بيانات في العنصر على حدة: للحجم وعدد الملفات والبيانات الجديدة ووقت restic سجل خاص بكل منها. ينتمي هذا السجل إلى اسم مجموعة البيانات، لذا يبقى عندما ينسخ عنصر آخر الشجرة لاحقاً.

مجموعة البيانات التي نسخها التشغيل السابق ولم يستطع هذا التشغيل قراءتها تُعد مُفرغة، ما دام تحديد العنصر لم يتغير. يشمل ذلك مفتاحاً غير محمّل، ومجموعة بيانات غير مركّبة، ومجموعة اختفت من الشجرة. المجموعة الفرعية التي تستبعدها بنفسك تغير التحديد، لذا يبدأ سجلها من جديد. وما دامت ملاحظة عن بيانات مفقودة مفتوحة، تحتفظ سياسة الاستبقاء بالنسخ القديمة لتلك المجموعة وحدها وتنظف بقية الشجرة كالمعتاد.

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

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

رموز الأسباب

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

الرمز المعنى ما العمل
ssh-missing اتصال SSH غير مُعد في هذه الحاوية. أعد اتصال SSH كما لنسخ VM الاحتياطية.
host-placeholder ما زال Host SSH: Address هو القيمة المثال، ولم يستجب host.docker.internal أيضاً. اضبط Host SSH: Address على عنوان IP المحلي لهذا الخادم.
host-fallback ما زال Host SSH: Address هو القيمة المثال، وhost.docker.internal يعمل. لا شيء، أو اضبط عنوان IP المحلي.
ssh-unreachable لا يمكن الوصول إلى الخادم عبر SSH. تحقق من العنوان والمنفذ ومن أن SSH مفعّل.
ssh-auth رفض الخادم مفتاح BombVault. شغّل مرة واحدة على الخادم الأمر المعروض في بطاقة الاتصال.
zfs-not-found لا يوجد الأمر zfs على مضيف SSH. وجّه Host SSH: Address إلى الجهاز الذي يملك المجمعات.
zfs-permission لا يُسمح لمستخدم SSH بتشغيل أمر zfs هذا. استخدم root، أو راجع TrueNAS SCALE.
uri-mismatch يحدد LIBVIRT_URI مضيفاً أو مستخدماً غير الذي في حقول SSH. وفّق بينهما، أو أفرغ حقول SSH ليأتي الاثنان من الـ URI.
zfs-error أبلغ zfs عن خطأ آخر. تعرض التفاصيل رسالته.
propagation-missing عمليات التركيب الجديدة على المضيف لا تصل إلى الحاوية. اضبط Access Mode لـ Host Data على Read/Write - Slave وأعد تشغيل BombVault.
invalid-name اسم مجموعة بيانات لا يقبله BombVault. أعد تسمية مجموعة البيانات.
name-too-long مجموعة بيانات في الشجرة أطول من أن تصلح اسماً للقطة. أعد تسميتها، أو أضف مجموعة بيانات تحتها كعنصر.
invalid-exclude نمط استبعاد أو مجموعة فرعية مستبعدة لا يناسب العنصر. صحّح الإدخال الذي تذكره الرسالة. لاستبعاد مجموعة فرعية كاملة، أوقفها بدلاً من كتابة نمط.
not-found مجموعة البيانات غير موجودة على الخادم. أزل العنصر، أو أعد إنشاء مجموعة البيانات. تبقى نسخها الاحتياطية قابلة للاستعادة.
not-filesystem هذه وحدة تخزين، لا نظام ملفات. راجع وحدات التخزين.
overlaps-item تتداخل مجموعة البيانات مع عنصر موجود. راجع العناصر لا تتداخل أبداً.
docker-storage تحتوي الشجرة على تخزين صور Docker. راجع تخزين Docker.
nothing-readable لا يمكن قراءة أي مجموعة بيانات في العنصر حالياً. راجع رموز مجموعات البيانات المتخطاة.
snapshot-failed تعذر إنشاء اللقطة. تعرض التفاصيل رسالة zfs.
containers-busy كانت نسخة حاوية ما زالت تعمل حين كان على الحاويات أن تتوقف. ابدأ من جديد لاحقاً. التشغيلات المجدولة تنتظر من تلقاء نفسها.
consistency-stop-failed تعذر إيقاف حاوية، لذا لم تُلتقط لقطة. تحقق من الحاوية، أو أزلها من القائمة.
pre-snapshot-failed فشل الأمر الذي قبل اللقطة. تعرض تفاصيل التشغيل مخرجاته.
container-unknown حاوية مدرجة غير موجودة. أزلها من القائمة.
container-is-self لا يستطيع BombVault إيقاف حاويته الخاصة. أزلها من القائمة.
leftover-snapshots ما زالت على الخادم لقطات لم يستطع BombVault إزالتها. اضغط أزل الآن، وراجع اللقطات المتبقية.
zvol وحدة تخزين في الشجرة، تم تخطيها. راجع وحدات التخزين.
canmount-off لا تُركّب أبداً (canmount=off)، تم تخطيها. إذا كانت تحوي بيانات، ركّبها أو انقل البيانات إلى مجموعة فرعية.
legacy-mount نقطة تركيب legacy، تم تخطيها. أعطها نقطة تركيب تحت /mnt.
no-mountpoint بلا نقطة تركيب، تم تخطيها. أعطها نقطة تركيب تحت /mnt.
not-mounted غير مركّبة على الخادم، تم تخطيها. ركّبها بالأمر zfs mount، أو اضبط canmount=on.
key-not-loaded مشفرة والمفتاح غير محمّل، تم تخطيها. zfs load-key، ثم ركّبها.
snapdir-disabled الوصول إلى اللقطات معطّل، تم تخطيها. zfs set snapdir=hidden <dataset>. يبقى المجلد .zfs مخفياً.
not-visible لا يرى BombVault نقطة تركيب مجموعة البيانات. انقل نقطة التركيب تحت مسار Host Data، أو اربطها داخل الحاوية على المسار نفسه مع Read/Write - Slave.
shfs-only لا تظهر مجموعة البيانات إلا عبر /mnt/user، الذي يخفي اللقطات. اربط /mnt، لا /mnt/user، كـ Host Data.
snapshot-not-visible أُنشئت اللقطة لكنها لم تظهر داخل BombVault. شغّل اختبر الوصول إلى اللقطات؛ راجع أدناه.
snapshot-loop لم تصل اللقطة إلى BombVault لأن Host Data لا يمرر عمليات التركيب الجديدة. اضبط Access Mode لـ Host Data على Read/Write - Slave وأعد تشغيل BombVault.
backup-failed فشل restic لهذه المجموعة. تعرض تفاصيل التشغيل السبب.
not-reached انتهى التشغيل قبل هذه المجموعة. شغّل النسخة الاحتياطية مرة أخرى.
gone لم تعد مجموعة البيانات على الخادم. لا شيء. تبقى نسخها الاحتياطية قابلة للاستعادة.
read-only-mount لا يستطيع BombVault إلا قراءة مجموعة البيانات، لذا لا يمكنه الاستعادة داخلها. اضبط الربط على Read/Write - Slave، أو استعد إلى مجلد.
destination-not-mounted المجلد ليس على مجمع أو مشاركة مركّبة. اختر مجلداً على مجمع أو مشاركة.
not-enough-space لا توجد مساحة حرة كافية في الوجهة. حرر مساحة أو اختر مجلداً آخر.
safety-snapshot-failed تعذر التقاط لقطة الأمان، لذا لم يُستعد شيء. تعرض التفاصيل رسالة zfs.
safety-name-too-long اسم مجموعة البيانات أطول من أن يصلح للقطة أمان. أوقف لقطة الأمان، أو استعد إلى مجلد.
dataset-exists توجد مجموعة بيانات بهذا الاسم بالفعل. اختر اسمًا جديدًا، أو استعد إلى مجموعة البيانات نفسها.
create-failed تعذّر إنشاء مجموعة البيانات الجديدة. تعرض التفاصيل رسالة zfs. تحقق من وجود مجموعة البيانات التي فوقها.
new-dataset-not-visible أُنشئت مجموعة البيانات الجديدة، لكن BombVault لا يراها، لذلك لم تُستعد أي بيانات. تبقى مجموعة البيانات على الخادم. ركّبها تحت مسار Host Data واستعد إليها.
set-properties-failed تعذّر ضبط الخصائص المحفوظة، لذلك لم تُستعد أي بيانات. تعرض التفاصيل رسالة zfs.
set-limits-failed استُعيدت الملفات، لكن تعذّر ضبط الحصة أو الحجز المحفوظ. تعرض التفاصيل رسالة zfs. اضبط الحصة أو الحجز بنفسك باستخدام zfs set.

التحقق مما تراه الحاوية

يلتقط اختبر الوصول إلى اللقطات في العنصر لقطة حقيقية لشجرته، ويبحث عنها داخل BombVault لكل مجموعة بيانات، ثم يزيلها من جديد. إنها أسرع طريقة لإثبات المسار كله قبل أول تشغيل مجدول.

لتنظر بنفسك، شغّل هذا على الخادم:

docker exec BombVault grep zfs /proc/self/mountinfo

كل سطر هو عملية تركيب واحدة داخل الحاوية. يعرض سطر مجموعة البيانات مسارها داخل الحاوية (تحت /host/user) واسم مجموعة البيانات. وجود حقل master:N في ذلك السطر يعني أن عملية التركيب تستقبل عمليات التركيب التي يجريها المضيف لاحقاً، وهذا ما يحتاجه الوصول إلى اللقطات. إذا كان مفقوداً، فاضبط Access Mode لـ Host Data على Read/Write - Slave وأعد تشغيل BombVault.

TrueNAS SCALE

  • عندما يكون LIBVIRT_URI مضبوطاً (كما لنسخ VM الاحتياطية على TrueNAS)، يأخذ BombVault من الـ URI مضيف SSH والمستخدم والمنفذ لأوامر zfs، كلاً منها لم يُضبط وحده. من دون نسخ VM الاحتياطية، اضبط بدلاً من ذلك LIBVIRT_HOST وLIBVIRT_SSH_USER وLIBVIRT_SSH_PORT. أضف المتغيرات تحت Additional Environment Variables.
  • يحتاج مستخدم غير root إلى إذن على مجموعة البيانات العليا في العنصر، يشمل عندئذ كل مجموعة بيانات تحتها:
zfs allow <user> snapshot,destroy,mount <dataset>

تحتاج الاستعادة إلى مجموعة بيانات جديدة أيضًا إلى صلاحية create على مجموعة البيانات التي فوقها، ويحتاج ضبط الخصائص المحفوظة إلى صلاحية على تلك الخصائص.

جلسة SSH بغير root على TrueNAS لا تحتوي /usr/sbin في مسارها؛ فيستدعي BombVault عندئذ /usr/sbin/zfs مباشرة. - يجب أن يكون Host Data للتطبيق مسار مضيف فوق مجموعات البيانات، مثلاً /mnt/tank، لا ixVolume. مع مسار مضيف، يمرر التطبيق عمليات تركيب المضيف الجديدة إلى BombVault (rslave)، وهذا ما يحتاجه الوصول إلى اللقطات.