在ECS控制台上擴容雲端硬碟容量後,對應分區和檔案系統並未擴容,您還需要進入ECS執行個體內部繼續擴容雲端硬碟的分區和檔案系統,將擴容部分的容量劃分至已有分區及檔案系統內,使雲端硬碟擴容生效。本文為您介紹如何通過兩個步驟完成Linux執行個體雲端硬碟的分區和檔案系統擴容。
前提條件
作業系統版本需符合要求。
請確保Linux執行個體的作業系統是Alibaba Cloud Linux 2/3、CentOS 6及以上、Debian 8及以上或者Ubuntu14及以上版本。
重要CentOS 6作業系統在擴容至2 TiB以上或者擴容GPT分區表時,需要參考離線擴容分區和檔案系統(Linux資料盤)使用
parted
命令進行操作,不能使用本文檔介紹的growpart
命令進行操作,否則會有分區表被破壞的風險。判斷是否為GPT分區,可以參見本文檔中的準備工作:擷取目標雲端硬碟資訊。如果為其他動作系統,請參見離線擴容分區和檔案系統(Linux資料盤)進行擴容操作。
(強烈建議)已建立雲端硬碟快照,做好資料備份。具體操作,請參見建立快照。
說明擴容分區和檔案系統正常情況下不會遺失資料。為避免誤操作導致資料丟失或異常,建議您建立快照備份雲端硬碟資料。
已在ECS控制台擴容雲端硬碟容量。具體操作,請參見步驟一:擴容雲端硬碟容量。
如果您在擴容雲端硬碟容量時選擇離線擴容,擴容後需要通過ECS控制台或API介面重啟執行個體(在執行個體內部執行
reboot
命令重啟無效)才會生效。具體操作,請參見重啟執行個體。
注意事項
本文檔不適用於使用LVM(Logical Volume Manager)管理磁碟分割的情境。
如果您使用LVM管理磁碟分割,在控制台擴容雲端硬碟容量後,需要先通過LVM完成邏輯卷擴容,再進行檔案系統擴容。具體操作,請參見擴容邏輯卷。
本文檔不適用於雲端硬碟開啟了多重掛載功能且使用了叢集檔案系統的情境。
因為多重掛載功能允許同一塊雲端硬碟被多個掛載點同時訪問,直接擴容分區和檔案系統可能會影響到其他掛載點,可能會破壞叢集的一致性或可用性。更多資訊,請參見雲端硬碟多重掛載功能。
操作步驟
本文操作適用於以下雲端硬碟擴容情境:
Linux執行個體雲端硬碟,已分區,將擴容部分的容量劃分至已有分區:需要擴容分區和檔案系統。
說明如果您希望新增分區而不是擴容已有分區,請參見擴充分區和檔案系統_Linux資料盤。
Linux執行個體雲端硬碟,未分區(裸裝置):無需執行步驟1:擴容分區,直接執行步驟2:擴容檔案系統。
在文檔末尾分別以擴容MBR分區、GPT分區、裸資料盤為例,為您展示了擴容分區和檔案系統的命令樣本,供您參考。
準備工作:擷取目標雲端硬碟資訊
執行擴容分區和檔案系統操作前,請先擷取待擴容雲端硬碟和雲端硬碟分區資訊。
方式一:通過命令列擷取
遠端連線ECS執行個體。
具體操作,請參見通過密碼或密鑰認證登入Linux執行個體。
運行以下命令,確認待擴容雲端硬碟及其分區資訊。
sudo fdisk -lu
如圖所示,表示該執行個體有2塊雲端硬碟,系統硬碟
/dev/vda
和資料盤/dev/vdb
,我們以資料盤/dev/vdb
為例。其中:①:雲端硬碟的裝置名稱。
②:雲端硬碟是否分區及分區名稱。
已分區:如果有②處的分區資訊表示已分區,Device取值為分區名稱(樣本中為
/dev/vdb1
),數字1
是分區編號,則需擴容分區和檔案系統。未分區(裸裝置):如果沒有②處的分區資訊表示未分區,為裸裝置。則無需執行步驟1:擴容分區,直接執行步驟2:擴容檔案系統即可。
③:雲端硬碟的分區類型。
Disk label type
值為dos
表示MBR分區,值為gpt
表示GPT分區。說明不同作業系統的顯示略有不同。如果沒有
Disk label type
欄位,可通過System
欄位判斷。System
值為Linux
表示MBR分區,值為GPT
表示GPT分區。較低版本的fdisk可能不能正常顯示GPT分區表。您可以通過
gdisk -l /dev/vdb
命令查看分區類型。
④:確認待擴容的分區。
由於容量= sectors值*512 bytes,圖樣本中:
雲端硬碟
/dev/vdb
的sectors=125829120,則雲端硬碟容量=125829120*512bytes=64.4GB(等於60GiB)分區
/dev/vdb1
的sectors=(End-Start)=83886078,則分區容量= 83886078*512bytes=42.9GB(等於40GiB)
根據計算得出
/dev/vdb1
分區的容量小於雲端硬碟/dev/vdb
的容量,即/dev/vdb1
分區需要擴容。說明您也可以通過運行
lsblk
命令查看哪個分區待擴容。
方式二:通過控制台擷取
使用該方式時注意:
該方式僅支援部分使用者使用,支援情況以實際介面為準。
該雲端硬碟所在的ECS執行個體已安裝雲助手Agent。具體操作,請參見安裝雲助手Agent。
在執行個體詳情頁面的Block Storage(雲端硬碟)頁簽下,找到待擴容的目標雲端硬碟。
滑鼠懸浮至①處,再分別單擊②處和③處的表徵圖,查看待擴容雲端硬碟的裝置名稱、分區類型、分區名稱、檔案系統類型和掛載點。
步驟1:擴容分區
本操作以公用鏡像Alibaba Cloud Linux 3.2104 LTS 64位作業系統、在ECS執行個體內部將雲端硬碟分區/dev/vdb1
由40 GiB擴容至60 GiB(已在控制台擴大容量為60 GiB)為例,請您根據實際環境進行操作。
(條件必選)根據準備工作擷取的資訊,如果您的雲端硬碟分區類型為MBR且在控制台擴容後容量大於2 TiB,需先將分區轉換為GPT分區。
具體操作,請參見轉換Linux資料盤的分區類型。
運行以下命令,擴容指定分區。例如擴容分區名稱為
/dev/vdb1
的分區,則執行如下命令。說明命令參數中的
/dev/vdb
和1
之間需要空格分隔,1
是分區編號。如果您擴容的是系統硬碟,命令中的
/dev/vdb
需要替換為/dev/vda
。
Alibaba Cloud Linux 2/3版本、CentOS 6及以上版本
MBR分區
type growpart || sudo yum install -y cloud-utils-growpart sudo yum update cloud-utils-growpart sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
GPT分區(需安裝gdisk工具)
type growpart || sudo yum install -y cloud-utils-growpart sudo yum update cloud-utils-growpart type sgdisk || sudo yum install -y gdisk sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
說明由於CentOS 6和CentOS 8結束生命週期(EOL),如果您使用的是CentOS 6或者CentOS 8系統的ECS執行個體,請先切換源地址。具體操作,請參見CentOS 6 EOL如何切換源?和CentOS 8 EOL如何切換源?。
Debian 8及以上版本、Ubuntu14及以上版本
MBR分區
sudo apt-get update sudo apt-get install -y cloud-guest-utils sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
GPT分區(需安裝gdisk工具)
sudo apt-get update sudo apt-get install -y cloud-guest-utils type sgdisk || sudo apt-get install -y gdisk sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
重要執行擴容分區命令時,您需要特別注意以下幾種情況:
LC_ALL=en_US.UTF-8
是環境變數設定,為了相容中文作業系統的字元編碼。如果單盤有多個連續分區的情況,僅能擴容最後一個分區。例如資料盤
/dev/vdb
有三個分區/dev/vdb1
、/dev/vdb2
和/dev/vdb3
。擴容時,只能擴容最後一個分區/dev/vdb3
,即執行growpart /dev/vdb 3
命令即可完成資料盤的分區擴容。如果您是NVMe類型雲端硬碟,以分區名稱
/dev/nvme0n1p1
為例,其中/dev/nvme0n1
是裝置名稱。擴容時執行命令為growpart /dev/nvme0n1 1
,而不是growpart /dev/nvme0n1p1 1
。如果您需要擴容的雲端硬碟分區是MBR分區表下的擴充分區(通常判斷方式是分區號大於等於5),您需要先對擴充分區擴容後再對邏輯分區進行擴容。例如您有
/dev/vdb1
(主要磁碟分割)、/dev/vdb2
(擴充分區)、/dev/vdb5
(邏輯分區)三個分區,此時您需要依次執行growpart /dev/vdb 2
、growpart /dev/vdb 5
完成分區的擴容。使用growpart工具時,如果出現報錯資訊,請參見常見問題進行排查。
如下圖所示,輸出
CHANGED
字樣時,表示分區擴容成功。(條件必選)CentOS 6等較低版本的作業系統,需要執行
reboot
命令重啟執行個體,使分區擴容生效。通常情況下,擴容分區不需要執行重啟。但如果您擴容的是CentOS 6作業系統的雲端硬碟或者發現擴容後作業系統實際識別的分區沒有擴充,這是作業系統版本較低的原因,需要重啟執行個體使分區擴容生效。建議您選擇業務低穀的時間段進行重啟,避免影響業務運行。
步驟2:擴容檔案系統
運行以下命令,擷取需要擴容的檔案系統的類型和掛載目錄。
df -Th
Type
值為檔案系統類型,Mounted on
值為分區的掛載目錄。如下圖表示/dev/vdb1
分區的檔案系統類型為ext4,掛載目錄為/mnt。如果Filesystem取值尾碼不帶數字(例如
/dev/vdc
),則為裸裝置。擴容檔案系統。
擴容命令因檔案系統類型而異,請您根據上一步中查詢到的檔案系統類型選擇以下命令。
說明雲端硬碟和檔案系統在使用的狀態下,採用resize2fs等工具線上擴容檔案系統,有可能會觸發檔案系統資料問題,該問題與鏡像核心版本、resize2fs工具版本相關,與雲端硬碟擴容本身無關。建議您為雲端硬碟建立快照,做好資料備份。具體操作,請參見建立快照。
ext*(例如ext2、ext3、ext4)檔案系統
以擴容雲端硬碟分區
/dev/vdb1
的ext*檔案系統為例,則運行如下命令:sudo resize2fs /dev/vdb1
說明如果您擴容的是系統硬碟,命令中的
/dev/vdb1
需要替換為/dev/vda1
。以擴容裸裝置
/dev/vdc
的ext*檔案系統為例,則運行如下命令:sudo resize2fs /dev/vdc
xfs檔案系統
以擴容掛載目錄為/mnt的xfs檔案系統為例,則運行如下命令:
Alibaba Cloud Linux 2/3版本、CentOS 6及以上版本
type xfs_growfs || sudo yum install -y xfsprogs sudo xfs_growfs /mnt
Debian 8及以上版本、Ubuntu14及以上版本
type xfs_growfs || sudo apt-get install -y xfsprogs sudo xfs_growfs /mnt
btrfs檔案系統
以擴容掛載目錄為/mnt的btrfs檔案系統為例,則運行如下命令:
sudo btrfs filesystem resize max /mnt
運行以下命令,確認是否擴容成功。
df -Th
當查詢結果中的檔案系統容量和控制台容量一致時,表示擴容成功。
如下圖所示,分區
/dev/vdb1
檔案系統容量(59 GiB)和雲端硬碟容量(60 GiB)基本一致(因為檔案系統本身會佔用部分儲存空間),表示擴容完成。擴容完成後,您需要根據實際情況檢查雲端硬碟資料是否正常。
如果擴容成功,ECS執行個體中的業務程式能夠正常運行,則完成操作。
如果擴容失敗,您可以通過備份的快照復原資料。具體操作,請參見使用快照復原雲端硬碟。
擴容樣本
本節以MBR分區、GPT分區、裸資料盤為例展示擴容分區和檔案系統的操作命令,供您參考。在實際擴容過程中,請您以實際環境為準。
樣本1:擴容MBR分區和ext4檔案系統
裝置名稱:/dev/vda(系統硬碟)
1個分區:/dev/vda1
檔案系統類型:ext4
作業系統:Alibaba Cloud Linux 3
擴容分區和檔案系統命令如下:
type growpart || sudo yum install -y cloud-utils-growpart
sudo yum update cloud-utils-growpart
sudo LC_ALL=en_US.UTF-8 growpart /dev/vda 1
sudo resize2fs /dev/vda1
樣本2:擴容GPT分區和xfs檔案系統
裝置名稱:/dev/vdb(資料盤)
2個分區:/dev/vdb1 、/dev/vdb2
檔案系統類型:xfs
/dev/vdb2的掛載目錄:/mnt
作業系統:Debian 12
擴容分區和檔案系統命令如下:
sudo apt-get update
sudo apt-get install -y cloud-guest-utils
type sgdisk || sudo apt-get install -y gdisk
sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 2
type xfs_growfs || sudo apt-get install -y xfsprogs
sudo xfs_growfs /mnt
樣本3:擴容裸資料盤
裝置名稱:/dev/vdc(裸資料盤未分區)
檔案系統類型:ext4
作業系統:CentOS 7
擴容檔案系統命令如下:
sudo resize2fs /dev/vdc
常見問題
如果您遇到難以解決的問題,您可以加入雲端硬碟擴容問題客戶DingTalk群(DingTalk群號:25920014655)與我們的工程師即時溝通。