操作場景
通過云服務管理控制臺擴容成功后,僅擴大了云硬盤的存儲容量,因此需要參考本章節操作擴展分區和文件系統。
對于Linux操作系統而言,需要將擴容部分的容量劃分至已有分區內,或者為擴容部分的云硬盤分配新的分區。
本文以“CentOS 7.4 64bit”和“CentOS 6.5 64bit”操作系統為例,提供growpart和fdisk兩種工具的擴容指導。不同操作系統的操作可能不同,本文僅供參考,具體操作步驟和差異請參考對應操作系統的產品文檔。
查看Linux內核版本方法請參見下文“查看Linux操作系統內核版本”。
-
擴大已有MBR分區(內核版本高于3.6.0)
-
擴大已有MBR分區(內核版本低于3.6.0)
-
新增MBR分區
前提條件
- 已通過管理控制臺擴容云硬盤容量,并已掛載至云主機,請參見_擴容“正在使用”狀態的云硬盤容量擴容“可用”狀態的云硬盤容量。
- 已登錄云主機。
查看Linux操作系統內核版本
執行以下命令,查看Linux操作系統內核版本。
uname -a
需要根據Linux內核版本是否高于3.6.0選擇對應的操作:
- 以“CentOS 7.4 64bit”為例,回顯類似如下信息:
Linux ecs-test-0001 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64
內核版本為3.10.0,高于3.6.0,具體操作請參見下文“擴大已有MBR分區(內核版本高于3.6.0)”。
- 以“CentOS 6.5 64bit”為例,回顯類似如下信息:
Linux ecs-test-0002 2.6.32-754.10.1.el6.x86_64 #1 SMP Tue Jan 15 17:07:28 UTC 2019 x86_64
內核版本為2.6.32,低于3.6.0,需要reboot重啟,才可以完成分區和文件系統擴展,具體操作請參見下文“擴大已有MBR分區(內核版本低于3.6.0)”。
擴大已有MBR分區(內核版本高于3.6.0)
以“CentOS 7.4 64bit”操作系統為例,系統盤“/dev/vda”原有容量40GB,只有一個分區“/dev/vda1”。將系統盤容量擴大至100GB,本示例將新增的60GB劃分至已有的MBR分區內“/dev/vda1”內。
步驟 1 (可選)執行以下命令,安裝growpart擴容工具。
yum install cloud-utils-growpart
說明
可以用growpart命令檢查當前系統是否已安裝growpart擴容工具,若回顯為工具使用介紹,則表示已安裝,無需重復安裝。
步驟 2 執行以下命令,查看系統盤“/dev/vda”的總容量。
fdisk -l
回顯類似如下信息:
> [root@ecs-test-0001 ~]# fdisk -l
>
> Disk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 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
步驟 3 執行以下命令,查看系統盤分區“/dev/vda1”的容量。
df -TH
回顯類似如下信息:
[root@ecs-test-0001 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 43G 2.0G 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.0M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 398M 0 398M 0% /run/user/0
步驟 4 執行以下命令,指定系統盤待擴容的分區,通過growpart進行擴容。
growpart 系統盤 分區編號
命令示例:
growpart /dev/vda 1
回顯類似如下信息:
> [root@ecs-test-0001 ~]# growpart /dev/vda 1
> CHANGED: partition=1 start=2048 old: size=83884032 end=83886080 new: size=209713119,end=209715167
步驟 5 執行以下命令,擴展磁盤分區文件系統的大小。
resize2fs 磁盤分區
命令示例:
resize2fs /dev/vda1
回顯類似如下信息:
[root@ecs-test-0001 ~]# resize2fs /dev/vda1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 13
The filesystem on /dev/vda1 is now 26214139 blocks long.
步驟 6 執行以下命令,查看擴容后系統盤分區“/dev/vda1”的容量。
df -TH
回顯類似如下信息:
[root@ecs-test-0001 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 106G 2.0G 99G 2% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.0M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 398M 0 398M 0% /run/user/0
擴大已有MBR分區(內核版本低于3.6.0)
注意
當操作系統內核低于3.6.0時,擴大已有MBR分區需要reboot重啟,擴展分區和文件系統才會生效,會中斷業務。
以“CentOS 6.5 64bit”操作系統為例,系統盤“/dev/vda”原有容量40GB,只有一個分區“/dev/vda1”。將系統盤容量擴大至100GB,本示例將新增的60GB劃分至已有的MBR分區內“/dev/vda1”內。
步驟 1 (可選)執行以下命令,安裝growpart擴容工具。
yum install cloud-utils-growpart
說明
可以用growpart命令檢查當前系統是否已安裝growpart擴容工具,若回顯為工具使用介紹,則表示已安裝,無需重復安裝。
步驟 2 執行以下命令,安裝dracut-modules-growroot工具。
yum install cloud-utils-growpart
回顯類似如下信息:
[root@ecs-test-0002 ~]# yum install cloud-utils-growpart
Loaded plugins: fastestmirror, security
Setting up Install Process
Determining fastest mirrors
...
Package cloud-utils-growpart-0.27-10.el6.x86_64 already installed and latest version
Nothing to do
步驟 3 執行以下命令,重新生成initramfs文件。
dracut -f
步驟 4 執行以下命令,查看系統盤“/dev/vda”的總容量。
fdisk -l
回顯類似如下信息:
[root@ecs-test-0002 ~]# fdisk -l
Disk /dev/vda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004e0be
Device Boot Start End Blocks Id System
/dev/vda1 * 1 5222 41942016 83 Linux
步驟 5 執行以下命令,查看系統盤分區“/dev/vda1”的容量。
df -TH
回顯類似如下信息:
[root@ecs-test-0002 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 43G 1.7G 39G 5% /
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
步驟 6 執行以下命令,指定系統盤待擴容的分區,通過growpart進行擴容。
growpart 系統盤 分區編號
命令示例:
growpart /dev/vda 1
回顯類似如下信息:
[root@ecs-test-0002 ~]# growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=83884032 end=83886080 new: size=209710462,end=209712510
步驟 7 執行以下命令,重啟云主機。
reboot
待重啟完成后,重新連接云主機后,執行以下操作。
步驟 8 執行以下命令,擴展磁盤分區文件系統的大小。
resize2fs 磁盤分區
命令示例:
resize2fs /dev/vda1
回顯類似如下信息:
[root@ecs-test-0002 ~]# resize2fs /dev/vda1
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 26213807 blocks long. Nothing to do!
步驟 9 執行以下命令,查看擴容后系統盤分區“/dev/vda1”的容量。
df -TH
回顯類似如下信息:
[root@ecs-test-0002 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 106G 1.7G 99G 2% /
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
新增MBR分區
系統盤“/dev/vda”原有容量40GB,只有一個分區“/dev/vda1”。將系統盤容量擴大至80GB,本示例為新增的40GB分配新的MBR分區“/dev/vda2”。
步驟 1 執行以下命令,查看磁盤的分區信息。
fdisk -l
回顯類似如下信息:
[root@ecs-2220 ~]# fdisk -l
Disk /dev/vda: 85.9 GB, 85899345920 bytes, 167772160 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: 0x0008d18f
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 83886079 41942016 83 Linux
表示當前系統盤“dev/vda”容量為80 GB,當前正在使用的分區“dev/vda1”為40 GB,新擴容的40 GB還未分配分區。
步驟 2 執行如下命令之后,進入fdisk分區工具。
fdisk /dev/vda
回顯類似如下信息:
[root@ecs-2220 ~]# fdisk /dev/vda
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
表示磁盤有兩種分區類型:
- “p”表示主分區。
- “e”表示擴展分區。
說明
磁盤使用MBR分區形式,最多可以創建4個主分區,或者3個主分區加1個擴展分區,擴展分區不可以直接使用,需要劃分成若干個邏輯分區才可以使用。
磁盤使用GPT分區形式時,沒有主分區、擴展分區以及邏輯分區之分。
步驟 4 以創建一個主要分區為例,輸入“p”,按“Enter”,開始創建一個主分區。
回顯類似如下信息:
Select (default p): p
Partition number (2-4, default 2):
步驟 5 以分區編號選擇“2”為例,輸入分區編號“2”,按“Enter”。
回顯類似如下信息:
Partition number (2-4, default 2): 2
First sector (83886080-167772159, default 83886080):
步驟 6 輸入新分區的起始磁柱值,以使用默認起始磁柱值為例,按“Enter”。
系統會自動提示分區可用空間的起始磁柱值和截止磁柱值,可以在該區間內自定義,或者使用默認值。起始磁柱值必須小于分區的截止磁柱值。
回顯類似如下信息:
First sector (83886080-167772159, default 83886080):
Using default value 83886080
Last sector, +sectors or +size{K,M,G} (83886080-167772159,default 167772159):
步驟 7 輸入新分區的截止磁柱值,以使用默認截止磁柱值為例,按“Enter”。
系統會自動提示分區可用空間的起始磁柱值和截止磁柱值,可以在該區間內自定義,或者使用默認值。起始磁柱值必須小于分區的截止磁柱值。
回顯類似如下信息:
Last sector, +sectors or +size{K,M,G} (83886080-167772159,
default 167772159):
Using default value 167772159
Partition 2 of type Linux and of size 40 GiB is set
Command (m for help):
步驟 8 輸入“p”,按“Enter”,查看新建分區。
回顯類似如下信息:
Command (m for help): p
Disk /dev/vda: 85.9 GB, 85899345920 bytes, 167772160 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: 0x0008d18f
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 83886079 41942016 83 Linux
/dev/vda2 83886080 167772159 41943040 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文件系統命令示例:
以“ext4” 文件格式為例:
mkfs -t ext4 /dev/vda2
回顯類似如下信息:
[root@ecs-2220 ~]# mkfs -t ext4 /dev/vda2
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
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 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
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/vda2
回顯類似如下信息:
[root@ecs-2220 ~]# mkfs -t xfs /dev/vda2
meta-data=/dev/vda2 isize=512 agcount=4, agsize=2621440 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10485760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
格式化需要等待一段時間,請觀察系統運行狀態,若回顯中進程提示為done,則表示格式化完成。
步驟 12 (可選)執行以下命令,新建掛載目錄。
若需要掛載至新建目錄下,執行該操作。
mkdir 掛載目錄
以新建掛載目錄“/opt”為例:
mkdir /opt
步驟 13 執行以下命令,掛載新建分區。
mount 磁盤分區 掛載目錄
以掛載新建分區“/dev/vda2”至“/opt”為例:
mount /dev/vda2 /opt
說明
新增加的分區掛載到不為空的目錄時,該目錄下原本的子目錄和文件會被隱藏,所以,新增的分區最好掛載到空目錄或者新建目錄。如確實要掛載到不為空的目錄,可將該目錄下的子目錄和文件臨時移動到其他目錄下,新分區掛載成功后,再將子目錄和文件移動回來。
步驟 14 執行以下命令,查看掛載結果。
df -TH
回顯類似如下信息:
[root@ecs-2220 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 43G 2.0G 39G 5% /
devtmpfs devtmpfs 509M 0 509M 0% /dev
tmpfs tmpfs 520M 0 520M 0% /dev/shm
tmpfs tmpfs 520M 7.2M 513M 2% /run
tmpfs tmpfs 520M 0 520M 0% /sys/fs/cgroup
tmpfs tmpfs 104M 0 104M 0% /run/user/0
/dev/vda2 ext4 43G 51M 40G 1% /opt
說明
云主機重啟后,掛載會失效。您可以修改“/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)