CentOS6 需要使用gdisk工具,若无可使用yum -y install gdisk命令安装 开始扩容 gdisk /dev/vda p #查看分区 d #删除分区 n #新建分区 p #默认选择主要分区 1 #分区编号 2048 #开始扇区(默认直接回车) xxxxx #结束扇区(默认直接回车) w #保存分区表并退出 Centos7 与Centos6相同,只不过可以直接使用fdisk工具
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
| #!/bin/bash rsnamedir="/root/auto_expansion.sh" rclocal_cmd="/root/autodisksystem.sh" rclocal_dir="/etc/rc.d/rc.local" fstab_dir="/etc/fstab" Swapdir="/www/swap" rsname=auto_expansion #shell名称 LOCKfile=/root/.$(basename $0).lock LOGfile=/root/.$(basename $0).log devname="/dev/vda"
Echo() { case $1 in success) flag="\033[1;32m" ;; failure) flag="\033[1;31m" ;; warning) flag="\033[1;33m" ;; msg) flag="\033[1;34m" ;; *) flag="\033[1;34m" ;; esac if [[ $LANG =~ [Uu][Tt][Ff] ]] then echo -e "${flag}${2}\033[0m" else echo -e "${flag}${2}\033[0m" iconv -f utf-8 -t gbk fi #写日志 [ "${3}A" == "LogA" ] && Shell_log $2 }
Shell_log(){ LOG_INFO=$1 Echo "msg" "$(date "+%Y-%m-%d") $(date "+%H:%M:%S"):$rsname:$LOG_INFO" >> $LOGfile }
Shell_lock(){ touch $LOCKfile } Shell_unlock(){ rm -f $LOCKfile } Exit(){ Shell_unlock exit }
Check_OS() { if [ -e /etc/redhat-release ]; then OS=CentOS [ -n "$(grep ' 7\.' /etc/redhat-release 2> /dev/null)" ] && OS_Ver=7 [ -n "$(grep ' 6\.' /etc/redhat-release 2> /dev/null)" ] && OS_Ver=6 elif [ -n "$(grep -i 'Debian' /etc/issue 2> /dev/null)" ]; then OS=Debian elif [ -n "$(grep -i 'Ubuntu' /etc/issue 2> /dev/null)" ]; then OS=Ubuntu else Echo "failure" "不支持此系统" "Log" Exit fi
}
CentOS6() { which gdisk >/dev/null 2>&1 [ $? -ne 0 ] && yum -y install gdisk gdisk $1 << EOF p d n 1 2048
w y y EOF sed -i "/^nohup \/root\/.*/a$rclocal_cmd" $rclocal_dir }
CentOS7() { fdisk $1 << EOF p d n p 1 2048
w EOF sed -i "/^nohup \/root\/.*/a$rclocal_cmd" $rclocal_dir }
Debian() { fdisk $1 << EOF p d n p 1 2048
w EOF rclocal_dir="/etc/rc.local" sed -i "/^nohup \/root\/.*/a$rclocal_cmd" $rclocal_dir }
Ubuntu() { fdisk $1 << EOF p d n p 1 2048
w EOF rclocal_dir="/etc/rc.local" sed -i "/^\/root\/.*/a$rclocal_cmd" $rclocal_dir }
SwapOff() { Swapdir=$(cat /etc/fstab grep swapawk '{print $1}') swapoff $Swapdir cp ${fstab_dir}{,_bak} temp="#${Swapdir} swap swap defaults 0 0" sed -i "s@${Swapdir}.*@$temp@" $fstab_dir }
Main() { Check_OS Swap=`free -m awk '/Swap:/{print $2}'` [ "$Swap" -ne '0' ] && Echo "msg" "根分区存在交换分区,正在关闭。" "Log" && SwapOff Echo "msg" "当前系统是$OS$OS_Ver,开始扩容。" "Log" $OS$OS_Ver $devname Echo "msg" "扩容完成,将创建重启后处理脚本$rclocal_cmd。" "Log" cat > $rclocal_cmd <<EOF #!/bin/bash resize2fs -f /dev/vda1 sed -i '/^\/root\/autodisksystem.sh/d' $rclocal_dir if [ "$Swap" -ne "0" ]; then sed -i "s@#${Swapdir}.*@${Swapdir} swap swap defaults 0 0@" $fstab_dir swapon $Swapdir fi [ -e /root/autodisksystem.sh ] && rm -f /root/autodisksystem.sh [ -e /root/auto_expansion.sh ] && rm -f /root/auto_expansion.sh EOF chmod +x $rclocal_cmd Echo "success" "所有准备工作完成,3秒后自动重启并完成扩容大小" "Log" Shell_unlock sleep 3 reboot } if [ -f "$LOCKfile" ];then Echo "warning" "核实脚本正在运行中,请勿重复运行,若是之前强行中断引起的,请手工清理$LOCKfile" "Log" && exit else Echo "msg" "首次运行脚本,将自动创建锁文件然后继续,避免在执行中重复运行脚本。" "Log" Shell_lock fi Main
|