Ubuntu EC2 Raid0 Ephemeral — 重启后 SSH 连接

Ubuntu EC2 Raid0 Ephemeral — 重启后 SSH 连接

首先,我使用 Elestic AMI ami-c162a9a8 启动一个新的大型实例。首先,我运行:

DF-H

/dev/xvda1            9.9G  814M  8.6G   9% /
udev                  3.7G  4.0K  3.7G   1% /dev
tmpfs                 1.5G  156K  1.5G   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  3.7G     0  3.7G   0% /run/shm
/dev/xvdb             414G  199M  393G   1% /mnt

猫/etc/fstab

LABEL=cloudimg-rootfs   /    ext4   defaults    0 0
/dev/xvdb   /mnt    auto    defaults,nobootwait,comment=cloudconfig 0   2

然后我运行这个脚本:

#!/bin/bash
apt-get install -y mdadm --no-install-recommends

# Configure Raid - take into account xvdb or sdb
DRIVE=`df -h | grep -v grep | awk 'NR==2{print $1}'`

if [ "$DRIVE" == "/dev/xvda1" ]; then
        DRIVE_1=/dev/xvdb
        DRIVE_2=/dev/xvdc
else
        DRIVE_1=/dev/sdb
        DRIVE_2=/dev/sdc
fi

umount /mnt
dd if=/dev/zero of=$DRIVE_1 bs=4096 count=1024
dd if=/dev/zero of=$DRIVE_2 bs=4096 count=1024
partprobe
mdadm --create --verbose /dev/md0 --level=0 -c256 --raid-devices=2 $DRIVE_1 $DRIVE_2
echo DEVICE $DRIVE_1 $DRIVE_2 | tee /etc/mdadm.conf 
mdadm --detail --scan | tee -a /etc/mdadm.conf
blockdev --setra 65536 /dev/md0
mkfs -t ext3 /dev/md0
mkdir -p /mnt/myraid && mount -t ext3 -o noatime /dev/md0 /mnt/myraid

# Remove xvdb/sdb from fstab
chmod 777 /etc/fstab
sed -i '$ d' /etc/fstab

# Make raid appear on reboot
echo "/dev/md0 /mnt/myraid ext3 noatime 0 0" | tee -a /etc/fstab

脚本完成后,我再次运行:

DF-H

/dev/xvda1            9.9G  815M  8.6G   9% /
udev                  3.7G  8.0K  3.7G   1% /dev
tmpfs                 1.5G  164K  1.5G   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  3.7G     0  3.7G   0% /run/shm
/dev/md0              827G  201M  785G   1% /mnt/myraid

猫/etc/fstab

LABEL=cloudimg-rootfs   /    ext4   defaults    0 0
/dev/md0 /mnt/myraid ext3 noatime 0 0

当我重新启动盒子时,出现错误:port 22: Connection refused。当我尝试调试脚本时,我发现在执行此命令后停止,mkdir -p /mnt/myraid && mount -t ext3 -o noatime /dev/md0 /mnt/myraid重新启动,然后尝试手动安装会出现此错误: special device /dev/md0 does not exist。我完全不明白,这是怎么回事?

编辑:

在我突袭并挂载(但没有修改 /etc/fstab)之后,我运行了:

mdadm -D /dev/md0

/dev/md0:
        Version : 1.2
  Creation Time : Mon Dec 19 06:13:44 2011
     Raid Level : raid0
     Array Size : 880730112 (839.93 GiB 901.87 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Dec 19 06:13:44 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 256K

           Name : ip-10-91-18-80:0  (local to host ip-10-91-18-80)
           UUID : 36946c0e:db95eb34:bf22c078:45958378
         Events : 0

    Number   Major   Minor   RaidDevice State
       0     202       16        0      active sync   /dev/xvdb
       1     202       32        1      active sync   /dev/xvdc

然后我重新启动并运行:

mdadm --assemble /dev/md0 /dev/xvdb /dev/xvdc

mdadm: cannot open device /dev/xvdb: Device or resource busy
mdadm: /dev/xvdb has no superblock - assembly aborted

我也尝试过:

mdadm --assemble --scan

mdadm: No arrays found in config file or automatically

当我使它详细时:

mdadm --assemble --scan --verbose

mdadm: looking for devices for /dev/md0
mdadm: cannot open device /dev/xvdb: Device or resource busy
mdadm: /dev/xvdb has wrong uuid.
mdadm: cannot open device /dev/xvdc: Device or resource busy
mdadm: /dev/xvdc has wrong uuid.

答案1

通常,该mdadm.conf文件将包含启动时重新组装阵列所需的信息。特别重要的是该文件中包含的 UUID - 它必须与您的阵列的 UUID 匹配(使用 查找mdadm -D /dev/md0)。

如果一切看起来都没有问题,您可以选择重命名 mdadm.conf 文件并使用dpkg-reconfigure mdadm来自阵列的正确信息重新生成它。

此主题关于这个话题的文章值得一读。

为了成功安装,您通常需要:

  1. 加载 md 模块(使用 modprobe md(或使用 raid0 代替 md)或将其添加到 /etc/modules)
  2. 组装阵列例如:
    mdadm --assemble /dev/md0 /dev/xvdb /dev/xvdc
    (或者,使用--scan来组装全部,而不是指定数组)

如果所有其他方法都失败了,您可以将上述内容添加到初始化脚本中,以便在启动时组装阵列。

由于挂载依赖于设备 (md0) 的存在,您可能需要将nobootwait其添加到 fstab(或者将挂载移到运行 assemble 命令的脚本中)。

答案2

这里的关键见解是您的 md 设备在重启时被重命名。它被创建为 /dev/md0,但重启后它显示为 /dev/md127(这之前在评论中提到过,我将其作为答案加到气泡中以便于阅读。)

我刚刚遇到了完全相同的事情(创建了 md0,重新启动,显示为 md127)。再次重新启动,/dev/md127 仍然存在。我打算继续使用它。

echo "/dev/md127 /mnt/myraid xfs noatime 0 0" | tee -a /etc/fstab

有更多时间的人应该深入研究为什么会发生这种情况(以及它是否总是以这种方式发生)并在此报告;- )

相关内容