我有一台 asterisk pbx。它有 2 个驱动器,采用 raid 1 设置。但是,如果我的主驱动器发生故障,我的第二个驱动器将无法启动,因为它没有启动分区。
对我来说最重要的是正常运行时间。如果发生断电或驱动器故障,我希望备份驱动器无需任何干预即可启动。
该怎么做呢?可以给我一些指导吗?
为了澄清一下。我不是在问如何“修复”我当前的设置。我有 2 个驱动器、一个便宜的控制器,我正在寻找最强大的配置。
答案1
如果您确实在使用该卡的 RAID 功能,并且无法从第二个驱动器启动,则您在 RAID 设置实用程序中错误地设置了卷。您应该有一个占用两个驱动器全部空间的卷。如果不是这样,那么您要么需要重新配置您已有的卷(如果您的控制器支持在线或无损重新配置),要么需要备份、擦除、配置和恢复。
答案2
现代的grub2引导加载程序能够在 LVM2、许多文件系统和 raid-1 系统上找到他的文件。
因此有很多解决方案,从使用 RAID 功能左心室血管造影,来自内核MD(我个人的推荐)甚至来自硬件突袭。
启动Linux的第一步使用临时初始化内存盘从中它可以制作很多东西来使/
(根)分区可用。
为了完成这项工作,你必须建立一个满的对所有需要的分区进行镜像。
建议(基于Debian的debootstrap):
/dev/sda -> 2 partitions: sda1 = 50% but min 5Gb, sda2 = whole space left
/dev/sdb -> 2 partitions: sdb1 == sda1 length, sdb2 = whole space left
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd{a,b}1
mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/sd{a,b}2
pvcreate /dev/md0
vgcreate mirror /dev/md0
pvcreate /dev/md1
vgcreate strip /dev/md1
lvcreate -L 4G -n root mirror
lvcreate -L 10G -n tmp strip
mkfs.ext4 -L ROOT /dev/mirror/root
mkfs.ext4 -L TMP /dev/strip/tmp
mkdir /target
mount /dev/mirror/root /target
mkdir /target/tmp
mount /dev/strip/tmp /target/tmp
从那里,
debootstrap /target
for bind in proc sys dev{,/pts} ;do mount --bind /$bind /target/$bind; done
chroot /target
apt-get install mdadm lvm2 linux-image grub2
这几乎就是您所需要的。所有这些都可以通过常规安装程序完成:
只需启动普通安装程序,然后在分区选择器中点击“手动配置”,构建 raid,然后构建 LVM。
注意:您可能根本不想使用 RAID-0,在这种情况下,两个磁盘上只需要一个分区。
注意2:交换分区可以位于raid-1或raid-0上,这取决于您需要什么样的可靠性或速度。
答案3
Raid 1 应该镜像两个驱动器上的所有数据,包括 MBR。
您的机器无法启动的一个可能的解释是,RAID 卡进入了重建模式,您必须更换驱动器,并在启动之前重建 RAID。
http://www.tomshardware.com/forum/288790-32-what-drive-raid-fails
第二种可能的解释是,RAID 卡只需将未发生故障的驱动器标记为活动驱动器
http://www.bleepingcomputer.com/forums/t/452487/raid-1-wont-boot/
最不可能的解释是您正在运行软件 raid,而您的引导加载程序分区实际上不在每个驱动器上。如果是这种情况,那么您必须启动到 live cd 并执行 mbr 的 dd。
dd if=/dev/sda of=/dev/sdb bs=512 count=1
# Warning: Do not run this command on a GPT drive, or a drive using 4k sector sizes
http://en.wikipedia.org/wiki/GUID_Partition_Table