Ubuntu 22.04:重建失败的 RAID 1 OS 启动驱动器

Ubuntu 22.04:重建失败的 RAID 1 OS 启动驱动器

我对 Linux 世界还很陌生,我发现它非常有吸引力,所以我决定购买一个机架式服务器来用它来学习更多(这是一台非常旧的戴尔 R710,我发现它非常便宜,但我发现它非常适合我的需要,而不是去垃圾场)。

在实际开始使用它之前,我在 VirtualBox 上进行了 RAID 1 测试。我的计划是在服务器上设置两个 SSD 作为 RAID 1,并在其上安装 Ubuntu。

我找到了各种关于如何在两个也是操作系统/启动驱动器的驱动器上设置 raid 1 的指南,但我没有找到万一其中一个驱动器出现故障时该怎么做,以及如何重建出现故障的 RAID 1 驱动器(也是操作系统/启动驱动器)。

在 virtualbox 中,我添加了两个 10GB 驱动器,并在安装的 Ubuntu 服务器中选择了:

  • 自定义存储布局
  • 驱动器 1 > 用作启动设备
  • 驱动器 1 的可用空间 > 添加 GPT 分区 > 格式化 [保留未格式化] 并挂载 [/]
  • 驱动器 2 > 添加为另一个启动设备
  • 驱动器 2 可用空间 > 添加 GPT 分区 > 格式化 [保留未格式化] 并挂载 [/]
  • 创建软件 RAID > RAID 级别 1 / 添加两个分区

安装后,我可以看到这个:

root@vm:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb2[0] sda2[1]
      10473472 blocks super 1.2 [2/2] [UU]

unused devices: <none>


root@vm:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
loop0     7:0    0 111.9M  1 loop  /snap/lxd/24322
loop1     7:1    0  63.3M  1 loop  /snap/core20/1822
loop2     7:2    0  49.8M  1 loop  /snap/snapd/18357
sda       8:0    0    10G  0 disk
├─sda1    8:1    0     1M  0 part
└─sda2    8:2    0    10G  0 part
  └─md0   9:0    0    10G  0 raid1 /
sdb       8:16   0    10G  0 disk
├─sdb1    8:17   0     1M  0 part
└─sdb2    8:18   0    10G  0 part
  └─md0   9:0    0    10G  0 raid1 /
sr0      11:0    1  1024M  0 rom

现在我关闭虚拟机,删除磁盘 vdi 并创建一个新的,同样为 10 GB。这将模拟其中一个 SDD 发生故障并将其替换为新的空 SDD。

再次启动后,我得到了这个:

root@vm:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda2[1]
      10473472 blocks super 1.2 [2/1] [_U]

unused devices: <none>

所以我接下来做的是:

root@vm:~# sfdisk -d /dev/sda | sfdisk /dev/sdb

/dev/sdb1: Created a new partition 1 of type 'BIOS boot' and of size 1 MiB.
/dev/sdb2: Created a new partition 2 of type 'Linux filesystem' and of size 10 GiB.
root@vm:~# fdisk -l

Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 087509D7-06F6-4346-BA97-7A0E0D303D9D

Device     Start      End  Sectors Size Type
/dev/sda1   2048     4095     2048   1M BIOS boot
/dev/sda2   4096 20969471 20965376  10G Linux filesystem


Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 087509D7-06F6-4346-BA97-7A0E0D303D9D

Device     Start      End  Sectors Size Type
/dev/sdb1   2048     4095     2048   1M BIOS boot
/dev/sdb2   4096 20969471 20965376  10G Linux filesystem

所以它们现在看起来是相同的,所以接下来我做了:

root@vm:~# mdadm --manage /dev/md0 --add /dev/sdb2
root@vm:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb2[2] sda2[1]
      10473472 blocks super 1.2 [2/1] [_U]
      [================>....]  recovery = 81.2% (8508864/10473472) finish=0.1min speed=202005K/sec

unused devices: <none>

现在,lsblk看起来和我刚开始时一模一样。

接下来,我尝试重新启动并进入 VirtualBox 启动菜单 (F12)。在这里,选择磁盘 1,启动正常,但选择磁盘 2 时会提示没有引导加载程序。因此,我从磁盘 1 启动并执行以下操作:

root@vm:~# sudo grub-install /dev/sdb
root@vm:~# sudo update-grub /dev/sdb

现在它似乎可以从任一驱动器启动。我在更换驱动器之前还创建了一个文件,现在无论我从哪个驱动器启动,该文件都会显示出来。

因此,它有点起作用,但这是正确的方法吗?

当我在服务器上设置实际的 SSD 时,我是否遗漏了某些可能出错的东西?

非常感谢您,很抱歉写了这么长的文章,但也许​​其他人会觉得它有用。

相关内容