我想使用 dd 制作两个驱动器的精确副本。这两个驱动器作为单个 RAID1 设备安装在 Ubuntu 上。RAID(由两个驱动器组成)是可启动的。如果我使用 dd 制作两个驱动器的精确副本,然后在另一台机器上使用它们(断开旧机器以避免 IP 地址冲突后),会有什么问题吗?我打算关闭源机器,然后将驱动器移动到另一台机器,而不是安装它们,然后对它们执行 dd,作为新机器上另外两个驱动器的源。
在运行 dd 之前需要对新驱动器做什么?例如,我是否必须对它们进行分区以匹配源驱动器?
以下是源机器上 lsblk 的输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 29.8G 0 part
│ └─md0 9:0 0 29.8G 0 raid1 [SWAP]
└─sda2 8:2 0 901.7G 0 part
└─md1 9:1 0 901.6G 0 raid1 /
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 29.8G 0 part
│ └─md0 9:0 0 29.8G 0 raid1 [SWAP]
└─sdb2 8:18 0 901.7G 0 part
└─md1 9:1 0 901.6G 0 raid1 /
回答后
以下是我向 RAID 添加一个新驱动器后“sudo mdadm --detail /dev/md0”的输出:
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 29 18:00:28 2018
Raid Level : raid1
Array Size : 31232000 (29.79 GiB 31.98 GB)
Used Dev Size : 31232000 (29.79 GiB 31.98 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Jan 2 18:33:14 2024
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : august2018:0 (local to host august2018)
UUID : cec496a6:b34bde28:4a56871f:8dffc234
Events : 300094
Number Major Minor RaidDevice State
2 8 17 0 active sync /dev/sdb1
1 8 1 1 active sync /dev/sda1
3 8 33 - spare /dev/sdc1
您能解释一下底部的“状态”栏吗?
此外,“cat /proc/mdstat”显示:
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc2[2](S) sda2[1] sdb2[0]
945379328 blocks super 1.2 [2/2] [UU]
bitmap: 1/8 pages [4KB], 65536KB chunk
md0 : active raid1 sdc1[3](S) sda1[1] sdb1[2]
31232000 blocks super 1.2 [2/2] [UU]
答案1
此解决方案仅起作用使用与您当前生产驱动器相同大小的驱动器(931.5G
)。
第一步(仅适用于您的新驱动器)
确保您的新驱动器具有无分区且无数据。您可以执行以下命令来清除驱动器:
wipefs -a /dev/your_new_drive
或 / 和
dd if=/dev/zero of=/dev/your_new_drive status=progress bs=1M count=5000 && sync
这将删除当前分区的分区/元数据/签名。
警告:这些是危险且不可逆的命令,不要使用错误的磁盘。
第二步
使用以下命令在 2 个新磁盘上镜像现有分区表:
sfdisk -d /dev/sda | sfdisk /dev/your_new_drive
您需要在两个新驱动器上执行此命令。
这将复制新的生产驱动器的当前分区表。
29.8G
完成此步骤后,您应该有和2个分区901.7G
。
第三步
在两者中都包含新的分区mdadm
RAID 1
。
mdadm /dev/md0 --add /dev/sdX1
mdadm /dev/md1 --add /dev/sdX2
添加完所有内容后,您应该会看到新驱动器被标记为spare
阵列定义内 ( mdadm --detail /dev/mdX
)。要将 RAID 1Raid Devices
编号增加到 X 个设备并开始重新同步,您需要使用以下命令:
mdadm --grow -n X /dev/md0
mdadm --grow -n X /dev/md1
X
应该是你想要的数字有源器件在数组中。
您需要针对您的 2 个新驱动器执行两次这些命令。
然后等待resync
两个 RAID(md0
应该很快)。
您可以使用此命令查看速度和剩余时间
watch -n0.5 cat /proc/mdstat
此后,您的新驱动器应被标记为输出active sync
内部mdadm --detail /dev/mdX
。
如果阵列中的一个驱动器仍未同步(仍标记为spare
),则可以使用此命令:
mdadm --readwrite /dev/mdX
这将强制resync
。
第四步
您几乎已经完成了。您只需要确保它grub
已正确安装在您的 2 个新驱动器上
grub-install /dev/your_new_drive
在你的 2 个新驱动器上执行此命令(注意已grub
安装在所有驱动器上)。 然后 :
update-initramfs -u
重要提示
这个流程不应该对您的数据来说很危险,因为它不会影响生产中的磁盘(仅read
影响操作(write
如果您安装grub
在生产驱动器上也是如此))。但是,要特别小心在执行所有这些命令(尤其是第一步的命令)时。
如果您在采取行动之前有任何疑问,请随时在此答案下添加评论。