文章

udev挂载磁盘

本文档介绍 udev挂载磁盘 的相关内容。

/dev/vdb:/data/

ACTION=="add", KERNEL=="vd?", SUBSYSTEM=="block", RUN="/usr/bin/xxx.sh"
/usr/bin/add_block.sh

Mkfs="mkfs.xfs -f"
Type="xfs"
if cat /etc/redhat-release | grep 'CentOS release 6\.' &>/dev/null;then
    Mkfs="mkfs.ext4"
    Type="ext4"
fi
disk_maps="`curl -s http://1.2.3.4/latest/user-data | grep '^/dev/vd' | xargs`"
all_disks="`lsblk -dn | awk '{print $1}' | xargs`"
[ -z "${disk_maps}" -o -z "${all_disks}" -o -z "${Mkfs}" -o -z "${Type}" ] && return

for dk in ${all_disks}
do
    df | grep "^/dev/${dk}" &>/dev/null && continue
    ls /sys/class/block/${dk}/${dk}* &>/dev/null && continue
    blkid /dev/${dk} &>/dev/null && continue

    dk_mount_path="`echo ${disk_maps} | egrep -o \"/dev/${dk}:/[a-z0-9]+[/a-z0-9]*\" | cut -d: -f 2`"
    ${Mkfs} /dev/${dk}
    dk_uuid="`blkid /dev/${dk} | cut -d'\"' -f 2`"
    [ -z "${dk_uuid}" -o -z "${dk_mount_path}" ] && continue

    [ -d "${dk_mount_path}" ] || mkdir -p ${dk_mount_path}
    if ! cat /etc/fstab | grep -w "${dk_mount_path}" &>/dev/null; then
        echo "UUID=${dk_uuid} ${dk_mount_path}                       ${Type}    defaults        1 1" >> /etc/fstab
    fi
    mount -a
done

本文由作者按照 CC BY 4.0 进行授权