概要说明:
  • /dev/mapper/vg0-data挂载在目录/data下;
  • 当新增物理磁盘时,需要自动对/dev/mapper/vg0-data磁盘时进行扩容(自动化脚本);
当新增物理磁盘时,自动扩容到:/dev/vg0/data

未新增物理磁盘时的系统情况:
    1. [root@localhost ~]# pvs
    1. PV VG Fmt Attr PSize PFree
    1. /dev/sdb vg0 lvm2 a-- 10.00g 0
    1. /dev/sdc vg0 lvm2 a-- 10.00g 0
    1. [root@localhost ~]# vgs
    1. VG #PV #LV #SN Attr VSize VFree
    1. vg0 2 1 0 wz--n- 19.98g 0
    1. [root@localhost ~]# lvs
    1. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    1. data vg0 -wi-ao---- 19.98g
    1. [root@localhost ~]# df -Th
    1. Filesystem Type Size Used Avail Use% Mounted on
    1. /dev/mapper/vg0-data ext3 19G 52M 18G 1% /data

新增物理磁盘:
新添加了两块物理磁盘,分别为/dev/sdd 和/dev/sde,希望执行自动扩容脚本后,可以对/dev/vg0/data扩容;
下面是扩容后的结果:
    1. [root@localhost ~]# pvs
    1. PV VG Fmt Attr PSize PFree
    1. /dev/sdb vg0 lvm2 a-- 10.00g 0
    1. /dev/sdc vg0 lvm2 a-- 10.00g 0
    1. /dev/sdd vg0 lvm2 a-- 15.00g 0
    1. /dev/sde vg0 lvm2 a-- 15.00g 0
    1. [root@localhost ~]# vgs
    1. VG #PV #LV #SN Attr VSize VFree
    1. vg0 4 1 0 wz--n- 49.98g 0
    1. [root@localhost ~]# lvs
    1. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    1. data vg0 -wi-ao---- 49.98g
    1. [root@localhost ~]# df -Th
    1. Filesystem Type Size Used Avail Use% Mounted on
    1. /dev/mapper/vg0-data ext3 50G 52M 47G 1% /data

自动LVM扩展脚本如下:
  • 该脚本会自动比对哪些物理磁盘没有进行LVM扩展,并将未扩展的磁盘扩展到/dev/vg0/data;
  • 不会扩展sda和hda磁盘;
    1. #!/bin/bash
    1. #################################################
    1. # Create by ssslinppp
    1. # 201699 15:16:58
    1. ##################################################
    1. log_file_extendLvm="/data/logs/log_file_extendLvm.log"
    1. echo "====================================================" > $log_file_extendLvm
    1. echo "Begin to extendLVM at `date "+%Y-%m-%d %H:%M:%S"`" >> $log_file_extendLvm
    1. vg_name="vg0"
    1. lv_name="/dev/vg0/data"
    1. fdisk_info="/data/fdisk_info"
    1. pvs_info="/data/pvs_info"
    1. diffSet="/data/diffSet"
    1. displayInfo()
    1. {
    1. echo "---cmd: df -Th--------------------- " >> $log_file_extendLvm
    1. df -Th /data >> $log_file_extendLvm 2>&1
    1. echo "---cmd: pvs------------------------ " >> $log_file_extendLvm
    1. pvs >> $log_file_extendLvm 2>&1
    1. echo "---------------------------- " >> $log_file_extendLvm
    1. }
    1. getUnLvmDisk()
    1. {
    1. fdisk -l | grep /dev/[sh]d.: | awk -F ' ' '{print $2}' | awk -F ':' '{print $1}' > $fdisk_info
    1. # pvs | grep /dev/[sh]d. | awk -F ' ' '{print $1}' > $pvs_info
    1. pvscan | grep /dev/[sh]d. | awk -F ' ' '{print $2}' > $pvs_info
    1. #get Difference set
    1. # sort $fdisk_info $pvs_info $pvs_info | uniq -u > $diffSet
    1. grep -F -v -f $pvs_info $fdisk_info > $diffSet
    1. echo "-----------------------------" >> $log_file_extendLvm
    1. echo "fdisk_info is :" >> $log_file_extendLvm
    1. cat $fdisk_info >> $log_file_extendLvm
    1. echo "pvs_info is :" >> $log_file_extendLvm
    1. cat $pvs_info >> $log_file_extendLvm
    1. echo "diffSet is:" >> $log_file_extendLvm
    1. cat $diffSet >> $log_file_extendLvm
    1. echo "----------------------------" >> $log_file_extendLvm
    1. rm -rf $fdisk_info
    1. rm -rf $pvs_info
    1. }
    1. extendLV()
    1. {
    1. # example: change "sdb" to "/dev/sdb"
    1. dev_disk=`echo $dev_disk|sed '/dev/!s/^/\/dev\//'`
    1. if [ ! -e $dev_disk ];then
    1. echo "[ERROR] $dev_disk do not exists" >> $log_file_extendLvm
    1. echo "error"
    1. exit -1
    1. fi
    1. if [ `pvs | grep $dev_disk | wc -l` = "1" ];then
    1. echo "[ERROR] $dev_disk(as PE) has already extend to $vg_name" >> $log_file_extendLvm
    1. echo "error"
    1. exit -2
    1. fi
    1. # step 1 :extend vg
    1. echo "step 1- exec cmd: vgextend vg0 $dev_disk" >> $log_file_extendLvm
    1. vgextend -f vg0 $dev_disk >> $log_file_extendLvm 2>&1
    1. # step 2 :extend lv
    1. echo "step 2- exec cmd: lvextend -l 100%VG $lv_name" >> $log_file_extendLvm
    1. lvextend -l 100%VG $lv_name >> $log_file_extendLvm 2>&1
    1. # step 3: resize2fs /dev/vg0/data
    1. echo "step 3- exec cmd: resize2fs $lv_name" >> $log_file_extendLvm
    1. resize2fs $lv_name >> $log_file_extendLvm 2>&1
    1. }
    1. # display info
    1. echo "Before extendLVM..." >> $log_file_extendLvm
    1. displayInfo
    1. getUnLvmDisk
    1. cat $diffSet | while read dev_disk
    1. do
    1. if [ $dev_disk != "/dev/sda" ] && [ $dev_disk != "/dev/hda" ] && [ `echo $dev_disk | wc -L` == 8 ];then
    1. # exec extendLVM
    1. # echo "+++++++++++++++++ [$dev_disk]"
    1. extendLV
    1. fi
    1. done
    1. # display info
    1. echo "After extendLVM... " >> $log_file_extendLvm
    1. displayInfo
    1. echo "extendLVM finish success" >> $log_file_extendLvm
    1. echo "success"



附件列表

【LVM】LVM自动扩容脚本的更多相关文章

  1. centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课

    centos Linux下磁盘管理   parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...

  2. [转] LVM分区在线扩容

    [转] LVM分区在线扩容 在线扩容的这台服务器,LV分区格式为xfs,原大小1.2TB.增加了一块硬盘,大小为1.8TB. fdisk /dev/cciss/c0d1 # 创建分区,并指定分区类型为 ...

  3. LVM 认知与扩容操作

    继上次 "Linux系统如何迁移至LVM磁盘"反响不错,近三百的访问量吧.这次想续写点东西,主要讲的是"LVM认知和扩容操作".因为网上大多数不准确,可能作者也 ...

  4. [linux] LVM原磁盘扩容(非增加磁盘)

    阿里云机器,ECS运行时磁盘由300G扩容到500,重启机器生效后登录.可以看到/data目录总大小300G,/dev/vdb已经扩容到500G. [root@HD1g-elasticsearch2 ...

  5. openstack 制作大于2TB根分区自动扩容的CENTOS镜像

    制作镜像的时候默认分的是30G空间 qemu-img create -f raw centos.img 30G 看官网文档安装完系统需要安装cloud-init和clout-utils包,本人安装了完 ...

  6. SQL Server镜像自动生成脚本

    SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...

  7. 企业IT管理员IE11升级指南【15】—— 代理自动配置脚本

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  8. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  9. Windows环境下Oracle数据库的自动备份脚本

    批处理文件(.bat) @echo off echo ================================================ echo  Windows环境下Oracle数据 ...

随机推荐

  1. Flume NG 简介及配置实战

    Flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 clo ...

  2. genome file format

    Some of the bedtools (e.g., genomeCoverageBed,complementBed, slopBed) need to know the size of the c ...

  3. Maven构建web项目在Eclipse中部署的几种方法

    目录: 方法一:运用Maven的plugin:jetty来部署web 方法二:运用Eclipse 的Jetty插件直接部署 方法三:运用Run on Server(tomcat)部署 [方法一].运用 ...

  4. Topcoder Arena插件配置和训练指南

    一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorit ...

  5. 行为识别笔记:improved dense trajectories算法(iDT算法)(转载)

    iDT算法是行为识别领域中非常经典的一种算法,在深度学习应用于该领域前也是效果最好的算法.由INRIA的IEAR实验室于2013年发表于ICCV.目前基于深度学习的行为识别算法效果已经超过了iDT算法 ...

  6. tyvj1012 P1012 - 火柴棒等式 ——暴力枚举

    题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1012 可以发现:最大的数字绝对不超过999,只要枚举出0-999所有数字需要的火柴数,然后再枚举C和A, ...

  7. 常用的phpstorm设置

    1.始终在项目编辑器中显示行号[Show line numbers],可以通过File->Setting->Editor->Appearance->Show line numb ...

  8. jQuery select操作控制方法小结

    需要注意的是,这里的代码好多是针对jquery 1.32以前的版本(以后的版本已经不支持@),所以替换为空测试下即可. jQuery获取Select选择的Text和Value: 语法解释: 1. $( ...

  9. 黑马程序员——JAVA基础之多线程的安全问题

    ------- android培训.java培训.期待与您交流! ---------- 导致多线程出现问题的一个特殊的状态:就绪.具备了执行资格,但是还没有获取资源. 导致安全问题的出现的原因: 1. ...

  10. easyUI之datebox

    datebox具有输入的文本框及点击出现日历面板选择器的功能. 此组件的加载方式有class及jq方式,加载后,进行简单的属性设置即可. 对于此属性有一个很好的用法shareCalendar,就是多输 ...