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

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

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

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

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

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

بالطبع، سيعمل نظام التشغيل بشكل أبطأ بكثير، لأن قراءة أي ملف أو مكتبة تتم على عدة مراحل، ربما مع الوصول إلى الموارد البعيدة. ولكن يمكن للمستخدم العودة إلى العمل في أقرب وقت ممكن أثناء استمرار عملية الاسترداد.
تحتاج إلى أقل، حتى أقل.
لقد أثبت النموذج الأولي وظيفته. لكننا وجدنا أيضًا ضرورة للمضي قدمًا لأنه في بعض الحالات لا تزال هناك مآزق. على سبيل المثال، قد يطلب نظام التشغيل مكتبات مختلفة في سلاسل رسائل متعددة، مما يؤدي إلى تكرار خدمتنا مرة أخرى على نفسها.
المشكلة التي أعمل عليها حاليًا هي زيادة سرعة الاستعادة النشطة وزيادة مستوى أمان النظام. لنفترض أن النظام لا يحتاج إلى الملف بأكمله، بل إلى جزء منه فقط. لهذا الغرض، تم تطوير برنامج تشغيل آخر - برنامج تشغيل عامل تصفية القرص. لم يعد يعمل على مستوى الملف، ولكن على مستوى الكتلة. مبدأ التشغيل مشابه: في وضع التشغيل العادي، يقوم برنامج التشغيل ببساطة بتسجيل الكتل المتغيرة على القرص، وفي وضع الاسترداد، يحاول قراءة الكتلة بمفرده، وإذا لم ينجح ذلك، يطلب من الخدمة زيادة الأولوية. ومع ذلك، تظل جميع الأجزاء الأخرى من النظام كما هي. على سبيل المثال، لا تشك الخدمة على مستوى نظام التشغيل حتى في أنه يُطلب منها التواصل مع برنامج تشغيل آخر، لأن المهمة الرئيسية هي تزويد نظام التشغيل بالبيانات اللازمة للتشغيل بالضبط. يتطلب هذا المجال تحسينات كبيرة، فقط لأن الخدمة لا تعرف بعد كيفية التفكير على مستوى الكتلة.
في الخطوة التالية، قررت تشغيل برنامج التشغيل بشكل أعمق وأقدم، والنزول إلى مستوى برامج تشغيل UEFI وتطبيقات Windows الأصلية بدلاً من الخدمة. ولهذا الغرض تم تطويره (أو برنامج تشغيل DXE)، والذي يبدأ ويتوقف حتى قبل بدء تشغيل نظام التشغيل. لكننا سنلقي نظرة على "تاريخ" برامج تشغيل UEFI، وتفاصيل حول التجميع والتثبيت، بالإضافة إلى تفاصيل تطبيقات Windows الأصلية في المنشور التالي. لذا اشترك في مدونتنا، وفي هذه الأثناء سأقوم بإعداد قصة عن المرحلة التالية من العمل. سأكون سعيدًا برؤية تعليقاتك ونصائحك.
يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع. ، من فضلك.
هل سبق لك أن واجهت مواقف استغرق فيها التعافي وقتًا طويلاً للغاية:
65.1%نعم 28
23.2%رقم 10
11.6%لم أفكر في ذلك5
صوَّت 43 مستخدمًا. امتنع 3 مستخدما عن التصويت.
المصدر: www.habr.com
