Назад | Перейти на главную страницу

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.

Обычно mdadm.conf файл будет содержать информацию, необходимую для повторной сборки массива при загрузке. Особое значение имеет 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 (или переместите монтирование в скрипт, который запускает команду сборки).

Ключевым моментом здесь является то, что ваше устройство MD переименовывается при перезагрузке. Он был создан как / dev / md0, но после перезагрузки он появился как / dev / md127 (об этом ранее упоминалось в комментарии, который я добавляю в качестве ответа для облегчения чтения).

Я просто столкнулся с тем же самым (создал md0, перезагрузился, появился как md127). Снова перезагрузился, / dev / md127 все еще присутствует. Я просто побегу с этим.

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

Кто-то, у кого больше свободного времени, должен разобраться, почему это происходит (и если это всегда происходит именно так), и доложить здесь; -)