• 备份分区表

  分区表非常重要,建议在生产环境中将分区表备份

   先来查看一下我们要备份的分区表hexdump -C /dev/sda -n 512

  Linux磁盘管理之巧用dd命令_删除

     我们只备份前512个字节

   备份分区表  dd if=/dev/sda of=/data/mbr_bak bs=1 count=512  将sda的分区表备份到/data/的mbr_bak

  Linux磁盘管理之巧用dd命令_分区表_02

  备份文件不能保存在本机,因为分区表破坏了机器就起不来了,备份文件在本机就恢复不了了。

Linux磁盘管理之巧用dd命令_删除_03

  所以分区表备份文件应该存在一个相对比较安全的地方,在这我们把备份文件复制到centos7上

Linux磁盘管理之巧用dd命令_备份_04

模拟破坏分区表

    使用dd命令用0设备覆盖分区表里的数据

 Linux磁盘管理之巧用dd命令_备份_05 

   此时分区表已被我们破坏

 Linux磁盘管理之巧用dd命令_分区表_06

 恢复分区表

   一、机器没重启

    用fdisk -l和lsblk命令查看分区信息

 Linux磁盘管理之巧用dd命令_备份_07

 此时我们看到内存中还有分区表(我们破坏的是硬盘上的分区表),如果及时发现分区表被破坏机器没有重启;直接用我们备份的文件恢复即可

  使用dd命令将我们备份的数据覆盖前512字节即可

 Linux磁盘管理之巧用dd命令_备份_08

 查看一下分区表已恢复

 Linux磁盘管理之巧用dd命令_分区表_09

 二、机器已重启

  分区表破坏后重启机器启不来了,下面进行恢复

 Linux磁盘管理之巧用dd命令_恢复_10

 在BIOS在设置第一启动项为光盘

 Linux磁盘管理之巧用dd命令_恢复_11

 启动项设为光盘启动,选择第3项,进入救援模式

Linux磁盘管理之巧用dd命令_标识位_12

 开启网络这项选项Yes

Linux磁盘管理之巧用dd命令_删除_13

 这一项选项Skip

Linux磁盘管理之巧用dd命令_标识位_14

 进入救援模式,先查检下IP地址,ping一下是否能连通存放分区表备份文件的远程主机

Linux磁盘管理之巧用dd命令_恢复_15

 使用scp命令把远程主机上的分区表备份文件copy到本地

Linux磁盘管理之巧用dd命令_备份_16

 使用dd命令恢复

Linux磁盘管理之巧用dd命令_恢复_17

 恢复后重启

Linux磁盘管理之巧用dd命令_分区表_18

 将第一启动项设为硬盘

Linux磁盘管理之巧用dd命令_恢复_19

  系统启动了,再来查看一下分区表信息

Linux磁盘管理之巧用dd命令_标识位_20

 分区表已恢复

 存放备份文件的服务器上如果没有网络,把丢失数据的硬盘拆下安到备份分区表的机器上恢复

注意:如果大小一样,分区策略一样,可以拿相同的分区表恢复

  • 分区表克隆

    fdisk -l可以查看sda为200多G;sdb为60多G

Linux磁盘管理之巧用dd命令_备份_21

  把sda的数据写给sdb

Linux磁盘管理之巧用dd命令_标识位_22

   sdb4的结束位置是错的,总容量没有那么大

Linux磁盘管理之巧用dd命令_删除_23

  不显示sdb4是因为sdb4的分区起始记录是错的

Linux磁盘管理之巧用dd命令_标识位_24

  注意:两个硬盘可以实现分区表克隆,前提:第二个块硬盘比第一块硬盘容量大或相同

  只能克隆主分区,逻辑分区克隆不了。因为逻辑分区的信息放在EBR里,而EBR在扩展分区里,它不放在最前面MBR里

  • 删除标识位

  以sdb硬盘为例

 Linux磁盘管理之巧用dd命令_恢复_25

 先查看一下标识位是有的

 Linux磁盘管理之巧用dd命令_备份_26

 清除标识位

 Linux磁盘管理之巧用dd命令_删除_27

查看一下分区表,标识位为0

Linux磁盘管理之巧用dd命令_恢复_28

 lsblk查看发现分区也没有了;我们也可以使用这种方法来删除硬盘分区

Linux磁盘管理之巧用dd命令_恢复_29

  • 分区空间中存在夹缝