Вопрос по amazon-ec2 – Скрипт для форматирования и монтирования всех доступных устройств хранилища экземпляров
Амазонкапредоставляет экземпляр магазина для экземпляров EC2. Если вы используете свой собственный AMI, он не форматируется и не монтируется автоматически. Вам необходимо вручную отформатировать и смонтировать их.
Доступные устройстваперечисленные здесь и варьироваться в зависимости от типа экземпляра. Например, m1.small будет иметь другие доступные устройства хранения экземпляров, чем c1.xlarge.
Я ищу сценарий, который
Detects what the instance type is. Perhaps by usingcurl -s http://169.254.169.254/latest/meta-data/instance-type
Formats and mounts all devices which are available for that instance type but have not yet been formatted/mounted.
Возможный? Сделал это? Иметь это?
2
ответа
#!/bin/bash
# This script formats and mounts all available Instance Store devices
##### Variables
devices=( )
##### Functions
function add_device
{
devices=( "${devices[@]}" $1 )
}
function check_device
{
if [ -e /dev/$1 ]; then
add_device $1
fi
}
function check_devices
{
check_device sda2
check_device sda3
check_device sdb
check_device sdc
check_device sdd
check_device sde
}
function print_devices
{
for device in "${devices[@]}"
do
echo Found device $device
done
}
function do_mount
{
echo Mounting device $1 on $2
fdisk $1 << EOF
n
p
1
w
EOF
# format!
mkfs -t xfs -f $1
mkdir $2
mount $1 $2
echo "$1 $2 xfs defaults 0 0" >> /etc/fstab
}
function mount_devices
{
for (( i = 0 ; i < ${#devices[@]} ; i++ ))
do
mountTarget=/mnt
if [ $i -gt 0 ]; then
mountTarget=/mnt$(($i+1))
fi
do_mount /dev/${devices[$i]} $mountTarget
done
}
##### Main
check_devices
print_devices
mount_devices
#!/bin/bash
#SETUP RAID0
checkAllDevices()
{
devicemount=/ephemeral
logicalname=/dev/md0
deviceslist=( '/dev/xvdb' '/dev/xvdc' '/dev/xvdd' '/dev/xvde' )
for device in ${deviceslist[@]}; do
if ([ -b $device ]) then
aDevices=( "${aDevices[@]}" $device )
fi
done
if [ "${#aDevices[@]}" -gt '1' ];then
yes | mdadm --create $logicalname --level=0 -c256 --raid-devices=${#aDevices[@]} ${aDevices[@]}
echo \'DEVICE ${aDevices[@]}\' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
blockdev --setra 65536 $logicalname
mkfs.xfs -f $logicalname > /dev/null
mkdir -p $devicemount
mount -t xfs -o noatime $logicalname $devicemount
if [ ! -f /etc/fstab.backup ]; then
cp -rP /etc/fstab /etc/fstab.backup
echo "$logicalname $devicemount xfs defaults 0 0" >> /etc/fstab
fi
else
echo "Required more than one devices"
fi
}
#MAIN FUNCTION
aDevices=()
checkAllDevices