使用Linux Software RAID设置可启动的多设备(RAID 1)

我正在尝试设置一个可启动的软件RAID,它将包含根文件系统并启动 Linux Mint Qiana.它将用于在小型数据中心中运行一些图形监控应用程序,以及用于访问其他LAN节点的简单终端.

我有两个500GB SATA驱动器(/ dev / sda和/ dev / sdb),我将用它来构建RAID 1阵列.似乎有很多方法可以做到这一点,但我有点不清楚如何创建一个可启动的md0设备.

我的第一种方法是使用Live Linux Mint安装CD启动.然后我会切换到bash提示符并使用sfdisk手动分区/ dev / sda.我创建了一个简单的分区表,其中包括一个主分区,以及一个交换分区.然后我简单地将分区表从/ dev / sda克隆到/ dev / sdb:

sfdisk -d /dev/sda | sfdisk /dev/sdb

好的,现在我有两个驱动器可以组装成一个RAID阵列.我首先创建数组:

mdadm --create --verbose --Metadata=0.90 /dev/md0 --level=mirror 
   --raid-devices=2 /dev/sda /dev/sdb

大约一个小时后,阵列完成同步.

我现在可以通过给它一个文件系统来初始化/ dev / md0:

mke2fs -t ext4 /dev/md0

好的,现在一切似乎都很好.因此,我切换回Live CD安装,并将Linux安装到/ dev / md0.一切正常,直到安装程序尝试运行grub-install,之后它会收到致命错误.

所以,我一直在研究如何理解这里的原因.我不完全确定为什么会发生这种情况,但我的理解是它与“一个人不能简单地从/ dev / md0启动”这一事实有关.似乎为了创建可启动的多设备RAID 1阵列,您需要创建单独的非RAID /启动分区,或使用initramfs.

不幸的是,我并不完全理解这会带来什么.首先,我不想创建单独的非RAID /启动分区,因为从md0启动的整个启动是为了冗余.其次,我的理解是initramfs方法是在启动时将mdadm加载到rootfs中所必需的.但是,当我从Live CD启动并创建我的RAID阵列时,mdadm已经加载到内存中,所以我不明白为什么安装程序在运行grub-install时总是会出现致命错误.

有人可以解释我在这里缺少的步骤,或者提供一个如何设置可以启动的多设备挂载的概述吗?

解决方法

使用软件RAID启动几乎总是需要单独的/启动分区,尤其是旧版本的GRUB.在为/ boot创建RAID-1分区时,还需要指定“–Metadata = 0.90”.

/ boot应该是第一个分区并且保持较小.主要是因为传统的BIOS启动原因. / boot应该是一个单独的分区的另一个原因是它通常应该以只读模式安装在/ etc / fstab中.在进行内核升级之前,您应该只以读写方式重新安装它.

我使用的典型驱动器设置是:

/dev/sda1 + /dev/sdb1 = /dev/md0 Software RAID-1 with Metadata 0.90
/dev/sda2 + /dev/sdb2 = /dev/md### Software RAID-1 with LVM on top

我总是使用/ dev / md0作为/ boot分区.对于LVM区域,我使用125以下的随机数作为mdadm设备#,主要是为了防止在启动时将该驱动器连接到不同的服务器(即在恢复期间通过USB).

在/ boot上设置RAID-1后,必须将GRUB安装到RAID-1阵列中的每个驱动器上.

How to boot after RAID failure (software RAID)?

此特定示例显示如何设置3路RAID-1镜像,以便所有三个驱动器都可以使用GRUB启动.

# grub
grub> find /grub/stage1
 (hd0,0)
 (hd1,0)
 (hd2,0)
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdc
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

相关文章

Linux中的ARP防火墙主要用于防御ARP欺骗攻击,其效果取决于多...
insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...