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

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

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

自动LVM扩展脚本如下:
  • 该脚本会自动比对哪些物理磁盘没有进行LVM扩展,并将未扩展的磁盘扩展到/dev/vg0/data;
  • 不会扩展sda和hda磁盘;
  1. #!/bin/bash
  2. #################################################
  3. # Create by ssslinppp
  4. # 201699 15:16:58
  5. ##################################################
  6. log_file_extendLvm="/data/logs/log_file_extendLvm.log"
  7. echo "====================================================" > $log_file_extendLvm
  8. echo "Begin to extendLVM at `date "+%Y-%m-%d %H:%M:%S"`" >> $log_file_extendLvm
  9. vg_name="vg0"
  10. lv_name="/dev/vg0/data"
  11. fdisk_info="/data/fdisk_info"
  12. pvs_info="/data/pvs_info"
  13. diffSet="/data/diffSet"
  14. displayInfo()
  15. {
  16. echo "---cmd: df -Th--------------------- " >> $log_file_extendLvm
  17. df -Th /data >> $log_file_extendLvm 2>&1
  18. echo "---cmd: pvs------------------------ " >> $log_file_extendLvm
  19. pvs >> $log_file_extendLvm 2>&1
  20. echo "---------------------------- " >> $log_file_extendLvm
  21. }
  22. getUnLvmDisk()
  23. {
  24. fdisk -l | grep /dev/[sh]d.: | awk -F ' ' '{print $2}' | awk -F ':' '{print $1}' > $fdisk_info
  25. # pvs | grep /dev/[sh]d. | awk -F ' ' '{print $1}' > $pvs_info
  26. pvscan | grep /dev/[sh]d. | awk -F ' ' '{print $2}' > $pvs_info
  27. #get Difference set
  28. # sort $fdisk_info $pvs_info $pvs_info | uniq -u > $diffSet
  29. grep -F -v -f $pvs_info $fdisk_info > $diffSet
  30. echo "-----------------------------" >> $log_file_extendLvm
  31. echo "fdisk_info is :" >> $log_file_extendLvm
  32. cat $fdisk_info >> $log_file_extendLvm
  33. echo "pvs_info is :" >> $log_file_extendLvm
  34. cat $pvs_info >> $log_file_extendLvm
  35. echo "diffSet is:" >> $log_file_extendLvm
  36. cat $diffSet >> $log_file_extendLvm
  37. echo "----------------------------" >> $log_file_extendLvm
  38. rm -rf $fdisk_info
  39. rm -rf $pvs_info
  40. }
  41. extendLV()
  42. {
  43. # example: change "sdb" to "/dev/sdb"
  44. dev_disk=`echo $dev_disk|sed '/dev/!s/^/\/dev\//'`
  45. if [ ! -e $dev_disk ];then
  46. echo "[ERROR] $dev_disk do not exists" >> $log_file_extendLvm
  47. echo "error"
  48. exit -1
  49. fi
  50. if [ `pvs | grep $dev_disk | wc -l` = "1" ];then
  51. echo "[ERROR] $dev_disk(as PE) has already extend to $vg_name" >> $log_file_extendLvm
  52. echo "error"
  53. exit -2
  54. fi
  55. # step 1 :extend vg
  56. echo "step 1- exec cmd: vgextend vg0 $dev_disk" >> $log_file_extendLvm
  57. vgextend -f vg0 $dev_disk >> $log_file_extendLvm 2>&1
  58. # step 2 :extend lv
  59. echo "step 2- exec cmd: lvextend -l 100%VG $lv_name" >> $log_file_extendLvm
  60. lvextend -l 100%VG $lv_name >> $log_file_extendLvm 2>&1
  61. # step 3: resize2fs /dev/vg0/data
  62. echo "step 3- exec cmd: resize2fs $lv_name" >> $log_file_extendLvm
  63. resize2fs $lv_name >> $log_file_extendLvm 2>&1
  64. }
  65. # display info
  66. echo "Before extendLVM..." >> $log_file_extendLvm
  67. displayInfo
  68. getUnLvmDisk
  69. cat $diffSet | while read dev_disk
  70. do
  71. if [ $dev_disk != "/dev/sda" ] && [ $dev_disk != "/dev/hda" ] && [ `echo $dev_disk | wc -L` == 8 ];then
  72. # exec extendLVM
  73. # echo "+++++++++++++++++ [$dev_disk]"
  74. extendLV
  75. fi
  76. done
  77. # display info
  78. echo "After extendLVM... " >> $log_file_extendLvm
  79. displayInfo
  80. echo "extendLVM finish success" >> $log_file_extendLvm
  81. 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. C#堆栈讲解

    1:栈就是堆栈,因为堆和堆栈这样说太拗口了,搞得像绕口令,所以有些时候就把堆栈简称为栈.堆和栈,你看这又多舒服.但无论什么时候,堆栈都不等于堆和栈,必须说,堆和栈或者堆和堆栈. 2:值类型变量和引用类 ...

  2. javascript判断浏览器的版本

    在javascript中直接的使用navigator.userAgent就可以获取当前浏览器的版本等信息,以下是列出来的关于不同浏览器显示的值(Windows.Android.iPhone): IE6 ...

  3. Html与CSS布局技巧

    一.单列布局 1.水平居中:(注:下面各个实例中实现的是child元素的对齐操作,child元素的父容器是parend元素) 1-1:使用inline-block和text-align实现: .par ...

  4. leetcode 92 Reverse Linked List II ----- java

    Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1-> ...

  5. java的nio之:java的nio系列教程之selector

    一:Java NIO的selector的概述===>Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件.这样,一个单独的线程 ...

  6. VMware虚拟机打开不了操作系统的解决方案

    1. 当你的VMware虚拟机出现下面这种情况的时候 解决方案:找到此VM安装的文件夹.在此文件夹下,将名字以“.lck ”结尾的文件夹全部重命名,重命名的名字随意好了.然后再到VMWARE里启动你的 ...

  7. ID3算法 决策树的生成(2)

    # coding:utf-8 import matplotlib.pyplot as plt import numpy as np import pylab def createDataSet(): ...

  8. 安装pgadmin3

    在centos/redhat/系统是x86_64 1.下载适合自己系统的合适的版本http://dl.fedoraproject.org/pub/epel/6/x86_64/ ( yum instal ...

  9. 一次zabbix的渗透

    wget http://xxxxxxx:8888/back.py -O  /tmp/1.py  写入python反弹马 反弹到vps python /tmp/back.py IP port       ...

  10. PHP闭包研究

    闭包也就是PHP的匿名函数, 但是和函数不同的是,闭包可以通过use使用函数声明时所在作用域的变量的值. 形式如下 $a = function($arg1, $arg2) use ($variable ...