系統盤腳本擴容方案: 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