استعادة نشطة: هل يمكن أن يكون التعافي من الكوارث أسرع؟ أسرع بكثير؟

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

صورة

تحية! اسمي Daulet Tumbaev ، واليوم أود أن أشاطركم تجربتي في تطوير نظام يسرع من التعافي من الكوارث. للحديث عن مسار تطوير المشروع بأكمله ، دعنا نبدأ قليلاً من بعيد. أعمل حاليًا في Acronis ، لكنني أيضًا خريج جامعة Innopolis التي تخرجت منها في برنامج الماجستير في إدارة تطوير البرمجيات (المعروف باسم MSIT-SE). إنوبوليس هي جامعة صغيرة ، والمناهج أصغر سنا. ولكن بعد ذلك تم بناءه على منهج جامعة كارنيجي ميلون (جامعة كارنيجي ميلون) ، والذي تحقق من خلاله موضوع مثل المشروعات الصناعية.

الغرض من المشروع الصناعي هو غمر الطالب في التنمية الحقيقية وتوطيد المعرفة المكتسبة في الممارسة العملية. للقيام بذلك ، تتعاون الجامعة مع شركات مثل Yandex و Acronis و MTC وعشرات الشركات الأخرى (في المجموع ، كان لدى الجامعة 144 شريكًا لعام 2018). في سياق التعاون ، تقدم الشركات اتجاهات عملها للجامعة ، ويختار الطلاب أحد المشاريع الأقرب إليهم من حيث اهتماماتهم ومستوى التدريب لديهم. قبل عامين فقط ، كنت لا أزال "على الجانب الآخر من المتاريس" وعملت كطالب في مشروع أكرونيس آخر. لكن هذه المرة ، أصبحت مستشارًا تقنيًا للطلاب من الشركة واقترح مشروع Active Restore على Innopolis. تمت صياغة فكرة Active Restore من قبل فريق Kernel في Acronis ، ولكن تطوير الحل بدأ مع جامعة Innopolis.

استعادة نشطة - لماذا هذا مطلوب؟


تقليديا ، التعافي من الكوارث يعمل وفقا لنظام قياسي. بعد حدوث مشكلات مع الكمبيوتر ، تنتقل إلى واجهة الويب الخاصة ببعض أنظمة النسخ الاحتياطي ، على سبيل المثال ، Acronis True Image ، وانقر على زر "استعادة" الكبير. بعد ذلك ، تحتاج إلى الانتظار N دقيقة ، وبعد ذلك فقط يمكنك متابعة العمل.



المشكلة هي أن هذا الرقم N ، المعروف أيضًا باسم RTO (هدف وقت الاسترداد) ، وهو وقت الاستعادة المسموح به ، يمكن أن يكون مثيرًا للإعجاب ، ويعتمد ذلك على سرعة الاتصال (في حالة حدوث الاسترداد من السحابة) ، على حجم محرك الأقراص الثابتة بجهاز الكمبيوتر الخاص بك و عدد من العوامل الأخرى. هل يمكن تخفيضها؟ نعم ، يمكنك ذلك ، لأنه من أجل استئناف العمل ، لا تحتاج دائمًا إلى قرص كمبيوتر كامل. لا تؤثر نفس الصور ومقاطع الفيديو على وظائف الجهاز ويمكن سحبها لاحقًا في الخلفية.

مطلوب سائق ...


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

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

يبدو وكأنه صورة مثالية. ومع ذلك ، في العالم الحقيقي ، هناك عدد كبير من المزالق والمآزق المحتملة. جنبا إلى جنب مع الطلاب الجامعيين Innopolis ، قررنا التحقيق في هذا السيناريو الانتعاش ، وتقييم المكاسب في RTO ، وفهم ما إذا كان هذا النهج هو ممكن؟ في الواقع ، مثل هذه القرارات في السوق ببساطة لم تكن موجودة في ذلك الوقت.

وإذا قررت التخلي عن مكون الخدمة إلى اللاعبين من Innopolis ، فقد بدأ العمل داخل Acronis على برنامج تشغيل نظام ملفات مصغرة . تم ذلك بواسطة فريق Windows Kernel. كانت الخطة هي:

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


الدقيقة من هندسة السائق


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


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


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

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

إذا لم يكن الاسترداد ممكنًا ، فإن الخدمة تبلغ السائق أنه لا يوجد ملف في النسخة الاحتياطية أيضًا. يتخطى برنامج تشغيل mini-filter الخاص بنا ببساطة طلب النظام بشكل أكبر ويتلقى الطالب الأصلي (نظام التشغيل نفسه أو التطبيق) خطأ "لم يتم العثور على الملف". ومع ذلك ، هذا أمر طبيعي تمامًا إذا كان الملف غير موجود بالفعل على القرص وفي النسخة الاحتياطية.



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

تحتاج أقل ، حتى أقل ...


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

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

في الخطوة التالية ، قررت تشغيل برنامج التشغيل بشكل أعمق والإصدارات السابقة ، وانخفض إلى مستوى برامج تشغيل UEFI وتطبيقات Windows الأصلية بدلاً من الخدمة. لهذا ، تم تطوير برنامج تشغيل UEFI (أو برنامج تشغيل DXE) ، والذي يبدأ ويموت قبل بدء تشغيل نظام التشغيل. لكن "محفوظات" برامج تشغيل UEFI ، وتفاصيل حول التجميع والتثبيت ، فضلاً عن تفاصيل تطبيقات Windows Native ، سنأخذها في الاعتبار في المنشور التالي. لذا اشترك في مدونتنا ، وسأعد حاليًا قصة عن المرحلة التالية من العمل. سأكون سعيدًا بتعليقاتك ونصائحك.

Source: https://habr.com/ru/post/ar477658/


All Articles