擴容雲端硬碟容量後,對應分區和檔案系統並未擴容,您還需要繼續擴容雲端硬碟的分區和檔案系統,將擴容的容量劃分至已有分區及檔案系統內,使系統能夠正常使用擴容容量。本文為您介紹如何擴容RDS Custom執行個體雲端硬碟的分區和檔案系統。
前提條件
RDS Custom執行個體滿足以下條件:
狀態為運行中(Running)。
作業系統是Alibaba Cloud Linux 2/3、CentOS 7及以上、Debian 11及以上或者Ubuntu14及以上版本。
雲端硬碟滿足以下條件:
狀態為使用中(In_use)。
系統硬碟使用率未達到100%。
重要為確保擴容操作順利進行,請登入執行個體並執行
df -h命令,以確認根分區的使用率未達到100%。
已擴容雲端硬碟容量但未擴容分區及檔案系統。
注意事項
強烈建議擴容前建立雲端硬碟快照,做好資料備份。
擴容分區和檔案系統正常情況下不會遺失資料。為避免誤操作導致資料丟失或異常,建議您建立快照備份雲端硬碟資料。
操作步驟
步驟1:查看待擴容雲端硬碟的資訊並確認擴容步驟
執行以下命令,確認待擴容雲端硬碟名稱及分區資訊。
sudo fdisk -lu
確定雲端硬碟是否分區。如圖所示,該執行個體有3塊雲端硬碟,系統硬碟
/dev/nvme0n1、資料盤/dev/nvme1n1和資料盤/dev/nvme2n1。以資料盤為例,其中:資料盤
/dev/nvme1n1已分區,存在/dev/nvme1n1p1的分區。資料盤
/dev/nvme2n1未分區(裸裝置)。
確定待擴容雲端硬碟的分區類型。
Disklabel type表示雲端硬碟的分區類型,值為gpt表示GPT分區,值為dos表示MBR分區。本文樣本中雲端硬碟分區為GPT類型。
執行以下命令,擷取待擴容雲端硬碟的檔案系統資訊。
未分區的雲端硬碟
sudo file -s /dev/裸裝置名稱已分區的雲端硬碟
sudo file -s /dev/分區名稱
以
/dev/nvme1n1p1分區為例,執行以下命令。sudo file -s /dev/nvme1n1p1返回結果如下,表明分區
/dev/nvme1n1p1檔案系統類型為ext4;/dev/nvme1n1p1: Linux rev 1.0 ext4 filesystem data, UUID=342527ce-**** (needs journal recovery) (extents) (64bit) (large files) (huge files)如果返回結果為/dev/nvme1n1p1: data,則表示該分區未安裝檔案系統。
確認需要執行的擴容步驟。
雲端硬碟已分區並存在檔案系統:先執行步驟2:擴容分區,在執行步驟3:擴容檔案系統。
說明MBR分區格式不支援2 TiB以上的雲端硬碟。如果您的雲端硬碟目前使用的是MBR分區類型,且希望將其擴容至2 TiB以上,需要先將MBR分區轉換為GPT分區,再擴容分區及檔案系統。
雲端硬碟已分區但無檔案系統:只執行步驟2:擴容分區。
雲端硬碟未分區但存在檔案系統:直接執行步驟3:擴容檔案系統。
雲端硬碟未分區也無檔案系統:無需執行本文檔操作。
步驟2:擴容分區
如果雲端硬碟未分區但存在檔案系統,則無需執行擴容分區操作,直接執行步驟3:擴容檔案系統即可。
執行以下命令擴容分區,以下以
/dev/nvme1n1p1分區為例,其中/dev/nvme1n1是雲端硬碟名稱,p1中的1是分區編號,兩者之間需要空格分隔。請根據實際情況替換命令中的分區。Alibaba Cloud Linux 2/3版本、CentOS 7及以上版本
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/nvme1n1 1MBR分區
type growpart || sudo yum install -y cloud-utils-growpart sudo yum update cloud-utils-growpart sudo LC_ALL=en_US.UTF-8 growpart /dev/nvme1n1 1
Debian 11及以上版本、Ubuntu14及以上版本
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/nvme1n1 1MBR分區
sudo apt-get update sudo apt-get install -y cloud-guest-utils sudo LC_ALL=en_US.UTF-8 growpart /dev/nvme1n1 1
重要對於NVMe類型雲端硬碟,以分區名稱
/dev/nvme1n1p1為例,其中/dev/nvme1n1是雲端硬碟名稱,p1中的1是分區編號,兩者之間需要空格分隔。擴容時執行命令為growpart /dev/nvme1n1 1。對於虛擬雲端硬碟,以分區名稱
/dev/vdb1為例,其中/dev/vdb為雲端硬碟名稱,1是分區編號,兩者之間需要空格分隔。擴容命令為growpart /dev/vdb 1LC_ALL=en_US.UTF-8是環境變數設定,為了相容中文作業系統的字元編碼。如果單盤有多個連續分區的情況,僅能擴容最後一個分區。例如當資料盤
/dev/nvme3n1有三個分區/dev/nvme3n1p1、/dev/nvme3n1p2和/dev/nvme3n1p3。擴容時,只能擴容最後一個分區/dev/nvme3n1p3,即執行growpart /dev/nvme3n1 3命令即可完成資料盤的分區擴容。如果您需要擴容的雲端硬碟分區是MBR分區表下的擴充分區(通常判斷方式是分區號大於等於5),您需要先對擴充分區擴容後再對邏輯分區進行擴容。例如您有
/dev/nvme1n1p1(主要磁碟分割)、/dev/nvme1n1p2(擴充分區)、/dev/nvme1n1p5(邏輯分區)三個分區,此時您需要依次執行growpart /dev/nvme1n1 2、growpart /dev/nvme1n1 5完成分區的擴容。
當返回如下
CHANGED字樣時,表示分區擴容成功。CHANGED: partition=1 start=2048 old: size=41938944 end=41940991 new: size=52426719 end=52428766執行以下命令查看分區擴容是否生效。
sudo fdisk -lu以擴容
/dev/nvme1n1p1分區為例,雲端硬碟/dev/nvme1n1與分區/dev/nvme1n1p1容量一致,分區擴容已生效。
步驟3:擴容檔案系統
執行以下命令,擷取待擴容裝置的掛載目錄。
df -Th
Type值為檔案系統類型,Mounted on值為分區的掛載目錄。例如:/dev/nvme2n1雲端硬碟的檔案系統類型為ext4,掛載目錄為/tmp。/dev/nvme1n1p1分區的檔案系統類型為ext4,掛載目錄為/mnt。
說明如果Filesystem取值為雲端硬碟名稱(例如nvme2n1),則目標雲端硬碟未進行分區,為裸裝置。如果為分區名稱(例如/dev/nvme1n1p1),則目標雲端硬碟已進行分區。
執行以下命令,擴容檔案系統。
ext*(例如ext2、ext3、ext4)檔案系統
未分區的雲端硬碟,例如雲端硬碟
/dev/nvme2n1。sudo resize2fs /dev/nvme2n1已分區的雲端硬碟,例如雲端硬碟分區/dev/nvme1n1p1。
sudo resize2fs /dev/nvme1n1p1
xfs檔案系統
以擴容掛載目錄為/mnt的xfs檔案系統為例,請根據實際情況替換命令中的掛載目錄。
Alibaba Cloud Linux 2/3版本、CentOS 7及以上版本
type xfs_growfs || sudo yum install -y xfsprogs sudo xfs_growfs /mntDebian 11及以上版本、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/nvme1n1p1所在雲端硬碟擴容後容量為25 GiB,檔案系統擴容完成後容量也為25 GiB。說明由於檔案系統本身會佔用一定的儲存空間,因此在檔案系統擴容完成後,其可用容量可能會略小於雲端硬碟擴容後的總容量。