前言
磁盘升级扩容后,需要进入云服务器系统,对相应的磁盘分区做原地扩容操作(将原磁盘分区扩容占满整个磁盘)。
我的情况是在我的esxi平台上的wubantu虚拟机,本来是16g发现硬盘不够了就加到了60g,是识别为同一块硬盘,但是分区还是以前的分区,所以宝塔面板进去还是只能识别16个g。所以需要删除之前的分区重新创建分区。并不会造成原来的数据丢失,只要把扇区开始的位置记住。
该文档解决什么问题?
本文档主要的应用场景:用户已经将宝塔Linux面板安装在数据盘(即/www目录已经挂载到数据盘分区)时,如果按照常规通用方法操作原地扩容,需要先对/www挂载的分区进行umount操作,但此时会碰到/www已经被宝塔Linux面板、MySQL等软件进程占用而无法umount的情况,需要用户手动去检查并关闭各个软件进程,该过程非常繁琐,不适合新手用户操作。
本篇文档就是为了解决以上问题,先通过修改/etc/fstab文件将/www的挂载信息注释掉,然后重启系统,这样就可以保证与/www目录相关的所有软件进程均无法启动成功,从而避免了繁琐的操作。
如果你的云服务器没有安装宝塔Linux面板(或数据盘没有挂载到/www目录),请勿参考该文档,请参考:Linux磁盘分区原地扩容通用方法。
分区原地扩容步骤
1、为了让正在运行的宝塔面板等进程不要占用磁盘分区,我们需要先将分区挂载信息注释掉,挂载信息存储在/etc/fstab文件,先编辑它:
如果改不了加sudo。
vi /etc/fstab
2、找到记录/www宝塔运行目录挂载信息的那一行,在其前面插入#号即可,参考如下方法:
注:如果您的宝塔面板开启了swap分区,那么在/etc/fstab文件中是可以看到一行关于swap分区挂载的信息,如有swap字样的挂载行,也需要在该行的前面插入#号。
在我这里,swap和主分区的位置是写在一起的,很方便就找到了。
3、修改完/etc/fstab文件后,我们需要重启系统,输入如下命令即可重启,reboot也行,加sudo):
init 6
4、现在,我们开始执行命令
fdisk -l
查看已有磁盘分区情况,如下图,我们可以看到/dev/vdb1分区,记住开始位置(start),这里为2048 sectors。
然后,执行命令
parted -l
查看分区的容量情况,可以看到原磁盘分区/dev/vdb1容量为11.2GB,而整块磁盘确为21.5GB。
此时,我们需要删除旧分区(并不会删除数据),并新建一个新分区,如下为命令
fdisk /dev/vdb
d 删除原有分区(如有您之前分了多个分区,这里会要求您输入要删除的分区号)
n 新建分区
p 主分区
1 新分区号(或者 直接输入回车键即可)
2048 (推荐: 直接输入回车键即可)注意:这里表示分区的开始/起始位置,需跟之前分区的开始位置保持一致,一般直接输入回车键即可。
41943039 (推荐:直接输入回车键即可)注意:这里表示分区的结束位置,这个得根据自己磁盘容量情况来写,不输入数字而直接默认回车表示将剩余容量全部分配到分区中。
w 保存变更
以上过程的执行结果如图:
执行命令 fdisk -l 查看分区后的情况
执行命令 e2fsck -f /dev/vdb1 对新分区进行检测
注:仅针对ext2/2xt3/ext4文件系统格式,如果分区是xfs文件系统格式,请忽略此步骤。
执行命令 resize2fs /dev/vdb1 对新分区进行扩容更正。
注:以上resize2fs 命令仅仅针对 ext2/ext3/ext4 文件格式,如果你的分区文件格式为xfs(比如备份的系统盘就是这种格式),应使用命令 xfs_growfs [磁盘分区名称,如/dev/vdc1] 对新分区进行扩容更正。(如何查看分区的文件系统格式:使用命令 parted -l )。
我在这里遇到了分区被占用不能修改的问题,需要先unmount卸掉分区,后发现应该是宝塔的服务因为没有关闭自启动,在重启后又运行了造成了占用。解决方法就是关闭宝塔服务systemctl stop bt,然后再运行 resize2fs /dev/vdb1
接着,我们需要把第一步注释掉的/www挂载信息给还原;
输入以下命令,开始编辑挂载信息
vi /etc/fstab
按下图去除刚才注释的#号:
最后,输入重启命令 init 6 以重启系统,等待5~10分钟系统启动后即可正常使用宝塔,分区原地扩容至此也操作完成了。