我想克隆硬盘但又不丢失 /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 设置创建人类可读的备份 — 因此也许对于解决块问题也很有用?)