系统盘脚本扩容方案:

脚本: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

相关文章: