في هذا الفصل سنناقش كل ما يتعلق بأجهزة اللبنات block devices
مثل القرص الصلب وأنظمة RAID، ومعنى نظام الملفات،
أنواعه وطريقة تهيئته، وطريقة تحسينه من أجل أفضل سرعة
أو موثوقية أو أمان.
يستطيع لينكس التعامل مع عدد كبير جداً من أنظمة الملفات
بمرونة وسهولة ذلك أنه يرتكز على قالب عام يسمى نظام الملفات الإفتراضي
VFS - Virtual File System
يمكنه التعامل مع نظام ملفات بواسطة loadable module
فإذ كنت تريد أن يتعامل لينكس مع أي نظام
جديد فقط حصل على ال module الخاصة به.
كما أن نظام الملفات به يحتوي ملفت افترضية وهمية
مثل proc . كان الحد الأعلى في لينكس 2.2 لحجم كل قرص
هو 2 تيرا-بايت (التيرا هي 1024 غيغا) ولكنه تجاوز هذا
الحد في الإصدارات الحديثة بشكل كبير جداً.
الأقراص هي block device
نعرف هذا من حرف b على يسار الأذونات عند عرض ملف
الجهاز بأمر ls -l /dev/hda
هذا يعني أن البيانات مقسمة فيها إلى أجزاء متساوية الحجم
(مثلاً كل جزء 512 بايت)
وليست بايت بايت كما لوحة المفاتيح أو الطرفية.
فأنت تستطيع أن تقرأ الجزء رقم كذا دون المرور بالأجزاء التي قبله
كما يمكن أن تقرأها بتسلسل معكوس
الجزء رقم 100 ثم 99 وهكذا.
هذا يعني أن القرص الصلب ليس مثل خزان
تضع فيه البيانات من جهة وتحصل عليها من جهة
أخرى بل هو مثل صناديق(بريد مثلاً) مرقمة
تخزن البيانات في الصندوق رقم كذا .. استرجع البيانات من صندوق
رقم كذا. كما أننا لا نريد أن نتعامل مع أرقام ولا نريد أن تكون
كل الملفات مستاوية الحجم؛ لهذا يوجد نظام الملفات
وهو طريقة وهمية لتوصيف تلك الأرقام. كيف.
نخصص جزء من هذه الصناديق ليكون فهرساً نحتفظ فيه بمعلومات
عن الملف (اسمه وتاريخه وحجمه ورقم أول صندوق) الآن
في كل صندوق نخزنن جزء من الملف ورقم الصندوق الذي يليه
(أي الذي به البقية وهكذا)
هذه الطريقة في الترتيب هي نظام الملفات وعملية تحديد
نظام ملفات قرص تمسى تهيئة.
هناك مجموعة من الأدوات للتعامل مع كل
نوع من الملفات مثلاً 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 ولن يكون صعباً عليك
أن تتلمس طريقك للباقيات.
مثل البنية التحتية. يقوم المصنع بتهيئة للقرص من نوع آخر
يحدد فيها عدد القطاعات (المقصود بالقطاع هنا ليس القطاع الدائري كله بل الخط الخارجي منه) وعدد المسارات (المسار هو حلقات دائرية متحدة المركز مختلفة الأقطار) وكم بايت
يمكن أن يحتوي كل قطاع. بتعبير آخر هو تحديد موقع كل بايت
الفيزيائي على القرص. هذه العملية كما قلنا يتولها المصنع فقط.
ولكن يمكنك أن تجرب ذلك على قرص مرن (لا يوجد في حدود علمي أداة للقرص الصلب).
لا يحتاج لينكس إلى أن تعرف القرص الصلب في
البايوز BIOS ولكن لا يعمل ويندوز وقد لا يعمل lilo/grup بشكل جيد
إذا لم يعرف بشكل جيد في البايوز. يكون هذا التعريف بذكر عدد
الأسطونات cylinders وعدد الرؤوس heads وعدد القطاعات sectors
(و عدد المسارات tracks)
ما يسمى احداثيات CHS (cylender/head/sector)
وهذه القيم مكتوبة على الظهر القرص وتستطيع البايوزات الحديثة معرفتها تلقائياً.
يمكن وضع نظم ملفات مختلف على كل قسم. وكل قسم يحتوي سجل إقلاع لهذا يمكن
تركيب نظام تشغيل مختلف على كل قسم
من الفوائد الأخرى تقليل الحجم المفقود
نتيجة كبر حجم القرص فقد قلنا أن القرص مثل صنديق
متساوية الحجم أي أن الحد الأدنى لوحدة التخزين أكبر من واحد بايت.
كلما كبر حجم القسم كبر معه الحد الأدنى وزادت
المساحة المفقود. تقسيم القرص يزيد بشكل غير ملحوظ
من سرعة الوصول للملفات.
برامج التقسيم منه ما هو سهل ومنها من هو معقد
من البرامج السهلة الرسومية
diskdrake في ماندريك و diskdruid في ريدهات
واستعمالهما كأي برنامج آخر.
وربما يعجب البرنامج النصي cfdisk
الذي يمكنك التعامل معه بالأسهم لفوق وتحت لاختيار القسم ثم
لليمين واليسار لتحديد ماذا تريد أن تفعل به.
على النقيض نجد البرنامج fdisk الذي يعتمد على
ادخال حروف أوامر حيث يظهر محث
bash# fdisk -l /dev/hda
display a report
bash# fdisk /dev/hda
Command (m for help): m
Command action
a toggle a bootable flag
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
اضغط 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 للإقلاع ويندوز الموجود على قسم غير الأول!!!
تلميح
إذا كان لديك دوس أو ويندوز فإن فلسفة التقسيم كما يلي:
القسم الأول 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 ثم l فيعرض لنا
أنواع منها linux swap وهي رقم 82 فندخل رقمه فإذا لم يكن موجوداً
[ENTER] ليعطيك صفحة أخرى
ثم نضيف قسم آخر بنفس الطريقة ولكن نعطيه الرقم 7 ونكتب
[ENTER] عندما يسأل عن الحجم ليجعله الحد الأعلى
ونحدد النوع
linux native ذات الرقم 83 ثم نخرج إذا شعرنا أن هناك مشكلة ما
وإلا ندقق ثم نخزن ثم نخرج
v و w و q.
تحذير
لا تغير تقسيمية قرص مضموم
إذ كنت تريد تغيير تقسيمة القرص الجذر أقلع من قرص إنقاذ
مرن أو من قرص التركيب في طور الإنقاذ أو من توزيعة حية.
بعد تقسيم أي قرص فإن عليك تهيئته بنظام ملفات.
أو عند تغيير تقسيم سابق فإنك بحاجة لتهيئة الأقسام المتأثرة.
إن تغيير حجم قسم ب fdisk يتم بحذفه واضافة آخر بحجم
جديد مما يعني أن البيانات عليه قد فقدت.
في المقابل توفر لنا الأداة GNU parted حلاً جيداً
فهي قادرة على تقليص حجم قسم دون
تدمير البيانات عليه (هذا ينطبق على fat و ext2 فقط) ،
وبرنامج parted يمكن أن يعمل بصمت ويستدعى من قبل برامج أخرى
بواسطة الخيار -s مثلاً
parted -s /dev/hda resize 1 0 1023
تجعل القسم الأول يبدأ من 0 وينهي عند 1023 (الوحدة هي ميغا) ،
ويجعله الخيار -i متفاعلاً أكثر.
شغله بالأمر التالي
parted -i /dev/hdb
ليقوم بتقسيم hdb
تحذير
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
2 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.
إذا كان هناك أكثر من قرص فيزيائي قبل كل شيء نفذ
select DEVICE
حيث DEVICE هو الجهاز مثل /dev/hda
تحذير
قبل تحجيم/تقليص قسم يجب أن تفحصه
بأمر dosfsck أو e2fsck لأقسام FAT و ext2
ثم تفحصها داخل parted بأمر check.
كما يجب تحويل أقسام ext3 إلى ext2 .
تلميح
إذا كان القرص كبيراً فإن أنظمة BIOS الحديثة تستعمل
خياراً اسمه LBA تأكد من أنه فعال (من أجل ويندوز) ،
وتأكد من أن أقسام ويندوز تحمل علامة LBA يمكن وضعها داخل parted
بالأمر set 1 lba on حيث 1 هو رقم القسم.
بإمكانك أيضاً استعمال resize2sf لتحجيم أقسام ext2 والتحذير نفسه
ينطبق هنا أيضاً.
4.8.4 التهيئة format
لديك قرص مرن تريد مسح كل الملفات منه
bash# mkdosfs -v /dev/fd0u1440
وبسرعة رهيبة أصبح القرص فارغاً تماماً
(تشبه quick format في دوس/ويندوز ولكنها أسرع)
. ما قمنا به كان وضع نظام ملفات fat فارغ على القرص المرن
إن العملية كانت سريعة لأنه لا يشغل نفسه بوضع
أصفار في كل بايت في القرص بل فقط يخبره نظام الملفات
الفارغ بأن الصناديق(التي تحدثنا عنها في مثالنا) كلها
متاحة ويمكنك وضع ملفات بها.
تحذير
هذا يعني أنه يمكن استرجاع هذه البيانات
ما لم تمحى. لا تعتمد على هذا فهذا مربع تحذير.
بكلمات أخرى إذا كنت تريد إخفاء ملفات عن الوجود
فهذا الحل غير كافي. ربما تنفيذ هذا الأمر قبل التهيئة يفيدك:
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 مرة.
بإمكانك عمل التحويل العكسي من ext3 إلى ext2
وذلك بالأمر tune2fs -O ^has_jornal /dev/hda7
وهذا مهم قبل تقليص حجم القرص.
تحذير
إذا أردت تحويل قسم من ext2 إلى ext3 فعليك إلغاء
الضم أو على الأقل جعله للقراءة فقط
mount /dev/hda7 -o remount,ro
ثم التأكد من أنه نجح في ذلك بكتابة mount
دون معاملات وملاحظة وجود ro مقابل ذلك القسم ثم تنفيذ tune2sf
بإمكانك وضع عنوان label لكل قسم أثناء
التهيئة بالخيار -L متبوعاً بالاسم أو باستعمال e2label.
4.8.5 الفحص
لفحص قسم معين نستخدم الأمر fsck التي يتعرف على
نظام الملفات تلقائياً وعليه يتصرف أو يمكنك استعمال
الأداة الخاصة بذلك النظام تحديداً مثل e2fsck
تحذير
قبل فحص قسم فعليك إلغاء
الضم أو على الأقل جعله للقراءة فقط
mount /dev/hda7 -o remount,ro
ثم التأكد من أنه نجح في ذلك بكتبة mount
دون معاملات وملاحظة وجود ro مقابل ذلك القسم.
لنجرب الأمر التالي على القرص hda7 الذي عملناه للتو
bash# e2fsck /dev/hda7
e2fsck: /dev/hda7 is clean
bash#
هذا لا يعني أن فحصه تم هكذا بتلك السرعة،
بل أنه ليس بحاجة لفحص لأنه تم ضمه وإزالة ضمه
بشكل سليم ولم يشتك أي برامج من وجود عيب
فيزيائي به. إذا كنت تظن أن هذا غير كافي
وتريد إجباره على الفحص فعليك بالخيار -f
إذا وجد شيء خطأ فإنه يسألك أن تضغط y للتصليح و n للتجاهل
دون مفتاح ENTER
وتبدأ أنت بالضغط المتكرر على 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
قمنا بملئه بقيم عشوائية ثم انتظرنا حتى تكتب
فيزيائياً على القرص، ثم حذفنا الملف.
تلميح
sync هو أمر يجبر النظام على كتابة ما هو موجود
في ال buffer/cache وإرسالها إلى القرص فيزيائياً.
يفيد هذا الأمر إذا شعرت أن النظام على وشك أن يعلق
وتريد إفراغ محتويات buffer/cache إلى القرص حتى لا تفقد.
وبهذا عندما يعمل النظام مجدداً ويفحص لن يفقد الكثير.
هذا إضافة للفائدة غير التقليدية السابقة.
ويمكنك أن تفعلها بطريقة أكثر احترافاً كما يلي:
الذي يقوم بسرعة وكفائة بحذف الملف بعد التأكد
من أن محتوياته لن تعود مهما كان المخترق خبيراً، وذلك
بعملية مشابهة لما فعلناه آخر مرة ولكن عدة مرات.
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 لتعرف الطرق المحملة حالياً
ولمعرفة الطرق المتوفرة انظر إلى الملفات في الدليل الخاص بوحدات النواة
/lib/module ثم رقم النواة ... إلى آخر المسار أي على الشكل
/lib/modules/KERNEL-VERSION/kernel/crypto/
ويمكنك تحميل أنظمة التشفير تلك بواسطة modprobe ثم اسم الوحدة (اسم الملف دون اللاحقة .ko) وهو موجود في مجلد
وثيقة Loopback-Encrypted-Filesystem-HOWTO تقترح serpent
والكثير من الوثائق الأحدث تقترح aes وهي الطريقة المعتمدة لدى المؤسسة الوطنية (الأمريكية) للمعايير والتكنولوجيا NIST.
هذا مثال يشرح
كيف تعمل قرص مشفر بحجم 64 ميغا بطريقة aes.
يتم إعدادها كما يلي: (الأمر الأول للتأكد من أن رقم صفر غير محجوز)
# modprobe cryptoloop
# modprobe 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 حتى لا يميّز المخرب المساحة الخالية)
تلميح
يمكن تمرير كلمة السر(المفتاح) لبرنامج 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
-
توزع البيانات على كل الأقراص عدا
واحد منها. أما هذا الواحد فيحتفظ فيه
بمعلومات تفيد في التحقق من أن البيانات
سليمة. لهذا يكون حجم المنظومة يساوي مجموع
كل حجوم الأقرص عدا واحد.