مساء الخير
المقال النهرده هيتكلم عن ال file systems in linux انظمة الملفات بالعربي مبدئيا لو قريت المقال الي فات الي بيتكلم عن شرح
كيفية عمل الاقراص الصلبه هتفتكر نص انا قلت فيه
"الملفات بيتم تسجيلها علي القرص الصلب ك stream of bytes"
جميل جدا , بس اذا تم تسجيل الملفات ك stream of bytes منين هتقدر تعرف ان هو ده الملف المطلوب ؟ منين هتقدر تعرف
اسم الملف او حتي تقدر تحدد
اسم الملف او حتي تقدر تحذف الملف او تضيف ملف او تحرك ملف من مكان لمكان !
او حتي اذا هتقدر تضيف مجلدات او دلائل directories عشان تقدر ترتب الملفات ؟
في الحقيقه وذي مشرحت المقال الي فات , ان الهارد ديسك ملوش اي علاقه بالتقسيمات ديت , وان كل دوة ليه علاقه بال system , بس ال system في حد ذاته منين هيقدر يعرف كده ! اذا مكانش فيه وسيلة حتي انك تقدر تسجل ملفات او تعرف عناوينها او اسمائها الخ الخ ؟
هنا يجي موضوعنا النهرده File systems انظمة الملفاتتعريف مبدئي لل Filesystem , يعتبر كقاعدة بيانات , بتستخدم في تعديل , اضافة , حذف واسترجاع البيانات
لاحظ ان فيه عدة انواع من ال filesystems احنا حنتكلم في موضوعنا عن ال filesystem الي بيتعامل مع ال hard disk
من ضمن الانواع التانيه ال NFS = Network file system او ال virtual file systems زي ال /proc file system
ال file systems ولاحظ انا بقول systems اي انظمة. الي بتتعامل مع ال hard disks متنوعه وانت سمعت اكتر من اسم لاكتر من file system زي ال
fat , fat32 , ext2 , ext3 , ext4 , jfs , NTFS وهكذا
ايه الفرق؟
الفرق في طريقة التعامل مع "نظام الملفات" الي قمنا بتشبيهه بقاعدة بيانات , يعني تقدر تتخيل الاختلاف في انظمة الملفات وتعددها زي الاختلاف وتعدد قواعد البيانات المتاحه قدامك Mysql , Oracle... وهكذا
وايه طريقة ال File system في كده ؟زي مقلنا وشرحنا طريقة عمل الاقراص الصلبه
وقلنا انها بتتقسم لم tracks وال tracks ل sectors الي موجوده فوق platters
يبقي وظيفة ال file system انه يعمل خريطه بال sectors الي متسجل فيها ال files "لاحظ اني بردد وبقول file files files ومجبتش سيرة ال directories ولا اي حاجه تانيه وهتعرف ليه"
ويحدد عد ال sectors الي موجود فيها ال files ويحدد الاماكن الي ممكن تضيف فيها بيانات وهكذا
يعني بمعني اصح بيحتفظ ب records بتنظم ال CHS عشان يقدر من خلالها انه يقوم بتوظيف القرص الصلب في خدمته والحصول علي الperformance المطلوب , الا وهو تنظيم الملفات
لاحظ انا قلت CHS وصراحه انا بكدب

بس حبيت افكرك , ولو انت صاحي هتعرف اني كنت بكدب , لان ال file systems بتتعامل بال physical blocks جميل لحد كده ؟

اه جميل بس انا برده بكدب

صراحه انت المفروض تفقد الثقه فيا تمام لان حتي ال file system مش بيتعامل بال blocks الا internally وبيقدم map تانيه لل physical blocks اسمها ال file system blocks وديت بتكون عدد مضروب في power of 2 من ال physical blocks بس ليه ؟ لان ال hard disk مش بس بيتحتوي علي طريقة ال LBA بيحتوي علي طرق تانيه في ال addressing لل CHS مش ده مجال ذكرها لانها مش هتفيدك كل هاردات ال SCSI بيتعتمد طريقة ال LBA في ال adressing , ولكن بما ان ال linux kernel هو وعشان ال file system تبعد عنها عن المواضيع ديت فرضت ال mapping الخاص بيها وعملت abstraction بين ال physical addressing وبين ال logical او ال file system addressing
ايه تاني يقدر ال File system انه يقدمهولي ؟علاوه علي تنظيم الملفات , يقدر يقدملك معلومات عن الملفات
man stat ولاننا بنتكلم من منظور linux بحت
ال structure ديت بتحتوي علي ال metadata الي ممكن يقدمهالك ال linux kernel عن ملف ما
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
حجم الملف , نوع الملف , عدد ال block size الي بيحتلها الملف , عدد ال 512KB بلوك الي تم حجزهم للملف " , اخر access للملف , اخر تعديل , حجم ال block الي بيتم تفضيله في استخدامه في عمليات ال Input/Output "وده موضوع هنتكلم عنه بالتفصيل في مقال تاني"
وهكذا
يعني مش بس ترتيب وتنسيق للملفات , كمان تقديم معلومات مفيده عن الملفات وبتفيد في تقديمها بصورة احسن
وغير كده بيقدم معلومات مهمه جدا زي ال attributes , صاحب الملف مين , تصاريح الملف ايه , مين ليه قرائه مين ليه كتابه مين ليه تنفيذ
طبعا انا مش حشرح الكلام دوت وهفهمك انواع تصاريح الملفات لانك المفروض فاهمها انت جاي هنا عشان تشوف ايه الجديد ولكن للناس الي مش عارفها اهلا وسهلا بيكم واتفضلوا اقروا الموضوع دوت برده
CLICK HEREبعد معرفنا الكلام دوت هل نقدر نقدم تعريف تاني لل file system ?ال File system هو قاعدة بيانات تحتوي علي معلومات عن الملف , وتقوم بفرض سياسات علي الملفات والحفاظ عليها من التلاعب , ووظيفة قاعدة البيانات هذه ان تقوم بتقديم نوع من التجريد abstraction للمستخدم حتي تقوم بابعادع عن التقنيات المعقده في استخدام الاقراص الصليه , تقوم بعمل خريطه للملفات الموجوده علي وحدة التخزين والسياسات الخاصه باستخدامها , هناك عدة انواع منها وتختلف في طريقة تعاملها مع الملفات
ليه مذكرناش ال directories ? لان مفيش حاجه اسمها directories

سمعت عن حد بيقول قبل كده ان كل شيئ في لينكس ماهو الا ملف ؟ ياتري ايه السر في كده ؟ واذا لو كل حاجه ملف يبقي اللينكس بيعدم عدد كبير من ال file system تقدر تتطلع عليهم في /usr/src/linux/fs
ولو كلامي صحيح ومش بكدب عليك يبقي اذاي في حاجه اسمها cd whatever
او list للملفات الي موجوده بداخل ال directories

هجاوبك علي السؤال دوت في المقال التاني لان مقالنا النهرده بيتكلم عن انظمة الملفات بشكل بحت , ومش بيتكلم عن تطبيق اللينكس
لانظمة الملفات ديت , وهتعرف ليه انا علمت علي كلمة اسماء بالون الاحمر وهتفهم العلاقه بين ال physical blocks
جهز نفسك لان المقال الجاي والي بعديه هيتكتبوا في وقت واحد وهيبقوا Heavy as hell

c ya guys