2012-05-16 1 views
4

Amazon provides instance store pour les instances EC2. Si vous utilisez votre propre AMI, ceux-ci ne sont pas formatés ou montés automatiquement pour vous. Vous devez les formater et les monter manuellement.Script pour formater et monter tous les périphériques de stockage d'instance disponibles

Les périphériques disponibles sont listed here et varient en fonction du type d'instance. Par exemple, un m1.small aura différents périphériques de stockage d'instance disponibles que c1.xlarge.

Je suis à la recherche d'un script qui

  1. Détecte ce que le type d'instance est. Peut-être en utilisant curl -s http://169.254.169.254/latest/meta-data/instance-type
  2. Formate et monte tous les périphériques qui sont disponibles pour ce type d'instance mais qui n'ont pas encore été formatés/montés.

Possible? C'est fait? L'avoir?

Répondre

5

Donc, voici ce que j'ai construit pour cela.

#!/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 
1
#!/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 
Questions connexes