全部產品
Search
文件中心

Elastic Compute Service:離線擴容分區和檔案系統(Linux資料盤)

更新時間:Sep 25, 2024

由於部分Linux作業系統版本較舊,雲端硬碟無法在作業系統內使用growpart等工具線上(雲端硬碟是mount狀態)擴容,這種情況需要採用離線(雲端硬碟是umount狀態)擴容的方式才能使雲端硬碟擴容生效。本文主要介紹如何離線擴容Linux資料盤。

前提條件

  1. 已建立快照備份資料。

    為防止操作失誤導致資料丟失,建議您在操作前使用快照備份資料。具體操作,請參見建立快照

  2. 資料盤已初始化並在控制台上擴容了雲端硬碟容量。

    具體操作,請參見初始化資料盤步驟一:擴容雲端硬碟容量

  3. 遠端連線ECS執行個體。

    關於串連方式的介紹,請參見ECS遠端連線方式概述

背景資訊

本文樣本中使用的配置如下:

  • ECS執行個體的作業系統:公用鏡像Alibaba Cloud Linux 2.1903 LTS 64位

  • 資料盤:高效雲端硬碟

  • 資料盤裝置名稱:/dev/vdb

若您使用的作業系統和資料盤裝置名稱與本文樣本不同,請根據實際情況調整命令或參數配置。

說明

在文中使用mount命令掛載檔案系統時,請根據實際需求選擇對應的掛載參數,以滿足您對檔案系統的資料安全性以及效能的要求。更多資訊,請參見ext4檔案系統掛載參數說明

確認分區表格式和檔案系統

  1. 運行以下命令確認資料盤的分區表格式。

    sudo fdisk -lu /dev/vdb

    本樣本中,原有的資料盤空間已做分區/dev/vdb1

    • 如果SystemLinux,說明資料盤使用的是MBR分區表格式。

    • 如果SystemGPT,說明資料盤使用的是GPT分區表格式。

    [testuser@ecshost ~]# sudo fdisk -lu /dev/vdb
    Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x9277b47b
    
    Device Boot Start End Blocks Id System
    /dev/vdb1 2048 41943039 20970496 83 Linux
    說明

    如果您的資料盤尚未分區,命令返回結果中不會出現分區資訊。

  2. 運行以下命令確認已有分區的檔案系統類型。

    blkid /dev/vdb1

    本樣本中,/dev/vdb1的檔案系統類型為ext4。

    [testuser@ecshost ~]# blkid /dev/vdb1
    /dev/vdb1: UUID="e97bf1e2-fc84-4c11-9652-73********24" TYPE="ext4"
    說明

    未分區並且未建立檔案系統的資料盤,以及已分區但未建立檔案系統的資料盤,不會返回結果。

  3. 運行以下命令確認檔案系統的狀態。

    • ext*檔案系統:

      sudo e2fsck -n /dev/vdb1
    • xfs檔案系統:

      sudo xfs_repair -n /dev/vdb1
    • btrfs檔案系統:

      sudo btrfsck /dev/vdb1

    不同檔案系統的查詢樣本如下:

    • ext*和xfs檔案系統的樣本結果如下所示,當檔案系統狀態為clean,表示檔案系統狀態正常。如果狀態不是clean,請排查並修複。

      [testuser@ecshost ~]# sudo e2fsck -n /dev/vdb1
      Warning! /dev/vdb1 is mounted.
      Warning: skipping journal recovery because doing a read-only filesystem check.
      /dev/vdb1: clean, 11/1310720 files, 126322/5242624 blocks
    • btrfs檔案系統的樣本結果如下所示,例如found 114688 bytes used err is 0表示檔案系統狀態正常。如果查詢結果中存在報錯提示,請排查並修複。

      [testuser@ecshost ~]# sudo btrfsck /dev/vdb1
      Checking filesystem on /dev/vdb1
      UUID: 1234b7a7-68ff-4f48-a88c-8943f27f1234
      checking extents
      checking free space cache
      checking fs roots
      checking csums
      checking root refs
      found 114688 bytes used err is 0
      total csum bytes: 0
      total tree bytes: 114688
      total fs tree bytes: 32768
      total extent tree bytes: 16384
      btree space waste bytes: 109471
      file data blocks allocated: 0
      referenced 0

選擇擴容分區或檔案系統的方式

根據您查詢到的分區格式和檔案系統情況確定操作選項。

擴容情境

相關操作

資料盤已分區並建立檔案系統

全新資料盤,未分區,未建立檔案系統

在控制台擴容資料盤空間後,請參見初始化小於等於2 TiB資料盤(Linux)或者初始化大於2 TiB資料盤

資料盤是裸裝置,已建立檔案系統,未分區

在控制台擴容資料盤空間後,請參見選項五:擴容裸裝置檔案系統

資料盤未掛載到執行個體上

掛載資料盤到執行個體後,請參見本文檔的操作步驟完成擴容。

說明
  • 如果一個已有分區採用了MBR分區格式,則不支援擴容到2 TiB及以上。為避免造成資料丟失,建議您建立一塊大於2TiB的雲端硬碟,格式化一個GPT分區,再將MBR分區中的資料拷貝到GPT分區中。具體操作,請參見初始化大於2 TiB資料盤

  • 當出現因擴容格式化工具問題導致的擴容失敗時,您可以提前升級工具版本,或者卸載工具後重新安裝。

選項一:擴充已有MBR分區

說明

為了防止資料丟失,不建議擴容已掛載的分區和檔案系統。請先取消掛載(umount)分區,完成擴容並正常使用後,重新掛載(mount)。針對不同的Linux核心版本,推薦以下操作方式:

  • 執行個體核心版本小於3.6:先取消掛載該分區,再修改分區表,最後擴容檔案系統。

  • 執行個體核心版本大於等於3.6:先修改對應分區表,再通知核心更新分區表,最後擴容檔案系統。

如果新增空間用於擴容已有的MBR分區,按照以下步驟在執行個體中完成擴容:

  1. 修改分區表。

    1. 運行以下命令查看分區資訊,並記錄舊分區的起始和結束的扇區位置。

      sudo fdisk -lu /dev/vdb

      本樣本中,分區/dev/vdb1的起始扇區是2048,結束扇區是41943039。

      [testuser@ecshost ~]# sudo fdisk -lu /dev/vdb
      Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk label type: dos
      Disk identifier: 0x9277b47b
      
      Device Boot Start End Blocks Id System
      /dev/vdb1 2048 41943039 20970496 83 Linux
    2. 查看資料盤的掛載路徑,根據返回的檔案路徑卸載分區,直至完全卸載已掛載的分區。

      查看掛載(mount)資訊。

      mount | grep "/dev/vdb"

      取消掛載(umount)資料盤。

      sudo umount /dev/vdb1

      查看操作結果。

      mount | grep "/dev/vdb"

      樣本結果如下所示。

      [testuser@ecshost ~]# mount | grep "/dev/vdb"
      /dev/vdb1 on /mnt type ext4 (rw,relatime,data=ordered)
      [testuser@ecshost ~]# sudo umount /dev/vdb1
      [testuser@ecshost ~]# mount | grep "/dev/vdb"
    3. 使用fdisk工具刪除舊分區。

      警告

      刪除舊分區如果出錯,可能會刪除分區內的資料。如有重要資料(例如資料庫中的使用者資料),請在操作前進行備份,避免因刪除舊分區而造成資料丟失。

      1. 運行sudo fdisk -u /dev/vdb:分區資料盤。

      2. 輸入p:列印分區表。

      3. 輸入d:刪除分區。

      4. 輸入p:確認分區已刪除。

      5. 輸入w:儲存修改並退出。

      以下為刪除舊分區的命令列互動樣本。

      [testuser@ecshost ~]# sudo fdisk -u /dev/vdb
      Welcome to fdisk (util-linux 2.23.2).
      Changes will remain in memory only, until you decide to write them.
      Be careful before using the write command.
      Command (m for help): p
      Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk label type: dos
      Disk identifier: 0x9277b47b
      Device Boot Start End Blocks Id System
      /dev/vdb1 2048 41943039 20970496 83 Linux
      Command (m for help): d
      Selected partition 1
      Partition 1 is deleted
      Command (m for help): p
      Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk label type: dos
      Disk identifier: 0x9277b47b
      Device Boot Start End Blocks Id System
      Command (m for help): w
      The partition table has been altered!
      Calling ioctl() to re-read partition table.
      Syncing disks.
    4. 使用fdisk命令建立分區。

      1. 運行sudo fdisk -u /dev/vdb:分區資料盤。

      2. 輸入p:列印分區表。

      3. 輸入n:建立分區。

      4. 輸入p:選擇分區類型為主要磁碟分割。

      5. 輸入<分區號>:選擇分區號。本樣本選取了1。

      6. 設定新分區的起始位置和結束位置。

        警告

        新分區的起始位置必須和舊分區的起始位置相同,結束位置必須大於舊分區的結束位置,否則會導致擴容失敗。

      7. 輸入w:儲存修改並退出。

      以下為擴容分區的命令列互動樣本。本樣本中,將/dev/vdb1由20GiB擴容到40GiB。

      [testuser@ecshost ~]# sudo fdisk -u /dev/vdb
      Welcome to fdisk (util-linux 2.23.2).
      Changes will remain in memory only, until you decide to write them.
      Be careful before using the write command.
      Command (m for help): p
      Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk label type: dos
      Disk identifier: 0x9277b47b
      Device Boot Start End Blocks Id System
      Command (m for help): n
      Partition type:
      p primary (0 primary, 0 extended, 4 free)
      e extended
      Select (default p): p
      Partition number (1-4, default 1): 1
      First sector (2048-83886079, default 2048):
      Using default value 2048
      Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079):
      Partition 1 of type Linux and of size 40 GiB is set
      Command (m for help): w
      The partition table has been altered!
      Calling ioctl() to re-read partition table.
      Syncing disks.
    5. 運行以下任一命令通知核心更新分區表。

      sudo partprobe /dev/vdb
      說明

      如果您在CentOS 6作業系統上,發現報錯資訊-bash: partprobe: command not found,可先切換yum源,具體操作,請參見CentOS 6 EOL如何切換源?;再運行命令sudo yum install -y parted安裝parted;最後重新運行命令。

      sudo partx -u /dev/vdb1
    6. 運行以下命令確保分區表已經增加。

      sudo lsblk /dev/vdb
    7. 運行以下命令再次檢查檔案系統,確認擴容分區後的檔案系統狀態為clean

      sudo e2fsck -f /dev/vdb1
      說明

      如果運行命令後未顯示檔案系統狀態為clean,您可以嘗試用sudo e2fsck -n /dev/vdb1檢查。

  2. 擴容檔案系統。

    • ext*檔案系統(例如ext3和ext4):依次運行以下命令調整ext*檔案系統大小並重新掛載分區。

      調整ext*檔案系統大小。

      sudo resize2fs /dev/vdb1

      分區掛載到/mnt

      sudo mount /dev/vdb1 /mnt
    • xfs檔案系統:依次運行以下命令先重新掛載分區,再調整xfs檔案系統大小。

      分區掛載到/mnt

      sudo mount /dev/vdb1 /mnt

      調整xfs檔案系統大小。

      sudo xfs_growfs /mnt

      說明

      新版xfs_growfs根據掛載點識別待擴容裝置,例如xfs_growfs /mnt。您可以運行xfs_growfs --help查看不同版本xfs_growfs的使用方法。

    • btrfs檔案系統:依次運行以下命令先重新掛載分區,再調整btrfs檔案系統大小。

      分區掛載到/mnt

      sudo mount /dev/vdb1 /mnt

      調整btrfs檔案系統大小。

      sudo btrfs filesystem resize max /mnt

選項二:新增並格式化MBR分區

如果新增空間用於增加新的MBR分區,按照以下步驟在執行個體中完成擴容:

  1. 運行以下命令建立分區。

    sudo fdisk -u /dev/vdb

    以下為建立分區的命令列互動樣本。本樣本中,為新增的20GiB建立分區,作為/dev/vdb2使用。

    [testuser@ecshost ~]# sudo fdisk -u /dev/vdb
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write commad.
    
    Command (m for help): p
    
    Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x2b31a2a3
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vdb1            2048    41943039    20970496   83  Linux
    
    Command (m for help): n
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): p
    Partition number (2-4, default 2): 2
    First sector (41943040-83886079, default 41943040):
    Using default value 41943040
    Last sector, +sectors or +size{K,M,G} (41943040-83886079, default 83886079):
    Using default value 83886079
    Partition 2 of type Linux and of size 20 GiB is set
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
  2. 運行以下命令查看分區。

    lsblk /dev/vdb

    樣本結果如下所示。

    [testuser@ecshost ~]# lsblk /dev/vdb
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vdb    253:16   0  40G  0 disk
    ├─vdb1 253:17   0  20G  0 part
    └─vdb2 253:18   0  20G  0 part
  3. 運行以下命令建立檔案系統。

    • 建立ext4檔案系統:

      sudo mkfs.ext4 /dev/vdb2
    • 建立xfs檔案系統:

      sudo mkfs.xfs -f /dev/vdb2
    • 建立btrfs檔案系統:

      sudo mkfs.btrfs /dev/vdb2
  4. 運行以下命令查看檔案系統資訊。

    blkid /dev/vdb2

    樣本結果如下所示。

    [testuser@ecshost ~]# blkid /dev/vdb2
    /dev/vdb2: UUID="e3f336dc-d534-4fdd-****-b6ff1a55bdbb" TYPE="ext4"
  5. 運行以下命令掛載分區。

    sudo mount /dev/vdb2 /mnt
  6. 運行以下命令查看目前資料盤空間和使用方式。

    df -h

    顯示建立檔案系統的資訊,表示掛載成功。

    [testuser@ecshost ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/vda1 40G 1.6G 36G 5% /
    devtmpfs 3.9G 0 3.9G 0% /dev
    tmpfs 3.9G 0 3.9G 0% /dev/shm
    tmpfs 3.9G 460K 3.9G 1% /run
    tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
    /dev/vdb2 9.8G 37M 9.2G 1% /mnt
    tmpfs 783M 0 783M 0% /run/user/0

選項三:擴充已有GPT分區

如果新增空間用於擴容已有的GPT分區,按照以下步驟在執行個體中完成擴容:

  1. 查看資料盤的掛載路徑,根據返回的檔案路徑卸載分區,直至完全卸載已掛載的分區。

    查看掛載(mount)資訊。

    mount | grep "/dev/vdb"

    取消掛載(umount)資料盤。

    sudo umount /dev/vdb1

    查看操作結果。

    mount | grep "/dev/vdb"

    樣本結果如下所示。

    [testuser@ecshost ~]# mount | grep "/dev/vdb"
    /dev/vdb1 on /mnt type ext4 (rw,relatime,data=ordered)
    [testuser@ecshost ~]# sudo umount /dev/vdb1
    [testuser@ecshost ~]# mount | grep "/dev/vdb"
  2. 使用Parted工具為現有GPT分區分配容量。

    1. 運行以下命令進入Parted分區工具。

      sudo parted /dev/vdb

      如需查看Parted工具使用說明,運行help命令。

    2. 運行以下命令查看分區資訊,並記錄現有分區的分區號和起始扇區的值。

      print

      若介面提示Fix/Ignore/Cancel?Fix/Ignore?,均輸入Fix即可。

      本樣本中,現有分區大小為1TiB,分區號(即Number的值)為1,起始扇區(即Start)的值為1049kB

      resize-gpt-start

    3. 運行以下命令刪除現有分區。

      rm <分區號>

      本樣本中,現有分區的分區號為1,因此命令為:

      rm 1
    4. 運行以下命令重新建立主要磁碟分割。

      mkpart primary <原分區的起始扇區> <容量分配百分比>

      本樣本中,原分區的起始扇區為1049kB,且要將擴容後的總容量(即3TiB)全部分配給該分區,因此命令為:

      mkpart primary 1049kB 100%
    5. 運行以下命令查看新分區是否建立成功。

      print

      如下圖所示,新的GPT分區仍為1號分區,容量已變更為3TiB。

      GPT分區結果

    6. 運行以下命令退出Parted分區工具。

      quit

    以下為命令列互動樣本。

    [testuser@ecshost ~]# sudo parted /dev/vdb
    GNU Parted 3.1
    Using /dev/vdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) print
    Error: The backup GPT table is not at the end of the disk, as it should be.
    This might mean that another operating system believes the disk is smaller.
    Fix, by moving the backup to the end (and removing the old backup)?
    Fix/Ignore/Cancel? Fix
    Warning: Not all of the space available to /dev/vdb appears to be used, you can
    fix the GPT to use all of the space (an extra 4294967296 blocks) or continue
    with the current setting?
    Fix/Ignore? Fix
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 3299GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start   End     Size    File system  Name     Flags
     1      1049kB  1100GB  1100GB  ext4         primary
    
    (parted) rm 1
    (parted) mkpart primary 1049kB 100%
    (parted) print
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 3299GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start   End     Size    File system  Name     Flags
     1      1049kB  3299GB  3299GB  ext4         primary
    
    (parted) quit
    Information: You may need to update /etc/fstab.
  3. 運行以下命令確認檔案系統一致性。

    sudo fsck -f /dev/vdb1

    樣本結果如下所示。

    [testuser@ecshost ~]# sudo fsck -f /dev/vdb1
    fsck from util-linux 2.23.2
    e2fsck 1.43.5 (04-Aug-2017)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/vdb1: 11/67108864 files (0.0% non-contiguous), 4265369/268434944 blocks
  4. 擴充分區對應的檔案系統並重新掛載分區。

    • ext*檔案系統(例如ext3和ext4):

      運行以下命令調整新分區的ext*檔案系統大小。

      sudo resize2fs /dev/vdb1

      運行以下命令重新掛載分區。

      sudo mount /dev/vdb1 /mnt
    • xfs檔案系統:

      運行以下命令重新掛載分區。

      sudo mount /dev/vdb1 /mnt

      運行以下命令調整xfs檔案系統大小。

      sudo xfs_growfs /mnt
      說明

      新版xfs_growfs根據掛載點識別待擴容裝置,例如xfs_growfs /mnt。您可以運行xfs_growfs --help查看不同版本xfs_growfs的使用方法。

    • btrfs檔案系統:

      運行以下命令重新掛載分區。

      sudo mount /dev/vdb1 /mnt

      運行以下命令調整btrfs檔案系統大小。

      sudo btrfs filesystem resize max /mnt

選項四:新增並格式化GPT分區

如果新增空間用於增加新的分區並希望使用GPT分區格式,按照以下步驟在執行個體中完成擴容。樣本採用一塊32 TiB的資料盤,已有一個4.8TiB的分區/dev/vdb1,此次建立了一個/dev/vdb2分區。

  1. 運行以下命令查看資料盤中已有分區的資訊。

    sudo fdisk -l

    樣本結果如下所示。

    [testuser@ecshost ~]# sudo fdisk -l
    Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000b1b45
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048    83875364    41936658+  83  Linux
    WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
    
    Disk /dev/vdb: 35184.4 GB, 35184372088832 bytes, 68719476736 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: gpt
    Disk identifier: BCE92401-F427-45CC-8B0D-B30EDF279C2F
    
    #         Start          End    Size  Type            Name
     1         2048  10307921919    4.8T  Microsoft basic mnt                    
  2. 使用Parted工具建立新分區並分配容量。

    1. 運行以下命令進入Parted工具。

      sudo parted /dev/vdb
    2. 運行以下命令查看資料盤待分配的容量,記錄已有分區的扇區位置和容量。

      print free

      樣本中/dev/vdb1的起始位置為1049KB,結束扇區為5278GB,容量為5278GiB。

      (parted) print free
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 35.2TB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start   End     Size    File system  Name  Flags
              17.4kB  1049kB  1031kB  Free Space
       1      1049kB  5278GB  5278GB  ext4         mnt
              5278GB  35.2TB  29.9TB  Free Space                    
    3. 運行以下命令設定起始扇區和分配容量。

      mkpart <分區名稱> <起始扇區> <容量分配百分比>

      以下樣本建立了一個名為test的/dev/vdb2分區,起始扇區為上一個分區的結束扇區,並將所有新增空間分配給該分區。

      mkpart test 5278GB 100%
    4. 運行以下命令查看容量(Size)是否發生變化。

      print

      樣本結果如下所示。

      (parted) print
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 35.2TB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start   End     Size    File system  Name  Flags
       1      1049kB  5278GB  5278GB  ext4         mnt
       2      5278GB  35.2TB  29.9TB               test                    
    5. 運行以下命令退出Parted工具。

      quit
  3. 為新分區建立檔案系統。

    • 建立ext4檔案系統:

      sudo mkfs.ext4 /dev/vdb2
    • 建立ext3檔案系統:

      sudo mkfs.ext3 /dev/vdb2
    • 建立xfs檔案系統:

      sudo mkfs.xfs -f /dev/vdb2
    • 建立btrfs檔案系統:

      sudo mkfs.btrfs /dev/vdb2

    樣本中建立了一個xfs檔案系統,如下所示。

    [testuser@ecshost ~]# sudo mkfs -t xfs /dev/vdb2
    meta-data=/dev/vdb2              isize=512    agcount=28, agsize=268435455 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=7301444096, imaxpct=5
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=521728, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0               
  4. 運行以下命令查看分區容量變化。

    sudo fdisk -l

    樣本結果如下所示。

    [testuser@ecshost ~]# sudo fdisk -l
    Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000b1b45
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048    83875364    41936658+  83  Linux
    WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
    
    Disk /dev/vdb: 35184.4 GB, 35184372088832 bytes, 68719476736 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: gpt
    Disk identifier: BCE92401-F427-45CC-8B0D-B30EDF279C2F
    
    #         Start          End    Size  Type            Name
     1         2048  10307921919    4.8T  Microsoft basic mnt
     2  10307921920  68719474687   27.2T  Microsoft basic test  
  5. 運行以下命令查看存放裝置的檔案系統類型。

    blkid

    樣本結果如下所示。

    [testuser@ecshost ~]# blkid
    /dev/vda1: UUID="ed95c595-4813-480e-****-85b1347842e8" TYPE="ext4"
    /dev/vdb1: UUID="21e91bbc-7bca-4c08-****-88d5b3a2303d" TYPE="ext4" PARTLABEL="mnt" PARTUUID="576235e0-5e04-4b76-****-741cbc7e98cb"
    /dev/vdb2: UUID="a7dcde59-8f0f-4193-****-362a27192fb1" TYPE="xfs" PARTLABEL="test" PARTUUID="464a9fa9-3933-4365-****-c42de62d2864"  
  6. 掛載新分區。

    sudo mount /dev/vdb2 /mnt

選項五:擴容裸裝置檔案系統

當資料盤沒有建立分區,並且在裸裝置上建立了檔案系統時,您可以參見以下步驟直接擴容檔案系統。

  1. 運行以下命令查看存放裝置的檔案系統類型。

    df -Th

    以下樣本返回分區(/dev/vdb)檔案系統類型為xfs。

    [testuser@ecshost ~]# df -Th
    Filesystem     Type      Size  Used Avail Use% Mounted on
    devtmpfs       devtmpfs  434M     0  434M   0% /dev
    tmpfs          tmpfs     446M     0  446M   0% /dev/shm
    tmpfs          tmpfs     446M  524K  446M   1% /run
    tmpfs          tmpfs     446M     0  446M   0% /sys/fs/cgroup
    /dev/vda1      ext4       20G  2.5G   17G  14% /
    tmpfs          tmpfs      90M     0   90M   0% /run/user/0
    /dev/vdb       xfs        20G   53M   20G   1% /mnt
  2. 根據不同的檔案系統類型,執行以下不同的操作來擴容檔案系統。

    • xfs檔案系統

      執行xfs_growfs命令擴容檔案系統。

      sudo xfs_growfs /mnt

      其中,/mnt為檔案系統的掛載點。

      說明

      新版xfs_growfs根據掛載點識別待擴容裝置,例如xfs_growfs /mnt。您可以運行xfs_growfs --help查看不同版本xfs_growfs的使用方法。

    • ext*和btrfs檔案系統

      1. 查看掛載(mount)資訊。

        mount | grep "/dev/vdb"
      2. 取消掛載(umount)資料盤。

        sudo umount /dev/vdb
      3. 查看操作結果。

        mount | grep "/dev/vdb"

        樣本結果如下所示。

        [testuser@ecshost ~]# mount | grep "/dev/vdb"
        /dev/vdb on /mnt type ext4 (rw,relatime,data=ordered)
        [testuser@ecshost ~]# sudo umount /dev/vdb
        [testuser@ecshost ~]# mount | grep "/dev/vdb"
      4. 擴容檔案系統。

        • ext*檔案系統:執行resize2fs命令擴容檔案系統。

          sudo resize2fs /dev/vdb
        • btrfs檔案系統:執行btrfs命令擴容檔案系統。

          sudo btrfs filesystem resize max /mnt

          其中,/mnt為檔案系統的掛載點。

      5. 將雲端硬碟掛載至掛載點。

        sudo mount /dev/vdb /mnt
  3. 運行df -Th查看資料盤擴容結果。

    df -Th

    以下樣本顯示檔案系統容量完成擴充,表示擴容成功。

    [testuser@ecshost ~]# df -Th
    Filesystem     Type      Size  Used Avail Use% Mounted on
    devtmpfs       devtmpfs  434M     0  434M   0% /dev
    tmpfs          tmpfs     446M     0  446M   0% /dev/shm
    tmpfs          tmpfs     446M  524K  446M   1% /run
    tmpfs          tmpfs     446M     0  446M   0% /sys/fs/cgroup
    /dev/vda1      ext4       20G  2.5G   17G  14% /
    tmpfs          tmpfs      90M     0   90M   0% /run/user/0
    /dev/vdb       xfs        30G   63M   30G   1% /mnt