سلسلة الهارد ديسك (5) مقدمة الي التخزين علي الهارد ديسك



تابع قناة عالم الكمبيوتر علي التيليجرام


بعد ان قطعنا شوطا طويلا بفضل الله فيما يخص الهاردوير بالنسبة للهارد ديسك سواء البوردة المتصلة به LogicBoard مرورا بانواع الهارد ديسك والوصول للمكونات الداخلية من الهارد وتحدثنا عن كيفية عملها معا لتنفيذ الاوامر المطلوبة من الهارد وبعد كل هذا الطريق الطويل اعتقد انه حان الوقت لنبعد قليلا عن الهاردوير ونلقي نظرة علي السوفتوير للهارد وكيف يقوم بالتخزين وكيف يقوم بتنظيم الملفات والمعلومات بداخله.


مواضيع السلسلة 

سنبدأ من البداية ومن بداية ان الهارد الان ما هو الا قطعة حديد بها مكونات كهربية ومغناطيسية لوظائف التخزين ولكنها موجودة بطريقة غير منظمة واول شئ يتم للهارد لتنظيمه هو Low -Level -Format فدعما نتعرف اولا ماهو Low -Level -Format والفرق بينه وبين High Level Format.

الفرق بين Low -Level -Format و High Level Format

غالبا ما تقوم الشركات المصنعة للهارد بعملية الفورمات الاولي للهارد ديسك وهي Low -Level -Format وهذه العملية هي المسئولة عن تقسيم الهارد ديسك وخاصة الاسطوانات بداخله التي تحدثنا عنها Platters الي مسارات Tracks و قطاعات Sectors وكذلك Cylinders و Heads و الـ Head هنا المقصود به هو سطح الاسطوانة سواء العلوي او السفلي فكل اسطوانة من اسطوانات الهارد يتم التخزين عليها من كلا الجانبين فالجانب العلوي مثلا لاول اسطوانة يسمي Head 0 والجانب السفلي Head 1 وهكذا ومعني هذا النوع من الفورمات انه يتم تقسيم الهارد ديسك فيزيائيا Physical لمعرفة مكان كل سيكتور وتراك وعمل خريطة لهم وهذه هي اخر مرة تكون فيها الاسطوانات Platters فارغة بلا اي تنظيم ويأتي النوع الثاني من الفورمات وهو High Level Format وهو الذي يمكنك القيام به بنفسك في اي وقت عند تقسيم الهارد ديسك وهو المسئول عن انشاء سجل الاقلاع الرئيسي MBR والذي سنتحدث عنه بالتفصيل باذن الله وهو المسئول كذلك عن انشاء File System وتخصيص كل بارتيشن في الهارد ونوع كل بارتشن وبدايته ونهايته وكل هذا سنخصص له موضوع مستقل باستفاضة باذن الله.

كيف يتم حساب مساحة الهارد ديسك؟

الهارد ديسك عبارة عن مجموعة من اسطوانات التخزين Platters وكل اسطوانة لها سطحين Head وكل Head به مجموعة من التراكات Tracks وكل التركات التي في مستوي واحد متوازي من كل الاسطوانات تسمي سلندر Cylinder وكل تراك مقسم اي مجموعة من القطاعات Sector لذلك يتم حساب المساحة الكلية للهارد من هذه العلاقة.

المساحة الكلية = حجم السيكتور * عدد السيكتور في التراك * عدد السلندر * عدد الاسطح او الهد

وعادة ما يكون حجم السيكتور 512 بايت لانه يكون ناتج 2 قوة 9 و رقم 2 يدل علي ارقام 0 و 1 فقط التي يتم تخزين بها البيانات وللعلم غالبا ما يكون اول سطح لاول اسطوانة Head 0 هو المسئول عن حفظ بيانات السيكتور والتراك والسليندر و الهد وتنظيمها لهذا الهارد ولكي نبدأ من البداية علينا بالتعرف علي اصغر وحدة تخزينية في الهارد وهي السيكتور وعلاقتها بالكلستر.

السكتور Sector والكلستر Cluster

كما علمنا ان في كل نقطة مغناطيسية علي سطح الهارد هناك 0 او 1 وتحمل شحنة في اتجاه مغناطيسي معيني ويطلق علي هذه النقطة سواء 1 او 0 لفظ بت bit وعند عمل Low Level Format للهارد ديسك يتم تقسيم هذه البتات في مجموعات تسمي سيكتور حيث ان كل 4096 بت يمثلون واحد سكتور بمعني ان كل 512 بايت هي سكتور واحد وعند تخزين البيانات لا يتعرف نظام التشغيل علي السيكتور لانه تقسيم فيزيائي لا تغيير فيه ولكنه يتعرف علي ما يسمي بالكلستر وهو عبارة عن تجميع لمجموعة قطاعات Sector معا علي حسب نظام الملفات المستخدم File System ولكن لماذا لجأ نظام التشغيل الي الكلستر ولم يكتفي بالسيكتور؟ لأن السيكتور هذا تقسيم فيزيائي ومساحته صغيره جدا 512 بايت ومعظم الملفات التي يتم تخزينها اكبر بالطبع من 512 بايت ولنفترض ان هناك ملف حجمه 800 بايت سيتم تخزينه طبعا علي عدد 2 سيكتور لا مشكله في ذلك ولكن نظام التشغيل لا يعترف بالسكتور ولكن بالكلستر لذلك سيضعه في كلستر واحد ولا يهمه اذا كان هذا الملف سيتم توزيعه علي اكثر من سيكتور ام لا.

والان نأتي للنقطة الاهم ماذا لو زاد حجم هذا الملف فيما بعد عن 800 بايت؟ في حالة اذا كان نظام التشغيل يتعامل مع السيكتور سيكون عليه ان يضع الحجم الزائد في سيكتور جديد بجانب الـ2 سيكتور السابقين هذا في حالة اذا كان السيكتور التالي فارغ ولكن ماذا لو لم يكن فارغ وتمت الكتابة عليه لصالح ملف اخر؟! هنا تكمن المشكلة لذلك يتعامل نظام التشغيل مع الكلستر لانه في هذه الحالة يقوم نظام التشغيل بالبحث عن اي كلستر فارغ في اي مكان اخر ثم يضع فيه الحجم الزائد من الملف ويقوم بتسجيل ذلك في نظام الملفات File System حتي يتم التعرف علي جميع اجزاء الملف في الكلسترات المختلفه عند فتحك للملف في اي وقت مع العلم ان هذه العملية تؤدي الي تأخير بعض الوقت نظرا لان رأس القراءة تقوم بقراءة الملف من علي اكثر من مكان علي اسطوانات التخزين Platters لذلك يتم معالجة هذه المشكلة من خلال Disk Defragment ووظيفتها تنظيم الكلسترات بترتيب ملفاتها بجانب بعضها وتوفير الوقت والكفاءة المهدرة ودائما ما يكون عدد السيكتور المتواجده في الكلستر عبارة عن 2 ^ ن حيث ن تمثل ارقام من 0,1,2,3,4 , .... الخ بمعني ان الكلستر قد يحمل 2^0 (2 قوة 0 ) = 1 سيكتور او 2^3 = 8 سيكتور بمعني ان الكلستر قد يحمل 1 او 2 او 4 او 8 او 16 او 32 او ... ولكن ليست 3 او 5 او 6 او 7 وهكذا ويختلف حجم الكلستر من نظام ملفات لاخر.

ولقد قمنا بشرح هذه النقطة قبل ذلك يمكنك الرجوع اليها لفهم الفرق بين انظمة الملفات ايضا من خلال موضوع الفرق بين الفورمات بـ FAT , FAT32 , NTFS , REFS , exFAT ولكن سنتقبس فقرة من هذا الموضوع لأهميتها بالنسبة لما نتحدث عنه تخص الكلستر ايضا.



حجم الكلستر في FAT 16 يساوي 64 Kbs و في NTFS يساوي 4 Kbs قد يتطرق الي ذهنك ان نظام ال FAT 16 افضل بالنسبة للحجم و اكبر حجما .. لا ليس هكذا كما ظننت سأشرح لك ببساطة . اذا كان لك ملف حجمه 68 Kbs و اردت تخزينه علي قرص تخزين بنظام FAT 16 سيذهب الي عدد 2 خانة Cluster ، اول خانة ممتلئة بها 64 Kbs والكلستر الثاني به الباقي وهو 4 kbs فقط حسنا هناك 60 kbs لازالت فارغة في هذا الكلستر هل استطيع ان املأها بـ kbs من ملف اخر؟ بالطبع لا لان الكلستر يتم الكتابة فيه مرة واحدة فقط بل سينشأ لك كلستر جديد ليحمل حجم الملف الجديد او تقوم بالحذف او التهيئة من جديد وهذا يسمي ضياع في الكلسترات وبالتالي ضياع في الحجم وهذا يفسر لك جملة Size on disk وهي تعني حجم الكلسترات حتي لو لم تكن ممتلئة وليس حجم الملف الفعلي وللتأكد من ذلك ستقوم بعمل تهيئة لهارد ديسك بنظام FAT 16 وهارد ديسك اخر بنظام NTFS وضع علي كل منهما نفس الحجم وستجد ان Size on disk في نظام NTFS اقل من FAT16.

لماذا يختلف حجم الهارد ديسك الحقيقي مع المساحة المدونة عليه؟

هذا يرجع الي ان الشركات المصنعة للهارد تقوم بحساب ان الكيلو بايت KB يعادل 1000 بايت وان الميجا بايت تعادل 1000 كيلو بايت والجيجا بايت تعادل 1000 ميجا بايت لذلك عندما تقوم بالتسويق لهارد ديسك حجمه 500 جيجا فانها في واقع الامر تقصد انه 1000 *1000*1000*500 =500.000.000.000 بايت بينما انظمة التشغيل تقوم بحساب الكيلو بايت علي انه 1024 بايت والميجا بايت = 1024 كيلو بايت والجيجا بايت = 1024 ميجا بايت وبالتالي تكون اجمالي المساحة المذكورة ( 500 جيجا بايت ) تم احتسابها علي هذا الاساس.

500.000.000.000 / 1024 / 1024 / 1024 = 465.66 جيجا بايت وهذا يرجع الي طريقة التعامل مع البيانات والارقام بالنسبة للحاسب والانسان فالانسان يتعامل مع الابجدية العشرية Decimal System والتي تتكون من 10 ارقام من 0 الي 9 بينما يتعامل الحاسب مع الابجدية الثنائية Binary System والتي يتواجد فيها 0 و 1 فقط نظرا للتعامل مع الاشارت الكهربية on او Off فقط لذك يتم الحساب علي اساس 2^10 = 1024 وليست 1000

اتمني ان يكون الموضوع بسيط وان تكون قد وصلت المعلومات التي اردت توصيلها بطريقة واضحة في هذا الموضوع لاننا في الموضوع القادم باذن الله سننتقل الي الحديث بالتفصيل عن الـ MBR او سجل الاقلاع الرئيسي وكذلك نظام الملفات وكيف يتم تنظيم الملفات بداخل كل بارتشن وما هو المسئول عن ذلك.

تعليقات