4.8 إدارة الأقراص كتاب لينكس الشامل >>

4.8 إدارة الأقراص

4.8.1 مقدمة عن أنظمة الملفات

يستطيع لينكس التعامل مع عدد كبير جداً من أنظمة الملفات بمرونة وسهولة ذلك أنه يرتكز على قالب عام يسمى نظام الملفات الإفتراضي VFS - Virtual File System يمكنه التعامل مع نظام ملفات بواسطة loadable module فإذ كنت تريد أن يتعامل لينكس مع أي نظام جديد فقط حصل على ال module الخاصة به. كما أن نظام الملفات به يحتوي ملفت افترضية وهمية مثل proc . كان الحد الأعلى في لينكس 2.2 لحجم كل قرص هو 2 تيرا-بايت (التيرا هي 1024 غيغا) ولكنه تجاوز هذا الحد في الإصدارات الحديثة بشكل كبير جداً.

tipتلميح

إذا عرفت الاختصار macro التالي _FILE_OFFSET_BITS=64 عند تصنيف برامج سي بواسطة gcc فإنها ستستعمل على وظائف LSF وتتجاوز حدود 2 غيغا للملف الواحد و 2 تيرا للقرص الواحد مثلاً gcc -d _FILE_OFFSET_BITS=64 myfile.c -o myfile

تستطيع في لينكس ضم أي قسم جديد إلى أي مجلد في لينكس ثم وصله(link) إلى أي مكان آخر مثلاً كنت تطور مشروع في مساحة ضيقة ثم ركبت قرص جديد فبإمكانك أن تضم mount هذه المساحة إلى أي من مجلدات المشروع. كم يعطيك لينكس فرصة إضافة ذاكرة افتراضية في أي وقت مثلاً إذا كنت بحاجة للمزيد من الذاكرة ولديك قسم جديد أو قرص صلب جديد بإمكانك تحويله إلى swap partition ثم ضمه إلى الذاكرة الفتراضية كما يلي (وهذا ما يفعله برنامج التركيب)
bash# mkswap /dev/hdb7
bash# swapon /dev/hdb7
أو حتى إذا لم يكن لديك قسم يمكنك تحويل ملف على أي قسم ليكون ذاكرة إضافية
bash# mkswap if=/dev/zero of=/swapfile bs=1m count=32
bash# mkswap /swapfile
bash# swapon /swapfile
ولكن قبل أن تشطب هذا الملف عليك إزالة الضم
bash# swapoff /swapfile

الأقراص هي block device نعرف هذا من حرف b على يسار الأذونات عند عرض ملف الجهاز بأمر ls -l /dev/hda هذا يعني أن البيانات مقسمة فيها إلى أجزاء متساوية الحجم (مثلاً كل جزء 512 بايت) وليست بايت بايت كما لوحة المفاتيح أو الطرفية. فأنت تستطيع أن تقرأ الجزء رقم كذا دون المرور بالأجزاء لتي قبله كما يمكن أن تقرأها بتسلسل معكوس الجزء رقم 100 ثم 99 وهكذا. هذا يعني أن القرص الصلب ليس مثل خزان تضع فيه البيانات من جهة وتحصل عليها من جهة أخرى بل هو مثل صناديق(بريد مثلاً) مرقمة تخزن البيانات في الصندوق رقم كذا .. استرجع البيانات من صندوق رقم كذا. كما أننا لا نريد أن نتعامل مع أرقام ولا نريد أن تكون كل الملفات مستاوية الحجم؛ لهذا يوجد نظام الملفات وهو طريقة وهمية لتوصيف تلك الأرقام. كيف. نخصص جزء من هذه الصناديق ليكون فهرساً نحتفظ فيه بمعلومات عن الملف (اسمه وتاريخه وحجمه ورقم أول صندوق) الآن في كل صندوق نخزنن جزء من الملف ورقم الصندوق الذي يليه (أي الذي به البقية وهكذا) هذه الطريقة في الترتيب هي نظام الملفات وعملية تحديد نظام ملفات قرص تمسى تهيئة.

tipتلميح

لاحظ أن ملف حجمه واحد بايت لا ينقص من حجم القرص واحد بايت بل أكثر ؛ذلك هو حجم وحدة التخزين الدنيا جرب ذلك بنفسك.

هناك مجموعة من الأدوات للتعامل مع كل نوع من الملفات مثلاً mkfs.msdos و mkfs.minix ... و fsck.minix ... إلخ الجزء الأول هو وظيفة الأداة والثاني أي نظام ملفات نظام الملفات الأكثر شيوعاً في لينكس هو ext3 ولكن هناك من يفضل reiserfs و xfs (الأخير من SGI وخاضع لرخصة GPL يمكنه أن يضع 32 مليون ملف في مجلد واحد قد يصل الملف إلى حدود التيرا-بايت انظر http://oss.sgi.com/projects/xfs ) أما النظام المفضل لعمل أقراص الإنقاذ هو minix ولعمل قرص الرام الاستهلالي هو ext2 الأول لأن مزايه القليلة تجعله يوفر بعض المساحة أما الثاني لأنه مدعوم دون أي module. ويجب أن نشير إلى أن ext3 متوافق مع ext2 فأدوات الثاني تصلح للأول (ربما يجب أن أقول الثالث!) ، أما النظام msdos فهو النظام fat المستخدم في DOS وويندوز الذي لا يسمح لطول اسم الملف أن يزيد عن 12 حرف فهناك 8 للمقطع الأول ثم نقطة ثم 3، النظام vfat هو النظام الخاص بويندوز وهو متوافق مع msdos ومطور منه لكي يسمح بأسماء طويلة ومسافات. على الرغم من هذا لتطوير يفتقر هذا النظام إلى الوصلات وملفات الأجهزة والأذونات وملفات FIFO . فلا يمكن تركيب لينكس على vfat ولكن تم عمل نظام اسمه umdos يسد ذلك النقص في fat لينزل عليه لينكس بطريقة متوافقة مع fat. يتركز حديثنا على ext3 و ext2 ولن يكون صعباً عليك أن تتلمس طريقك للباقيات.

4.8.2 التهيئة التحتية low-level-format

مثل البنية التحتية. يقوم المصنع بتهيئة للقرص من نوع آخر يحدد فيها عدد القطاعات (المقصود بالقطاع هنا ليس القطاع الدائري كله بل الخط الخارجي منه) وعدد المسارات (المسار هو حلقات دائرية متحدة المركز مختلفة الأقطار) وكم بايت يمكن أن يحتوي كل قطاع. بتعبير آخر هو تحديد موقع كل بايت الفيزيائي على القرص. هذه العملية كما قلن يتولها المصنع فقط. ولكن يمكنك أن تجرب ذلك على قرص مرن (لا يوجد في حدود علمي أداة للقرص الصلب).

bash# fdformat /dev/fd0u1440
يمكنك أيضاً أن تزيد(أو تقلل) من المساحة الخاصة بالقرص المرن بتهيئة المزيد من القطاعات والمسارات مثلاً
bash# fdformat /dev/fd0u1760
حيث الأرقام 1440 و 1600 و 1680 و 1722 و 1743 و 1760 و 1840 و 1920 هي المساحة بالكيلو-بايت أول ثلاثة وآخر إثنان يمكن أن يعرفا تلقائياً عند الضم ب /dev/fd0 أما الباقيات فعليك ذكر الجهاز صراحةً مثلاً ب /dev/fd0u1722 كما يحب أن تنتبه أنه ليس كل السواقات/المشغلات تستطيع التعامل مع كل هذه الهيئات.

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

لا يحتاج لينكس إلى أن تعرف القرص الصلب في البايوز BIOS ولكن لا يعمل ويندوز وقد لا يعمل lilo/grup بشكل جيد إذا لم يعرف بشكل جيد في البايوز. يكون هذا التعريف بذكر عدد الأسطونات cyl و عدد المسارات tracks و عدد القطاعات sec وهذه القيم مكتوبة على الظهر القرص وتستطيع البايوزات الحديثة معرفتها تلقائياً. على أي حال هذه قد لا تكون حقيقية بسبب وجود بعض الحدود التاريخية عن تصميم اللوحات الأم للحواسيب لهذا تستخدم قيم غير واقعية ويستخدم نظام منطقي للتحويل يسمى LBA أي Logical Block Addressing إن لم تخني الذاكرة. يجب وضع هذا الخيار مفعّل في البايوز كما يجب تفعيله في lilo/grup.

4.8.3 التقسيم

قلنا في فصل تركيب لينكس أن هناك 3 فوائد لعمل أقسام هي

  • يمكن فحص قسم دون آخر مما قد يوفر الوقت إذ لا داع لفحص قرص من 80 غيغا إذا كان الشك/العطل في قسم 20 غيغا منه.
  • تجاوز الحدود المفروضة من نظام التشغيل على حجم القرص الواحد. فإذا كان الحد الأعلى لنظام ملفات هو 2غيغا مثل FAT16 أو 2 تيرا مثل FAT32 فإنك تستطيع تجاوز هذا الحد بفصله إلى أقسام كل منها بحده الأعلى
  • يمكن وضع نظم ملفات مختلف على كل قسم. وكل قسم يحتوي سجل إقلاع لهذا يمكن تركيب نظام تشغيل مختلف على كل قسم من الفوائد الأخرى تقليل الحجم المفقود نتيجة كبر حجم القرص فقد قلنا أن القرص مثل صنديق متساوية الحجم أي أن الحد الأدنى لوحدة التخزين أكبر من واحد بايت. كلما كبر حجم القسم كبر معه الحد الأدنى وزادت المساحة المفقود. تقسيم القرص يزيد بشكل غير ملحوظ من سرعة الوصول للملفات.

    برامج التقسيم منه ما هو سهل ومنها من هو معقد من البرامج السهلة الرسومية diskdrake في ماندريك و diskdruid في ريدهات واستعمالهما كأي برنامج آخر. وربما يعجب البرنامج النصي cfdisk الذي يمكنك التعامل معه بالأسهم لفوق وتحت لاختيار القسم ثم لليمين واليسار لتحديد ماذا تريد أن تفعل به. على النقيض نجد البرنامج fdisk الذي يعتمد على ادخال حروف أوامر حيث يظهر محث

    bash# fdisk -l /dev/hda
    display a report
    bash# fdisk /dev/hda
    Command (m for help): m
    	a tuggle bootable flag
    	c tuggle dos compitability flag
    	d delete
    	l list
    	m this help
    	n new partition
    	o new dos partition table
    	p print table
    	q quit without saving
    	t change type
    	u unit (sec/cyl)
    	v verify
    	w write table
    	x extra expert options
    
    اضغط m للحصول على مساعدة ستخبرك بالأحرف الأخرى. مثلاً p لطباعة التقسيمة الحالية و d لحذف قسم و n لعمل قسم جديد و t لتحديد نظام الملفات w للتخزين وq للخروج. مثلاً اضغط p لترى تجد الأقسام hda1 و hda2 و hda5 و hda6. تحديد نظام الملفات يعني وضع علامة لإرشاد ويندوز لما هو له وما ليس له (أي أنها لا تقوم بأي نوع من التهيئة) لأني قمت بمحاولة خبيثة بوضع نظام ملفات ext2 ولكن مع علامة على أنها fat وعملت بشكل جيد في لينكس وعرف أنها ext2 ولكن الويندوز ظن أنها fat وظهرت في my computer ولكن دون أن تعمل. أرقام الأنواع الأهم هي
    0C FAT32 (LBA) 1C Hidden FAT32 (LBA) 82 Linux Swap 83 Linux Native (ext2/ext3 or what ever)
    والمقصود ب Hidden FAT إذا كان لديك قرصان FAT مثل C و D وأخفيت C بتغيير نوعه فإن الآخر يصبح اسمه C في ويندوز تستخدم الحيلة من قبل lilo/grup للإقلاع ويندوز الموجود على قسم غير الأول!!!
    tipتلميح

    إذا كان لديك دوس أو ويندوز فإن فلسفة التقسيم كما يلي: القسم الأول hda1 هو قسم أولي primary و قابل للإقلاع bootable أما القسم الثاني hda2 فهو القسم الممتد extended وهو يحتوي بقية الأقسام (مساحته تساوي مساحة بقية الأقسام ولا يجوز ضمه) ثم تأتي الأقسام الأخرى تسمى منطقية logical. بكلمت أخرى الأقسام 1-4 هي إما أولية primary أو ممتدة أما فوق 4 فهي منطقية. لهذا يجوز أن يوجد 4 أقسام كلها أولية primary ولكن هكذا لا تستطيع إضافة المزيد من الأقسام، فإذا كان هناك 3 أولية استطعت عمل واحد ممتد تضع فيه أي عدد من المنطقية. كما يجب أن يعلّم أحد الأولية على أنه bootable

    الآن لنشطب hda6 اضغط d ثم [ENTER] ثم 6 ثم [ENTER] الآن لنضيف مكانه قسم بحجم 128 ميغا ضغط n ثم [ENTER] ثم نختار l أي logial ثم [ENTER] ثم نقبل البداية التي يحدده لنا وذلك بضغط [ENTER] ثم نحدد النهاية ويمكننا استعمال علامة "+" لكي نحدد الحجم بدل موقع النهاية فنكتب +128M ثم نحدد نوعه ليكون linux swap فنضغط t ثم 6 ثم يعرض لنا أنواع منها linux swap وهي رقم 82 فندخل رقمه فإذا لم يكن موجوداً [ENTER] ليعطيك صفحة أخرى ثم نضيف قسم آخر بنفس الطريقة ولكن نعطيه الرقم 7 ونكتب [ENTER] عندما يسأل عن الحجم ليجعله الحد الأعلى ونحدد النوع linux native ذات الرقم 83 ثم نخرج إذا شعرنا أن هناك مشكلة ما وإلا ندقق ثم نخزن ثم نخرج v و w و q.
    warningتحذير

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

    إن تغيير حجم قرص ب fdisk يتم بحذفه واضافة آخر بحجم جديد مما يعني أن البيانات عليه قد فقدت. في المقابل توفر لنا الأداة GNU parted حلاً جيداً فهي قادرة على تقليص حجم قسم دون تدمير البيانات عليه (هذا ينطبق على fat و ext2 فقط) ، وبرنامج parted يمكن أن يعمل بصمت ويستدعى من قبل برامج أخرى بواسطة الخيار -s مثلاً parted -s /dev/hda resize 1 0 1023 تجعل القسم الأول يبدأ من 0 وينهي عند 1023 (الوحدة هي ميغا) ، ويجعله الخيار -i متفاعلاً أكثر. شغله بالأمر التالي parted -i /dev/hdb ليقوم بتقسيم hdb
    warningتحذير

    parted يقوم بالتخزين فور كتابة الأمر على عكس السابقات لذا لا تلعب به فلا يوجد خروج دون تخزين.

    الآن من محث parted جرب الأوامر التالية
    bash# parted /dev/hdb
     GNU parted X.YY.ZZ
    	WARNING ....
    (parted) print
        Minor    Start    End      Type            Filesystem     Flags
        1          0.0    5010.7   primary         FAT            boot
    (parted) help
    (parted) help check
    (parted) check 1
    (parted) resize 1 0 1023
    (parted) print
        Minor    Start    End      Type            Filesystem     Flags
        1          0.0    1023     primary         FAT            boot
    (parted) mkpart primary ext2 1023 5010.7
    (parted) print
        Minor    Start    End      Type            Filesystem     Flags
        1          0.0    1023     primary         FAT            boot
        1         1023    5010.7   primary         ext2
    
    أنواع الأقسام هي "primary" و "logical" و "extended" وأنظمة الملفات التي تهمك هي "FAT" و "ext2" و "linux-swap". عند استعمال الأمر print فإن أول عمود هو رقم minor وهو الرقم الذي يمثل القسم الذي تريد العمل عليه. الأمر mkpart لا يقوم بتهئية fortmat للقسم لذلك عليك فيما بعد عمل mkfs على الصيغة mkfs MINOR FSTYPE أو عمل القسم وتهيئته دفعة واحدة باستعمال mkpartfs بنفس صيغة mkpart. أنظمة الملفات هي
    ext2 ext3 FAT hfs jfs linux-swap ntfs reiserfs hp-ufs sun-ufs xfs
    لحذف قسم نستعمل rm MINOR وأحياناً قد تحب نسخ الملفات منه إلى قسم آخر cp MINOR1 MINOR2 إذا حذفت كل الأقسام أو استلمت قرص من المصنع يمكنك عمل جدول تقسيم جديد من الصفر بالأمر mklabel TYPE حيث TYPE هي msdos أو GPT أو loop يجب أن لا تخلط بينه وبين name MINOR NAME التي تعطي القسم اسماً. الاستخدام الأساسي لهذا البرامج هو تحجيم الأقسام resize MINOR START END ولكن يمكن نقل الأقسام move MINOR START END. إذا كان هناك أكثر من قرص فيزيائي قبل كل شيء نفذ select DEVICE حيث DEVICE هو الجهاز مثل /dev/hda
    warningتحذير

    قبل تحجيم/تقليص قسم يجب أن تفحصه بأمر dosfsck أو e2fsck لأقسام FAT و ext2 ثم تفحصها داخل parted بأمر check. كما يجب تحويل أقسام ext3 إلى ext2 .


    tipتلميح

    إذا كان القرص كبيراً فإن أنظمة BIOS الحديثة تستعمل خياراً اسمه LBA تأكد من أنه فعال (من أجل ويندوز) ، وتأكد من أن أقسام ويندوز تحمل علامة LBA يمكن وضعها داخل parted بالأمر set 1 lba on حيث 1 هو رقم القسم.

    بإمكانك أيضاً استعمال resize2sf لتحجيم أقسام ext2 والتحذير نفسه ينطبق هنا أيضاً.

    بعد تقسم أي قرص فإن عليك تهيئته بنظام ملفات. أو عند تغيير تقسيم سابق فإنك بحاجة لتهيئة الأقسام المتأثرة.

    4.8.4 التهيئة format

    لديك قرص مرن تريد مسح كل الملفات منه

    bash# mkdosfs -v /dev/fd0u1440
    
    وبسرعة رهيبة أصبح القرص فارغاً تماماً (تشبه quick format في دوس/ويندوز ولكنها أسرع) . ما قمنا به كان وضع نظام ملفات fat فارغ على القرص المرن إن العملية كانت سريعة لأنه لا يشغل نفسه بوضع أصفار في كل بايت في القرص بل فقط يخبره نظام الملفات الفارغ بأن الصناديق(التي تحدثنا عنها في مثالنا) كلها متاحة ويمكنك وضع ملفات بها.
    warningتحذير

    هذا يعني أنه يمكن استرجاع هذه البيانات ما لم تمحى. لا تعتمد على هذا فهذا مربع تحذير. بكلمات أخرى إذا كنت تريد إخفاء ملفات êن الوجود فهذا الحل غير كافي. ربما تنفيذ هذا الأمر قبل التهيئة يفيدك:
    dd if=/dev/zero of=/dev/hdb1 bs=1m

    في مثالنا الخاص ب fdisk الذي عملنا فيه hda6 ليكون swap و hda7 ليكون linux native علينا تهيئة hda6 ب mkswapfs كما تعلمنا و hda7 ب mke2fs كما يلي:
    bash# mke2fs -v /dev/hda7
    
    وبسرعة أصبح لدينا قسم جاهز للضم. بإمكانك استعمال الخيار C لفحص وإصلاح العيوب الفيزيائية للقرص أثناء تهيئته فبدل الأمر السابق عليك طباعة
    bash# mke2fs -Cv /dev/hda7
    
    وهذا يأخذ الكثير من الوقت. يمكن تحويل ext2 إلى ext3 بواسطة tune2fs
    bash# tune2fs -j /dev/hda7
    
    ويمكن تحديد المزيد من الخيارات الإضافية مثل الفحص الروتني كل 60 يوم أو ضم 30 مرة أو التحويل العكسي إلى ext2. بإمكانك عمل التحويل العكسي من ext3 إلى ext2 وذلك بالأمر tune2fs -O ^has_jornal /dev/hda7 وهذا مهم قبل تقليص حجم القرص.
    warningتحذير

    إذا أردت تحويل قسم من ext2 إلى ext3 فعليك إلغاء الضم أو على الأقل جعله للقراءة فقط mount /dev/hda7 -o remount,ro ثم التأكد من أنه نجح في ذلك بكتبة mount دون معاملات وملاحظة وجود ro مقابل ذلك القسم ثم تنفيذ tune2sf

    بإمكانك وضع عنوان label لكل قسم أثناء التهيئة بالخيار -L متبوعاً بالاسم أو باستعمال e2label.

    4.8.5 الفحص

    لفحص قسم معين نستخدم الأمر fsck التي يتعرف على نظام الملفات تلقائياً وعليه يتصرف أو يمكنك استعمال الأداة الخاصة بذلك النظام تحديداً مثل e2fsck

    warningتحذير

    قبل فحص قسم فعليك إلغاء الضم أو على الأقل جعله للقراءة فقط mount /dev/hda7 -o remount,ro ثم التأكد من أنه نجح في ذلك بكتبة mount دون معاملات وملاحظة وجود ro مقابل ذلك القسم ثم تنفيذ tune2sf

    لنجرب الأمر التالي على القرص hda7 الذي عملناه للتو
    bash# e2fsck /dev/hda7
    e2fsck: /dev/hda7 is clean
    bash# 
    
    هذا لا يعني أن فحصه تم هكذا بتلك السرعة، بل أنه ليس بحاجة لفحص لأنه تم ضمه وإزالة ضمه بشكل سليم ولم يشتك أي برامج من وجود عيب فيزيائي به. إذا كنت تظن أن هذا غير كافي وتريد إجباره على الفحص فعليك بالخيار -f إذا وجد شيء خطأ فإنه يسألك أن تضغط y للتصليح و n للتجاهل دون مفتاح ENTER
    fix [yn]: 
    
    وتبدأ أنت بالضغط المتكرر على y لأن الخير يأتي مجتمعاً! (أقصد مع كبر حجم الملف فإنه في الغالب يوجد أكثر من خطأ) تستطيع طلب فحص تلقائي بالخيار -a فهو سيقوم بالإصلاح المطلوب إذا لم يكن هناك مخاطر. فإن وجد أن هذا قد يؤدي لفقد كثير من البيانات فإنه يقول لك نفذ البرنامج دون a. إذا كنت تريده أن يوافق على كل الأسئلة y حتى لو كانت خطرة استعمل الخيار -y أي e2fsck -y /dev/hda7

    قلنا أنه ربما هناك خطر على بعض البيانات أن تفقد. هذه الملفات المفقودة والتي استطاع fsck ترميمها جزئياً تجدها في مجلد /lost+found ولكن دون أسماء على شكل أرقام وربما داخل مجلدات فرعية عنه تشير للمجلد الذي كانت فيه. تأتي الآن مهمتك أن تضعها في مكانها.

    4.8.6 معلومات أمنية

    قلنا في تحذير سابق أن الأقسام المهيئة يمكن استرجاها لأنها لا تمهد بمدحلة كما يتخيل لبعض بالطريقة نفسها يمكنك أن تستنتج أن الملفات المحذوفة يمكن استرجاعها. لا نقول هذا لإعطائك ثقة زائدة عند حذف الملف بأن هناك أمل بعودته، بل لتحذر عند حذف ملف حساس مثل passwd بأن أحدهم يمكن أن يستعده. شغل برنامج mc ثم اكتب cd /#undel:hda7 وستجد دليل وهمي يحتوي الملفات المحذوفة (ولكن بدل أسمائها تظهر أرقام) تستطيع تمييز الملف من محتوايته بضغط F3 يمكنك استعادة الملف بنسخه إلى مكان آخر.

    هل تفكر بحل؟ أول ما يخطر بالبال هو الطريقة التالية لحذف ملف اسمه mysecrit وحجمه 1ميغا :

    bash# dd if=/dev/zero of=mysecrit bs=1k count=1024
    1024+0 records in
    1024+0 records out
    bash# rm mysecrit
    
    أو بطريقة أكثر ذكاءً
    bash# dd if=/dev/urandom of=mysecrit bs=1k count=1024
    1024+0 records in
    1024+0 records out
    bash# sync
    bash# rm mysecrit
    
    قمنا بملئه بقيم عشوائية ثم انتظرنا حتى تكتب فيزيائياً على القرص، ثم حذفنا الملف.
    tipتلميح

    sync هو أمر يجبر النظام على كتابة ما هو موجود في ال buffer/cache وإرسالها إلى القرص فيزيائياً. يفيد هذا الأمر إذا شعرت أن النظام على وشك أن يعلق وتريد إفراغ محتويات buffer/cache إلى القرص حتى لا تفقد. وبهذا عندما يعمل النظام مجدداً ويفحص لن يفقد الكثير. هذا إضافة للفائدة غير التقليدية السابقة.

    ويمكنك أن تفعلها بطريقة أكثر احترافاً كما يلي:
    bash# shred mysecrit
    
    الذي يقوم بسرعة وكفائة بحذف الملف بعد التأكد من أن محتوياته لن تعود مهما كان المخترق خبيراً، وذلك بعملية مشبهة لما فعلناه آخر مرة ولكن عدة مرات.

    4.8.7 عمل صور أقراص

    هل لديك ملفات iso (صورة لنظام ملفات القرص لمدمج) يمكنك الدخول لمحتوياته دون وضعها على قرص مدمج!! والتعامل معها وهي لا تزال صورة يكون ذلك بواسطة جهاز الحلقة المغلقة loop back device فنعد هذا الجهاز ليكون الصورة ثم نضمه ويمكن عمل هذا بطريقة ضمنية كما يلي

    bash# mount -o loop,ro /home/ahmad/cd_image.iso /mnt/cdrom
    
    هذا الأمر ضمنياً ينفذ الخطوتين التاليتين
    bash# losetup /dev/loop0 /home/ahmad/cd_image.iso
    bash# mount -o ro /dev/loop0 /mnt/cdrom
    
    لاحظ استعمال الخيار loop مع mount. ولتحرير هذا الجهاز نقوم بإلغاء الضم umount لذلك الجهاز. هذا لا يكفي لتحريره إذا /etc/mtab وصلة وعليك تحرير الجهاز بأمر losetup -d /dev/loop0 بعد إلغاء الضم.
    bash# umount /dev/loop0
    bash# losetup -d /dev/loop0
    
    يمكن أن تستعمل أكثر من جهاز loop back وذلك باستعمال أرقام مختلفة ولكن أن لا يكون محجوزاً من قبل ويمكنك أن تعرف ذلك من خلال ps ax | grep 'loop' أو fuser ، ويمكنك أن تعرف إن كان مضموماً بأمر losetup /dev/loop0.

    يمكن عمل صور لنظام ملفات من أنوع وليس فقط iso ووذلك إما بأمر dd بحيث يكوون القرص/القسم هو الدخل والملف هو الخرج كما

    bash# dd if=/dev/hdb1 of=/misc/hdb1.img.vfat bs=4K
    
    ويمكن أن تعمل ملف بحجم معين ثم تهئيه وفق نظام ملفات معين ثم تضمه وتضع فيه الملف التي تريد، الأوامر التالية تعمل صورة ext2 بحجم 32 ميغا.
    bash# dd if=/dev/zero of=/misc/img.ext2 bs=1M count=32
    32+0 records in
    32+0 records out
    bash# mke2fs -v /misc/img.ext2
    mke2fs: /misc/img.ext2 is not block device, continue ? y
    

    4.8.8 عمل أقراص مضغوطة

    يمكن عمل تحويل مجلد معين إلى قرص مضغوط يتم ضمه بجهاز الحلقة المغلقة loop back device باستعمال نظام ملفات cramfs. بعد إنشاء النظام تتمكن من قراءته فقط. المميز في هذا النظام هو سرعة القراءة. هذا مثال يوضح كيف تعمل النظام وتضمه

    bash# mkfs.cram -v /home/ali/mytree /misc/img.cram
    bash# mount -o loop,ro -t cramfs /misc/img.cram /mnt/cramfs
    
    بعد التأكد من أنه تم بشكل كامل يمكنك أن تشطب الملفات الأصلية. الفائدة من هذا هو في عمل الأقراص الحية حيث تريد وضع الكثير من البرامج على قرص مدمج لهذا تضع معظم الملفات في نظام cramsf وتبقي etc و home و mnt و proc و tmp و var في صورة ramdisk حتى تكون للقراءة والكتابة وتجعل نصوص الإقلاع تضم صورة cramfs وتوصل link مجلداتها إلى الأماكن المطلوبة

    4.8.9 عمل أقراص مشفرة

    يكون ذلك بكل بساطة باستعمال جهاز الحلقة المغلقة مرة خرى loop back device ولكن مع الخيار -e عند إعداده بأمر losetup متبوع بطريقة التشفير مثل twofish و blowfish و cast128 و serpent و aes انظر إلى محتويات /proc/crypto لتعرف الطرق المحملة حالياً ويمكنك إضافة أخرى بواسطة insmod ثم الاسم وهو موجود في مجلد /lib/module ثم رقم النواة ... إلى آخر المسار. وثيقة Loopback-Encrypted-Filesystem-HOWTO تقترح serpent والكثير من الوثائق الأحدث تقترح aes وهي الطريقة المعتمدة لدى المؤسسة الوطنية (الأمريكية) للمعايير والتكنولوجيا NIST. هذا مثال يشرح كيف تعمل قرص مشفر بحجم 64 ميغا بطريقة aes. يتم إعدادها كما يلي: (الأمر الأول للتأكد من أن رقم صفر غير محجوز)

    # losetup /dev/loop0
    /dev/loop0 does not exists
    # dd if=/dev/zero of=/misc/secrit bs=1M count=64
    64+0 records in
    64+0 records out
    # losetup -e aes-256 /dev/loop0 /misc/secrit
    password:*******
    # mke2fs /dev/loop0
    # losetup -d /dev/loop0
    
    هذا المثال يعمل ملف /misc/secrit بحجم 64 ومشفر وفق aes و مهيء وفق ext2 (لمزيد من الحماية ضع urandom مكان zero حتى لا يميّز المخرب المساحة الخالية)
    tipتلميح

    يمكن تمرير كلمة السر(المفتاح) لبرنامج losetup من خلال أنبوب ‘|‘ أو ملف ‘<

    يمكنك في أي وقت فك التشفير وضم هذا الملف إلى أي مجلد ونقل ما تريد تشفيره داخله. وذلك بالخطوتين
    # losetup -e aes /dev/loop0 /misc/secrit
    password:*******
    # mount -t ext2 -o rw /dev/loop0 /mnt/secrit
    
    بعد إلغاء الضم فيعود مشفر.
    # umount /mnt/secrit
    # losetup -d /dev/loop0
    
    إذا أردت عمل ذلك على قسم كامل يمكنك بنفس الطريقة فقط ضع /dev/hdb1 مثلاً مكان /misc/secrit (دون تحديد الحجم count في أمر dd) وحتى تجعل العملية شبه أتوتوماتيكية يمكنك إضافته إلى fstab ولكن في عمود الخيارات أضف نوع التشفير encryption=aes-256. أما لتعقيد الأمر يمكنك جعل كلمة السر عبارة عن ملف عشوائي موجود على قرص فلاش USB/FLASH واستعمال أمر كالتالي
    # losetup -e aes /dev/loop0 /misc/secrit < /mnt/flash/mykey 
    
    انظر Loopback-Encrypted-Filesystem-HOWTO و Cryptoloop Howto by Ralf Holzer و Disk Encryption HOWTO by David Braun

    عمل قرص مشفر يجعل المخرب يعلم أنه مشفر ويبدأ بالتحزير وعمل crack ولكن هناك نظام ملفات يشفر ويضع نظام ملفات وهمي لخداع المخرب Steganographic File System انظر http://stegfs.sf.net

    4.8.10 إدارة المساحة المنطقية LVM

    هي Logical Volume Management والمقصود بها أن مجموعة من الأقراص(أو الأقسام) تظهر منطقياً وكأنها قرص واحد وإذا أضفت قرص جديد للمجموعة فإنه يضاف لمساحة هذا القرص المنطقي وبهذه الطريقة تكون المساحة الجديدة متاحة لكل الأدلة بدلاً من الدليل الذي يضم إليه. انظر LVM-HOWTO

    4.8.11 منظومة الأقراص المستقلة RAID

    رايد هي اختصار لمنظومة الأقراص المستقلة والتي تحتوي على بيانات زائدة/فائضة عن الحاجة. Redundant Array of Indepenant Disks. وهي بكلمات غير مشفرة مجموعة من الأقراص الصغيرة (الرخيصة) ، التي تتصرف وكأنه قرص واحد وهي نوعان إما عتادية Hardware أي تحضر هذا الصندوق (الكبير عادةً) وتوصله عبر مقبس scisi أو usb . النوع الآخر هو برمجي أي جهاز لينكس ومجموعة من أقراص ide أو حتى مجموعة من الأقسام تجعلها تبدو كقرص واحد. السؤال الذي يحيرك الآن ماذا تختلف عن سابقتها أو لماذا يرغب أحدهم بتقسيم قرص ثم دمج الأقسام وهمياً في قرص واحد؟ سنجيب عليها بعد معرفة اصناف رايد.

    رايد يصنف حسب طريقة توزيع البيانات على الأقراص منها التالية:

    level 0 - stripping S=sum(si)
    يتم توزيع البيانات على الأقراص بالتساوي. فإذا كان هناك 10 أقسام فإن ملف حجمه 10 ميغا فإن كل قرص يأخذ 1 ميغا. مساحة قرص رايد تكون مجموعة مسحة الأقراص الداخلة في تركيب المنظومة.
    level 1 - mirroring S=s1=s2...=sn
    كل قرص يكون صورة عن الآخر فإذا تعطل أحد الأقراص الباقيات تظل في الخدمة. حجم المنظومة يساوي حجم أحد أعضائها.
    level 5 - parity checking S=sum(si)-s1
    توزع البيانات على كل الأقراص عدا واحد منها. أما هذا الواحد فيحتفظ فيه بمعلومات تفيد في التحقق من أن البيانات سليمة. لهذا يكون حجم المنظومة يساوي مجموع كل حجوم الأقرص عدا واحد.


    << السابق كتاب لينكس الشامل التالي >>