目前对于硬盘的分区方式有两种: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区,但是只要我们有相同分区类型的磁盘(注意:是完全相同的分区类型,其中的数据可以不一样,我们需要的是恢复启动引导和分区表位以及结束位。)也是可以同过这个方法来恢复的。把小编上面演示中的备份文件换成完好的磁盘设备就可以了。

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

linux mbr 分区表修复,磁盘分区中MBR的模拟损坏及修复相关推荐

  1. 磁盘分区格式(MBR分区和GPT分区)和启动引导模式(Legacy和UEFI)的关系

    文章目录 1. 专业名词概览 2. 磁盘分区格式:MBR分区和GPT分区 2.1 简介 2.2 区别 3. 启动引导模式:Legacy BIOS和UEFI BIOS 3.1 Legacy BIOS的启 ...

  2. 两种磁盘分区形式MBR(只支持4个主分区)和GPT

    两种磁盘分区形式MBR(只支持4个主分区)和GPT: MBR: master boot record(主引导记录),存在于驱动器开始部分的特殊启动扇区,是存在于驱动器开始部分的一个特殊启动扇区,包括已 ...

  3. Linux 第七章-磁盘分区和格式化

    Linux 第七章 磁盘与文件系统管理 1.磁盘分区与格式化 ​ 在Linux中,当现有的硬盘分区不能满足要求时,就需要对硬盘中的分区进行重新的规划与调整,有时候还需要添加新的硬盘来扩展存储空间. 1 ...

  4. 浅谈Linux下傻瓜式磁盘分区工具cfdisk的使用

    对于新手来说,Linux环境下的磁盘分区可能还会存在一些困难.对于熟悉Linux的朋友来说,我们还有fdisk.parted(2TB以上的磁盘分区使用)等磁盘分区工具可以使用.在我们新增磁盘或者在原来 ...

  5. Linux 磁盘分区(MBR和GPT,loop详细分区方法介绍)

    磁盘分区和格式化操作是比较接近硬件底层的操作,这两个操作也是至关重要的,决定了磁盘的使用效率和磁盘的数据安全.(相信现在应该没有什么特别的需要,一般都已经抛弃了ext2,ext4文件格式了吧~~~~, ...

  6. Windows中的磁盘分区、MBR、GPT

    Windows中的磁盘分区: 1.分为主分区,扩展分区.其中拓展分区又包含若干个逻辑分区: 注意:如果拓展分区被删除或者破坏,则所有逻辑分区将会被删除. 2.分区时注意磁盘的连续性,建议将拓展分区放在 ...

  7. BIOS和UEFI的区别,系统安装引导以及MBR和GPT磁盘分区

    前言 安装系统是计算机专业的日经操作,然而就算你是身经百战,也可能会遇到各种各样棘手的问题,对系统的启动流程也是似懂非懂(俺也一样),每次碰到问题都会花去大量的时间去查询解决方案,最后很多时候都免不了 ...

  8. linux mbr转换成gpt分区格式,MBR怎么转换为GPT?硬盘MBR格式转换成GPT格式教程

    硬盘MBR格式怎么转换成GPT格式?这是很多小白电脑用户所不了解的.首先介绍一下硬盘gpt格式,GPT是一种全局唯一标识分区表(GUID Partition Table,缩写:GPT),是指全局唯一标 ...

  9. 磁盘分区方式——MBR与GPT之学习笔记

    大数据时代,硬盘作为数据存储工具,是生产生活中必不可少的工具.在数据日益繁多的情况下,如何让对数据进行有效管理变得愈发重要.磁盘分区,是对数据进行有效管理的重要手段之一. 磁盘分区,就是使用分区编辑器 ...

最新文章

  1. linux环境下nacos的安装+启动,阿里云服务器安装nacos
  2. GitHub 标星 17 万:打破程序员“中年危机”的「编程面试大学」!
  3. ADSL路由器防止******
  4. java comparable排序_Java使用Comparable解决排序问题
  5. linux 7修改yum源,CentOS 7修改yum源为阿里源
  6. sigsuspend函数(mysleep函数的改进)
  7. jQuery与JavaScript与ajax三者的区别与联系
  8. 通过while循环一步步实现九九乘法表
  9. shell脚本解析5----循环语句
  10. canvas学习(十):font字体设置
  11. 阿里矢量图标(字体图标)
  12. 图灵 计算机 ppt,人工智能导论(ppt 155页)
  13. highmem 分配使用与物理地址的对应关系
  14. HashMap 底层实现原理,看完面试不再懵逼。
  15. 文件夹的使用、常见术语缩写
  16. 强烈推荐33个 GitHub 前端学习资源
  17. 央视点赞!实景三维校园,最暖心的毕业礼...
  18. ARPA x 京东数科:隐私计算如何赋能未来金融数据共享
  19. php调用相册其他的图片代码,远程调用163网易相册的代码PHP版本
  20. Linux shell:判断变量是否包含某个字符串的几种方法

热门文章

  1. Python:随机生成手机号码
  2. HDU - 1237简单计算器(输出问题)
  3. psp记忆棒测试软件,识别4GB PSP记忆棒真伪的方法
  4. 使用SQL实现车流量的计算
  5. 强化学习在计算机视觉领域的应用
  6. 【读书笔记】丰田生产方式
  7. java毕业设计峨眉山景点介绍及旅游攻略推荐平台Mybatis+系统+数据库+调试部署
  8. 从清华到香港的半年(转)
  9. 电脑回收站清空后恢复教程
  10. 解决Abaqus有限元分析不收敛的6条建议