我有两个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时总是会出现致命错误.
有人可以解释我在这里缺少的步骤,或者提供一个如何设置可以启动的多设备挂载的概述吗?
解决方法
/ 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