شما عضو این انجمن نبوده یا وارد نشده اید. لطفا برای مشاهده کامل انجمن و استفاده از آن وارد شوید یا ثبت نام کنید .
باشگاه کاربران روماک
MBR یا Master Boot Record چیست و چه کاربردی دارد؟ - نسخه‌ی قابل چاپ

+- باشگاه کاربران روماک (https://forum.romaak.ir)
+-- انجمن: انجمن کامپیوتر، سرور و شبکه (https://forum.romaak.ir/forumdisplay.php?fid=3)
+--- انجمن: کامپیوتر و اینترنت (https://forum.romaak.ir/forumdisplay.php?fid=6)
+---- انجمن: سیستم عامل (https://forum.romaak.ir/forumdisplay.php?fid=96)
+----- انجمن: ویندوز (https://forum.romaak.ir/forumdisplay.php?fid=98)
+----- موضوع: MBR یا Master Boot Record چیست و چه کاربردی دارد؟ (/showthread.php?tid=5661)



MBR یا Master Boot Record چیست و چه کاربردی دارد؟ - saberi - ۹۷/۴/۱۲

پیش از این که سیستم عاملی بر روی دیسک نصب کنیم باید دیسک را پارتیشن بندی کنیم. در هنگام پارتیشن بندی دیسک، تعیین می کنیم سایز پارتیشن چقدر باشد، با چه فایل سیستمی فرمت شود و این که بر روی کدام پارتیشن سیستم عامل نصب شود. اگر سیستم عامل را عوض کنیم باز هم آن پارتیشن ها در جای خود باقی هستند و سایز آن ها تغییری نمی کند. پس اطلاعات مربوط به پارتیشن ها و اندازه و سایز آن ها و فایل سیستم آن ها، مستقل از سیستم عامل است و با پاک شدن یا جایگزینی سیستم عامل، همچنان حفظ می شوند. پس این اطلاعات باید در جای خاصی ذخیره شود.

[تصویر:  do.php?img=5178]


GPT و MBR هر دو استاندارد هایی برای مدیریت پارتیشن ها و Volume ها بر روی دیسک هستند. قبل از این که پارتیشنی بر روی دیسک ایجاد کنیم، باید تعیین کنیم که با کدام روش می خواهیم پارتیشن ها و Volume های ما مدیریت شود؟ MBR یا GPT؟

انتخاب GPT یا MBR برای یک دیسک مثل انتخاب فایل سیستم NTFS یا FAT32 است برای پارتیشن یا Volume
GPT یا MBR بودن فقط ویژه ویندوز نیست، بلکه این مساله مستقل از نوع سیستم عامل است و در سایر سیستم عامل ها نیز باید نوع GPT یا MBR بودن دیسک را مشخص کنیم.

چه زمانی باید برای دیسک، MBR یا GPT بودن را انتخاب کنیم؟
هنگامی که برای اولین بار یک دیسک خام را به کامپیوتر متصل می کنید، سیستم عامل از شما می پرسد که از چه Partition Style ای می خواهید استفاده کنید و شما با انتخاب MBR یا GPT، آن را تعیین می کنید.

[تصویر:  do.php?img=5179]

پس از تعیین MBR یا GPT، اگر بخواهید نوع آن را تغییر دهید باید نکات خاصی را مد نظر قرار دهید و فرآیند تبدیل MBR به GPT و برعکس شرایط خاصی دارد که در آینده به آن ها خواهیم پرداخت.

MBR یا Master Boot Record
MBR مهمترین بخش بر روی دیسک است. MBR دربردارنده کدهای اجرایی است که شامل Master Boot Code، Disk Signature و Partition Table می باشد. در انتهای MBR یا Master Boot Record، 2 بایت به عنوان Signature Word وجود دارد که عدد آن 0x55AA است.

Disk Signature
Disk Signature عددی یکتاست که در آدرس منطقی 0x01b8 قرار دارد و کار آن شناساندن دیسک به سیستم عامل است.

Master Boot Code
Master Boot Code که بخشی از MBR است، کارهای زیر را انجام می دهد:
  • اسکن کردن Partition table برای یافتن پارتیشن Active
  • یافتن اولین سکتور از پارتیشن Active
  • بارگذاری یک کپی از Boot Sector در RAM
  • انتقال کنترل سیستم به کدهای اجرایی Boot Sector
اگر به هر دلیلی Master Boot Code نتواند فرآیند های بالا را انجام دهد، در این صورت سیستم، یک از پیام های زیر را نشان می دهد:
  • Invalid partition table
  • Error loading operation system
  • Missing operation system
بر روی فلاپی ها MBR وجود ندارد. اولین سکتور در آن ها Boot Sector است. همچنین در بسیاری از هارد دیسک های که دربردارنده MBR هستند، تنها زمانی از Master Boot Code استفاده می شود که دیسک دارای پارتیشن Active از نوع Primary باشد.

Partition Table
جدول پارتیشن یا Partition Table یک ساختمان داده 64 بایتی است که به کمک آن می توان موقعیت و نوع پارتیشن ها را بسته به سیستم عامل، بر روی دیسک شناسایی کرد.
هر بخش از Partition Table، 16 بایت است؛ پس حداکثر ظرفیت این جدول، 4 بخش است.
هر یک از بخش ها از Offset از قبل تنظیم شده نسبت به اولین سکتور، قابل دسترسی هستند. این آدرس ها به شرح زیر است:
Partition 1 \ 0x01B = (446)
Partition 2 \ 0x01C = (462)
Partition 3 \ 0x01D = (478)
Partition 4 \ 0x01E = (494)

نکته:
تنها در دیسک های Basic از Partition Table استفاده می شود. دیسک های Dynamic با استفاده از Database ای که در انتهای هر دیسک نگهداری می شود پیکربندی دیسک را شناسایی می کند. در آموزش های آینده به دیسک های Basic و Dynamic و تفاوت این دو با هم خواهیم پرداخت.
مثال: در زیر بخشی از MBR را می بینید که بیان گر Partition Table کامپیوتری است که دارای 3 پارتیشن است.
هنگامی که تعداد پارتیشن ها کمتر از 4 عدد باشد، هر 16 بایت مربوط به پارتیشینی که وجود ندارد، با عدد 0 پر می شود.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

جدول زیر اعدادی را که در Partition Table مثال بالا وجود دارد توصیف می کند. در این جدول پارتیشن اول را برای نمونه انتخاب کردیم و اعداد و معنی آن ها را بررسی می کنیم:

[تصویر:  do.php?img=5180]
یادآوری:
BYTE = 8 bit
WORD = 16 bit
DWORD = 32 bit

نکته: در جدول بالا علامت ستاره “*” برای توجه به این نکته است که مقدار فیلد، 6 بیتی یا 10 بیتی است.
اعداد بزرگتر از یک بایت به روش Little endian ذخیره می شوند. یعنی کم ارزش ترین بایت زودتر نوشته می شود. برای مثال در جدول بالا در فیلد مربوط به Relative Sectors که یک عدد DWORD است عدد 0x3F000000 نوشته شده است. این عدد به روش Little endian نوشته شده. یعنی کم ارزش ترین بایت در سمت چپ هستند. اگر بخواهیم آن را به روش نرمال بنویسیم، به صورت 0x0000003F نوشته می شود و معادل دسیمال آن، 63 است.

فیلد System ID
همانطور که در جدول بالا دیدید، System ID بخشی از Partition Table است. اطلاعاتی که از این فیلد به دست می آید:
  • Volume با چه File System ای فرمت شده است؟ (FAT، FAT32، NTFS و...)
  • آیا پارتیشن Extended بر روی دیسک ایجاد شده یا نه؟
ویندوز 2000 از System ID برای تعیین اینکه چه File System Device Driver ای را در هنگام بالا آمدن ویندوز بارگزاری کند، استفاده می کند. (File System Device Driver با Device Driver متفاوت است.)

جدول راهنما برای مقادیر System ID

[تصویر:  do.php?img=5181]

چهار سطر پایین جدول که با ستاره “*” علامت دار گذاری شدند به این معنی است که عدد مربوطه برای شناسایی Volume های non-FT نیز کاربرد دارد. از Volume های non-FT می توان Striped و Spanned را نام برد. FT سرنام Fault Tolerance است.
در Windows NT 4.0 یا ورژن های بالاتر هنگامی که یک Volume از نوع Raid-1 یا Raid-5 ساخته می شود، با ارزش ترین بیت System ID برای همه پارتیشن های Primary یا Logical ای که عضو Volume هستند، Set می شود.
MS-DOS تنها می تواند به Volume هایی دسترسی داشته باشد که System ID آن برابر با 0x01، 0x04، 0x05 و یا 0x06 باشد. هرچند می توان Volume هایی را که System ID آن ها هیچ یک از موارد گفته شده نیست، با ابزار های تحت MS-DOS مانند FDISK پاک کنید. همچنین می توانید با استفاده از ابزار های Low-Level Disk editor مانند DiskProbe، بر روی هر سکتوری Read و Write داشته باشید صرف نظر از نوع فایل سیستم به کار برده شده.

در Partition Table فیلد های Starting and Ending Cylinder، Head و Sectorچه کاربردی دارند؟
این فیلدها که به آن ها CHSنیز گفته می شود، برای بالا آمدن کامیپوتر ضروری هستند. Master Boot Code از این فیلد ها برای یافتن و بارگذاری Boot Sector از پارتیشن Active استفاده می کند.
فیلد های Starting CHS برای پارتیشن های non-Active به Boot Sector های سایر پارتیشن های Primary و به EBR مربوط به اولین Logical Drive در پارتیشن Extended اشاره می کند. دانستن سکتور آغازین از پارتیشن Extended برای خطایابی بسیار مهم است. اگر دیسک دچار مشکل شود و با استفاده از ابزارهای Low-Level Disk Editor بخواهیم اطلاعات را بازیابی کنیم دانستن این فیلد ضروری است.

در تصویر زیر MBR، Partition Table و Boot Sector را برای یک دیسک Basic که 4 پارتیشن دارد، می بینید. نوع فیلدهای درون Partition Table و Extended Partition Table یکسان است.

[تصویر:  do.php?img=5182]

اندازه Ending Cylinder، 10 بیت است. بنابراین بازه تعریف تعداد سیلندر های قابل تعرف در Partition Table از 0 تا 1023است.
اندازه Starting Head و Ending Head، یک بایت است. پس مقادیر آن در بازه 0 تا 255 قرار می گیرد.
اندازه Starting Sector و Ending Sector، 6 بیت است. پس مقادیر آن در بازه 0 تا 63 قرار می گیرد. از آنجایی که شمارش سکتورها از عدد 1 شروع می شود (و نه صفر)، پس بیشترین تعداد سکتور در هر Track عدد 63 خواهد بود.

از آنجایی که هارد دیسک ها با استاندارد 512-Byte Sector همگی Low-Level Format شده اند، بیشترین ظرفیت دیسک که توسط Partition Table تعریف می شود، به روش زیر محاسبه می شود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

با جایگزاری کردن بیشترین مقادیر هر فیلد، خواهیم داشت:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

تا پیش از معرفی قابلیت Logical Drive Addressing یا LBA،پارتیشن Active نمی توانست بیشتر از 7.8 GB باشد (فرقی نمی کرد که از چه فایل سیستمی استفاده می شد)
هنگامی که در ویندوز 2000 از FAT16 برای Volume استفاده می کنیم، بیشترین تعداد Cluster، 64 KB است. بنابراین بیشترین اندازه هر Volume برابر با 4 GB خواهد بود. اگر شما یک دیسک مالتی بوت با سیستم عامل های Windows 95 و Windows 98 داشته باشید، در این صورت Volume با فرمت FAT16 نباید بیشتر از 2 GB باشد تا سیستم عامل بتواند به آن دسترسی داشته باشد. در غیر این صورت اگر Volume بزرگتر از 2 GB باشد و سیستم عامل بخواهد به آن دسترسی داشته باشد، با پیغام Zero bytes are available روبرو خواهید شد.
بیشترین اندازه Volume های FAT16 بر روی یک کامپیوتر بستگی دارد به ساختار دیسک و بیشترین مقداری که در فیلد های Partition Table جای می گیرد.جدول زیر اندازه های Volume های FAT16 را در شرایطی که قابلیت LBA فعال باشد یا غیر فعال، نمایش می دهد. در جدول زیر بیشترین مقدار برای Cylinder مقدار 1024 است.

جدول بیشترین اندازه Volume از نوع FAT16 در حالت فعال یا غیرفعال بودن LBA

[تصویر:  do.php?img=5183]

ویندوز سرور 2000 برای دسترسی به Volume بزرگتر از 7.8 GB با بی توجهی به مقادیر Starting Sector و Ending Sector در Partition Table و استفاده کردن از Relative Sectors و Total Sectors این کار را انجام می دهد.

فیلد های Relative Sectors و Total Sectors
فیلد Relative Sectors بیانگر فاصله شروع دیسک تا شروع Volume بر اساس Sector است.
فیلد Total Sectors بیانگر تمام Sector های درون یک Volume است.
استفاده از این دو فیلد 32 بیتی باعث می شود که برای محاسبه تعداد سکتور ها 8 بیت بیشتر از ساختار CHSدر اختیار داشته باشیم. این 8 بیت باعث می شود تا پارتیشن ها بتوانند تا سکتور ظرفیت داشته باشند. همراه با استاندارد 512-Byte Sector و فیلدهای 32 بیتی Relative Sectors و Total Sectors، بیشترین ظرفیت پارتیشن ها به 2 TB یا 2,199,023,255,552 بایت برسد. بنابراین بزرگترین پارتیشنی که می توان بر روی دیسک MBR ایجاد کرد 2 TB است.

EBR یا Extended Boot Record
EBRترکیبی است از Extended Partition Table و Signature Word، که برای هر Logical Drive، در Extended Partition موجود است. EBR تنها اطلاعاتی در مورد اولین سمت از اولین Cylinder مربوط به هر Logical Drive را در Extended Partition نگهداری می کند.
توجه داشته باشید که موارد گفته شده تنها در مورد دیسک های Basic کاربرد دارد.

[تصویر:  do.php?img=5184]

Extended Partition ، Extended Partition Table و Extended Boot Record
به ازای هر Logical Drive یک Extended Boot Record داریم و در هر Extended Boot Record یک Extended Partition Table.
بخش اول Extended Partition Table در Logical Drive اول، به Boot Sector آن درایو اشاره می کند. بخش دوم آن نیز به EBR درایو منطقی بعدی اشاره می کند. اگر بعد از درایو منطقی فعلی، درایو منطقی دیگری موجود نباشد، در این صورت بخش دوم Extended Partition Table مربوط به درایو منطقی فعلی استفاده نمی شود و فیلد های آن با صفر پر می شوند. بخش های سوم و چهارم در Extended Partition Table هرگز استفاده نمی شود.

مثال: تصویر زیر بیانگر یک Extended Partition با سه Logical Drive است.

[تصویر:  do.php?img=5185]

جدول زیر بیانگر محتویات هر بخش از Extended Partition Table است.
[تصویر:  do.php?img=5186]

فیلد های درون هر بخش از Extended Partition Table دقیقا مانند MBR Partition Table است که در جدول ابتدای آموزش به آن پرداختیم.

به دلیل اهمیت MBR و EBR، خوب است که با کمک ابزار های اسکن دیسک، به طور منظم وضعیت آن ها را چک کنید تا احتمال از دست رفتن Volume ها را به کمترین میزان خود برسانید.