نوفمبر 13، 2010

كيف تحمي ملفاتك من التلف جراء إنقطاع التيار الكهربائي و تجمدات النظام على جنو/لينكس

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

لنبدأ ببعض الحقائق التي قد تجدها بديهية أو غريبة:

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

* الأقرص الصلبة حسب نوعية و جودة التصنيع، قد تخضع لإختبارات جودة مطولة، خفيفة أو حتى من دون أدنى اختبار للجودة طبعا مع فرصة تبديلها بغيرها (هي أيضا دون أدنى اختبار) إذا علمت بوجود علة فيها و أرجعتها إلى المصنع أو المزود (طبعا ليس في بلادنا العربية)

* هناك خاصية تسمى S.M.A.R.T تدعهما أغلب الأقراص الصلبة الحالية و هي باختصار قدرة القرص الصلب على تحليل و مراقبة أداءه بنفسه و إخبار المستخدم بوجود أعطال أو مشاكل قد تنبئ بالتلف الكلي أو الجزئي للقرص الصلب. لكن مع الأسف هذه الخاصية غير مفعلة بشكل إفتراضي على عدد كبير من الحواسب أو أن بعض الأنظمة (أقصد ويندوز هنا) لا تكترث لها.

* هناك نسبة جد جد صغيرة (لكن احتمال أن تصادفها يرتفع مع الوقت و كثرة البينات المكتوبة) بأن تكتب بعض معلوماتك بطريقة فاسدة و بصمت (silent data corruption) دون أية مشاكل أو رسائل أخطاء إلى أن تتكرر الحالات وتستعجب لإرتفاع أخطاء المقارنات من نوع md5 و غيراها دون أي سبب وجيه. راجع هذه المقالة على ZDnet

* بعض الأقراص الصلبة تكذب عندما تقول أنها خزنت بياناتك لأنها تستخدم ذاكرة مؤقتة تسمى (Write Cache) تجمع فيها بضع عمليات قبل أن تنفدها دفعة واحدة و ذلك لتحسين الأداء.

* بعض الأقراص الصلبة العملاقة (من حجم 2TB و ما فوق) تكذب في وصفها لمساحة القطاعات بـ 512bytes بينما تستخدم قطاعات بمساحة 4Kbytes أو 8Kbytes

و في كلى الكذبتين قد يتوه النظام أو بعض أدوات النظام ما بين هو حقيقي و بين ما يدعيه القرص الصلب.

* هناك مشاكل أخرى لها علاقة إما بموصلات البيانات و جودتها أو تغدية الطاقة التي قد تكون أو تصبح رديئة أو غير كافية.

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


ماذا يمكن أن تفعل أمام كل هذا؟


1. لا توهم نفسك:

* أترك نسخ احتياكية و اضافية لملفاتك الضرورية على أقارص مدمجة (DVDs/CDs) بجودة لا بأس بها أو عالية الجودة و بشكل دوري، كما لا تعتمد على ذاكرات الفلاش (USB flash memories) أبدا كوسلية تخزين احتياطي.

* استخدم خدمات التخزين السحابية للملفات الصغيرة (أقل من 30MB) مثل Ubuntu One, DropBox, FileDen أو حتى Google Docs

* إذا كنت مطورا، مصمما أو تعمل على أي شيء به ملفات عديدة، إستخدم الخدمات السحابية التي توفر أنظمة للتحكم بالمراجعات بواسطة Git أو Mercurial مثل GitHub, Gitorious, BitBucket و غيرها الكثير.

* اذا كنت تعمل ضمن فريق/شركة صغير/ة و توفرتم على جهاز NAS (حاسوب مصغر ببضعة أقراص صلبة تعمل على RAID) أو تتوفر على حاسوب ثانوي استخدمه كوسيلة تخزين على الشبكة. طبعا نظام التشغيل الذي ستثبته عليه يجب أن يكون أي شيء يدعم نظام تسيير الملفات ZFS مثل Nexenta أو FreeNAS. لا جدال في هذه النقطة. هذا الحل لا يغني عن أقراص DVD بل مكمل لها. أو على الأقل استخدم قرص صلب خارجي.

* اذا توفرت على قرصين صلبين استخدمهما كمرآة للآخر بواسطة تقنية RAID1 عند تثبيت نظام جنو+لينوكس. راجع توثيق توزيعتك لتعرف كيف تفعل ذلك.

* اشتري مزود الطاقة اللامنقطعة (UPS) إذا أمكن لك.


2. اختر بين الأداء أو الآمان على أنظمة تسيير الملفات Ext

* نظام جنو+لينوكس يدعم عدد كبير من أنظمة تسيير الملفات، لكن على أغلب التوزيعات نحصل على ثلاثة أو أربعة اختيارات منها.

* Ext2 لا يصلح إلا لقسم الإقلاع /boot لأنه أكثر توافقية و من دون تعقيدات خاصية السِجلّ/قيد الحواجز (Journaling)

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

* XFS أداءه أفضل من Ext4 و يوفور نفس درجة الأمان الإفتراضية لـ Ext3 و أفضل من درجة أمان Ext4 الإفتراضية.

* JFS جيد إلا أن تقرأ عنه أنه قد يبقى دون تخزين فعلي للبيانات الوصفية (Metadata) لبضعة دقائق إلى ساعات من التعديلات، فتصور معي كيف ستكون حالتك بعد تجمد النظام أو انقطاع مفاجئ للكهرباء.

* ReiserFS4 أفضل منهم لكنه لم يدرج مع النواة و الآن هو غير مكتمل لأن مطوره الأصلي مسجون بتهمة قتله لزوجته.

* BtrFS ما زال قيد التطوير و سيحتاج للسنتين أو ثلاثة على أقل تقدير بعد اصداره ليصبح مستقرا و آمنا. لا تفكر أن تستعمل الإصدار التطويري له الآن و إليك السبب.


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

لكي تعرف أنظمة الملفات تلك ما تم تعديله و لكي تحافظ عليها بشكل متناسق حتى في حالات تجمد النظام أو انقطاء مفاجئ للكهرباء يجب أن تستخدم السِجلّ (Journal) لكي تتبع كل ذلك.

لو لم تستخدم سِجلّ لكان عليها أن تفحص كل الملفات سواءا التي عدل عليها قبل سنة و لم تمسس منذ تلك اللحظة أو التي كنت تعدل عليها لحظة التجمد. و بذلك لأخدت عملية الفحص دقائق إلى ساعات.

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

الحالات التي يمكن أن نواجهها هي:
* عُدل السِجلّ قبل تعديل محتوى الملف. في هذه الحالة إما سيتم التراجع إلى حالة السِجلّ السابقة دون أن نخسر شيء أو سيلغى الملف من السِجلّ و ستضيع حتى النسخة الأصلية لأنها حسب السِجلّ أصبحت غير موجودة أو فاسدا. هذه الحالة ستواجهها إذا استخدمت نمط data writeback mode للحصول على أعلى أداء ممكن من القرص الصلب.

* عُدل الملف دون أن يعدل السِجلّ. لن تخسر نسختك الأصلية للملف لكن ستخسر التعديلات. و أحيانا بسبب الأقراص التي تكذب لإستخدامها لذاكرة Write Cache أو لتخزين أجزاء الملف دون ترتيب أولوي قد تحصل في النهاية على ملف به أجزاء قديمة و أخرى حديثة. هذه الحالة ستواجهها إذا استخدمت نمط data ordered mode و هو الخيار الإفتراضي لـ Ext3 و Ext4. لكن Ext4 أسوأ لاستخدامها خاصية الحجز المتأخر (delayed allocations)

* عُدل السِجلّ كليا ثم يعدل محتوى الملف كليا ثم يعدل السجل/أو يتحقق منه من جديد. في هذه الحالة ستضمن أن النسخة الأصلية آمنة إن فشل التعديل عليها أو أنه تم تعويضعا بالنسخة الجديدة بنجاح. بمعنى أن القرص و ملفاتك دائما ستبقى متناسقة. هذا النمط يسمى بـ data journal mode و هو المفضل لكل من يريد أعلى درجة تناسق و أعلى حماية من التجمدات و انقطاعات التيار الكهربائي لكن على حساب تراجع أداء القرص أثناء الكتابة رغم أنه يحقق سرعة قراءة أعلى من الأنماط الأخرى.


3. كيف نحمي الملفاتي من التجمدات و انقطاعات التيار الكهربائي على نظام الملفات Ext3 و Ext4
لكي نعرف النمط المستخدم سننفذ الأمر التالي:
cat  /proc/mounts | grep data=

و ستكون النتيجة غالبا كما يلي:
/dev/mapper/VG-LV00 / ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0


أ. قسم الجدع /

الآن يجب عليك ألا تنسى هذه المعلومة أبدا. نمط data=jounal لا يجب أن يضاف إلى القسم الذي يضم جدع النظام / من خلال تعديل الملف /etc/fstab بل يجب إضافته كمعيار للنواة أثناء الإقلاع بتعديل ملف /etc/default/grub

لكن قبل أن تعديله حاول تجربة الإقلاع بذلك النمط بشكل مؤقت (حتى نتفادا المفاجأت) بالضغط على الزر a من على مدير الإقلاع المسمى بـ grub ثم اضافة
rootflags=data=journal

إذا أقلع النظام بدون أية مشاكل يمكن بعدها تعديل الملف /etc/default/grub و اضافة  rootflags=data=journal إلى السطر التالي

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

فيصبح :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rootflags=data=journal"

ثم تنفد الأمر التالي كي تؤخد تلك التعديلات بعين الإعتبار:
sudo update-grub


ب. الآن، ماذا عن الأقسام الأخرى التي لا تضم الجدع /

يكفي تعديل الملف /etc/fstab ثم اضافة data=journal بعد ,defaults لكل قسم يستخدم النظام الملفات ext3 أو ext4. ستكون النتيجة شبيهة بما يلي:

/dev/sda3     /media/disk-102 ext4      defaults,data=journal    0    1
/dev/sdb4     /media/mdisk/    ext4     defaults,data=journal    0    1



4. ماذا لو أردت الإثنين: الأمان و الأداء
استخدم أي شيء بأربعة أقراص صلبة على RAID 0+1. تقريبا سيتضاعف الأداء و تسطيع أن تخسر قرصين دون فقدانك لمعلوماتك. أي تخصيص RAID آخر لا يظاهي RAID 0+1 على أربعة أقراص.

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

لا تستخدم RAID0 مهما نصح به. RAID5 فقط للمراهنين و لا أنصح به مهما وجدته جذابا.


5. ماذا عن مشكلة الفساد الصامت للبيانات؟
لا حل له سوى باستخدام نظام تسيير ملفات يدعم (checksumming) مثل  ZFS على أنظمة التشغيل المشتقة عن OpenSolaris و FreeBSD، أو BtrFS على لينوكس بعد سنتين أو ثلاثة من صدوره، أو بمبلغ محترم مخصص لشراء RAID Controller يدعم Data Integrity Field.


6. نظام جنو+لينوكس يوفر حلول برمجية للتخزين و النسخ الإحتياطي لكل أنواع الإحتياجات
بدءا من البرنامجين SBackup و Déjà Dup الموجهين للمستخدم العادي، ثم البرنامجين Back in Time و TimeVault البديلين لـ Time Machine على ماك و System Restore على ويندوز، وصولا إلى  الحلول البرمجية الجد متقدمة و الموجهة بالدرجة الأولى للشركات مثل Amanda و Bacula دون أن ننسى أداة rsync من على سطر الأوامر و غيرها العديد (التي قد تنسخ 60 مليون ملف بكل بساطة)، فإن منصة جنو+لينوكس يمكن الإعتماد عليها في تخزين و حماية ملفاتك بلا منازع.


بعض المصادر للتعمق أكثر:
Linux Kernel Doucmentation :: Filesystems

هناك 5 تعليقات:

  1. "مطوره الأصلي مسجون بتهمة قتله لزوجته"
    seriously ...

    ردحذف
  2. صحيح، قصة مؤسفة صراحة
    http://arstechnica.com/open-source/news/2008/09/reiserfs-goes-to-chroot-jail-hans-gets-15-to-life-sentence.ars

    ردحذف
  3. اولا اشكرك على الموضوع الممتاز ولكن لدي تعليق بخصوص RAID

    RAID 1 = هو نظام المراة، وتكون على قرصين وولكن يظهر للنظام انه قرص واحد وتكون الكتابة على القرصين في نفس الوقت فلو تلف قرص فان القرص الاخر يبقى قيد العمل بدون ان يتأثر النظام حتى يتم استبدال القرص التالف بجديد فيقوم بعدها المتحكم بالمصفوفات بعمل التهيئة وادخله في RAID مرة اخرى.

    RAID 0 = يبدأ من قرصين واكثر وهو ان المعلومة التي تكتب على الاقراص تكون متجزأة بينها وهذا يساعد على الاداء كثيرا فتخيلوا معي عندما يقوم الجهاز بكتابة معلومة فانه يقوم بكتابة جزء في كل قرص في نفس الوقت وعند القراة فانه في نفس الوقت يقرأ من كل الاقراص فتتضاعف السرعة ولكن لو تم تلف قرص فان جميع البيانات تتلف لان جزء منها تلف .

    RAID 1+0 = عادة على قرصين فقط وغالبا يكون هذا الخيار في الخوادم في جزئية تثبيت النظام، وهو ان المعلومة تكتب على القرصين ولكن في القراءة فانها تكون من القرصين فالقراءة سريعه ولكن الكتابة تكون سرعتها سرعة القرص الواحد وتتشابه من حيث انه لو فقد قرص فالثاني يفي بالغرض حتى يتم استبدال القرص التالف.

    RAID 5 = وهو من 3 اقراص واعلى، فان قلنا اننا نعمل على ثلاث اقراص فان المعلومة تنقسم الى جزئين وتكتب على قرصين واما الثالث فتكتب فيه معادلة حسابية يمكن بها عند تلف قرص من استرجاع الجزء المفقود، والكتابة تكون عشوائية بين الثلاث اقراص.

    ردحذف
  4. معيوف راشد النعيمي:
    إليك مني بالغ الشكر و التقدير على تلك الإضافة القيمة :)

    ردحذف