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

تم تطوير NILFS2 في أحشاء
شركة Nippon Telegraph and Telephone Corporation ، في الواقع ، الدولة (لديها حصة مسيطرة) وأكبر شركة اتصالات في اليابان. وبشكل أكثر تحديدًا ، كانت مختبرات CyberSpace بقيادة
Ryusuke Konishi .
لماذا تم تطويره على وجه التحديد - من غير المعروف ، ومع ذلك ، يمكن افتراض أن مثل هذه الخدمة الثابتة ، مع وظيفة "آلة الزمن" الخاصة بها ، مثالية لتخزين البيانات التي قد ترغب في البحث فيها بشكل أعمق في الخدمات الخاصة من أجل إعادة تشغيل صورة الرسائل النصية القصيرة ورسائل البريد الإلكتروني وما إلى ذلك.
NILFS2 هي أيضًا ، على الأرجح ، أداة قيمة للغاية لخدمات الأمن الداخلي ، لأنها تتيح لك استرداد جميع الرسائل المحذوفة في قاعدة بيانات البريد ، وفتح أعناق الموظفين الذين يمكنهم فيما بعد محاولة إخفاءهم عن طريق حذف أو تغيير ملفاتهم.
كيف يمكنني تتبع تاريخ المراسلات بأكملهفي Linux ، على الخوادم (ويستحق وضع NILFS2 هناك لأغراض الأمان الداخلي) ، غالبًا ما يتم استخدام طريقة لتخزين رسائل البريد الإلكتروني لتخزين رسائل البريد. ما يسمى تنسيق
Maildir . يكفي تثبيت
خادم البريد السريع وتكوين تخزين الحروف في Maildir. تنسيق
mbox آخر هو ملف نصي كبير يمكن تحليله بسهولة على الرسائل الفردية.
إذا كان خادم البريد يستخدم قاعدة البيانات ، فإن NILFS2 سيمكنك من استعادة التوقيت الدقيق لتغييرات قاعدة البيانات والقدرة على استعادة قاعدة البيانات في أي من هذه النقاط. ثم تحتاج إلى استخدام أدوات قاعدة البيانات لمعرفة ما كان عليها في ذلك الوقت ...
ومع ذلك ، حدث خطأ ما. إما قررت الحكومة اليابانية عدم اتباع الجميع (مبدأ la Spring) ، أو تبين أن أداء NILFS2 على محركات الأقراص الصلبة التقليدية كان أقل من اللوح الأساسي ، وتم إصدار NILFS2 بموجب ترخيص GPL وأدخل بسرعة إلى Linux kernel ، حيث كانت هناك شكاوى خاصة حول الكود المكتوب اليابانية من ذوي المهارات العالية ، لم يكن لدى مطوري نواة Linux.
كيف تبدو NILFS2؟
من وجهة نظر الاستخدام: على نظام التحكم في الإصدار
SVN . كل نقطة تفتيش في الخدمة الثابتة هي التزام يتم إجراؤه تلقائيًا دون علم المستخدم بأي تغيير: سواء كان يتم حذفه أو تغيير محتويات الملف أو حقوق الوصول. يحتوي كل التزام على رقم يزيد خطيًا.
من وجهة نظر مبرمج: على عازلة دائرية. يحفظ نظام الملفات التغييرات ويكتبها إلى قطعة تساوي حوالي 8 ميغابايت (2048 * 4096 ، حيث 2048 هو عدد العناصر في الكتلة ، و 4096 هو حجم صفحة الذاكرة). القرص بأكمله ينقسم إلى مثل هذه القطع. التسجيل في تسلسل. عند نفاد مساحة خالية ، يتم حذف أقدم الصور ، ويتم استبدال الأجزاء.
الكعك الأساسية NILFS2
- الإصدار!
- يعتبر الإجراء الخاص باسترداد نظام الملفات بعد الفشل إجراءً أوليًا: عند التحميل ، يبحث عن القطعة الأخيرة التي تحتوي على المجموع الاختباري الصحيح وتثبيته كتلة رائعة عليه. هذه تقريبا عملية فورية.
- نظرًا لحقيقة أن التسجيل يتم دائمًا بشكل خطي ، إذن:
- يمكن أن تظهر نتائج جيدة عند العمل على سواقات الأقراص الصلبة ، مع تسجيل عشوائي بطيء.
- يحفظ NILFS2 موارد SSD نظرًا لعدم وجود أي مضاعف سجل تقريبًا.
بتعبير أدق ، ليس أكثر من 2.الحقيقة هي أنه أثناء إعادة الكتابة الدورية للقرص بأكمله ، سينقل NILFS2 البيانات غير القابلة للتغيير إلى أجزاء جديدة (قطع).
إذا كان لدينا 10٪ من البيانات غير المتغيرة على القرص ، فسنحصل على زيادة بنسبة 10٪ في التسجيل مع إعادة كتابة واحدة كاملة. حسنًا ، زيادة بنسبة 50٪ مع جهاز كامل بنسبة 50٪ من أجل إعادة كتابة واحدة كاملة للقرص.
الحد الأقصى لكسب التسجيل هو 2. هذا صغير جدًا بالنظر إلى أن كل شيء مكتوب بالتسلسل. بشكل عام ، ستكون الرسوم المتحركة للسجل أقل من الرسوم المتحركة لنظام ملفات مجزأ منتظم بقطاع 4096 بايت. (علق على الأفكار).
- سهولة محتملة للنسخ المتماثل لجهاز NILFS2 FS عن بعد
NILFS2 ل / المنزل
في أنظمة التشغيل المشابهة لـ Unix ، كقاعدة عامة ، يوجد مجلد / home يتم تخزين بيانات المستخدم فيه. تقوم البرامج المختلفة بحفظ إعداداتها المتعلقة بمستخدم معين في هذا المجلد.
والذين ، إن لم يكن المستخدمين ، في معظم الأحيان جز؟ لذلك ، كما يقولون ، أمر الله نفسه باستخدام NILFS2 في / المنزل.
علاوة على ذلك ، مع التوزيع الواسع لمحركات أقراص الحالة الصلبة ، لا يمكننا الآن القلق بشأن السحب القوي عند استخدام أنظمة ملفات 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.
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
لتحسين الأداء بحيث لا يتغير atime مع كل الوصول إلى الملفات. بعد ذلك ، نحن إعادة تشغيل الكمبيوتر.
أنواع الصور في NILFS2.
تسمى لقطة طبيعية بدون مناعة الحذف نقطة تفتيش (نقطة تفتيش أو نقطة استرداد).
تسمى لقطة ذات حماية حذف تلقائي لقطة ، ثم مجرد لقطة.
يتم عرض نقاط التفتيش باستخدام الأمر lscp
عرض لقطات lscp -s
يمكننا إنشاء لقطات ونقاط تفتيش في أي وقت باستخدام:
mkcp [-s]
استعادة البيانات.
يسمح لنا NILFS بتركيب العديد من الصور القديمة التي نحتاجها بالتوازي مع العمل مع فرع FS الرئيسي. ولكن فقط في وضع القراءة.
تم ترتيب كل شيء مثل هذا. يمكن حذف نقاط التفتيش المعتادة التي يقوم بها NILFS2 تلقائيًا في أي وقت (عندما تنفد مساحة القرص أو وفقًا لقواعد nilfs_cleanerd) ، لذلك ، قبل التثبيت ، يجب علينا ترجمة نقطة التفتيش إلى لقطة أو ، باللغة الروسية ، إصلاح الصورة.
chcp ss _
بعد ذلك ، يمكننا تحميل اللقطة ، على سبيل المثال ، مثل هذا:
mount -t nilfs2 -r -o cp=_ /dev/nvme/home /mnt/nilfs/_
ثم نقوم بنسخ الملفات المستردة من اللقطة إلى / المنزل.
ثم نقوم بإزالة علامة عدم التمييز من الصورة ، بحيث يمكن لمجمع البيانات المهملة التلقائية في المستقبل حذف البيانات القديمة:
chcp cp _
المرافق ل NILFS2
لكن هذه هي المشكلة. نعم ، بالطبع ، يمكننا إنشاء نظام ملفات ، وتغيير حجمه عبر الإنترنت ، وعرض قائمة بنقاط السلسلة ، وصنعها وحذفها. توفر حزمة nilfs2-utils مجموعة بسيطة من السيد.
نظرًا لأن NTT قلص التمويل ، لا توجد أدوات مساعدة سريعة منخفضة المستوى يمكنها عرض محفوظات تغييرات الملفات وجعل الفوارق بين اللقطات.
بلدي فائدة n2u
لملء هذا الفراغ ، كتبت
الأداة المساعدة 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
إنه يعمل بسرعة كبيرة بالنسبة لطريقة التنفيذ المختارة: فهو يبحث عن الاختلافات بين الملفات باستخدام طريقة bisection ، ويقوم بتركيب ومقارنة الملف / الدليل بسرعة في صور مختلفة.
يمكنك ضبط نطاق نقاط التفتيش باستخدام مفتاح
-cp CP1:CP2
أو
-cp CP1:CP2
أو
-cp CP1:CP2
-cp {YEAR-MM-DD}:{YEAR-MM-DD}
.
يمكنك أيضًا رؤية الفرق بين نقاط التفتيش لملف أو دليل محدد:
n2u diff -r cp1:cp2 filename
يمكنك عرض التسلسل الزمني الكامل للتغييرات: جميع الاختلافات بين نقاط التفتيش لملف / دليل محدد:
n2u blame [-r cp1:cp2] filename
نطاق التاريخ في هذا الأمر مدعوم أيضًا.
البكاء للمطورين
هناك الكثير من المتخصصين في حبري. يرجى الانتهاء من NILFS2. جعل النسخ المتماثل ، فرق سريع المستوى بين المراجعات ، reflink وغيرها من الأشياء الجيدة!
مراجع
موقع NILFS الرسمي .
مستودع:
NILFS2 .
NILFS2 المرافق والوحدات .
القوائم البريدية:
البريد الإلكتروني المطور NILFS2 . معرف اشتراك linux-nilfs.
النشرة الإخبارية الأرشيف .
دليل التكوين Nilfs_cleanerd .
اختبارات الأداء المقارنة من EXT4 ، Btrfs ، XFS و NILFS2 .
الشكر:
- مطورو NILFS2: ريوسوكي كونيشي ، كوجي ساتو ، ناروهيكو كاميمورا ، سيجي كيهارا ، يوشيجي أماجاي ، هيساشي هيفومي وساتوشي مورياي. المساهمون الرئيسيون الآخرون هم: أندرياس روهنر ، ودان ماكجي ، وديفيد أريندت ، وديفيد سميد ، وديكسين ديفريز ، وديمتري سميرنوف ، وإريك ساندين ، وجيرو سيكيبا ، وماتيو فريجو ، وهيتوشي ميتاكي ، وتاكاشي إيواي ، وفياتشيسلاف دوبيكو.
- أمبلين إنترتينمنت آند يونيفرسال بيكتشرز عن سلسلة أفلامهما الرائعة "العودة إلى المستقبل" . تم التقاط الصورة الأولى للنشر من فيلم "Back to the Future - 3".
- شركات RUVDS لدعمها وفرصة للنشر على بلوق على Habré.
PS الأخطاء المباشرة التي تلاحظها في PM. أنا زيادة الكرمة لهذا الغرض.
يمكنك تجربة NILFS2 من خلال طلب جهاز افتراضي من
RUVDS للحصول على القسيمة أدناه. لجميع العملاء الجدد ، فترة تجريبية مجانية مدتها 3 أيام.
