MBR مخفف Master Boot Record که 512 بایت اول رسانه ذخیره سازی می باشد و از سه بخش Boot Loader,Table Partitions و Magic Number تشکیل شده است. MBR به عنوان اولین سکتور رسانه ذخیره سازی برای Bootloader سیستم عامل رزرو شده و اطلاعات پارتیشن ها روی آن قرار دارد و فرایند راه اندازی سیستم از اینجا اغاز می شود. وقتی سیستم را روشن می کنید ابتدا BIOS اغاز به کار می کند. BIOS برنمه ایست که قبل از هر عملی به بررسی سخت افزار ها می پردازد و چک می کند که آیا سخت افزار ها قابل استفاده هستد یا نه که اصطلاحا به این عمل POST یا Power On Self Test می گویند و همچنین بررسی می کند که اولویت بوت شدن سیستم از کدام رسانه است. (BIOS برنامه ای مقیم در حافظه ROM سیستم می باشد.). درواقع BIOS به دنبال Bootloader در MBR بر روی اولین پارتیش اولین دیسک (رسانه ذخیره سازی) سازماندهی شده می گردد و سپس بوت لودر را اجرا می کند. سپس بوت لودر جدول پارتیشن ها را می خواند و سیستم عامل (هسته سیستم عامل) را در حافظه اصلی لود می کند و تا مادامی که سیستم روشن باشد ( یا Restart نشود) کرنل یا هسته سیستم عامل در حافظه اصلی باقی می ماند. می توانید فرایند بوت شدن سیستم عامل لینوکس را از اینجا بخوانید.
شکل بالا نمایی از ساختار (ساختمان داده) MBR می باشد که 466 بایت اول آن برای نگه داری Bootloader و 64 بایت بعدی مربوط به نگه داری جدول پارتیشن ها و دو بایت Magic Number است. 64 بایت مربوط به جدول پارتیشن برای 4 پارتیشن Primary است که هر کدام 16 بایت هستند و هر کدام دارای 6 فیلد که در شکل بالا نشان داده شده است. Magic Number عددی است هگزا دسیمال با مقدار OxAA55 که نشانه کلاسه یک Valid MBR می باشد. یک Invalid Magic Number نشان دهنده مشکل یا از دست رفتن MBR می باشد. زمانی مه هر بخشی از MBR دچار مشکل شود یا اینکه از دست برود، سیستم دیگر قابل راه اندازی نیست. پس نگه داری یک نسخه پشتیبان از این بخش از اولین پارتیشن اولین دیسک بسیار مهم و ضروری می باشد.
MBR Total Size = 446 + 64 + 2 = 512
Bootstrap = 466 byte
Partition Table = 4*16 byte
Magic Number = 2 byte
گرفتن پشتیبان از MBR :
گرفتن پشتیبان از MBR از دو جهت انجام می شود. آیا می خواهید از 446 بایت اول پشتیبان تهیه شود یا می خواهید از 512 بایت اول پشتیبان تهیه شود. که در حالا اول MBR Boot Code Backup گفته می شود و باید در یک فایل ذخیره شود ولی در حالت دوم که MBR Full Backup گفته می شود.
اگر می خواهید پشتیبان تهیه شده از دیسکی را به دیسک دیگر Restore کنید، دو دیسک (دیسک اول که می خواهیم از MBR آن پشتیبان تهیه کنیم sda و دیسک دوم که می خواهیم MBR تهیه شده را در آن جایگزین و Restore کنیم sdb نام دارند) باید تنها، پارتیشن های دقیقن هم اندازه (هم Size) داشته باشند. اگر MBR تهیه شده را در دیسکی با اندازه پارتیشن های متفاوت Restore کنید، باعث بروز مشکلات و غیر قابل خوانده شدن داده ها می شود و تقریبا غیر قابل Recover کردن می باشد. به هر حال از دستور dd که در تمامی توزیع های لینوکسی و در تمامی سیستم عامل های یونیکسی (لینوکس، سولاریس، مکینتاش و بی اس دی ها) وجود دارند. در هر دو حالت پشتیبان که گفته شد، مقدار count در دستور dd برابر یک (1) می باشد.
بازنویسی کل MBR از دیسکی به دیسکی دیگر با پارتیشن های هم اندازه :
باید از کل 512 بایت یک پشتیبان تهیه کنیم و آنرا در دیسکی دیگر ذخیره کنیم.
دستور بالا برای دو دیسک با پارتیشن های هم اندازه، یک نسخه از کل MBR اولین دیسک تهیه می کند (مقدار bs=512) و آنرا در اولین پارتیشن دیسک sdb بازنویسی یا Restore می کند.
بازنویسی MBR از دسیکی به دیسک دیگر با پارتیشن های غیر هم اندازه :
می توانیم از کل 512 بایت دیسک sda یک پشتیبان در یک فایل تهیه کرد و سپس تنها و تنها 446 بایت اول از این فایل را در دیسک دیگر Restore نمود.
و با دستور دیگر 446 بایت اول را در دیسک sdb بازنویسی یا Restore می کنیم.
ایجاد پشتیبان از MBR و بازنویسی آن برای یک دیسک :
منظور این است که از 512 بایت اول (اولین سکتور)، اولین پارتیشینِ، اولین دیسک که MBR روی آن قرار دارد یک نسخه پشتیبان در فایلی تهیه کنیم و در صورت بروز مشکلی در آن دیسک، MBR را از روی آن فایل پشتیبان، بازنویسی یا Restore کنیم.
و با دستور زیر آنرا Restore کنید.
نویسنده نامی امیر
شکل بالا نمایی از ساختار (ساختمان داده) MBR می باشد که 466 بایت اول آن برای نگه داری Bootloader و 64 بایت بعدی مربوط به نگه داری جدول پارتیشن ها و دو بایت Magic Number است. 64 بایت مربوط به جدول پارتیشن برای 4 پارتیشن Primary است که هر کدام 16 بایت هستند و هر کدام دارای 6 فیلد که در شکل بالا نشان داده شده است. Magic Number عددی است هگزا دسیمال با مقدار OxAA55 که نشانه کلاسه یک Valid MBR می باشد. یک Invalid Magic Number نشان دهنده مشکل یا از دست رفتن MBR می باشد. زمانی مه هر بخشی از MBR دچار مشکل شود یا اینکه از دست برود، سیستم دیگر قابل راه اندازی نیست. پس نگه داری یک نسخه پشتیبان از این بخش از اولین پارتیشن اولین دیسک بسیار مهم و ضروری می باشد.
MBR Total Size = 446 + 64 + 2 = 512
Bootstrap = 466 byte
Partition Table = 4*16 byte
Magic Number = 2 byte
گرفتن پشتیبان از MBR :
گرفتن پشتیبان از MBR از دو جهت انجام می شود. آیا می خواهید از 446 بایت اول پشتیبان تهیه شود یا می خواهید از 512 بایت اول پشتیبان تهیه شود. که در حالا اول MBR Boot Code Backup گفته می شود و باید در یک فایل ذخیره شود ولی در حالت دوم که MBR Full Backup گفته می شود.
اگر می خواهید پشتیبان تهیه شده از دیسکی را به دیسک دیگر Restore کنید، دو دیسک (دیسک اول که می خواهیم از MBR آن پشتیبان تهیه کنیم sda و دیسک دوم که می خواهیم MBR تهیه شده را در آن جایگزین و Restore کنیم sdb نام دارند) باید تنها، پارتیشن های دقیقن هم اندازه (هم Size) داشته باشند. اگر MBR تهیه شده را در دیسکی با اندازه پارتیشن های متفاوت Restore کنید، باعث بروز مشکلات و غیر قابل خوانده شدن داده ها می شود و تقریبا غیر قابل Recover کردن می باشد. به هر حال از دستور dd که در تمامی توزیع های لینوکسی و در تمامی سیستم عامل های یونیکسی (لینوکس، سولاریس، مکینتاش و بی اس دی ها) وجود دارند. در هر دو حالت پشتیبان که گفته شد، مقدار count در دستور dd برابر یک (1) می باشد.
بازنویسی کل MBR از دیسکی به دیسکی دیگر با پارتیشن های هم اندازه :
باید از کل 512 بایت یک پشتیبان تهیه کنیم و آنرا در دیسکی دیگر ذخیره کنیم.
کد PHP:
dd if=/dev/sda of=/dev/sdb bs=512 count=1
بازنویسی MBR از دسیکی به دیسک دیگر با پارتیشن های غیر هم اندازه :
می توانیم از کل 512 بایت دیسک sda یک پشتیبان در یک فایل تهیه کرد و سپس تنها و تنها 446 بایت اول از این فایل را در دیسک دیگر Restore نمود.
کد PHP:
dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
کد PHP:
dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1
منظور این است که از 512 بایت اول (اولین سکتور)، اولین پارتیشینِ، اولین دیسک که MBR روی آن قرار دارد یک نسخه پشتیبان در فایلی تهیه کنیم و در صورت بروز مشکلی در آن دیسک، MBR را از روی آن فایل پشتیبان، بازنویسی یا Restore کنیم.
کد PHP:
dd if=/dev/sda of=/tmp/mbr-backup bs=512 count=1
کد PHP:
dd if=/tmp/mbr-backup of=/dev/sda bs=512 count=1