四时宝库

程序员的知识宝库

Linux/CentOS生产环境一键脚本扩容LVM

生产上往往由于业务的递增常常需要快速扩容磁盘,使用LVM对磁盘进行管理非常方便,可以动态扩容。由于手动一步一步太难受,所以给大家搞了个脚本,方便大家快速扩容。

LVM是逻辑盘卷管理(Logical VolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。

LVM模型如下图:

名称解释:

V(physical volume)即物理卷,就是物理磁盘,可以通过fdisk -l 查看操作系统有几块硬盘

VG(volume group)即卷组,就是一组物理磁盘的组合,里面可以有一块硬盘也可以有多块硬盘

LV(logical volume)及逻辑卷,就是在VG(指定的物理磁盘组)里面划分出来的

可以说成是PV就是硬盘,而VG就是管理硬盘的操作系统,而LV就是操作系统分出来的各个分区.

PV->VG->LV-> 文件系统使用(挂载到某个目录)

步骤:

1、创建物理卷 pvcreate /dev/sdb1

2、创建卷组 并将物理卷加入其中 vgcreate data /dev/sdb1 (data为卷组名)

3、创建逻辑卷组并分配大小 lvcreate -l +100%FREE -n lvdata data

4、格式化 mkfs.xfs /dev/mappper/data-lvdata/

5、开机挂载新硬盘 vim /etc/fstab

一键脚本如下:

#!/bin/bash
#VG GROUP
VGName=VolGroup
#data mount dir
LogVol00=/dev/VolGroup/LogVol00
#kd_game mount dir
LogVol01=/dev/VolGroup/LogVol01
#/dev/vda  /dev/vdb
#新磁盘判断
if [ `fdisk -l|grep /dev/vd|egrep -v 'vda|vdb'|wc -l` -gt 0 ]
then
newpartition=`fdisk -l|grep /dev/vd|egrep -v 'vda|vdb'|awk -F '[ :]' '{print $2}'`
echo "存在新增分区:$newpartition"
else
echo '扩容磁盘不存在,请申请添加新盘'
exit 1
fi
kd_game_size=`df -h|sed -n '/kd_game/p'|awk '{print $(NF-1)}'|awk -F '%' '{print $1}'`
data_size=`df -h|sed -n '/data/p'|awk '{print $(NF-1)}'|awk -F '%' '{print $1}'`
#echo $kd_game_size
#echo $data_size
if [ "$data_size" -ge "70" ]
then
echo '开始扩容data分区'
echo “$newpartition 创建物理卷 扩容data分区”
/sbin/pvcreate $newpartition
if [ $? -eq 0 ];then
echo '物理卷创建成功'
else
echo '物理卷创建失败'
exit $?
fi
echo '添加物理卷到卷组中'
/sbin/vgextend $VGName $newpartition
if [ $? -eq 0 ];then
echo '添加成功'
else
echo '添加物理卷失败'
exit $?
fi
echo '给data分区扩容'
/sbin/lvextend -l +100%FREE $LogVol00
if [ $? -eq 0 ];then
echo 'data分区扩容成功'
else
echo 'data分区扩容失败'
exit $?
fi
echo '扩展磁盘分区文件系统的大小'
/sbin/resize2fs $LogVol00
if [ $? -eq 0 ];then
echo '扩展磁盘分区文件系统的大小成功'
else
echo '扩展磁盘分区文件系统的大小失败'
exit $?
fi
sleep 5
new_data_size=`df -h|sed -n '/data/p'|awk '{print $(NF-1)}'|awk -F '%' '{print $1}'`
if [ $new_data_size -lt $data_size ];then
echo '扩容结束...'
else
echo '请检查扩容步骤'
fi
fi

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接