
كما تعلمون، إذا كان من الممكن أن تحدث مشكلة، فإنها ستحدث بالتأكيد. ربما واجه الجميع حالات تم فيها حذف ملف مهم عن طريق الخطأ، أو تم تحديد نص عن طريق الخطأ وتدميره في محرر نصوص.
إذا كنت مستضيفًا أو مالكًا لموقع ويب، فمن المحتمل أنك واجهت اختراقًا لحسابات المستخدمين أو موقع الويب الخاص بك. في مثل هذه الحالات، من المهم استعادة التسلسل الزمني، والعثور على طريقة الاختراق والثغرة التي استخدمها المهاجم.
يعد نظام الملفات NILFS2 مثاليًا لحل مثل هذه المشكلات.
وهو موجود في النواة Linux، بدءًا من الإصدار 2.6.30.
تكمن خصوصية نظام الملفات هذا في أنه يشبه نظام التحكم في الإصدار: يمكنك دائمًا استعادة حالة النظام وإلقاء نظرة على ما كان عليه منذ بعض الوقت.
لتوفير هذه الوظيفة، لا تحتاج إلى إعداد نصوص Cron، أو إنشاء لقطات، وما إلى ذلك. يقوم نظام الملفات NILFS2 بكل هذا بنفسه. إنه لا يقوم أبدًا باستبدال البيانات القديمة ويقوم دائمًا بالكتابة في مناطق جديدة من القرص إذا كان هناك مساحة خالية كافية على القرص. بالامتثال الكامل لمبدأ النسخ عند الكتابة.
في الواقع، يؤدي أي تغيير في ملف تلقائيًا إلى إنشاء لقطة جديدة لنظام الملفات، وبالتالي يمكنك استخدام نظام الملفات هذا كآلة زمنية وإعادة حالة الملفات إلى الوراء.
قصة
تم تطوير NILFS2 في أحشاء ، وهي شركة مملوكة للدولة فعليًا (حيث تمتلك حصة مسيطرة) وهي أكبر شركة اتصالات في اليابان. وبشكل أكثر تحديدًا، في مختبر CyberSpace Laboratories تحت قيادة .
من غير المعروف على وجه التحديد ما تم تطويره من أجله، ومع ذلك، يمكن الافتراض أن مثل هذا النظام، بوظيفة "آلة الزمن" الخاصة به، مثالي لتخزين البيانات التي قد ترغب الخدمات الخاصة في التنقيب فيها من أجل إعادة تشغيل الصورة الكاملة للرسائل القصيرة والبريد الإلكتروني وما إلى ذلك.
يعد NILFS2 أيضًا أداة قيمة للغاية لخدمات الأمن الداخلي، حيث يسمح لك باستعادة جميع رسائل البريد الإلكتروني المحذوفة في قاعدة بيانات البريد، وكشف أخطاء الموظفين الذين قد يحاولون لاحقًا إخفاءها عن طريق حذف أو تغيير ملفاتهم.
كيف يمكنني تتبع تاريخ المراسلات بالكاملВ Linux على الخوادم (وهذا هو المكان الذي يجب تثبيت NILFS2 فيه لأغراض الأمان الداخلي)، تُستخدم في كثير من الأحيان طريقة تخزين رسائل البريد الإلكتروني القائمة على الملفات. ما يسمى بالتنسيق . يكفي أن تضع وتكوين تخزين رسائل البريد الإلكتروني في Maildir. تنسيق آخر هو ملف نصي كبير يمكن تحليله بسهولة إلى رسائل فردية.
إذا كان خادم البريد يستخدم قاعدة بيانات، فسوف يجعل NILFS2 من الممكن استعادة التوقيت الدقيق للتغييرات في قاعدة البيانات والقدرة على استعادة قاعدة البيانات إلى أي من هذه اللحظات. وبعد ذلك، عليك استخدام أدوات قاعدة البيانات لمعرفة ما كان موجودًا فيها في تلك اللحظة...
لكن حدث خطأ ما. إما أن الحكومة اليابانية غيرت رأيها بشأن التجسس على الجميع (على غرار مبدأ ياروفايا)، أو أن أداء NILFS2 على محركات الأقراص الصلبة التقليدية كان مذهلاً للغاية، لذلك تم إصدار NILFS2 بموجب ترخيص GPL وسرعان ما أصبح جزءًا من النواة. Linuxبما أن مطوري النواة ليس لديهم شكاوى محددة بشأن الكود الذي كتبه يابانيون ذوو كفاءة عالية Linux لم يكن لدي.
ما هو NILFS2؟
من حيث الاستخدام: على نظام التحكم في الإصدار . كل نقطة تفتيش FS هي عبارة عن التزام يتم إجراؤه تلقائيًا دون علم المستخدم عند حدوث أي تغيير: سواء كان الحذف أو تغيير محتوى الملف أو تغيير حقوق الوصول. يحتوي كل التزام على رقم يتزايد خطيًا.
من وجهة نظر المبرمج: إلى المخزن المؤقت الدائري. يقوم نظام الملفات بتجميع التغييرات وكتابتها في جزء بحجم 8 ميجا بايت تقريبًا (2000 * 4096، حيث 2000 هو عدد العناصر في الكتلة و4096 هو حجم صفحة الذاكرة). يتم تقسيم القرص بأكمله إلى مثل هذه الأجزاء. التسجيل متسلسل. عندما تنفد المساحة الحرة، يتم حذف اللقطات الأقدم واستبدال الأجزاء.
الميزات الرئيسية لبرنامج NILFS2
- الإصدارات!!!
- إن إجراء استعادة نظام الملفات (FS) بعد الفشل بسيط للغاية: أثناء التحميل، يتم البحث عن الجزء الأخير الذي يحتوي على المجموع الاختباري الصحيح، ويتم تثبيت كتلة فائقة عليه. إنها عملية فورية تقريبًا.
- نظرًا لأن التسجيل يكون دائمًا خطيًا، إذن:
- يمكن أن تظهر نتائج جيدة عند العمل على SSD، مع الكتابة العشوائية البطيئة.
- يوفر NILFS2 موارد SSD لأنه لا يوجد تقريبًا عامل مضاعفة للكتابة.
وبصورة أدق، لا يزيد عن 2.النقطة هي أنه عند إعادة كتابة القرص بأكمله بشكل دوري، سيقوم NILFS2 بنقل البيانات غير القابلة للتغيير إلى أجزاء جديدة.إذا كان لدينا 10% من البيانات غير المتغيرة على القرص، فسنحصل على زيادة بنسبة 10% في الكتابة مع إعادة الكتابة الكاملة مرة واحدة. حسنًا، وزيادة بنسبة 1% عند 50% من سعة الجهاز لكل إعادة كتابة كاملة للقرص.
الحد الأقصى لكسب التسجيل هو 2. وهذا قليل جدًا نظرًا لأن كل شيء مكتوب بشكل تسلسلي. بشكل عام، سيكون معدل الضرب في الكتابة أقل من معدل الضرب في نظام الملفات المجزأ العادي الذي يحتوي على قطاع يبلغ طوله 4096 بايت. (مستوحاة من الفكر ).
- البساطة المحتملة لتنفيذ التكرار على نظام FS NILFS2 البعيد
NILFS2 لـ /home
عادةً ما تحتوي أنظمة التشغيل الشبيهة بنظام يونكس على مجلد /home حيث يتم تخزين بيانات المستخدم. تقوم العديد من البرامج بتخزين الإعدادات الخاصة بالمستخدم في هذا المجلد.
ومن هم الذين يرتكبون الأخطاء في أغلب الأحيان، إن لم يكونوا المستخدمين؟ لذلك، كما يقولون، أمر الله نفسه باستخدام NILFS2 على /home.
علاوة على ذلك، مع الاستخدام الواسع النطاق لمحركات أقراص SSD، لم يعد بإمكاننا القلق بشأن الانخفاض القوي عند استخدام أنظمة ملفات CoW.
نعم، يمكننا إنشاء لقطات FS بقدر ما نريد في كل من ZFS وBTRFS، ولكن هناك دائمًا خطر حدوث تغيير في الملف المفقود بين اللقطات. ولا تزال الصور بحاجة إلى الإدارة: يجب حذف الصور القديمة. في NILFS2، يحدث كل هذا تلقائيًا، حرفيًا كل بضع ثوانٍ.
لقد قمت بإنشاء وحدة تخزين منطقية باستخدام lvcreate (في مجموعة وحدة تخزين nvme، مجموعة رقيقة). أنصح بإنشائه على وحدة تخزين lvm، حيث يمكن توسيعه بسهولة لاحقًا. أوصي بالحصول على 50% من المساحة الحرة على القرص مع NILFS2 للحصول على عمق إصدارات لائق.
lvcreate -V10G -T nvme/thin -n homeوتم تنسيقه إلى NILFS2:
mkfs.nilfs2 -L nvme_home /dev/nvme/home
mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
Blocksize:4096 Device:/dev/nvme/home1 Device Size:10737418240
File system initialization succeeded !!
بعد ذلك، ستحتاج إلى نسخ كافة البيانات من /home الحالي.
لقد قمت بذلك فورًا بعد تشغيل الكمبيوتر، قبل تسجيل الدخول إلى حسابي، كمستخدم الجذر. إذا قمت بتسجيل الدخول كمستخدم خاص بي، فستفتح بعض البرامج مآخذ التوصيل والملفات الموجودة في مجلد /home/user الخاص بالمستخدم، مما يجعل النسخ النظيف أمرًا صعبًا. كما تعلم، عادةً ما يكون المجلد الرئيسي للمستخدم الجذر موجودًا في /root، لذلك لن يتم فتح أي ملفات على قسم /home.
mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome بخصوص السطر الأخير، انظر .
بعد ذلك، نقوم بتحرير /etc/fstab، الذي تم فيه تثبيت نظام الملفات الخاص بـ /home، إلى
/dev/disk/by-label/nvme_home /home nilfs2 noatime 0 0
خيار noatime من الضروري تحسين الأداء بحيث لا يتغير الوقت في كل مرة يتم فيها الوصول إلى الملفات. بعد ذلك نقوم بإعادة التشغيل.
أنواع اللقطات في NILFS2.
تُسمى اللقطة العادية التي لا تتمتع بالحصانة ضد الحذف بنقطة تفتيش (أو نقطة استعادة).
تُسمى الصورة التي تتمتع بالحماية ضد الحذف التلقائي لقطة، ويشار إليها فيما بعد باسم لقطة فقط.
يتم عرض نقاط التفتيش باستخدام الأمر lscp.
عرض اللقطات lscp -s
يمكننا أيضًا إنشاء لقطات ونقاط تفتيش بأنفسنا في أي وقت باستخدام:
mkcp [-s] устройствоنحن نقوم باستعادة البيانات.
يسمح لنا NILFS بتركيب عدد لا حصر له من اللقطات القديمة بالتوازي مع العمل مع الفرع الرئيسي لنظام الملفات (FS). ولكن في وضع القراءة فقط.
وهذه هي الطريقة التي تم بها إعداد كل شيء. يمكن حذف نقاط التفتيش المنتظمة التي يقوم بها NILFS2 تلقائيًا في أي وقت (عندما تنفد مساحة القرص أو وفقًا لقواعد nilfs_cleanerd)، لذلك قبل التحرير يجب علينا نقل نقطة التفتيش إلى لقطة أو إصلاح الصورة باللغة الروسية.
chcp ss номер_чекпоинтаبعد ذلك يمكننا تركيب الصورة، على سبيل المثال مثل هذا:
mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта بعد ذلك نقوم بنسخ الملفات القابلة للاسترداد من اللقطة إلى /home.
وبعد ذلك نقوم بإزالة علامة عدم الحذف من اللقطة حتى يتمكن جامع القمامة التلقائي في المستقبل من إزالة البيانات القديمة:
chcp cp номер_чекпоинтаأدوات مساعدة لـ NILFS2
ولكن هذه هي المشكلة. نعم، بالطبع، يمكننا إنشاء FS، وتغيير حجمه عبر الإنترنت، وعرض قائمة نقاط التفتيش، وإنشائها وحذفها. توفر حزمة nilfs2-utils مجموعة بسيطة للرجال.
نظرًا لأن شركة NTT قامت بخفض التمويل، فلا توجد أدوات مساعدة سريعة منخفضة المستوى تسمح لك بعرض تاريخ تغييرات الملفات، وإجراء الاختلافات بين اللقطات.
فائدتي n2u
ولملء هذا الفراغ كتبت ، والذي يمكنه عرض تاريخ التغييرات التي طرأت على ملف/دليل معين:
n2u log filenameوالخلاصة هي شيء من هذا القبيل:
CHECKPOINT DATE TIME TYPE SIZE MODE
1787552 2019-11-24 22:08:00 first 7079 cp
1792659 2019-11-25 23:09:05 changed 7081 cpإنه يعمل بسرعة كبيرة لطريقة التنفيذ المختارة: فهو يبحث عن الاختلافات بين الملفات باستخدام التقسيم، ويقوم بسرعة بتثبيت الملف/الدليل ومقارنته في لقطات مختلفة.
يمكنك تحديد نطاق من نقاط التفتيش باستخدام المفتاح -cp CP1:CP2 أو -cp {YEAR-MM-DD}:{YEAR-MM-DD}.
يمكنك أيضًا رؤية الفرق بين نقاط التفتيش لملف أو دليل محدد:
n2u diff -r cp1:cp2 filenameيمكنك عرض تاريخ التغييرات بالكامل: كل الاختلافات بين نقاط التفتيش لملف/دليل محدد:
n2u blame [-r cp1:cp2] filenameيتم دعم نطاق التاريخ أيضًا في هذا الأمر.
نداء للمطورين
هناك الكثير من الخبراء في هابر. من فضلك قم بإنهاء NILFS2. قم بإجراء تكرار، واختلاف سريع على مستوى منخفض بين المراجعات، وربط المرجع وغير ذلك من الميزات الرائعة!
مراجع
.
المستودعات:
.
.
النشرات الإخبارية:
. معرف اشتراك linux-nilfs.
.
.
.
الشكر:
- مطورو NILFS2: ريوسوكي كونيشي، وكوجي ساتو، وناروهيكو كاميمورا، وسيجي كيهارا، ويوشيجي أماجاي، وهيساشي هيفومي، وساتوشي مورياي. المساهمين الرئيسيين الآخرين هم: أندرياس روهنر، دان ماكجي، ديفيد أرندت، ديفيد سميد، ديكسن ديفريز، ديمتري سميرنوف، إريك ساندين، جيرو سيكيبا، ماتيو فريجو، هيتوشي ميتاكي، تاكاشي إيواي، فياتشيسلاف دوبيكو.
- إلى Amblin Entertainment و Universal Pictures لسلسلة الأفلام الرائعة . الصورة الأولى للتدوينة مأخوذة من فيلم "العودة إلى المستقبل - 3".
- شركة للحصول على الدعم وفرصة النشر على مدونتك على حبري.
PS يرجى إرسال أية أخطاء تلاحظها في رسالة خاصة. أقوم بزيادة الكارما الخاصة بي لهذا الغرض.
يمكنك تجربة NILFS2 عن طريق طلب جهاز افتراضي من مع القسيمة أدناه. لجميع العملاء الجدد هناك فترة تجريبية مجانية لمدة 3 أيام.
المصدر: www.habr.com
