5

Amazon为 EC2 实例提供实例存储。如果您使用自己的 AMI,这些文件不会自动为您格式化或安装。您需要手动格式化并安装它们。

此处列出了可用的设备,并根据实例类型而有所不同。例如,m1.small 将具有与 c1.xlarge 不同的可用实例存储设备。

我正在寻找一个脚本

  1. 检测实例类型是什么。也许通过使用 curl -s http://169.254.169.254/latest/meta-data/instance-type
  2. 格式化并挂载可用于该实例类型但尚未格式化/挂载的所有设备。

可能的?完成了?有它?

4

2 回答 2

8

所以,这就是我为此构建的。

#!/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
于 2012-05-29T03:17:23.470 回答
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
于 2013-06-17T10:49:31.973 回答