本文仅适合MBR 分区!!!
扩容云硬盘 完成后,需要将扩容部分的容量划分至已有分区内。
一、以 root 用户执行以下命令,查询云硬盘使用的分区形式。
fdisk -l
结果如下图所示(根据操作系统不同略有不同),则说明使用 MBR 分区形式。
二、将扩容部分的容量划分至原有分区(MBR 分区形式)
fdisk/e2fsck/resize2fs 自动扩容工具适用于 Linux 操作系统,用于将新扩容的云硬盘空间添加到已有的文件系统中,扩容能够成功必须满足以下四个条件:
n 文件系统是 EXT2/EXT3/EXT4/XFS。
n 当前文件系统不能有错误。
n 扩容后的磁盘大小不超过2TB。
n 当前工具仅支持 Python 2 版本,不支持 Python 3 版本。
(一)以 root 用户执行以下命令,卸载分区:
卸载磁盘之前最好在控制面板停止能够停止的进程,如服务器、数据库、PHP程序、FTP服务等等。
本文以挂载点是/www为例,则执行:
umount /www
卸载磁盘可能会遇到以下问题:
这是因为磁盘正在被一些程序所占用,需要结束这些占用磁盘的进程和服务。
首先列出正在使用磁盘的服务:
lsof /www
然后杀死对应的 PID {kill -9 pid pid pid} 即可ok
kill -9 pid pid pid
如果还是被占用,就进行强制卸载:
umount /www -f
有时候可能强制卸载还是不行,再执行强行解除挂载,基本就能够卸载掉了:
umount -l /www
重复执行:
lsof /www
umount /www
已经能够顺利卸载分区。
(二)使用扩容工具进行扩容。
1、执行以下命令,使用扩容工具进行扩容。 中国大陆地区推荐使用:
wget -O /tmp/devresize.py https://tencentcloud.coding.net/p/tencentcloud/d/tencentcloud-cbs-tools/git/raw/master/devresize/devresize.py
2、本文以硬盘路径是/dev/vdb且文件系统在 vdb1 上为例,则执行:
python /tmp/devresize.py /dev/vdb
3、若输出 “The filesystem on /dev/vdb1 is now XXXXX blocks long.” 则表示扩容成功,请执行第5步。
4、若输出如下,则需要执行解除开机自动挂载某设备之后再卸载。
出现上述问题的原因是取消磁盘挂载后,使用df -lh确实未发现挂载信息。
但当执行扩容命令【python /tmp/devresize.py /dev/vdb】磁盘又自动挂载上去,导致扩容磁盘失败。
解决方法:解除开机自动挂载该磁盘,重启服务器后即可。
实现开机自动挂载或者解除开机自动挂载某设备,只要修改/etc/fstab文件即可。
(1)查看挂载设备的配置文件:
cat /etc/fstab
查看结果如下:
/dev/vdb1就是服务器开机自动挂载的磁盘,我们解除这个磁盘的开机自动挂载,就对这个磁盘进行扩容了。
(2)我们使用vi编辑器(vi编辑器是所有Unix及Linux系统下标准的编辑器)编辑一下 /etc/fstab。
输入:
vi /etc/fstab
默认进入命令行模式command mode),在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了,只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
注释掉 #/dev/vdb1
注释完成后,按「ESC」键可回到命令行模式,然后输入: wq「wq」,存盘并退出vi):
: wq
(输入: wq「wq」,存盘并退出vi)。
(3)以上完成了设备挂载的配置文件 /etc/fstab 的修改,接下来重启服务器。
(4)重启之后就可以轻松卸载磁盘了,执行:
umount /www
非常顺利,成功卸载了/www挂载的磁盘!
(5)再次执行:
python /tmp/devresize.py /dev/vdb
若输出的是 “[ERROR] - e2fsck failed!!”,请执行以下步骤: (6)执行以下命令,修复文件系统所在分区。
本文以硬盘路径是/dev/vdb且文件系统在 vdb1 上为例,则执行:
fsck -a /dev/vdb1
(7)修复成功后,再次执行以下命令,使用扩容工具进行扩容。
python /tmp/devresize.py /dev/vdb
提示是否创建快照,确保做好快照后输入y继续。
It will resize (/dev/vdb1).
This operation may take from several minutes to several hours, continue? [Y/n]
确认输入y
[INFO] - Backup MBR to /tmp/MBR_vdb1_2020-01-14_16:04:40_bak
[INFO] - mount /dev/vdb1 /tmp/mount_point_vdb_2020-01-14_16:04:30
[INFO] - resize filesystem
输出 “The filesystem on /dev/vdb1 is now XXXXX blocks long.” 表示扩容成功。
5、执行以下命令,手动挂载扩容后的分区。
本文以挂载点是/www为例,扩容前已有分区,分区路径是/dev/vdb1,则执行:
mount /dev/vdb1 /data
执行以下命令,查看扩容后的分区容量。
df -h
若返回类似如下图所示的信息,说明挂载成功:
执行以下命令,查看扩容后原分区的数据信息,确认新增加的存储空间是否扩容到文件系统中。
ll /www
如图上所示,大功告成!本人亲手制作!!!累死啦!!!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。