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

Как создать массив RAID10 с помощью EBS на Amazon?

Основывая этот вопрос на информации, которую я получил Почему df показывает только половину размера массива RAID10?, как мне создать массив RAID10 с использованием томов EBS на Amazon, чтобы не было слишком много избыточности?

Как видно из связанного вопроса, я использовал руководство от компании 10gen (которая создала mongodb) о том, как создать массив raid10 с помощью EBS.

Я столкнулся с проблемой, связанной с размером созданного массива, и получил ответ, что мне следует использовать другой подход для LVM по сравнению с использованием сценария MDADM.

Поскольку для меня это первая встреча с RAID, я не могу точно понять разницу между тем, что делает сценарий, и предлагаемым способом LVM (и я не понимаю, как это сделать).

Я программист и считаю, что мне очень комфортно работать с Linux-машинами, которым я научился, пытаясь выполнить то, что мне нужно. Теперь пришло время узнать о рассрочке RAID.

Релевантная информация:
Экземпляр m1.large Ubuntu 11.10.

Вот сценарий из связанного вопроса для удобства:

#!/bin/sh

disk1="/dev/xvdh1"
disk2="/dev/xvdh2"
disk3="/dev/xvdh3"
disk4="/dev/xvdh4"

echo "*** Verifying existence of 4 volumes $disk1, $disk2, $disk3 and $disk4"
if [ -b "$disk1" -a -b "$disk2" -a -b "$disk3" -a -b "$disk4" ]; then
    echo "# Found expected block devices."
else
    echo "!!! Did not find expected block devices.  Error."
    exit -1
fi
until read -p "??? - How big (in GB) are the disks (They should be the same size)?  " disk_size && [ $disk_size ]; do
    echo "Please enter a disk size."
done 

lv_size=$(echo "scale=2; $disk_size * 2.0" | bc)
echo "*** Assuming a per disk size of $disk_size gigs, will create a logical volume of $lv_size gigs, with $lv_size reserved for snapshots"

echo "*** Partitioning disks..."

echo "~ Partitioning $disk1"
echo ',,L' | sfdisk $disk1
echo "~ Partitioning $disk2"
echo ',,L' | sfdisk $disk2
echo "~ Partitioning $disk3"
echo ',,L' | sfdisk $disk3
echo "~ Partitioning $disk4"
echo ',,L' | sfdisk $disk4

sleep 6
echo "*** Creating /dev/md0 as a RAID 10"

/sbin/mdadm /dev/md0 --create --level=10 --raid-devices=4 $disk1 $disk2 $disk3 $disk4 

echo " ~ Allocating /dev/md0 as a physical volume."

/sbin/pvcreate /dev/md0

echo " ~ Allocating a Volume Group 'mongodb_vg'"

/sbin/vgcreate -s 64M mongodb_vg /dev/md0

echo " ~ Creating a Logical Volume 'mongodb_lv'"

num_extents=$(echo "$disk_size * 1024 / 64" | bc)

/sbin/lvcreate -l $num_extents -nmongodb_lv mongodb_vg

echo " ~ Formatting the new volume (/dev/mongodb_vg/mongodb_lv) with EXT4"

/sbin/mkfs.ext4 /dev/mongodb_vg/mongodb_lv

echo " ~ Done! Go ahead and mount the new filesystem.  Suggested FStab: "
echo " /dev/mongodb_vg/mongodb_lv /data ext4 defaults,noatime 0 0"