CentOS新增加磁盘自动创建LVM卷组


exit_script(){
    exit 1
}
input_error_exit(){
    if [ -z  $1 ];then 
        echo -e "\033[31m "Incorrect input!!!" \033[0m"
        exit_script
    fi
}

#从现有物理卷扩展逻辑卷
extend_lv_from_pv(){
    PVS_NAME=`pvs | grep -v "PFree" | awk '{if($6>0){print $1;}}'`
    VG_NAME=`vgdisplay | awk '/VG Name/ {print $3}'`
    LVS_NAME=`lvdisplay | awk '/LV Name/ {print $3}'`
    if [ ${#PVS_NAME} == 0 ];then
        echo -e "\033[31m "Don\'t available physics volume!" \033[0m"
        exit_script
    fi
    echo -e "\033[34m Please select physics volume to operate: \033[0m"
    select OPERATE_DISK in $PVS_NAME
    do
    break
    done
    input_error_exit $OPERATE_DISK    

    echo -e "\033[34m Please select logical volume to extend: \033[0m"
    echo -e "\n"
    select LV_NAME in $LVS_NAME
    do
        break
    done
    input_error_exit $LV_NAME

    echo -e "\n"
    #判断逻辑卷是根分区还是swap分区
    unset TEMP
    TEMP=`cat /etc/fstab  | grep $LV_NAME | awk '{print $2}'`
    if [ $TEMP = "/" ];then
        lvextend /dev/$VG_NAME/$LV_NAME $OPERATE_DISK
    unset TEST
        TEST=`cat /etc/fstab  | grep $LV_NAME | awk '{print $3}'`
        if [ "$TEST" = "ext4" ] || [ "$TEST" = "ext3" ];then
            resize2fs /dev/$VG_NAME/$LV_NAME
        elif [ "$TEST" = "xfs" ];then
            xfs_growfs /dev/$VG_NAME/$LV_NAME
        fi
    elif [ $TEMP = "swap" ] || [ $TEMP = "none" ];then
    view_vg_size
    read -p "Please input size to extend(G,g,M,m):" SIZE
        swapoff /dev/$VG_NAME/$LV_NAME
        lvextend -L +${SIZE} /dev/$VG_NAME/$LV_NAME
        mkswap /dev/$VG_NAME/$LV_NAME
        swapon /dev/$VG_NAME/$LV_NAME
    fi
}

#从未分区的硬盘扩展逻辑卷
extend_lv_from_disk(){
    #搜索所有/dev/sd开头的硬盘
    DISKS=`fdisk -l | awk '/Disk/ {print $2}' | cut -d: -f1 | grep '\/dev\/sd*'`
    I=0
    #筛选未分区的硬盘,并将未分区的硬盘存入数组中
    for J in $DISKS;do
        TEST1=`fdisk -l $J | grep ^$J.`
        FLAG1=$?
        if [ $FLAG1 != 0 ];then
        DISK[$I]=$J
        I=`expr $I + 1` 
        fi
    done
    #如果没有可用硬盘,则退出脚本
    if [ ${#DISK[*]}  == 0 ];then
        echo -e "\033[31m "Don\'t available disk!" \033[0m"
        exit_script
    fi
    echo -e "\n"
    echo -e "\033[34m "The following are unused hard drives." \033[0m"
    #从未分区数组中选择要操作的硬盘
    select OPERATION_DISK in ${DISK[*]} 
    do
        break
    done
    input_error_exit $OPERATION_DISK

    #创建分区
    fdisk $OPERATION_DISK<<EOF
n
p
1


t
8e
w
EOF
    PV_NAME=`fdisk -l $OPERATION_DISK | grep ^$OPERATION_DISK | awk '{print $1}'`
    VG_NAME=`vgdisplay | awk '/VG Name/ {print $3}'`
    LVS_NAME=`lvdisplay | awk '/LV Name/ {print $3}'`
    #创建物理卷
    pvcreate $PV_NAME
    #将新建的物理卷加入到已有卷组中
    vgextend $VG_NAME $PV_NAME
    echo -e "\n"
    echo -e "\033[34m Please select logical volume to extend: \033[0m"
    select LV_NAME in $LVS_NAME
    do
        break
    done

    input_error_exit $LV_NAME
    
    #判断逻辑卷是根分区还是swap分区
    unset TEMP
    TEMP=`cat /etc/fstab  | grep $LV_NAME | awk '{print $2}'`
    if [ $TEMP = "/" ];then
    lvextend /dev/$VG_NAME/$LV_NAME $PV_NAME
    unset TEST
        TEST=`cat /etc/fstab  | grep $LV_NAME | awk '{print $3}'`
        if [ "$TEST" = "ext4" ] || [ "$TEST" = "ext3" ];then
            resize2fs /dev/$VG_NAME/$LV_NAME
        elif [ "$TEST" = "xfs" ];then
            xfs_growfs /dev/$VG_NAME/$LV_NAME
        fi
    elif [ $TEMP = "swap" ] || [ $TEMP = "none" ];then
    view_vg_size
        read -p "Please input size to extend(G,g,M,m):" SIZE
        echo -e "\n"
        swapoff /dev/$VG_NAME/$LV_NAME
        lvextend -L +${SIZE}G /dev/$VG_NAME/$LV_NAME
        mkswap /dev/$VG_NAME/$LV_NAME
        swapon /dev/$VG_NAME/$LV_NAME
    fi
}

#查看可用的卷组大小
view_vg_size(){
    VG_SIZE=`vgs |grep -v VG |awk '{print $7}'`
    echo -e "\n"
    echo -e "\033[36m "The size of the available logical group is:" \033[0m"
    echo -e "\033[33m $VG_SIZE \033[0m"
    echo -e "\n"
}
OPTION1='Extend Logical volume using a unpartitioned hard disk.'
OPTION2='Extend Logical volume using a free physics volume.'

echo -e "\n"
select OPTION in "$OPTION1" "$OPTION2"
do
    echo -e "\n"
    break
done
echo -e "\n"
input_error_exit $OPTION

case  "$OPTION" in
"$OPTION1")
    extend_lv_from_disk
    ;;
"$OPTION2")
    extend_lv_from_pv
    ;;
*)
    echo -e "\033[31m "Incorrect input!!!" \033[0m"
    exit_script
    ;;
esac
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352