Linux磁盘克隆方法

最近公司的一台 CentOS 服务器需要克隆一下,以便在另一台服务器或者虚拟机上运行,因此,研究了一下Linux的磁盘克隆方法。

基本常识

UEFI 与 BIOS 区别

UEFI引导与BIOS引导在结构上的区别:

  • BIOS引导的结构相对简单,由3个部分组成:BIOS程序、MBR(主引导记录)和操作系统引导程序。其中BIOS程序是由计算机制造商预装在ROM芯片中的,MBR是位于磁盘的名列前茅个扇区,用于存储操作系统引导程序的位置信息,操作系统引导程序则是由用户安装的操作系统自带的。

  • UEFI引导的结构相对复杂,由多个部分组成:UEFI固件、GPT(GUID分区表)、EFI系统分区、操作系统引导程序。其中UEFI固件是由计算机制造商预装在主板上的,GPT是磁盘分区表,EFI系统分区是用于存储操作系统引导程序和其他UEFI应用程序的特殊分区,操作系统引导程序则是由用户安装的操作系统自带的。

MBR (Master Boot Record,主引导记录)

主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,偏移地址0000H–0088H),它负责从活动分区中装载,并运行系统引导程序;第二部分是Partition table区(DPT分区表),占64个字节;第三部分是Magic number,占2个字节。

GPT 分区格式

GPT分区格式包含传统MBR(主引导记录)、分区表头、分区表、备份分区表头、备份分区表以及数据区。

使用工具

  • fdisk, 查看磁盘分区情况,或者用于磁盘分区,注意 fdisk 只支持 MBR 分区格式,只支持 2T 以下的磁盘

  • lsblk, 查看磁盘分区情况

  • blkid, 获取分区 UUID ,用于编辑 /etc/fstab 永久挂在分区

  • parted, 查看磁盘分区情况,或者用于磁盘分区,支持 MBR 或者 GPT 分区格式,支持 2T 以上的磁盘

  • mkfs.ext4, 用于分区后的磁盘文件系统格式化

  • mount, 挂载磁盘分区

  • dd, 磁盘克隆的工具

1
2
# 读取硬盘的mbr扇区
dd if=/dev/sdb of=mbr.bin bs=512 count=1

以上命令的使用方法请参考:

具体步骤

需要磁盘克隆的服务器,其硬盘有4T大小,但只使用了不到512G,用于克隆的目标磁盘同样有4T大小。因此考虑先生成原磁盘的镜像文件,再向目标磁盘克隆。具体步骤如下:

  • 挂载目标磁盘,GPT分区,并ext4格式化。
  • 生成原磁盘的镜像文件
1
2
# /media/nvme1n1 为目标磁盘挂载目录
dd if=/dev/nvme0n1 status=progress bs=32M | gzip -c -9 > /media/nvme1n1/nvme0n1.dd.gz
  • 将生成的原磁盘镜像文件复制到原磁盘的 root 目录
1
mv /media/nvme1n1/nvme0n1.dd.gz /root
  • 使用原磁盘的镜像文件克隆磁盘
1
gzip -dc /root/nvme0n1.dd.gz | dd of=/dev/nvme1n1

参考链接

  1. linux下使用fdisk进行磁盘分区详解,by 人生的哲理.
  2. fdisk 管理磁盘分区,by gnu.
  3. UEFI是什么意思?UEFI和BIOS的区别是什么?,by 小橙7.
  4. UEFI是什么?与BIOS的区别在哪?,by 平凡而伟大(心之所向).
  5. 装机、做系统必备:秒懂MBR和GPT分区表,by 张伟.
  6. GPT 磁盘分区格式简介及解析示例,by 一柯.
  7. GUID Partition Table (GPT) Disk Layout,by uefi.
  8. Linux下使用dd命令备份硬盘,by zuyunfei.
  9. How to gzip and keep original file on Unix or Linux command line,by Vivek Gite .