磁盘分区中MBR的模拟损坏及修复

目前对于硬盘的分区方式有两种:MBR和GPT。本文只是为了介绍分区中的MBR的备份和恢复,所以不对GPT分区做过多的介绍。

我们先来对MBR的分区方式进行一个简单的介绍:

上图说明:

采用MBR分区的硬盘中一共有四个分区:扩展分区最多有一个,如果不需要再分逻辑分区,可以没有扩展分区。

我们都知道磁盘上有一个个的磁道,每个磁道上有很多的扇区,从磁盘的外围向内,从0开始逐渐增加磁道编号,每次磁道中的扇区也是从0开始进行编号,而MBR这个数据块就位于0磁道0扇区。每个扇区的大小为512字节,所以磁盘上的MBR的大小就为512字节,而这512字节又分为:

*主引导程序(偏移地址0000H--0088H),它负责从活动分 区中装载,并运行系统引导程序。

*出错信息数据区(偏移地址0089H--00E1H为出错信息, 00E2H--01BDH全为0字节。)

*分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为 分区项1、分区项2、分区项3、分区项4 v

*结束标志字,偏移地址01FE--01FF的2个字节值为结束标志 55AA

所以MBR存储的信息很重要,前446字节的启动引导信息,是当系统启动时由BIOS自举,进行首先查找的地方,根据启动引导中的内容到指定的位置进行加载西东启动文件,所以如果MBR损坏,则系统就启动不起来了。如果启动引导后面的64字节分区表位损坏了,则系统就不能正常识别磁盘中的分区,系统就会认为该磁盘没有分区,也不能正常加载分区,每16位字节标识一个分区,所以一个采用MBR分区方式的硬盘只能分四个分区(除逻辑分区),最后的两位结束为也是很重要的,如果没有结束为,系统就不认为这是一个MBR,就会认为这是一个空盘,结束位标志着分区表的结束,也是一个MBR数据区的结束。

在生产的过程中,我们需要对磁盘的MBR区进行一个备份,以备当MBR区损坏时能够恢复。

而且这个备份的文件是不能还放在这个硬盘下的,一定要备份到远程主机上。

我们在开始试验之前需要了解两个东西:

/dev/zero文件:这个是一个特殊的字符文件,会不断产生返回值0,

dd 这个命令:这个命令可以对块设备进行读写操作。

我们先来查看一下磁盘的MBR区数据,前512字节(我们以sda磁盘为例)

hexdump -C -n 512 /dev/sda

对磁盘上的MBR区进行备份:(我们以sda盘为例)

dd if=/dev/sda of=/app/mbr bs=1 count=512

这条命令将sda盘中的前512字节的数据读入到/app/mbr这个文件中了,即使没有这个文件,通过这条命令也会自动生成一个该文件,bs后面默认的是以字节为单位,我们也可以跟上单位自定义大小,count是表示有多少块该大小的数据。

备份完之后我们来查看一下是否备份成功,进入/app下进行查看是否生成了备份文件:

当然,这个备份的文件不能放到当前这个磁盘下,如果我们的MBR区域坏了,系统就启动不起来,而且磁盘就进不去,我们的备份文件就根本找不到。所以通常备份文件都是放到远程主机上的,我们将mbr文件远程拷贝到我的另一台Linux上:

好了,既然已经备份好了,我们就可以直接进行mbr的破坏了,同样我们通过dd 命令写入数据,将sda磁盘中的mbr区的数据给破坏掉:dd if=/dev/zero of=/dev/sda bs=1 count=512

我们之前也提到过了,/dev/zero是一个特殊的字符设备,不断的产生0值,我们将sda前512字节全部重置为0.

通过hexdump -C -n 512 /dev/sda 查看:

现在,我们的系统就不能正常的加载启动了,我们需要把这块破坏的硬盘安装到另一台主机上,通过另一台主机进行修复。

在挂载之前我们要先查看一下我们用来添加磁盘的系统中的磁盘,以确定最后我们是否知道我们添加的是那一块磁盘。

首先,我们要知道被破坏的磁盘的磁盘名,否则我们怎么知道我们要把那一个磁盘安装到另一个主机上。打开虚拟机编辑,找到磁盘对应的磁盘文件名。这是为了方便我们接下来在虚拟机文件中找到这个磁盘文件。

打开另一台主机的编辑设置,添加磁盘,如图所示:

选择SCSI磁盘类型

要添加现有的虚拟磁盘

在被破坏的虚拟机系统文件中找到与我们上面查看到的被破坏的磁盘文件编号相同的磁盘文件。

添加确定完成即可:

按照步骤来:

设备进行添加完成之后,我们进行入系统中查看有没有将此硬盘添加进来:

通过查看,我们发现,虽然我们将磁盘进行了物理的添加,但是系统中,并没有真正的识别,所以我们需要运行echo ‘- - -‘ > /sys/class/scsi_host0/scan 这条命令进行系统的识别,有些时候需要向scsi_host2中添加。之后我们在来查看会发现多出来一个sde磁盘,这个磁盘的大小正是我们添加的那块磁盘的大小,所以确定这个就是我们需要修复的那一块磁盘。

为了进一步的确认这就是我们需要恢复的磁盘,我们再来查看一次。下图中,我们发现磁盘的前512自己全部为0了。

接下来我们将我们备份的文件,同样的使用dd命令将备份文件写入到被破坏的磁盘中,小编演示如下:

恢复数据之后要进行查看确认,以确保万无一失。

这个时候我们进行查看磁盘分区情况,看是否会有所改变:

恢复过MBR分区后,sde中的分区信息就显示出来了。说明我们恢复成功了。我们将磁盘卸载掉,重新挂回原来的系统上,测试一下看是否能够开机成功。

小编这里显示已经成功的开机了!你那边怎么样了?

一般当我们恢复过之后,其中的分区信息能够显示出来就表明恢复已经成功,我们这个实验是在虚拟机上进行的,现实中的磁盘跟我们的操作思想是一样的。只不过是我们要把磁盘拔下来,插到另一个主机上进行恢复,其思想是完全一样的。

有时候我们没有备份磁盘的MBR区,但是只要我们有相同分区类型的磁盘(注意:是完全相同的分区类型,其中的数据可以不一样,我们需要的是恢复启动引导和分区表位以及结束位。)也是可以同过这个方法来恢复的。把小编上面演示中的备份文件换成完好的磁盘设备就可以了。

希望小编的一番苦心可以帮到你!

时间: 2024-10-11 15:52:50

磁盘分区中MBR的模拟损坏及修复的相关文章

浅议磁盘分区——从MBR到GPT

diskpart这个命令,用了很多年了. 作为曾经SCCM的老手,至今还记得在System Center Configuration Manager的OSD(操作系统部署)中,为了实现单一镜像单一序列部署到不同的计算机硬件,去编写提供不同的磁盘分区的脚本. 这是由于不同厂商OEM提供Windows时,往往在磁盘上划分了保留分区以存放恢复镜像.如果企业或机构中存在非在线恢复系统的需求,那么可以把OSD产生的镜像WIM保存到保留的恢复分区,以供需要时进行系统的回复. 另外,对于一个生产环境,用户往往

Linux学习(CentOS-7)---磁盘分区(概念、分区方法、分区方案)

1磁盘分区相关的概念 1.1什么是磁盘 磁盘就是计算机的外部存储器设备,即将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失.简单地讲,就是一种计算机信息载体,也可以反复地被改写.磁盘有软盘和硬盘之分: 1.1.1软盘(Floppy Disk) 软盘是个人计算机(PC)中最早使用的可移介质.软盘的读写是通过软盘驱动器完成的.软盘驱动器设计能接收可移动式软盘,目前常用的就是容量为1.44MB的3.5英寸软盘.软盘存取速度慢,容量也小,但可装可卸.携带方便.作为

linux主机规划与磁盘分区

各硬件设备在linux中的文件名 在Linux系统中,每个设备都被当成一个文件来对待. 举例来说,IDE接口的硬盘的文件名即为/dev/hd[a-d],其中,括号内的字母a-d当中的任意一个,也既有/dev/had/,/dev/hda  /dev/hdb /dev/hdc及/dev/hdd这四个文件的意思 Linux下几乎所有的硬件设备文件都在/dev/这个目录内,因此你会看到/dev/had,/dev/fd0 等的文件名 设备                                  

Linux系统下磁盘分区与管理

磁盘分区与管理 1.Linux系统设备文件 crw-rw----. 1 root root    253,  0 Apr 18 15:31 rtc0   #字符文件 lrwxrwxrwx. 1 root root           3 Apr 18 15:31 scd0 -> sr0 brw-rw----. 1 root disk      8,  0 Apr 18 15:31 sda    #设备文件 brw-rw----. 1 root disk      8,  1 Apr 18 15:

Linux系统磁盘分区及挂载 - fdisk

Linux系统磁盘分区及挂载 - fdisk 文本关键字:文件系统,磁盘分区,格式化,挂载 一.文件系统 1. 文件系统的作用 当我们拿到一块新的硬盘时,他所能够支持的最大空间只是代表硬件上的一个参数,我们要想让他能够正常的工作起来,必须要有相应的文件系统.文件系统决定了文件存储和管理时的方式和数据结构,也就是如何管理磁盘上的文件和文件夹.不同的文件系统拥有不同的特点,这也就是为什么我们在进行格式化操作必须要选定一种文件系统的原因.当在一个操作系统(Windows.Linux.MacOS)中使用

Linux 入门记录:六、Linux 硬件相关概念(硬盘、磁盘、磁道、柱面、磁头、扇区、分区、MBR、GPT)

一.硬盘 硬盘的功能相当简单但很重要,它负责记录系统所需要的各种数据.硬盘记录数据有两个方面,一个是硬件方面的存储原理和结构,另外一方面则是软件方面的数据和文件系统.硬盘的主要行为就是数据的存放和取出. 构成硬盘的基本元件,主要可以分为实际存储数据用的磁盘(Plat Platter).读取数据用的磁头(Head).帮助磁头搜寻读取位置的马达等等,这些元件构成一个能够在不同磁盘上的任意位置读取数据的结构体. 二.磁盘(Plat Platter) 磁盘是硬盘中真正用来存储信息的部分,外观上如同圆盘一

MBR与GPT分区的区别及磁盘分区相关命令

一.MBR分区结构 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是目前比较流行的一种分区结构.磁盘的0磁道0扇区称为MBR,它的大小是512字节,这个区域被分为三个部分: 第一部分为boot loader(主引导程序),占446字节: 第二部分为Partition table(分区表),即DPT,占64字节,每个分区项占用16个字节,这16个字节中存有活动状态标志.文件系统标识.起止柱面号.磁头号.扇区号.隐含扇区数目(4个字节).分区总扇区数目(4个字节

Linux中如何实现磁盘分区格式化?

本文和大家分享的主要是linux 中磁盘分区格式化相关内容,一起来看看吧,希望对大家 学习linux有所帮助. 磁盘分区 分区格式的两种选择:MBR 和 GPT 分区命令: parted的操作都是实时生效的,小心使用,主要是用于大于2T硬盘,支持MBR和GPT两种格式. 用法:parted [ 选项 ]- [ 设备 [ 命令 [ 参数 parted /dev/sdb mklabelgpt|msdos  //选择分区格式 parted /dev/sdb print  //查看分区 parted /

[磁盘管理与分区]——关于分区、磁盘分区表、MBR

磁盘连接与设备文件名的关系 1. 如下图所示: 2. 应当注意的是:系统是使用检测到的顺序来决定设备文件名的 关于分区 1. 如何理解分区?       我们知道一块硬盘是存储数据的.分区只是为了对这块硬盘做出更好的管理.       不同的分区机制(MSDOS/GPT)是不同的一些分区理念.       分区之后要进行“格式化”这块硬盘才能真正的存储数据,不同的格式化方法,就是不同的“文件系统”类型. 2. 如何理解分区以柱面为粒度?       分区时要考虑柱面因素,分区总是结束在柱面的最后