在 Ubuntu 上使用 dd 在 RAID1 设备上进行磁盘复制

在 Ubuntu 上使用 dd 在 RAID1 设备上进行磁盘复制

我想使用 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在生产驱动器上也是如此))。但是,要特别小心在执行所有这些命令(尤其是第一步的命令)时。

如果您在采取行动之前有任何疑问,请随时在此答案下添加评论。

相关内容