系统盘脚本扩容方案:
脚本:lvm_extend.sh
需求背景:
现在很多ECS环境上面所用的公共镜像全部默认系统盘大小为20G,如果用户创建系统盘的时候空间选定了20G以上,超出的部分不会被自动分区造成浪费,为避免这种情况造成用户困扰,特提供此方案可以让用户实现手动扩容。
扩容方式:LVM扩容。
LVM是逻辑盘卷管理(Logical VolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
执行脚本:lvm_extend.sh
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
执行条件:系统盘镜像为CentOS,系统盘主分区个数为4以下(不包含4)。
预期结果:
- 脚本最后输出"Extend system_disk successfully!",扩展成功。
- 脚本最后输出"System is not CentOS, skip!",系统镜像非CentOS,无法扩容。
- 脚本最后输出"The disk size needn't extend!",系统盘不需要扩容。
- 脚本最后输出"If you want to create more than four partitions, you must replace a primary partition with an extend!",系统盘主分区为4,无法做扩容(一般来讲,linux虚机按照默认分区方式的话主分区有2个,每扩容一次会增加一个主分区,所以正常情况下系统盘支持扩容两次)。