使用 dd 克隆硬盘

使用 dd 克隆硬盘

我想克隆硬盘但又不丢失 /home 中的数据

我目前的方案是:

[root@ns1 ~]# lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                   8:0    0   512G  0 disk
├─sda1                8:1    0     1G  0 part /boot
└─sda2                8:2    0   511G  0 part
  ├─centos_ns1-root 253:0    0    50G  0 lvm  /
  ├─centos_ns1-swap 253:1    0   7.9G  0 lvm  [SWAP]
  └─centos_ns1-home 253:2    0 453.1G  0 lvm  /home

目标硬盘坏了,我想复制除 /home 内容之外的所有内容(包括分区架构或 /home 所含的任何元数据),以便将 /home 内容完整保留在旧硬盘上。两个硬盘(损坏的硬盘*)具有相同的分区架构,并且操作系统使用相同的选项安装,硬盘空间相同

[root@ns1 ~]# fdisk -l

Disk /dev/sda: 549.8 GB, 549755813888 bytes, 1073741824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b809e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200  1073741823   535821312   8e  Linux LVM

Disk /dev/mapper/centos_ns1-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos_ns1-swap: 8455 MB, 8455716864 bytes, 16515072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

磁盘 /dev/mapper/centos_ns1-home:486.5 GB,486530875392 字节,950255616 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 我最终得到了这个

dd if=/dev/sda of=/dev/sdb count=?? bs=512 conv=notrunc,noerror

但是,如何才能找到 /home 中数据开始之前要计数的确切数字?


问题是我尝试将虚拟机从一个节点实时迁移到另一个节点,迁移失败,主硬盘也出现故障。我尝试启动 CentOs > 故障排除,但收到“你没有任何 Linux 分区”的提示。然后我尝试了很多方法恢复一些数据,但没有成功。现在我使用相同的选项重新创建系统,我想从 0 到第一个块复制“/home”中的用户数据,以保持 /home 中的数据完好无损。

答案1

我认为问题在于您正在使用 LVM,这使得您尝试的操作变得非常困难。

你问“我如何才能找到在 /home 开始之前要计算的确切数字”- 您可能无法做到这一点。由于 LVM 从分区中抽象出磁盘,因此您的 LVM 可能分为多个部分。您可能能够获得有关“物理范围”的一些有用数据 - 即通过使用 vgdisplay 查看块端来查看底层块,然后使用“lvdisplay -m”查看未使用的扩展区。话虽如此,尝试以这种方式进行数据恢复在我看来似乎是灾难的根源。

虽然 500 GB 不算小,但也不算大,最好的办法可能是克隆整个磁盘,然后删除目标上的 /home。与其使用 dd,我建议使用 ddrescue - 它旨在处理数据恢复,为您提供进度指示和进度日志,可用于让您停止和重新启动该过程。

说到这一点我会非常不满意 - 并且不会在没有强大备份的情况下尝试(事实上我自己从未尝试过并且在这里可能毫无意义),您还可以尝试备份 LVM 分区信息,销毁 /home,进行备份 [但这是您的问题所在],然后使用 lvdump 恢复 lvm 分区信息(https://www.thegeekdiary.com/centos-rhel-lvm-backing-up-volume-group-metadata/ — 顺便说一句,这会为您的 LVM 设置创建人类可读的备份 — 因此也许对于解决块问题也很有用?)

相关内容