系统盘脚本扩容方案: linux
脚本:lvm_extend.sh centos
需求背景: bash
如今不少ECS环境上面所用的公共镜像所有默认系统盘大小为20G,若是用户建立系统盘的时候空间选定了20G以上,超出的部分不会被自动分区形成浪费,为避免这种状况形成用户困扰,特提供此方案可让用户实现手动扩容。 app
扩容方式:LVM扩容。 ide
LVM是逻辑盘卷管理(Logical VolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是创建在硬盘和分区之上的一个逻辑层,来提升磁盘分区管理的灵活性。经过LVM系统管理员能够轻松管理磁盘分区,如:将若干个磁盘分区链接为一个整块的卷组(volumegroup),造成一个存储池。管理员能够在卷组上随意建立逻辑卷组(logicalvolumes),并进一步在逻辑卷组上建立文件系统。管理员经过LVM能够方便的调整存储卷组的大小,而且能够对磁盘存储按照组的方式进行命名、管理和分配。 spa
执行脚本:lvm_extend.sh code
1 #!/bin/bash 2 3 extend_size(){ 4 vgextend centos $1 5 6 7 #lvextend -L 30G /dev/centos/root 8 lvextend -r -l +100%FREE /dev/centos/root 9 10 xfs_growfs /dev/mapper/centos-root 11 echo "Extend system_disk successfully!" 12 } 13 14 extend_lvm(){ 15 check_results=`ll /dev/ |grep da` 16 17 last_disk="/dev/${check_results:0-4:4}" 18 19 last_disk_num=${last_disk:0-1:1} 20 21 disk_addr=${last_disk:0:8} 22 23 new_last_disk_num=`expr $last_disk_num + 1` 24 25 new_last_disk="$disk_addr$new_last_disk_num" 26 27 if [ $last_disk_num -ne 4 ]; 28 then 29 echo "Extend disk $new_last_disk" 30 31 echo "n 32 p 33 34 35 36 t 37 38 8e 39 w 40 " | fdisk $disk_addr 41 42 partprobe 43 44 pvcreate $new_last_disk 45 46 check_results=`ll /dev/ |grep da` 47 48 last_disk_num=${check_results:0-1:1} 49 50 if [ $last_disk_num -eq $new_last_disk_num ]; 51 then 52 extend_size $new_last_disk 53 else 54 echo "The disk size needn't extend!" 55 fi 56 else 57 echo "If you want to create more than four partitions, you must replace a primary partition with an extend!" 58 fi 59 } 60 61 62 check_results=`cat /etc/redhat-release` 63 64 echo $check_results 65 66 index_addr=`expr index "$check_results" "CentOS"` 67 68 if [ $index_addr -ne 1 ]; 69 then 70 echo 'System is not CentOS, skip!' 71 else 72 extend_lvm 73 fi
执行方式:. lvm_extend.sh blog
执行条件:系统盘镜像为CentOS,系统盘主分区个数为4如下(不包含4)。 ip
预期结果: it