操作場景
通過云服務管理控制臺擴容成功后,僅擴大了磁盤的存儲容量,因此需要參考本章節操作擴展分區和文件系統。
對于Linux操作系統而言,需要將擴容部分的容量劃分至已有分區內,或者為擴容部分的磁盤分配新的分區。
本文以“CentOS 7.4 64位”操作系統為例,提供MBR分區和GPT分區的操作指導。不同操作系統的操作可能不同,本文僅供參考,具體操作步驟和差異請參考對應操作系統的產品文檔。
- 新增MBR分區 
- 擴大已有MBR分區 
- 新增GPT分區 
- 擴大已有GPT分區 
注意
擴容時請謹慎操作,誤操作可能會導致數據丟失或者異常,建議擴容前對數據進行備份,可以使用CBR或者快照功能,CBR請參見管理備份磁盤,快照功能請參見創建快照(公測)。
前提條件
- 已通過管理控制臺擴容磁盤容量,并已掛載至云主機,請參見擴容“正在使用”狀態的磁盤容量或者擴容“可用”狀態的磁盤容量。 
- 已登錄云主機。 
新增MBR分區
數據盤“/dev/vdb”原有容量100GB,只有一個分區“/dev/vdb1”。將數據盤容量擴大至150GB,本示例為新增的50GB分配新的MBR分區“/dev/vdb2”。
步驟1 執行以下命令,查看磁盤的分區信息。
fdisk -l
回顯類似如下信息:
[root@ecs-test-0001 ~]# 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: 0x000bcb4e 
 
   Device Boot      Start         End      Blocks   Id  System 
/dev/vda1   *        2048    83886079    41942016   83  Linux 
 
Disk /dev/vdb: 161.1 GB, 161061273600 bytes, 314572800 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: 0x38717fc1 
 
   Device Boot      Start         End      Blocks   Id  System 
/dev/vdb1            2048   209715199   104856576   83  Linux
步驟2 執行以下命令,進入fdisk分區工具。
fdisk 磁盤
命令示例:
fdisk /dev/vdb
回顯類似如下信息:
[root@ecs-test-0001 ~]# fdisk /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): 
步驟3 輸入“n”,按“Enter”,開始新建分區。
回顯類似如下信息:
Command (m for help): n 
Partition type: 
   p   primary (1 primary, 0 extended, 3 free) 
   e   extended 
Select (default p):
表示磁盤有兩種分區類型:
- “p”表示主分區。 
- “e”表示擴展分區。 
說明
磁盤使用MBR分區形式,最多可以創建4個主分區,或者3個主分區加1個擴展分區,擴展分區不可以直接使用,需要劃分成若干個邏輯分區才可以使用。
磁盤使用GPT分區形式時,沒有主分區、擴展分區以及邏輯分區之分。
步驟4 以創建一個主分區為例,輸入“p”,按“Enter”。
回顯類似如下信息:
Select (default p): p 
Partition number (2-4, default 2):
“Partition number”表示主分區編號,可以選擇2-4,由于1已被使用,此處從2開始。
步驟5 以分區編號選擇“2”為例,輸入分區編號“2”,按“Enter”。
回顯類似如下信息:
Partition number (2-4, default 2): 2 
First sector (209715200-314572799, default 209715200):
“First sector”表示起始磁柱值,可以選擇209715200-314572799,默認為209715200。
步驟6 輸入新分區的起始磁柱值,以使用默認起始磁柱值為例,按“Enter”。
系統會自動提示分區可用空間的起始磁柱值和截止磁柱值,可以在該區間內自定義,或者使用默認值。起始磁柱值必須小于分區的截止磁柱值。
回顯類似如下信息:
First sector (209715200-314572799, default 209715200): 
Using default value 209715200 
Last sector, +sectors or +size{K,M,G} (209715200-314572799, default 314572799):
“Last sector”表示截止磁柱值,可以選擇209715200-314572799,默認為314572799。
步驟7 輸入新分區的截止磁柱值,以使用默認截止磁柱值為例,按“Enter”。
系統會自動提示分區可用空間的起始磁柱值和截止磁柱值,可以在該區間內自定義,或者使用默認值。起始磁柱值必須小于分區的截止磁柱值。
回顯類似如下信息:
Last sector, +sectors or +size{K,M,G} (209715200-314572799, default 314572799): 
Using default value 314572799 
Partition 2 of type Linux and of size 50 GiB is set 
 
Command (m for help): 
步驟8 輸入“p”,按“Enter”,查看新建分區。
回顯類似如下信息:
Command (m for help): p 
 
Disk /dev/vdb: 161.1 GB, 161061273600 bytes, 314572800 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: 0x38717fc1 
 
   Device Boot      Start         End      Blocks   Id  System 
/dev/vdb1            2048   209715199   104856576   83  Linux 
/dev/vdb2       209715200   314572799    52428800   83  Linux 
 
Command (m for help): 
步驟9 輸入“w”,按“Enter”,將分區結果寫入分區表中。
回顯類似如下信息:
Command (m for help): w 
The partition table has been altered! 
 
Calling ioctl() to re-read partition table. 
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy. 
The kernel still uses the old table. The new table will be used at 
the next reboot or after you run partprobe(8) or kpartx(8) 
Syncing disks.
說明
如果之前分區操作有誤,請輸入“q”,則會退出fdisk分區工具,之前的分區結果將不會被保留。
步驟10 執行以下命令,將新的分區表變更同步至操作系統。
partprobe
步驟11 執行以下命令,為新建分區設置文件系統。
mkfs -t 文件系統 磁盤分區
- ext*文件系統命令示例: 
mkfs -t ext4 /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb2 
mke2fs 1.42.9 (28-Dec-2013) 
Filesystem label= 
OS type: Linux 
Block size=4096 (log=2) 
Fragment size=4096 (log=2) 
Stride=0 blocks, Stripe width=0 blocks 
3276800 inodes, 13107200 blocks 
655360 blocks (5.00%) reserved for the super user 
First data block=0 
Maximum filesystem blocks=2162163712 
400 block groups 
32768 blocks per group, 32768 fragments per group 
8192 inodes per group 
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424 
 
Allocating group tables: done 
Writing inode tables: done 
Creating journal (32768 blocks): done 
Writing superblocks and filesystem accounting information: done
- xfs文件系統命令示例: 
mkfs -t xfs /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# mkfs -t xfs /dev/vdb2  
meta-data=/dev/vdb2              isize=512     agcount=4, agsize=3276800 blks 
         =                       sectsz=512    attr=2, projid32bit=1 
         =                       crc=1         finobt=0, sparse=0 
data     =                       bsize=4096    blocks=13107200, imaxpct=25 
         =                       sunit=0       swidth=0 blks 
naming   =version2               bsize=4096    ascii-ci=0 ftype=1 
log      =internal log           bsize=4096    blocks=6400, version=2 
         =                       sectsz=512    sunit=0 blks, lazy-count=1 
realtime =none                   extsz=4096    blocks=0, rtextents=0
格式化需要等待一段時間,請觀察系統運行狀態,若回顯中進程提示為done,則表示格式化完成。
步驟12 (可選)執行以下命令,新建掛載目錄。
若需要掛載至新建目錄下,執行該操作。
mkdir 掛載目錄
以新建掛載目錄“/mnt/test”為例:
mkdir /mnt/test
步驟13 執行以下命令,掛載新建分區。
mount 磁盤分區 掛載目錄
以掛載新建分區“/dev/vdb2”至“/mnt/test”為例:
mount /dev/vdb2 /mnt/test
說明
新增加的分區掛載到不為空的目錄時,該目錄下原本的子目錄和文件會被隱藏,所以,新增的分區最好掛載到空目錄或者新建目錄。如確實要掛載到不為空的目錄,可將該目錄下的子目錄和文件臨時移動到其他目錄下,新分區掛載成功后,再將子目錄和文件移動回來。
步驟14 執行以下命令,查看掛載結果。
df -TH
回顯類似如下信息:
[root@ecs-test-0001 ~]# df -TH 
Filesystem     Type      Size  Used Avail Use% Mounted on 
/dev/vda1      ext4       43G  1.9G   39G   5% / 
devtmpfs       devtmpfs  2.0G     0  2.0G   0% /dev 
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm 
tmpfs          tmpfs     2.0G  9.1M  2.0G   1% /run 
tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup 
tmpfs          tmpfs     398M     0  398M   0% /run/user/0 
/dev/vdb1      ext4      106G   63M  101G   1% /mnt/sdc 
/dev/vdb2      ext4       53G   55M   50G   1% /mnt/test
云主機重啟后,掛載會失效。您可以修改“/etc/fstab”文件,將新建磁盤分區設置為開機自動掛載,請參見設置開機自動掛載磁盤分區。
擴大已有MBR分區
說明
擴大已有分區不會刪除數據盤上的數據,但是需要通過umount命令先卸載已有分區,因此會影響線上業務運行。
數據盤“/dev/vdb”原有容量150GB,有兩個分區“/dev/vdb1 ”和“/dev/vdb2”。將數據盤容量擴大至230GB,本示例將新增的80GB劃分至已有的MBR分區內“/dev/vdb2”內。
注意
擴容后的新增存儲空間是添加在磁盤末尾的,對具有多個分區的的磁盤擴容時,只支持將新增容量劃分至排在末尾的分區。
步驟1 執行以下命令,查看磁盤的分區信息。
fdisk -l
回顯類似如下信息:
[root@ecs-test-0001 ~]# 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: 0x000bcb4e 
 
   Device Boot      Start         End      Blocks   Id  System 
/dev/vda1   *        2048    83886079    41942016   83  Linux 
 
Disk /dev/vdb: 247.0 GB, 246960619520 bytes, 482344960 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: 0x38717fc1 
 
   Device Boot      Start         End      Blocks   Id  System 
/dev/vdb1            2048   209715199   104856576   83  Linux 
/dev/vdb2       209715200   314572799    52428800   83  Linux
記錄待擴大分區的起始磁柱值(Start)和截止磁柱值(End),本示例中待擴大分區“/dev/vdb2”的起始磁柱值為209715200,截止磁柱值為314572799。
查看回顯中數據盤“/dev/vdb”的容量,擴容的容量是否已經包含在容量總和中。
- 若擴容的容量未在數據盤容量總和中,請參考擴展SCSI數據盤的分區和文件系統( Linux )章節刷新系統內容量。 
- 若擴容的容量已在數據盤容量總和中,請記錄待擴大分區的起始和截止磁柱值,這些值在后續重新創建分區時需要使用,記錄完成后執行步驟2。 
步驟2 執行以下命令,卸載磁盤分區。
umount 磁盤分區
命令示例:
umount /dev/vdb2
步驟3 執行以下命令,進入fdisk分區工具。
fdisk 磁盤
命令示例:
fdisk /dev/vdb
回顯類似如下信息:
[root@ecs-test-0001 ~]# fdisk /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): 
步驟4 執行以下步驟,刪除待擴大的分區。
- 輸入“d”,按“Enter”,刪除磁盤分區。 
回顯類似如下信息:
Command (m for help): d 
Partition number (1,2, default 2):
- 輸入分區編號,此處以分區編號選擇“2”為例,按“Enter”,刪除磁盤分區。 
回顯類似如下信息:
Partition number (1,2, default 2): 2 
Partition 2 is deleted 
 
Command (m for help): 
說明
刪除分區后,請參考以下操作步驟擴大原有分區,則不會導致數據盤內數據的丟失。
步驟5 輸入“n”,按“Enter”,開始新建分區。
回顯類似如下信息:
Command (m for help): n 
Partition type: 
   p   primary (1 primary, 0 extended, 3 free) 
   e   extended 
Select (default p):
表示磁盤有兩種分區類型:
- “p”表示主分區。 
- “e”表示擴展分區。 

注意
磁盤使用MBR分區形式,最多可以創建4個主分區,或者3個主分區加1個擴展分區,擴展分區不可以直接使用,需要劃分成若干個邏輯分區才可以使用。
磁盤使用GPT分區形式時,沒有主分區、擴展分區以及邏輯分區之分。
步驟6 此處分區類型需要與原分區保持一致,以原分區類型是“主分區”為例,輸入“p”,按“Enter”,開始重新創建一個主分區。
回顯類似如下信息:
Select (default p): p 
Partition number (2-4, default 2): 
“Partition number”表示主分區編號。
步驟7 此處分區編號需要與原分區保持一致,以原分區編號是“2”為例,輸入分區編號“2”,按“Enter”。
回顯類似如下信息:
Partition number (2-4, default 2): 2 
First sector (209715200-482344959, default 209715200):
“First sector”表示起始磁柱值。
說明
以下操作會導致數據丟失:
- 選擇的起始磁柱值與原分區的不一致。 
- 選擇的截止磁柱值小于原分區的值。 
步驟8 此處必須與原分區保持一致,輸入步驟1中記錄的初始磁柱值209715200,此處該值也為默認值,按“Enter”。
回顯類似如下信息:
First sector (209715200-482344959, default 209715200): 
Using default value 209715200 
Last sector, +sectors or +size{K,M,G} (209715200-482344959, default 482344959):
“Last sector”表示截止磁柱值。
步驟9 此處截止磁柱值應大于等于步驟1中記錄的截止磁柱值314572799,以選擇默認截止磁柱值482344959為例,按“Enter”。
回顯類似如下信息:
Using default value 209715200 
Last sector, +sectors or +size{K,M,G} (209715200-482344959, default 482344959): 
Using default value 482344959 
Partition 2 of type Linux and of size 130 GiB is set 
 
Command (m for help): 
表示分區完成。
步驟10 輸入“p”,按“Enter”,查看分區的詳細信息。
回顯類似如下信息:
Command (mfor help): p 
 
Disk /dev/vdb: 247.0 GB, 246960619520 bytes, 482344960 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: 0x38717fc1 
 
   Device Boot      Start         End      Blocks   Id  System 
/dev/vdb1            2048   209715199   104856576   83  Linux 
/dev/vdb2       209715200   482344959   136314880   83  Linux 
 
Command (m for help):
步驟11 輸入“w”,按“Enter”,將分區結果寫入分區表中。
回顯類似如下信息:
Command (m for help): w 
The partition table has been altered! 
 
Calling ioctl() to re-read partition table. 
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy. 
The kernel still uses the old table. The new table will be used at 
the next reboot or after you run partprobe(8) or kpartx(8) 
Syncing disks.

說明
如果之前分區操作有誤,請輸入“q”,則會退出fdisk分區工具,之前的分區結果將不會被保留。
步驟12 執行以下命令,將新的分區表變更同步至操作系統。
partprobe
步驟13 根據磁盤的文件系統,分別執行以下操作。
- 若磁盤文件系統為ext*,請執行以下步驟。 
a. 執行以下命令,檢查磁盤分區文件系統的正確性。
e2fsck -f 磁盤分區
命令示例:
e2fsck -f /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# e2fsck -f /dev/vdb2 
e2fsck 1.42.9 (28-Dec-2013) 
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/vdb2: 11/3276800 files (0.0% non-contiguous), 251790/13107200 blocks
b. 執行以下命令,擴展磁盤分區文件系統的大小。
resize2fs 磁盤分區
命令示例:
resize2fs /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# resize2fs /dev/vdb2 
resize2fs 1.42.9 (28-Dec-2013) 
Resizing the filesystem on /dev/vdb2 to 34078720 (4k) blocks. 
The filesystem on /dev/vdb2 is now 34078720 blocks long.
c. (可選)執行以下命令,新建掛載目錄。
若需要掛載至新建目錄下,執行該操作。
mkdir 掛載目錄
以新建掛載目錄“/mnt/test”為例:
mkdir /mnt/test
d. 執行以下命令,掛載磁盤分區。
mount 磁盤分區 掛載目錄
以掛載分區“/dev/vdb2”至“/mnt/test”為例:
mount /dev/vdb2 /mnt/test

說明
新增加的分區掛載到不為空的目錄時,該目錄下原本的子目錄和文件會被隱藏,所以,新增的分區最好掛載到空目錄或者新建目錄。如確實要掛載到不為空的目錄,可將該目錄下的子目錄和文件臨時移動到其他目錄下,新分區掛載成功后,再將子目錄和文件移動回來。
- 若磁盤文件系統為xfs,請執行以下步驟。 
a. (可選)執行以下命令,新建掛載目錄。
若需要掛載至新建目錄下,執行該操作。
mkdir 掛載目錄
以新建掛載目錄“/mnt/test”為例:
mkdir /mnt/test
b. 執行以下命令,掛載磁盤分區。
mount 磁盤分區 掛載目錄
以掛載分區“/dev/vdb2”至“/mnt/test”為例:
mount /dev/vdb2 /mnt/test

說明
新增加的分區掛載到不為空的目錄時,該目錄下原本的子目錄和文件會被隱藏,所以,新增的分區最好掛載到空目錄或者新建目錄。如確實要掛載到不為空的目錄,可將該目錄下的子目錄和文件臨時移動到其他目錄下,新分區掛載成功后,再將子目錄和文件移動回來。
c. 執行以下命令,擴展磁盤分區文件系統的大小。
sudo xfs_growfs 磁盤分區
命令示例:
sudo xfs_growfs /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# sudo xfs_growfs /dev/vdb2  
meta-data=/dev/vdb2              isize=512     agcount=4, agsize=3276800 blks 
         =                       sectsz=512    attr=2, projid32bit=1 
         =                       crc=1         finobt=0, spinodes=0 
data     =                       bsize=4096    blocks=13107200, imaxpct=25 
         =                       sunit=0       swidth=0 blks 
naming   =version2               bsize=4096    ascii-ci=0 ftype=1 
log      =internal               bsize=4096    blocks=6400, version=2 
         =                       sectsz=512    sunit=0 blks, lazy-count=1 
realtime =none                   extsz=4096    blocks=0, rtextents=0 
data blocks changed from 13107200 to 34078720.
步驟14 執行以下命令,查看掛載結果。
df -TH
回顯類似如下信息:
[root@ecs-test-0001 ~]# df -TH 
Filesystem     Type      Size  Used Avail Use% Mounted on 
/dev/vda1      ext4       43G  1.9G   39G   5% / 
devtmpfs       devtmpfs  2.0G     0  2.0G   0% /dev 
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm 
tmpfs          tmpfs     2.0G  9.1M  2.0G   1% /run 
tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup 
tmpfs          tmpfs     398M     0  398M   0% /run/user/0 
/dev/vdb1      ext4      106G   63M  101G   1% /mnt/sdc 
/dev/vdb2      ext4      138G   63M  131G   1% /mnt/test

說明
云主機重啟后,掛載會失效。您可以修改“/etc/fstab”文件,將新建磁盤分區設置為開機自動掛載,請參見設置開機自動掛載磁盤分區。
新增GPT分區
數據盤“/dev/vdb”原有容量100GB,只有一個分區“/dev/vdb1”。將數據盤容量擴大至150GB,本示例為新增的50GB分配新的GPT分區“/dev/vdb2”。
步驟1 執行以下命令,查看磁盤的分區信息。
lsblk
回顯類似如下信息:
[root@ecs-test-0001 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT 
vda    253:0    0   40G  0 disk 
└─vda1 253:1    0   40G  0 part / 
vdb    253:16   0  150G  0 disk 
└─vdb1 253:17   0  100G  0 part /mnt/sdc
步驟2 執行以下命令,進入parted分區工具。
parted 磁盤
命令示例:
parted /dev/vdb
回顯類似如下信息:
[root@ecs-test-0001 ~]# parted /dev/vdb 
GNU Parted 3.1 
Using /dev/vdb 
Welcome to GNU Parted! Type 'help' to view a list of commands. 
(parted) 
步驟3 輸入“unit s”,按“Enter”,設置磁盤的計量單位為磁柱。
步驟4 輸入“p”,按“Enter”,查看當前磁盤分區情況。
回顯類似如下信息:
(parted) unit s 
(parted) p 
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 104857600 
blocks) or continue with the current setting? 
Fix/Ignore? Fix 
Model: Virtio Block Device (virtblk) 
Disk /dev/vdb: 314572800s 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags: 
 
Number  Start  End         Size        File system  Name  Flags 
 1      2048s  209713151s  209711104s  ext4         test 
 
(parted)
記錄已有分區的截止磁柱值(End),本示例中已有分區“/dev/vdb1”的截止磁柱值為209713151s。
- 若系統出現以下Error,請輸入“Fix”。 
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)?
GPT分區表信息存儲在磁盤開頭,為了減少分區表損壞的風險,同時在磁盤末尾會備份一份。當磁盤容量擴大后,末尾位置也會隨之變化,因此需要根據系統提示輸入“Fix”,將分區表信息的備份文件挪到新的磁盤末尾位置。
若系統出現以下Warning,請輸入“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 104857600 
blocks) or continue with the current setting? 
Fix/Ignore? Fix
根據系統提示輸入“Fix”,系統會自動將磁盤擴容部分的容量設置為GPT。
步驟5 以為新增容量分配一整個分區為例,執行以下命令,按“Enter”。
mkpart 磁盤分區名稱 起始磁柱值 截止磁柱值
命令示例:
mkpart data 209713152s 100%
由于步驟4中,已有分區“dev/vdb1”的截止磁柱值為“209713151s”,因此對于新增分區“dev/vdb2”,起始磁柱值設置為“209713152s”,截止磁柱值設置為“100%”。此處僅供參考,您可以根據業務需要自行規劃磁盤分區數量及容量。
回顯類似如下信息:
(parted) mkpart data 209713152s 100% 
(parted) 

說明
獲取最大截止磁柱值的方法如下:
- 參考步驟2~步驟4,查詢磁盤的最大截止磁柱值。 
- 可以輸入-1s或者100%,即默認為磁盤的最大截止磁柱值。 
步驟6 輸入“p”,按“Enter”,查看新建分區。
回顯類似如下信息:
(parted) p 
Model: Virtio Block Device (virtblk) 
Disk /dev/vdb: 314572800s 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags: 
 
Number  Start       End         Size        File system  Name  Flags 
 1      2048s       209713151s  209711104s  ext4         test 
 2      209713152s  314570751s  104857600s               data 
 
(parted) 
步驟7 輸入“q”,按“Enter”,退出parted分區工具。
回顯類似如下信息:
(parted) q 
Information: You may need to update /etc/fstab.
“/etc/fstab”文件控制磁盤開機自動掛載,請先參考以下步驟為磁盤分區設置文件系統和掛載目錄后,再根據文檔指導更新“/etc/fstab”文件。
步驟8 執行以下命令,為新建分區設置文件系統。
mkfs -t 文件系統 磁盤分區
- ext*文件系統命令示例: 
mkfs -t ext4 /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb2 
mke2fs 1.42.9 (28-Dec-2013) 
Filesystem label= 
OS type: Linux 
Block size=4096 (log=2) 
Fragment size=4096 (log=2) 
Stride=0 blocks, Stripe width=0 blocks 
3276800 inodes, 13107200 blocks 
655360 blocks (5.00%) reserved for the super user 
First data block=0 
Maximum filesystem blocks=2162163712 
400 block groups 
32768 blocks per group, 32768 fragments per group 
8192 inodes per group 
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424 
 
Allocating group tables: done 
Writing inode tables: done 
Creating journal (32768 blocks): done 
Writing superblocks and filesystem accounting information: done
xfs文件系統命令示例:
mkfs -t xfs /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# mkfs -t xfs /dev/vdb2  
meta-data=/dev/vdb2              isize=512     agcount=4, agsize=3276800 blks 
         =                       sectsz=512    attr=2, projid32bit=1 
         =                       crc=1         finobt=0, sparse=0 
data     =                       bsize=4096    blocks=13107200, imaxpct=25 
         =                       sunit=0       swidth=0 blks 
naming   =version2               bsize=4096    ascii-ci=0 ftype=1 
log      =internal log           bsize=4096    blocks=6400, version=2 
         =                       sectsz=512    sunit=0 blks, lazy-count=1 
realtime =none                   extsz=4096    blocks=0, rtextents=0
格式化需要等待一段時間,請觀察系統運行狀態,若回顯中進程提示為done,則表示格式化完成。
步驟9 (可選)執行以下命令,新建掛載目錄。
若需要掛載至新建目錄下,執行該操作。
mkdir 掛載目錄
以新建掛載目錄“/mnt/test”為例:
mkdir /mnt/test
步驟10 執行以下命令,掛載新建分區。
mount 磁盤分區 掛載目錄
以掛載新建分區“/dev/vdb2”至“/mnt/test”為例:
mount /dev/vdb2 /mnt/test

說明
新增加的分區掛載到不為空的目錄時,該目錄下原本的子目錄和文件會被隱藏,所以,新增的分區最好掛載到空目錄或者新建目錄。如確實要掛載到不為空的目錄,可將該目錄下的子目錄和文件臨時移動到其他目錄下,新分區掛載成功后,再將子目錄和文件移動回來。
步驟11 執行以下命令,查看掛載結果。
df -TH
回顯類似如下信息:
[root@ecs-test-0001 ~]# df -TH 
Filesystem     Type      Size  Used Avail Use% Mounted on 
/dev/vda1      ext4       43G  1.9G   39G   5% / 
devtmpfs       devtmpfs  2.0G     0  2.0G   0% /dev 
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm 
tmpfs          tmpfs     2.0G  9.1M  2.0G   1% /run 
tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup 
tmpfs          tmpfs     398M     0  398M   0% /run/user/0 
/dev/vdb1      ext4      106G   63M  101G   1% /mnt/sdc 
云主機重啟后,掛載會失效。您可以修改“/etc/fstab”文件,將新建磁盤分區設置為開機自動掛載,請參見設置開機自動掛載磁盤分區。
擴大已有GPT分區

注意
擴大已有分區不會刪除數據盤上的數據,但是需要通過umount命令先卸載已有分區,因此會影響線上業務運行。
數據盤“/dev/vdb”原有容量150GB,有兩個分區“/dev/vdb1 ”和“/dev/vdb2”。將數據盤容量擴大至230GB,本示例將新增的80GB劃分至已有的GPT分區內“/dev/vdb2”內。
擴容后的新增存儲空間是添加在磁盤末尾的,對具有多個分區的的磁盤擴容時,只支持將新增容量劃分至排在末尾的分區。
步驟1 執行以下命令,查看磁盤的分區信息。
lsblk
回顯類似如下信息:
[root@ecs-test-0001 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT 
vda    253:0    0   40G  0 disk 
└─vda1 253:1    0   40G  0 part / 
vdb    253:16   0  230G  0 disk 
├─vdb1 253:17   0  100G  0 part /mnt/sdc 
└─vdb2 253:18   0   50G  0 part /mnt/test
查看回顯中磁盤“/dev/vdb”的容量,擴容的容量是否已經包含在容量總和中。
- 若擴容的容量未在磁盤容量總和中,請參考擴展SCSI數據盤的分區和文件系統( Linux )章節刷新系統內容量。 
- 若擴容的容量已在磁盤容量總和中,請執行步驟2。 
步驟2 執行以下命令,卸載磁盤分區。
umount 磁盤分區
命令示例:
umount /dev/vdb2
步驟3 執行以下命令,確認磁盤分區的卸載結果。
lsblk
回顯類似如下信息:
[root@ecs-test-0001 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT 
vda    253:0    0   40G  0 disk 
└─vda1 253:1    0   40G  0 part / 
vdb    253:16   0  230G  0 disk 
├─vdb1 253:17   0  100G  0 part /mnt/sdc 
└─vdb2 253:18   0   50G  0 part
步驟4 執行以下命令,進入parted分區工具。
parted 磁盤
命令示例:
parted /dev/vdb
回顯類似如下信息:
[root@ecs-test-0001 ~]# parted /dev/vdb 
GNU Parted 3.1 
Using /dev/vdb 
Welcome to GNU Parted! Type 'help' to view a list of commands. 
(parted)
步驟5 輸入“unit s”,按“Enter”,設置磁盤的計量單位為磁柱。
步驟6 輸入“p”,按“Enter”,查看當前磁盤分區情況。
回顯類似如下信息:
(parted) unit s 
(parted) p 
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 167772160 
blocks) or continue with the current setting? 
Fix/Ignore? Fix 
Model: Virtio Block Device (virtblk) 
Disk /dev/vdb: 482344960s 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags: 
 
Number  Start       End         Size        File system  Name  Flags 
 1      2048s       209713151s  209711104s  ext4         test 
 2      209713152s  314570751s  104857600s  ext4         data 
 
(parted)
記錄待擴大分區“/dev/vdb2”的初始磁柱值(start)和截止磁柱值(End),在后續重新劃分分區需要使用。本示例中待擴大分區的的初始磁柱值為209713152s,截止磁柱值為314570751s。
- 若系統出現以下Error,請輸入“Fix”。 
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)?
GPT分區表信息存儲在磁盤開頭,為了減少分區表損壞的風險,同時在磁盤末尾會備份一份。當磁盤容量擴大后,末尾位置也會隨之變化,因此需要根據系統提示輸入“Fix”,將分區表信息的備份文件挪到新的磁盤末尾位置。
- 若系統出現以下Warning,請輸入“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 104857600 
blocks) or continue with the current setting? 
Fix/Ignore? Fix
根據系統提示輸入“Fix”,系統會自動將磁盤擴容部分的容量設置為GPT。
步驟7 輸入“rm”和分區編號,此處以“2”為例,按“Enter”。
回顯類似如下信息:
(parted) rm 
Partition number? 2 
(parted)
步驟8 重新劃分分區,執行以下命令,按“Enter”。
mkpart 磁盤分區名稱 起始磁柱值 截止磁柱值
命令示例:
mkpart data 209713152s 100%
- 起始磁柱值需要和原分區的取值保持一致,輸入步驟6中記錄的起始磁柱值“209713152s”。 
- 截止磁柱值必須大于原分區的取值,即大于步驟6中記錄的截止磁柱值“314570751s”,此處以將所有新增容量劃分至分區“dev/vdb2”為例,輸入100%。 
回顯類似如下信息:
(parted) mkpart data 209713152s 100% 
(parted)

說明
以下操作會導致數據丟失:
- 選擇的起始磁柱值與原分區的不一致。 
- 選擇的截止磁柱值小于原分區的值。 
步驟9 輸入“p”,按“Enter”,查看分區信息。
回顯類似如下信息:
(parted) p 
Model: Virtio Block Device (virtblk) 
Disk /dev/vdb: 482344960s 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags: 
 
Number  Start       End         Size        File system  Name  Flags 
 1      2048s       209713151s  209711104s  ext4         test 
 2      209713152s  482342911s  272629760s  ext4         data 
 
(parted) 
步驟10 輸入“q”,按“Enter”,退出parted分區工具。
回顯類似如下信息:
(parted) q 
Information: You may need to update /etc/fstab.
“/etc/fstab”文件控制磁盤開機自動掛載,請先參考以下步驟為磁盤分區設置文件系統和掛載目錄后,再根據文檔指導更新“/etc/fstab”文件。
步驟11 根據磁盤的文件系統,分別執行以下操作。
若磁盤文件系統為ext*,請執行以下步驟。
a. 執行以下命令,檢查磁盤分區文件系統的正確性。
e2fsck -f 磁盤分區
命令示例:
e2fsck -f /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# e2fsck -f /dev/vdb2 
e2fsck 1.42.9 (28-Dec-2013) 
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/vdb2: 11/3276800 files (0.0% non-contiguous), 251790/13107200 blocks
b. 執行以下命令,擴展磁盤分區文件系統的大小。
resize2fs 磁盤分區
命令示例:
resize2fs /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# resize2fs /dev/vdb2 
resize2fs 1.42.9 (28-Dec-2013) 
Resizing the filesystem on /dev/vdb2 to 34078720 (4k) blocks. 
The filesystem on /dev/vdb2 is now 34078720 blocks long.
c. (可選)執行以下命令,新建掛載目錄。
若需要掛載至新建目錄下,執行該操作。
mkdir 掛載目錄
以新建掛載目錄“/mnt/test”為例:
mkdir /mnt/test
d. 執行以下命令,掛載磁盤分區。
mount 磁盤分區 掛載目錄
以掛載分區“/dev/vdb2”至“/mnt/test”為例:
mount /dev/vdb2 /mnt/test
說明
新增加的分區掛載到不為空的目錄時,該目錄下原本的子目錄和文件會被隱藏,所以,新增的分區最好掛載到空目錄或者新建目錄。如確實要掛載到不為空的目錄,可將該目錄下的子目錄和文件臨時移動到其他目錄下,新分區掛載成功后,再將子目錄和文件移動回來。
- 若磁盤文件系統為xfs,請執行以下步驟。 
a. (可選)執行以下命令,新建掛載目錄。
若需要掛載至新建目錄下,執行該操作。
mkdir 掛載目錄
以新建掛載目錄“/mnt/test”為例:
mkdir /mnt/test
b. 執行以下命令,掛載磁盤分區。
mount 磁盤分區 掛載目錄
以掛載分區“/dev/vdb2”至“/mnt/test”為例:
mount /dev/vdb2 /mnt/test

說明
新增加的分區掛載到不為空的目錄時,該目錄下原本的子目錄和文件會被隱藏,所以,新增的分區最好掛載到空目錄或者新建目錄。如確實要掛載到不為空的目錄,可將該目錄下的子目錄和文件臨時移動到其他目錄下,新分區掛載成功后,再將子目錄和文件移動回來。
c. 執行以下命令,擴展磁盤分區文件系統的大小。
sudo xfs_growfs 磁盤分區
命令示例:
sudo xfs_growfs /dev/vdb2
回顯類似如下信息:
[root@ecs-test-0001 ~]# sudo xfs_growfs /dev/vdb2  
meta-data=/dev/vdb2              isize=512     agcount=4, agsize=3276800 blks 
         =                       sectsz=512    attr=2, projid32bit=1 
         =                       crc=1         finobt=0, spinodes=0 
data     =                       bsize=4096    blocks=13107200, imaxpct=25 
         =                       sunit=0       swidth=0 blks 
naming   =version2               bsize=4096    ascii-ci=0 ftype=1 
log      =internal               bsize=4096    blocks=6400, version=2 
         =                       sectsz=512    sunit=0 blks, lazy-count=1 
realtime =none                   extsz=4096    blocks=0, rtextents=0 
data blocks changed from 13107200 to 34078720.
步驟12 執行以下命令,查看掛載結果。
df -TH
回顯類似如下信息:
[root@ecs-test-0001 ~]# df -TH 
Filesystem     Type      Size  Used Avail Use% Mounted on 
/dev/vda1      ext4       43G  1.9G   39G   5% / 
devtmpfs       devtmpfs  2.0G     0  2.0G   0% /dev 
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm 
tmpfs          tmpfs     2.0G  9.1M  2.0G   1% /run 
tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup 
tmpfs          tmpfs     398M     0  398M   0% /run/user/0 
/dev/vdb1      ext4      106G   63M  101G   1% /mnt/sdc 
/dev/vdb2      ext4      138G   63M  131G   1% /mnt/test
云主機重啟后,掛載會失效。您可以修改“/etc/fstab”文件,將新建磁盤分區設置為開機自動掛載,請參見設置開機自動掛載磁盤分區。
設置開機自動掛載磁盤分區
您可以通過配置fstab文件,設置云主機系統啟動時自動掛載磁盤分區。已有數據的云主機也可以進行設置,該操作不會影響現有數據。
本文介紹如何在fstab文件中使用UUID來設置自動掛載磁盤分區。不建議采用在“/etc/fstab”直接指定設備名(比如/dev/vdb1)的方法,因為云中設備的順序編碼在關閉或者開啟云主機過程中可能發生改變,例如/dev/vdb1可能會變成/dev/vdb2,可能會導致云主機重啟后不能正常運行。
說明
UUID(universally unique identifier)是Linux系統為磁盤分區提供的唯一的標識字符串。
步驟1 執行如下命令,查詢磁盤分區的UUID。
blkid 磁盤分區
以查詢磁盤分區“/dev/vdb1”的UUID為例:
blkid /dev/vdb1
回顯類似如下信息:
[root@ecs-test-0001 ~]# blkid /dev/vdb1 
/dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"
表示“/dev/vdb1”的UUID。
步驟2 執行以下命令,使用VI編輯器打開“fstab”文件。
vi /etc/fstab
步驟3 按“i”,進入編輯模式。
步驟4 將光標移至文件末尾,按“Enter”,添加如下內容。
UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc                ext4    defaults        0 2
步驟5 按“ESC”后,輸入“:wq”,按“Enter”。
保存設置并退出編輯器。
步驟6 執行以下步驟,驗證自動掛載功能。
- 執行如下命令,卸載已掛載的分區。 
umount 磁盤分區
命令示例:
umount /dev/vdb1
- 執行如下命令,將“/etc/fstab”文件所有內容重新加載。 
mount -a
- 執行如下命令,查詢文件系統掛載信息。 
mount | grep 掛載目錄
命令示例:
mount | grep /mnt/sdc
回顯類似如下信息,說明自動掛載功能生效:
root@ecs-test-0001 ~]# mount | grep /mnt/sdc 
/dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)