在设置 RAID 和 LVM 方面,我相当“生疏”,但我不明白为什么这个设置不能按预期工作。我有一台带有两个物理硬盘的服务器,我想在软件 RAID 中设置一些东西,这样任何一个驱动器发生故障,机器仍然可以正常运行。
+------+------------+
| swap | / (root) |
| 5 GB | 113.5 ext4 |
+-----------+-------------------+
| /boot | LVM |
| 1 GB ext4 | 118.5 GB |
+----------------------+-----------+-------------------+
| EFI system partition | RAID 1 | RAID 1 |
| 500 MB | 1 GB | 118.5 GB |
+----------------------+-----------+-------------------+
| HDD (120 GB) |
+------------------------------------------------------+
即两个驱动器的配置相同,并且 RAID 跨越两个驱动器。
但是,当我移除驱动器 #1 时,系统启动到某个状态,但告诉我无法找到我的根 LVM 卷组,无法完全启动。当我移除驱动器 #2 时,系统根本无法启动。
如果需要更多细节我可以提供,但这种配置是否存在一些根本的设计缺陷?
答案1
因此,问题的一部分是,当其中一个驱动器丢失时根本无法启动,这可能意味着引导加载程序没有在两个驱动器上进行配置。
由于这是 Ubuntu,我认为我们可以放心地假设您正在使用 grub?如果是这样,请运行命令dpkg-reconfigure grub-pc
。保留大多数选项原样,我们要更改的是GRUB install devices
。现在它可能只/dev/sda
选择了。确保/dev/sda
和/dev/sdb
都是均已选择。
下一个问题。从您的输出来看,您的 EFI 分区似乎没有为任何类型的 RAID1 设置。因此您可能需要手动将数据同步到第二个 EFI 分区。我不确定您是否可以为此设置基于软件的 RAID1。
我也没有足够的信息来弄清楚为什么在移除一个磁盘的情况下无法识别 LVM。移除一个磁盘后,两个 RAID1 卷在 ? 中都显示为活动状态/proc/mdstat
。
答案2
虽然看起来 RAID 1(镜像)设置应该可以在缺少一个驱动器的情况下工作,但该方案中的所有内容都取决于 RAID 的方法控制正在使用。
从控制器的角度来看,RAID 有两种类型 - 硬件控制和软件控制。硬件控制的 RAID 由计算机中的 RAID 控制器芯片组驱动,因此驱动器的管理级别低于操作系统本身(通常来自 BIOS 级别驱动程序,例如 LSI 提供的驱动程序)。软件控制的 RAID 由操作系统管理,通常是内核模式 I/O 驱动程序,用于同时处理两个或多个驱动器。
对于 OP 来说,有一个问题需要回答:在系统启动顺序/启动驱动器选择中,RAID 控制器是唯一选择的硬盘设备,还是其中一个驱动器被选为启动设备?如果是前者,那么 RAID 设置应该可以工作,因为所有驱动器访问在到达驱动器之前都要经过 RAID 控制器。后一种设置完全绕过 RAID 控制器,并处理驱动器本身的板载控制器……这会破坏 RAID。
如果 OP 使用基于硬件的 RAID 控制器方案,我建议 OP 执行以下操作:
启动到 BIOS,并确保启动顺序和硬盘选择不直接涉及 RAID 驱动器,而只涉及 RAID 控制器“虚拟驱动器”。
进入 RAID 控制器设置(在启动时加载其驱动程序时可能按 CTRL-C)并确保驱动器都被选为 RAID 驱动器并正确同步。
重新格式化 RAID 1“驱动器”(技术上是镜像卷)并将其用作操作系统启动媒体。
重新安装操作系统发行版,使其不会看到两个“驱动器”,而是一个“卷”作为其启动设备。
在我看来,不推荐使用软件或基于操作系统的 RAID 解决方案。