全部產品
Search
文件中心

:步驟二:擴容分區和檔案系統

更新時間:Aug 07, 2025

擴容雲端硬碟容量後,對應分區和檔案系統並未擴容,您還需要繼續擴容雲端硬碟的分區和檔案系統,將擴容的容量劃分至已有分區及檔案系統內,使系統能夠正常使用擴容容量。本文為您介紹如何擴容RDS Custom執行個體雲端硬碟的分區和檔案系統。

前提條件

  • RDS Custom執行個體滿足以下條件:

    • 狀態為運行中(Running)。

    • 作業系統是Alibaba Cloud Linux 2/3、CentOS 7及以上、Debian 11及以上或者Ubuntu14及以上版本。

  • 雲端硬碟滿足以下條件:

    • 狀態為使用中(In_use)。

    • 系統硬碟使用率未達到100%。

      重要

      為確保擴容操作順利進行,請登入執行個體並執行df -h命令,以確認根分區的使用率未達到100%。

  • 擴容雲端硬碟容量但未擴容分區及檔案系統。

注意事項

強烈建議擴容前建立雲端硬碟快照,做好資料備份。

說明

擴容分區和檔案系統正常情況下不會遺失資料。為避免誤操作導致資料丟失或異常,建議您建立快照備份雲端硬碟資料。

操作步驟

步驟1:查看待擴容雲端硬碟的資訊並確認擴容步驟

  1. 串連RDS Custom執行個體

  2. 執行以下命令,確認待擴容雲端硬碟名稱及分區資訊。

    sudo fdisk -lu

    image

    1. 確定雲端硬碟是否分區。如圖所示,該執行個體有3塊雲端硬碟,系統硬碟/dev/nvme0n1、資料盤/dev/nvme1n1和資料盤/dev/nvme2n1。以資料盤為例,其中:

      • 資料盤/dev/nvme1n1已分區,存在/dev/nvme1n1p1的分區。

      • 資料盤/dev/nvme2n1未分區(裸裝置)

    2. 確定待擴容雲端硬碟的分區類型。Disklabel type表示雲端硬碟的分區類型,值為gpt表示GPT分區,值為dos表示MBR分區。本文樣本中雲端硬碟分區為GPT類型。

  3. 執行以下命令,擷取待擴容雲端硬碟的檔案系統資訊。

    • 未分區的雲端硬碟

      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,則表示該分區未安裝檔案系統。

  4. 確認需要執行的擴容步驟。

步驟2:擴容分區

如果雲端硬碟未分區但存在檔案系統,則無需執行擴容分區操作,直接執行步驟3:擴容檔案系統即可。

  1. 執行以下命令擴容分區,以下以/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 1 
    • 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/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 1
    • MBR分區

      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 1

    • LC_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 2growpart /dev/nvme1n1 5完成分區的擴容。

    當返回如下CHANGED字樣時,表示分區擴容成功。

    CHANGED: partition=1 start=2048 old: size=41938944 end=41940991 new: size=52426719 end=52428766
  2. 執行以下命令查看分區擴容是否生效。

    sudo fdisk -lu

    以擴容/dev/nvme1n1p1分區為例,雲端硬碟/dev/nvme1n1與分區/dev/nvme1n1p1容量一致,分區擴容已生效。

    image

步驟3:擴容檔案系統

  1. 執行以下命令,擷取待擴容裝置的掛載目錄。

    df -Th

    image

    Type值為檔案系統類型,Mounted on值為分區的掛載目錄。例如:

    • /dev/nvme2n1雲端硬碟的檔案系統類型為ext4,掛載目錄為/tmp。

    • /dev/nvme1n1p1分區的檔案系統類型為ext4,掛載目錄為/mnt。

    說明

    如果Filesystem取值為雲端硬碟名稱(例如nvme2n1),則目標雲端硬碟未進行分區,為裸裝置。如果為分區名稱(例如/dev/nvme1n1p1),則目標雲端硬碟已進行分區。

  2. 執行以下命令,擴容檔案系統。

    ext*(例如ext2、ext3、ext4)檔案系統

    • 未分區的雲端硬碟,例如雲端硬碟/dev/nvme2n1

      sudo resize2fs /dev/nvme2n1
    • 已分區的雲端硬碟,例如雲端硬碟分區/dev/nvme1n1p1。

      sudo resize2fs /dev/nvme1n1p1

    xfs檔案系統

    以擴容掛載目錄為/mntxfs檔案系統為例,請根據實際情況替換命令中的掛載目錄。

    • Alibaba Cloud Linux 2/3版本、CentOS 7及以上版本

      type xfs_growfs || sudo yum install -y xfsprogs
      sudo xfs_growfs /mnt
    • Debian 11及以上版本、Ubuntu14及以上版本

      type xfs_growfs || sudo apt-get install -y xfsprogs
      sudo xfs_growfs /mnt

    btrfs檔案系統

    以擴容掛載目錄為/mntbtrfs檔案系統為例,請根據實際情況替換命令中的掛載目錄。

    sudo btrfs filesystem resize max /mnt
  3. 執行df -Th命令,確認是否擴容成功。

    例如,分區/dev/nvme1n1p1所在雲端硬碟擴容後容量為25 GiB,檔案系統擴容完成後容量也為25 GiB。

    說明

    由於檔案系統本身會佔用一定的儲存空間,因此在檔案系統擴容完成後,其可用容量可能會略小於雲端硬碟擴容後的總容量。

常見問題

growpart相關問題

  • 問題1:運行擴容分區growpart命令時,提示unexpected output in sfdisk --version [sfdisk,來自 util-linux 2.23.2]

    原因:中文版作業系統使用了非en_US.UTF-8的字元編碼類型。

    解決方案

    • 運行locale命令查看RDS Custom執行個體的字元編碼類型,將非en_US.UTF-8的字元編碼類型切換成en_US.UTF-8

      • 運行以下命令,切換字元編碼類型。

        export LANG=en_US.UTF-8
      • 如果問題仍未解決,運行以下命令,切換字元編碼類型。

        export LC_ALL=en_US.UTF-8
    • 如果問題仍未解決,請您嘗試重啟RDS Custom執行個體。

    重要

    當您通過切換字元編碼,成功完成擴容分區後,建議您按需切回原有字元編碼。

  • 問題2:運行擴容分區growpart命令時,提示unexpected output in sfdisk --version [sfdisk (util-linux-ng 2.17.2)]

    原因:您的fdisk版本與growpart版本不相容。

    解決方案:嘗試將growpart版本降低到0.27。如果問題仍未解決,請參考擴充分區和檔案系統_Linux資料盤擴容分區。

  • 問題3:運行擴容分區growpart命令時,提示FAILED: unable to determine partition type

    原因:您的雲端硬碟是裸裝置,未分區。裸裝置無需執行擴容分區操作,直接擴容檔案系統即可。

    解決方案:直接執行步驟3:擴容檔案系統

  • 問題4:運行擴容分區growpart命令時,提示WARNING: MBR/dos partitioned disk is larger than 2TB. Additional space will go unused.

    原因:MBR分區類型不支援2 TiB以上的雲端硬碟。

    解決方案:先將分區類型從MBR轉換為GPT,然後再擴容分區。具體操作,請參見轉換MBR分區為GPT分區

  • 問題5:運行擴容分區growpart命令時,提示mkdir: cannot create directory ... No space left on device

    原因:磁碟空間不足,導致growpart命令建立臨時目錄時失敗。

    解決方案擴容雲端硬碟容量

  • 問題7:裝置名稱以/dev/mapper開頭的分區未擴容成功。

    原因:裝置名稱以/dev/mapper開頭,通常是通過LVM管理磁碟分割。

    解決方案:需要先通過LVM擴容邏輯卷,然後再擴容檔案系統。具體操作,請參見通過LVM擴容邏輯卷

  • 問題8:運行擴容分區growpart命令時,提示NOCHANGE: partition 1 could only be grown by 2015 [fudge=2048]

    原因:擴容分區時沒有更多可用空間。通常是因為在控制台離線擴容雲端硬碟後,未通過控制台或OpenAPI重啟執行個體,導致雲端硬碟本身沒有得到擴容。

    解決方案:離線擴容後,必須通過重啟執行個體才能使雲端硬碟擴容生效。具體操作,請參見重啟執行個體

resize2fs相關問題

  • 問題1:運行擴容檔案系統resize2fs命令時,提示Couldn't find valid filesystem superblock. open: Is a directory while opening /mnt

    原因:擴容檔案系統時,resize2fs指定的是雲端硬碟分區名稱,不是雲端硬碟裝置名稱或者分區的掛載目錄。

    解決方案:擴容檔案系統時,請您指定正確的分區名稱。

  • 問題2:運行擴容檔案系統resize2fs命令時,提示The filesystem is already ... blocks long. Nothing to do!

    原因:檔案系統沒有可擴容的空間,可能是分區未擴容或者擴容未生效導致。

    解決方案

    • 請先確認是否成功執行growpart擴容分區的步驟,如果遺漏請您先執行growpart命令擴容分區。

    • 如果您成功執行了growpart命令擴容分區,並輸出CHANGED字樣後,在執行resize2fs命令時仍有上述報錯。這可能是因為作業系統版本較低,無法線上更新系統磁碟分割表。請嘗試執行reboot命令重啟執行個體後,再執行resize2fs命令。

  • 問題3:運行擴容檔案系統resize2fs命令時,提示resize2fs: Permission denied to resize filesystem

    原因:可能是檔案系統不一致,導致檔案系統擴容失敗。

    解決方案

    • 運行dmesg -T | grep fs命令,如果輸出There are errors in the filesystem類似資訊,說明檔案系統不一致。

    • 為雲端硬碟做好資料備份。具體操作,請參見建立快照

    • 嘗試使用e2fsck命令進行修複。e2fsck命令的使用方法請參考其手冊。

相關文檔

RDS Custom簡介