lvm自动扩容到固定分区脚本

任务:需要在nagios中监控aws的一些虚拟主机,检测/data分区容量,一旦该分区容量低于某个值,就执行脚本利用aws命令指令去创建卷,挂载卷到/data分区容量不足的主机上,然后在主机上利用lvm自动扩充/data分区的容量。利用aws命令去创建挂载磁盘的脚本由lead编写,我需要写lvm自动扩充的脚本。

脚本如下

#!/bin/bash
exec &>/tmp/.lvm #将所有正确和错误输出记录到/tmp/.lvm,追加记录就用>>/tmp/.lvm

#decteing /data partion #检测有没有data分区存在,如果没有就退出脚本
df|grep -i ‘/data‘ || {
echo "no found /data"
exit 1
}

#Judge /data is which vulume #取出/data分区对应的vg名称赋给VG变量,如果VG变量为空值就退出脚本
VG=df -h|grep -i "/data"|cut -d/ -f 4|cut -d\- -f 1
[ ! -n "$VG" ] && {
echo ‘no found $VG‘
exit 1
}

#decte new whick disk #检测新增加磁盘文件名是什么,如果新增了多块,则取最后一块
PRESENT=sudo lsblk --all | grep disk | grep nvme | awk ‘{print $1}‘
do
NUM=fdisk -l | grep $i | wc -l
DISK_PVS="pvs|grep $i"
REQ=$?
if [ "$NUM" == 1 -a "$REQ" == "1" ]
then
echo "$i is new add disk" >> ${LOG_FILE}
DEV=/dev/$i
fi
done

[ ! -n "$DEV" ] && { #判断dev变量是否为空
echo ‘no found $DEV to extended‘ |tee -a ${LOG_FILE}
exit 1
}

#create new pv #创建pv操作
sudo pvcreate ${DEV} || {
echo "pv create faild"
exit 1
}

#extend vg size #扩充VG大小
sudo vgextend ${VG} ${DEV} || {
echo "vg extend failed"
exit 1
}

#lvextend /data partion #lv卷扩充操作
LV=df|grep -i ‘/data‘|awk ‘{print $1}‘ #截取/data分区lvm卷名
[ ! -n "$LV" ] && {
echo ‘no found $LV‘
exit 1
}

sudo lvextend -l +100%FREE ${LV} || { #扩充/data分区lvm卷
echo "lv extend failed"
exit 1
}

#extend filesystem #扩充文件系统大小,如果是ext4分区,执行resize2fs命令.....
FILESYSTEM=mount | grep "${LV}"|awk ‘{print $5}‘
case $FILESYSTEM in
ext4)
sudo resize2fs ${LV}
;;
xfs)
sudo xfs_growfs ${LV}
;;
*)
echo "unkown filesystem"
;;
esac

在虚拟机中测试如下:
1./data分区大小:/dev/mapper/test-test--lv 40G 48M 38G 1% /data
2.添加一块磁盘并执行脚本:/dev/mapper/test-test--lv 69G 52M 66G 1% /data
3.日志记录如下:
[[email protected] shell]# cat /tmp/.lvm
/dev/mapper/test-test--lv 41153760 49080 39375144 1% /data
nvme0n3 is new add disk
Physical volume "/dev/nvme0n3" successfully created
Volume group "test" successfully extended
Size of logical volume test/test-lv changed from 49.98 GiB (12796 extents) to 69.98 GiB (17916 extents).
Logical volume test-lv successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/test-test--lv is mounted on /data; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 9
The filesystem on /dev/mapper/test-test--lv is now 18345984 blocks long.

在nagios中测试,只要检测到/data分区容量不足某个阀值,就触发一系列脚本完成空间自动扩容

这是在lead那里测试的,所以没有记录,因为要反复测试多次,添加不同的aws磁盘类型,扩充lvm后需要将空间缩小,磁盘移除等操作,这样才方便测试,可通过如下脚本将刚添加的磁盘移除:
#!/bin/bash
if [ $# -ne 2 ];then
echo "Usage: $0 reduce2size reducesize ,i.e: 40G 500G"
exit 10
fi
LV=df|grep -i ‘/data‘|awk ‘{print $1}‘
VG=df -h|grep -i "/data"|cut -d/ -f 4|cut -d\- -f 1
sudo umount /data/ || exit 1
sudo e2fsck -f ${LV} || exit 3
sudo resize2fs ${LV} $1 || exit 2
sudo e2fsck -f ${LV} || exit 3
sudo lvreduce -L -$2 ${LV} || exit 4
#VGREDUCE=sudo pvs|grep -i ${VG}|grep nvme|awk ‘NR==1{print $1}‘
VGREDUCE=‘/dev/nvme1n1‘ #这里写要移除的磁盘文件名
sudo vgdisplay -v | grep ${VGREDUCE} || exit 5
sudo vgreduce ${VG} ${VGREDUCE} || exit 6
sudo pvs|grep ${VGREDUCE} || exit 7
sudo pvremove ${VGREDUCE} || exit 8
sudo mount ${LV} /data || exit 9

注:这是在ext4文件系统下做的测试,xfs文件系统好像不能缩小空间,只能增大

原文地址:https://blog.51cto.com/pkimin3/2399583

时间: 2024-10-08 13:07:33

lvm自动扩容到固定分区脚本的相关文章

【LVM】LVM自动扩容脚本

当新增物理磁盘时,自动扩容到:/dev/vg0/data 例如,如下是原始的: [[email protected] ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb vg0 lvm2 a-- 10.00g 0 /dev/sdc vg0 lvm2 a-- 10.00g 0 [[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree vg0 2 1 0 wz--n- 19.98g 0 [[email p

CentOS6、7 LVM逻辑卷分区自动扩容Shell脚本编程思路与实例

应用场景和已知存在的问题: 适用于CentOS6或CentOS7(可能适用于CentOS4或5等早些版本) 根文件系统(被扩展的文件系统)采用LVM进行管理,例如mount命令输出"/dev/mapper/vg_$hostname-lv_root on / type ext4 (rw)"中含有"mapper"关键词 自动扩容根文件系统,如果想扩展其他文件系统,例如有的业务应用数据目录不在根分区中,则需要修改Shell脚本代码中的VG_PATH_TO_EXTEND变量

Windows 数据盘自动分区脚本

在CMD命令文本下执行,即可: diskpart //1.进入diskpart模式 list disk //2.查询磁盘 select disk 1 //3.选择磁盘 create partition extended //4.创建扩展区 create partition logical //5.创建逻辑分区(所有) assign letter=D //6.指定盘符号D format quick //7.格式化分区(win7) format D: /q /fs:ntfs //7.格式化分区(wi

ArrayList源码解析(二)自动扩容机制与add操作

目录 1.ArrayList的自动扩容机制 2.add操作 正文 本篇主要分析ArrayList的自动扩容机制,add和remove的相关方法. 作为一个list,add和remove操作自然是必须的. 前面说过,ArrayList底层是使用Object数组实现的.数组的特性是大小固定,这个特性导致的后果之一就是,当ArrayList中成员个数超过capacity后,就需要重新分配一个大的数组,并将原来的成员拷贝到新的数组之中. add操作前都需要保证capacity足够,因此扩容机制和add放

2015-08-31 Linux添加一个物理磁盘,使用LVM进行扩容

Linux添加一个物理磁盘,使用LVM进行扩容 一.首先创建一块新的分区: fdisk  /dev/sdb n p      #选择逻辑分区,如果没有,则首先创建扩展分区,然后再添加逻辑分区(硬盘:最多四个分区P-P-P-P或P-P-P-E) 1        #分区号(从5开始),/dev/sdb1 t      8e   #分区类型8e表示LVM分区 w        #写入分区表 partprobe   #重读分区表 reboot   #重启 mkfs –t ext3 /dev/sdb1

Esxi上Linux虚拟机硬盘(LVM)扩容文档

前言 本文档主要是介绍如何在ESXi上扩容安装了Linux系统的虚拟机 操作环境 操作系统:Esxi 6.0.0 虚拟机操作系统:Linux version 3.10.0-327.3.1.el7.x86_64 ([email protected]) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Wed Dec 9 14:09:15 UTC 2015 当前硬盘大小:30GB 计划硬盘扩容大小:20GB Linux磁盘管理基

lvm在线扩容

EC2上的虚拟机容量满了,一看是lvm的格式,顿时想到可以用lvm在线扩容 EC2的create volume ,attach disk就不说了,下面是在guestos上执行的操作, ls /dev/sd* # 查看物理磁盘,找到那块新加的磁盘 fdisk /dev/sdi # 分区,其实也可以不分区的,因为之前的pv都是分区的所以.. pvdisplay # 查看pv pvcreate /dev/sdi # 加入到pv中 pvdisplay # 查看刚加入的pv vgdisplay # 查看v

Centos 6.5 x64 lvm磁盘扩容

Centos 6.5 x64 lvm磁盘扩容 系统环境: Centos 6.5 x64最小化安装 我是用EXSI做测试的. LVM简介 LVM是逻辑盘卷管理(LogicalVolume Manager)的简称,它是一种磁盘管理工具,最主要的功能就是可以随时在线调整分区的大小,解决了安装Linux系统时需要评估分区大小的烦恼. LVM相关术语 物理存储介质(The physical media) 这里指系统的存储设备:硬盘,如:/dev/hda1./dev/sda等等,是存储系统最底层的存储单元.

使用LVM方式扩容硬盘空间

使用LVM方式扩容硬盘空间 目录 [显示] 环境说明 案例环境说明:该解码引擎服务器已经采用LVM的方式进行了部署,原始的解码引擎遇到/data硬盘空间不足的问题,需要通过LVM方式再次对/data扩展空间.如图所示,在我们的解码服务器上新增了一块硬盘,空间大小为5G. [[email protected] ~]# fdisk -l 显示内容如图所示,新增硬盘为/dev/sdb. 第一步:新建一个分区 [[email protected] ~]# fdisk /dev/sdb WARNING: