以下是当前情况的一些背景信息。我负责维护一台 DELL Precision T7600,它刚刚丢失了一个硬盘,幸运的是,硬盘上只有 /home 目录,现在已经恢复。现在我被要求对操作系统驱动器进行 RAID 1 处理,以便将停机时间降至最低。
我在 Arch-Linux wiki 上读过有关硬盘克隆的内容,但我无法理解这个过程。也许我把它弄得太复杂了,这是一个简单的dd if=/dev/sdc of=/dev/md126
命令,但我只是想在自己动手之前确认一下。
我目前正在等待阵列重新同步到空白的新磁盘(请参阅我的其他问题如果您感兴趣的话)。我想这是必要的。如果我dd
现在决定将 id 添加到数组中会发生什么?东西会崩溃吗?在我等待的时候,dd
从设备文件将 id 添加到数组是否可行或推荐?我不确定这里的最佳做法是什么。
感谢您的时间和投入!
更新 1
我尝试dd
进入 /dev/md0 设备,但它比原始设备小一点,所以我收到dd
无法复制到 的错误/dev/md0
。此外,我尝试从该阵列启动,但遇到了 并被error: file '/grub/i386-pc/normal.mod' not found.
放入grub rescue>
,我不知道该怎么做。因此,我尝试安装该阵列以grub-install
在其上执行 ,但遇到了失败,正如mount
告诉我的那样:unknown filesystem type 'linux_raid_member'
更新2
我决定不使用 RAID1 阵列,而是运行以下命令将我的操作系统驱动器克隆到两个空白驱动器:
sudo pv /dev/sdc | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) | dd of=/dev/null
这成功克隆了我的操作系统驱动器,没有像第一次尝试那样出现 grub 错误。Grub 已加载,但无法启动操作系统,我被置于 dracut 紧急模式。我通过从我的 LiveUSB 发出以下命令摆脱这种情况,sfdisk -d /dev/sdc | sfdisk /dev/sda
并对 进行同上sdb
。
这次 Fedora 加载成功了,但我被置于紧急模式,这是由不存在的条目引起的,至少在我的情况下是这样,因为我以前也遇到过这种情况/etc/fstab
。所以我删减了 fstab 以仅挂载分区/
。
现在我将努力创建 RAID 阵列,尽管我很清楚这会破坏分区表,所以我要做的是先备份它,并希望在运行之后:
sudo mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sda /dev/sdb
从我的 Live USB 棒中我将拥有一个 RAID1 阵列。或者最终我可能会破坏分区表并需要重新加载它。或者我可能必须重新发出命令dd
并再等待 20 小时,我们拭目以待 :)!
答案1
缺少一些信息,例如分区结构是什么以及 sdc 有多满?假设某处有足够的可用空间:
首先,简单的方法是创建分区 /dev/sda1 和 /dev/sdb1,以包含 raid 阵列之外的 /boot 目录。创建这些分区后,您可以将活动 /boot 目录的内容复制到新的 /boot 分区中。假设您有空间保存 sdc:有一个包 fsarchiever 可以为您完成此操作。这里有一个操作方法:
第一步是保存当前系统:
fsarchiever savefs 文件名1.fsa /dev/sdc1
对所有分区重复此操作
第二步,在 sda 和 sdb 上创建分区结构。sda1 和 sdb1 是 /boot 分区。然后使用 sda2 和 sdb2 上的剩余磁盘空间创建一个 LVM 分区。这可以使用 gparted 来完成。
第三,可以恢复已保存的sdc分区:
fsarchiever restfs 文件名.fsa1 id=0,目标=/dev/md0/partition_id1
对其他分区重复此操作。
第四,然后在当前运行的sdc上创建/mnt/root并挂载新的LVM根分区。
由于 /boot 目录现在位于 /dev/sda1 和 /dev/sdb1 中,因此您必须从新的 /root 分区中删除该信息,并在新的 /etc/fstab 中创建一个条目,以将 /dev/sda1 分区挂载到 /root/boot 上。现在,所有剩余分区以及 /dev /proc/ 和 /sys 都需要挂载到 /mnt/root/..(请参阅 chroot 教程)现在您可以 chroot 到 /mnt/root。您可以验证环境并执行 grub2-mkconfig、grub2-install /dev/。完成这些后,您就可以启动到新的 sda-sdb 设备对