Pertanyaan Skrip untuk Memformat dan Memasang semua perangkat penyimpanan instance yang tersedia


Amazon menyediakan toko contoh untuk instance EC2. Jika Anda menggunakan AMI Anda sendiri, ini tidak diformat atau dipasang secara otomatis untuk Anda. Anda perlu memformat dan memasangnya secara manual.

Perangkat yang tersedia tercantum di sini dan bervariasi berdasarkan jenis instance. Sebagai contoh, m1.small akan memiliki perangkat penyimpanan contoh yang berbeda dari c1.xlarge.

Saya mencari naskah yang

  1. Mendeteksi apa jenis instance itu. Mungkin dengan menggunakan curl -s http://169.254.169.254/latest/meta-data/instance-type
  2. Memformat dan me-mount semua perangkat yang tersedia untuk jenis instance tersebut tetapi belum diformat / dipasang.

Mungkin? Sudah selesai? Memilikinya?


4
2018-05-16 05:18


asal


Jawaban:


Jadi, inilah yang saya buat untuk ini.

#!/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

5
2018-05-29 03:17



#!/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

1
2018-06-17 10:49