最近公司的一台 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 | # 读取硬盘的mbr扇区 |
以上命令的使用方法请参考:
具体步骤
需要磁盘克隆的服务器,其硬盘有4T大小,但只使用了不到512G,用于克隆的目标磁盘同样有4T大小。因此考虑先生成原磁盘的镜像文件,再向目标磁盘克隆。具体步骤如下:
- 挂载目标磁盘,GPT分区,并ext4格式化。
- 生成原磁盘的镜像文件
1 | # /media/nvme1n1 为目标磁盘挂载目录 |
- 将生成的原磁盘镜像文件复制到原磁盘的 root 目录
1 | mv /media/nvme1n1/nvme0n1.dd.gz /root |
- 使用原磁盘的镜像文件克隆磁盘
1 | gzip -dc /root/nvme0n1.dd.gz | dd of=/dev/nvme1n1 |
参考链接
- linux下使用fdisk进行磁盘分区详解,by 人生的哲理.
- fdisk 管理磁盘分区,by gnu.
- UEFI是什么意思?UEFI和BIOS的区别是什么?,by 小橙7.
- UEFI是什么?与BIOS的区别在哪?,by 平凡而伟大(心之所向).
- 装机、做系统必备:秒懂MBR和GPT分区表,by 张伟.
- GPT 磁盘分区格式简介及解析示例,by 一柯.
- GUID Partition Table (GPT) Disk Layout,by uefi.
- Linux下使用dd命令备份硬盘,by zuyunfei.
- How to gzip and keep original file on Unix or Linux command line,by Vivek Gite .