如何擴充Azure Linux ROOT磁碟空間

Azure Linux VM佈署後只有給30G的空間,看起來是夠用,若不夠用還可以自已加掛另一顆磁碟,但我在上面使用的是Oracle資料庫,預設安裝在根目錄,雖然我將使用者資料放到另一顆磁碟,但原本的system及log紀錄,導致空間一下子就滿了,這時該如何擴充ROOT磁碟空間呢?

官方文件有篇如何擴充 Linux VM 上的虛擬硬碟

https://docs.microsoft.com/zh-tw/azure/virtual-machines/linux/expand-disks#expand-a-disk-partition-and-filesystem

但此篇無法擴充根目錄空間,所以參考價值不大。實際作法紀錄如下:

1.檢查目前磁碟空間執行df -h指令(要有root權限喔!,執行sudo su -切換身份),可以看到根目錄只剩19G,真是小的可憐

2.先關機擴充磁碟,可以由Azure管理介面操作或是在CLI下指令,因為擴充會用到CLI指令,所以接下來都以指令說明

az vm deallocate --resource-group yourresourcegroupname --name yourvmname

3.找到OS磁碟名稱,在VM的-->磁碟內可以找到,例如:yourvm_OsDisk....,請把它記下來

4.執行CLI指令擴充,這次我們將其擴充至100G

az disk update --resource-group yourresourcegroup --name youdiskname --size-gb 100

5.開機

az vm start --resource-group yourresourcegroup --name yourvmname

6.再次執行df -h沒有變化,但執行fdisk -l /dev/sda可以看到磁碟空間已經有107G了

7.進行磁碟重新分割執行fdisk /dev/sda,先下"p"檢查一下分割區,可以看到有dev/sda1及dev/sda2,因根目錄用到/dev/sda2所以只要擴充此分割區即可

8.執行"d"刪除分割區,分割區號碼輸入2,再下"p"檢查可以發現只剩下boot磁區

9.執行"n"新增分割區,分割區號:2,大小不指定(會自動擴充至最大),再下"p"檢查可以看到/dev/sda2已經回來了

9.最後要執行"w"儲存,重開機

10.重開機後再執行df -h發現空間仍然一樣沒有變,不用著急執行以下指令重新設定分割區空間

resize2fs /dev/sda2

11.最後再執行df -h,此時所剩空間已加大至85G,搞定收工。