前一篇文章我们讲了腾讯云Windows服务器怎么扩容云硬盘,这篇文章就主要来介绍一下腾讯云Linux服务器怎么扩容云硬盘。比起Windows系统来说,Linux扩容硬盘的复杂程度高多了,而且很繁琐,大家跟着云测速一步步来看吧。
注意
扩容文件系统操作不慎可能影响已有数据,因此强烈建议您在操作前手动 创建快照 备份数据。
前提条件
- 已 扩容云硬盘 空间。
- 该云硬盘已 挂载 到 Linux 云服务器并已创建文件系统。
- 已 登录 待扩展分区及文件系统的 Linux 云服务器。
操作流程
确认扩展方式
1、以 root 用户执行以下命令,查询云硬盘使用的分区形式。
fdisk -l
- 若结果展示的设备无分区(如仅展示 /dev/vdb),请您参考下面的扩容文件系统。
- 若结果如下两图所示(根据操作系统不同略有不同),则说明使用 GPT 分区形式。
若结果如下图所示(根据操作系统不同略有不同),则说明使用 MBR 分区形式。
MBR 分区形式支持的磁盘最大容量为2TB。如果您的硬盘分区为 MBR 格式,且需要扩容到超过 2TB 时,建议您重新创建并挂载一块数据盘,使用 GPT 分区方式后将数据拷贝至新盘上。对于 Linux 操作系统而言,当磁盘分区形式选用 GPT 时,fdisk 分区工具将无法使用,需要采用 parted 工具。
扩容文件系统
1、根据文件系统的类型,执行不同的命令进行扩容。
- 对于 EXT 文件系统,请执行
resize2fs
命令扩容文件系统。 - 对于 XFS 文件系统,请执行
xfs_growfs
命令扩容文件系统。
以 /dev/vdb
为例, EXT 文件系统执行以下命令:
resize2fs /dev/vdb
以 /dev/vdb
为例, XFS 文件系统执行以下命令:
xfs_growfs /dev/vdb
2、执行以下命令,查看新分区。
df -h
将扩容部分的容量划分至原有分区(GPT)
1、以 root 用户执行以下命令,确认云硬盘的容量变化。
parted <磁盘路径> print
本文以磁盘路径是 /dev/vdb
为例,则执行:
parted /dev/vdb print
若在过程中提示如下图所示信息,请输入Fix
。
如下图所示,扩容后的云硬盘大小为107GB,已有分区的大小为10.7GB。
2、执行以下命令,确认该云硬盘是否还有分区已挂载。
mount | grep '<磁盘路径>'
本文以磁盘路径是/dev/vdb
为例,则执行:
mount | grep '/dev/vdb'
如下图所示,云硬盘上有一个分区(vdb1)挂载在/data
上。
3、执行以下命令,解挂数据盘。
umount <挂载点>
本文以挂载点是/data
为例,则执行:
umount /data
请将云硬盘上所有分区的文件系统都解挂,再执行 步骤4 操作。可重复执行以下命令,确认该硬盘上所有分区的文件系统都已解挂。
mount | grep '/dev/vdb'
云硬盘上所有的分区文件系统均已解挂。如下图所示:
4、执行以下命令,进入 parted 分区工具。
parted '<磁盘路径>'
本文以磁盘路径是/dev/vdb
为例,则执行:
parted '/dev/vdb'
5、执行以下命令,将显示和操纵单位变成 sector(默认为GB)。
unit s
6、执行以下命令,查看分区信息,并记录已有分区的 Start 值。
删除分区并新建后,Start 值必须保持不变,否则将会引起数据丢失。
本文中 Start 值为 2048s
。如下图所示:
7、执行以下命令,删除原有分区。
rm <分区 Number>
例如,由上图可知云硬盘上有一个分区,Number 为“1”,则执行:
rm 1
回显信息如下图所示。
8、执行以下命令,新建一个主分区。
mkpart primary <原分区起始扇区> 100%
其中,100%表示此分区到磁盘的最末尾。
例如,主分区从第2048个扇区开始(必须与删除之前的分区一致,即 Start 值为2048s),则执行:
mkpart primary 2048s 100%
如果出现如下图所示的状态,请输入Ignore
。
9、执行以下命令,查看新分区是否已创建成功。
返回结果如下图所示,即表示新分区已创建成功。
10、执行以下命令,退出 parted 工具。
quit
11、执行以下命令,检查扩容后的分区。
e2fsck -f <分区路径>
本文以新建分区是1(即分区路径是/dev/vdb1
)为例,则执行:
e2fsck -f /dev/vdb1
返回如下图所示结果。
12、执行以下命令,对新分区上 EXT 文件系统进行扩容操作。
resize2fs <分区路径>
本文以分区路径是/dev/vdb1为例,则执行:
resize2fs /dev/vdb1
扩容成功则如下图所示:
13、执行以下命令,对新分区上 XFS 文件系统进行扩容操作。
xfs_growfs <分区路径>
本文以分区路径是/dev/vdb1
为例,则执行:
xfs_growfs /dev/vdb1
14、执行以下命令,手动挂载新分区。
mount <分区路径> <挂载点>
本文以分区路径是/dev/vdb1
,挂载点是/data
为例,则执行:
mount /dev/vdb1 /data
15、执行以下命令,查看新分区。
df -h
返回如下图信息说明挂载成功,即可以查看到数据盘。
将扩容部分的容量格式化成独立的新分区(GPT)
- 以 root 用户执行以下命令, 确认云硬盘的容量变化。
parted <磁盘路径> print
本文以磁盘路径是/dev/vdb为例,则执行:
parted /dev/vdb print
若在过程中提示如下图所示信息,请输入 Fix。
如下图所示,扩容后的云硬盘大小为107GB,已有分区的大小为10.7GB。
2、执行以下命令,确认该云硬盘是否还有分区已挂载。
mount | grep '<磁盘路径>'
本文以磁盘路径是/dev/vdb
为例,则执行:
mount | grep '/dev/vdb'
如下图所示,云硬盘上有一个分区(vdb1)挂载在/data上。
3、执行以下命令,解挂数据盘。
umount <挂载点>
本文以挂载点是/data为例,则执行:
umount /data
说明:
请将云硬盘上所有分区的文件系统都解挂,再执行 步骤4 操作。可重复执行以下命令,确认该硬盘上所有分区的文件系统都已解挂。
mount | grep '/dev/vdb'
云硬盘上所有的分区文件系统均已解挂。如下图所示:
4、执行以下命令,进入 parted 分区工具。
parted '<磁盘路径>'
本文以磁盘路径是/dev/vdb为例,则执行:
parted '/dev/vdb'
5、执行以下命令,查看分区信息,并记录已有分区的 End 值,以此值作为下一个分区的起始偏移值。
6、执行以下命令,新建一个主分区。此分区将从已有分区的末尾开始,覆盖硬盘所有的新增空间。
mkpart primary start end
本文以 End 值是10.7GB为例,执行以下命令:
mkpart primary 10.7GB 100%
7、执行以下命令,查看新分区是否已创建成功。
8、执行以下命令,退出 parted 工具。
quit
9、执行以下命令,格式化新建的分区。
mkfs.<fstype> <分区路径>
您可以自行选择文件系统的格式,例如 EXT2、EXT3 等。
本文以文件系统是 EXT3 为例,则执行:
mkfs.ext3 /dev/vdb2
将扩容部分的容量划分至原有分区(MBR)
fdisk/e2fsck/resize2fs 自动扩容工具适用于 Linux 操作系统,用于将新扩容的云硬盘空间添加到已有的文件系统中,扩容能够成功必须满足以下四个条件:
- 文件系统是 EXT2/EXT3/EXT4/XFS。
- 当前文件系统不能有错误。
- 扩容后的磁盘大小不超过2TB。
- 当前工具仅支持 Python 2 版本,不支持 Python 3 版本。
1、以 root 用户执行以下命令,卸载分区。
umount <挂载点>
本文以挂载点是/data为例,则执行:
umount /data
2、执行以下命令,下载工具。
wget -O /tmp/devresize.py https://raw.githubusercontent.com/tencentyun/tencentcloud-cbs-tools/master/devresize/devresize.py
3、执行以下命令,使用扩容工具进行扩容。
python /tmp/devresize.py <硬盘路径>
本文以硬盘路径是/dev/vdb
且文件系统在 vdb1 上为例,则执行:
python /tmp/devresize.py /dev/vdb
- 若输出 “The filesystem on /dev/vdb1 is now XXXXX blocks long.” 则表示扩容成功,请执行 步骤4。
- 若输出的是 “[ERROR] - e2fsck failed!!”,请执行以下步骤:
a. 执行以下命令,修复文件系统所在分区。
fsck -a <分区路径>
本文以硬盘路径是/dev/vdb且文件系统在 vdb1 上为例,则执行:
fsck -a /dev/vdb1
b. 修复成功后,再次执行以下命令,使用扩容工具进行扩容。
python /tmp/devresize.py /dev/vdb
4、执行以下命令,手动挂载扩容后的分区。
mount <分区路径> <挂载点>
本文以挂载点是/data为例。
若扩容前已有分区且以分区路径是/dev/vdb1为例,则执行:
mount /dev/vdb1 /data
若扩容前没有分区,则执行:
mount /dev/vdb /data
5、执行以下命令,查看扩容后的分区容量。
df -h
若返回类似如下图所示的信息,说明挂载成功,即可以查看到数据盘:
后续步骤可以到官方文档查询