Shell脚本一键扩展LVM新分区

最近接到经理要求对RHEL7的LVM新分区扩容自动化,因为使用的是虚拟化平台,故采用添加新磁盘的方式来做:

#!/bin/bash

##在线扫描新磁盘##Step1: Recognize New Hard Disk##Logdir=~/disk_log

if [ ! -d $Logdir ];then	mkdir -p $Logdirfi

SCSIHost=`ls -l /sys/class/scsi_host/ | grep "host" | tr -s " " | cut -d" " -f9`

for host in $SCSIHost	do		sudo echo "- - -" | sudo tee /sys/class/scsi_host/$host/scan >/dev/null 2>&1	done

if [ $? -eq 0 ];then        echo "`date  +"%Y/%m/%d %T %Z %:::z"`: Step1 -> SCSI Disk Rescanning is Successful" >> $Logdir/log_$HOSTNAME.txtelse	echo "`date  +"%Y/%m/%d %T %Z %:::z"`: Step1 -> SCSI Disk Rescanning is Faied, Script is Interrupted" >> $Logdir/log_$HOSTNAME.txtfi

##创建新的磁盘分区##Step2: Create New Disk Partition##NewSD=`sudo fdisk -l | grep "Disk /dev/sd"  | sort | tail -1 | cut -d" " -f2 | cut -d":" -f1`

sudo fdisk $NewSD <<EOFnp1

t8ewqEOF

if [ $? -eq 0 ];then        echo "`date  +"%Y/%m/%d %T %Z %:::z"`: Step2 -> SCSI Disk Partition Creation is Successful" >> $Logdir/log_$HOSTNAME.txtelse	echo "`date  +"%Y/%m/%d %T %Z %:::z"`: Step2 -> SCSI Disk Partition Creation is Faied, Script is Interrupted" >> $Logdir/log_$HOSTNAME.txt	exitfi

##LVM在线扩容##Step3: Extend Disk by LVM##NewPV=`sudo fdisk -l | grep ^$NewSD | cut -d" " -f1`VG=`sudo vgs | tail -1 | awk ‘{print$1}‘`LVRoot=`sudo lvscan | grep ACTIVE | grep root | cut -d"‘" -f2`sudo pvcreate $NewPV && sudo vgextend $VG $NewPV

if [ $? -eq 0 ];then	echo "`date  +"%Y/%m/%d %T %Z %:::z"`: Step3 -> VG Exention is Successful" >> $Logdir/log_$HOSTNAME.txt	sudo lvextend -r -l +100%FREE $LVRootelse	echo "`date  +"%Y/%m/%d %T %Z %:::z"`: Step3 -> VG Exention is Failed" >> $Logdir/log_$HOSTNAME.txt	exitfi

if [ $? -eq 0 ];then        echo "`date  +"%Y/%m/%d %T %Z %:::z"`: Step3 -> LV and File System Extention is Successful" >> $Logdir/log_$HOSTNAME.txtelse	echo "`date  +"%Y/%m/%d %T %Z %:::z"`: Step3 -> LV and File System Extention is Faied, Script is Interrupted" >> $Logdir/log_$HOSTNAME.txt	exitfi

exit 0

目前采用的添加新磁盘后,手动运行脚本,个人认为可以添加条件判断语句,放到crontab,这样以后只需配合外部工具,客户可以实现自动添加新磁盘和扩容。

目前暂时只能想到这个方式,希望能得到各位的指正,让我能优化这个脚本,增强其移植性和容错性。

时间: 2024-10-12 20:17:59

Shell脚本一键扩展LVM新分区的相关文章

Centos 6.4上面用Shell脚本一键安装mysql 5.6.15

Centos 6.4上面用Shell脚本一键安装mysql 5.6.15  #!/bin/bash if [ `uname -m` == "x86_64" ];then machine=x86_64 else machine=i686 fi mysqlBasedir=/storage/server/mysql mysqlDatadir=${mysqlBasedir}/data/ mysqlLogdir=/storage/log/mysql mysqlUser=mysql mysqlGr

Shell脚本一键部署MongoDB

Shell脚本一键部署MongoDB 基本实施思路: 安装MongoDB→创建多实例(创建数量可根据需求自定义)→开启所有实例并展示端口 #!/bin/bash #自动安装MongoDB # #检查MongoDB是否已安装 local="/etc/yum.repos.d/MongoDB.repo" rpm -q mongodb-org &> /dev/null if [ $? -ne 0 ];then #配置本地YUM源 ls /etc/yum.repos.d/ | gr

shell脚本一键在线安装redis数据库(使用函数实现)

shell脚本一键在线安装redis数据库(使用函数实现) 前面的文章给出了有关手工编译安装redis的流程,并且在模拟搭建redis集群时给出了在线安装redis的过程,于是就想着自己写好在线安装的redis脚本,本文主要使用shell函数来实现并且验证在线安装的过程,执行无误后就想着分享出来. PS:系统环境为Centos7.4 脚本如下: #!/bin/bash function checkroot(){ if [ $UID -ne 0 ] then echo "|------------

Shell脚本一键安装LNMP环境

https://sourceforge.net/projects/opensourcefile/files/ Nginx是一款高性能的HTTP和反向代理服务器.Nginx在反向代理,Rewrite规则,稳定性,静态文件处理,内存消耗等方面表现了很强的优势.因此公司线上和测试环境的WEB服务大多数采用的是LNMP环境,经常要进行LNMP环境的搭建,下面是用SHELL脚本写的一键安装LNMP环境的脚本.1)系统环境介绍Centos 5.8 64位 (已测试)Nginx: nginx-1.4.1.ta

shell脚本一键安装MySQL5.5

执行脚本之前必须下载MySQL5.5二进制压缩安装包.我是事先下载好了的.下边执行shell脚本. #!/bin/bash #auth:taoyake /bin/mkdir -p /taokey/tools cd /taokey/tools/ tar -zxf mysql-5.5.32-linux2.6-x86_64.tar.gz  sleep 3 cp -R mysql-5.5.32-linux2.6-x86_64 /usr/local/mysql sleep 3 cd /usr/local/

【高效率】shell脚本一键安装Tomcat服务

脚本环境 1.linux centos 7或redhat 62.光盘镜像文件已挂载3.系统在可连接外网的环境中4.先下载jdk和tomcat软件包百度云链接提取码:89be 实验步骤 1.上传软件包到Linux系统中2.编写脚本vim tomcat.sh #!/bin/bash#this is tomcat shell #先关闭防火墙,增强性systemctl stop firewalldsetenforce 0num1=`env | grep USER | grep root | wc -l

使用shell脚本一键安装zabbix并配置客户端的自动发现选项

1.缘由: 我自己的ESXi服务器上上最近新加了好多虚拟主机,但我现在还不会安装,使用,那种批量运维工具(saltstack,ansible,puppet等).虽然还有一种方法:就是通过shell工具一次打开若干个窗口,然后在编辑框中输一行行的输入命令,点击全部窗口执行.可是我的老笔记本已经撑不住这么开这么多窗口了,. 2.然后 开始写zabbix_agent安装脚本,通过手工上传到各个虚拟机中执行,这里推荐大家在初始化Linux的时候,别忘记安装lrzsz,rz和sz可以拖动上传文件到Linu

使用shell脚本自动化对硬盘进行分区

在Linux系统中,可以使用fdisk 对硬盘进行分区,但是要手动执行很多命令,这样使用有很麻烦,现在记一个用fdisk 的脚本自动执行. 1 #make partition 2 dd if=/dev/zero of=/dev/mmcblk1 bs=1024 count=1024 3 fdisk /dev/mmcblk1 << EOF 4 n 5 p 6 1 7 2048 8 +100M 9 n 10 p 11 2 12 13 14 t 15 1 16 c 17 a 18 1 19 w 20

Centos6.5上面用Shell脚本一键编译安装mysql5.5.47

操作系统及其mysql配置文件说明:Linux系统:Centos6.5 cat /etc/centos_release     查看centos版本信息 [[email protected] ~]# cat /etc/centos-release CentOS release 6.5 (Final) uname -r        #显示操作系统的发行版号 [[email protected] ~]# uname -r 2.6.32-431.el6.x86_64 uname -a      #显