本帖最后由 谢花郎 于 2020-3-30 11:23 编辑
当网站的业务量越来越多的时候,会发现数据盘已经容不下了,于是打算对数据盘进行扩容,由于以前照着阿里云的教程操作,导致网站一百多G的数据全部丢失,当时没有做备份和快照,导致后来手工操作7天7夜不休不眠的发布数据,流量下降了,数据也丢了,人也受累了,于是在今夜奋发学习,终于学得无损磁盘扩容的教程,以下图片来自于阿里云创建的抢占式实例。注:1,本教程只针对数据盘(文中绿色字体代表要输入的命令,紫色代表重点)
2,数据提前做好备份和快照
3,阿里云磁盘,宝塔面板,Centos 7的系统
4,我的服务器现有系统盘 /dev/vda1,数据盘/dev/vdb1,在远程连接中输入:df -h 回车

步骤:
一,阿里云后台在数据盘更多处点击磁盘扩容,选中在线扩容,我的原来是78G,扩充后154G,提交订单。发现在阿里云后台显示是154G,宝塔面板还是77G,文件系统约占1G。
二,停止相关的服务
1,停止宝塔的所有任务,在宝塔面板中计划任务中新建shell脚本任务,名称随便写,点击保存并点击执行。脚本内容如下:
- <font size="4" color="#2e8b57">#!/bin/bash
- PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
- export PATH
- stop_service(){
- /etc/init.d/bt stop
- if [ -f "/etc/init.d/nginx" ]; then
- /etc/init.d/nginx stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/httpd" ]; then
- /etc/init.d/httpd stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/mysqld" ]; then
- /etc/init.d/mysqld stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/pure-ftpd" ]; then
- /etc/init.d/pure-ftpd stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/tomcat" ]; then
- /etc/init.d/tomcat stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/redis" ]; then
- /etc/init.d/redis stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/memcached" ]; then
- /etc/init.d/memcached stop > /dev/null 2>&1
- fi
- if [ -f "/www/server/panel/data/502Task.pl" ]; then
- rm -f /www/server/panel/data/502Task.pl
- if [ -f "/etc/init.d/php-fpm-52" ]; then
- /etc/init.d/php-fpm-52 stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/php-fpm-53" ]; then
- /etc/init.d/php-fpm-53 stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/php-fpm-54" ]; then
- /etc/init.d/php-fpm-54 stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/php-fpm-55" ]; then
- /etc/init.d/php-fpm-55 stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/php-fpm-56" ]; then
- /etc/init.d/php-fpm-56 stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/php-fpm-70" ]; then
- /etc/init.d/php-fpm-70 stop > /dev/null 2>&1
- fi
- if [ -f "/etc/init.d/php-fpm-71" ]; then
- /etc/init.d/php-fpm-71 stop > /dev/null 2>&1
- fi
- fi
- swapoff /www/swap
- }
- stop_service</font>
复制代码 2,登陆SSH到服务器
(1)关闭swap分区: swapoff -a(2)卸载主机监控(部分主机商有): /usr/local/cloudmonitor/wrapper/bin/cloudmonitor.sh remove && \ rm -rf /usr/local/cloudmonitor(3)解除占用(把占用 /dev/vdb1 的进程杀死): fuser -m -k /dev/vdb1(4)卸载主分区: umount /dev/vdb1 使用 df -h 查看是否卸载成功,如果看不到 /dev/vdb1 的信息表示卸载成功。
提示:如果还看得到/dev/vdb1 则重复依次操作停止宝塔任务,关闭swap分区,卸载主机监控,解除占用,卸载主分区。 三,重点来了,操作磁盘 1,运行fdisk -l 命令, 上图中disk /dev/vda:64.4GB,说明系统盘是65G左右,disk /dev/vdb:165.4GB与阿里云后台的容量对应。 另外看/dev/vdb1 后面的相关信息,在中间一行End信息中为163577855,我的个人理解是163G的意思,系统也占几G。 2,运行fdisk /dev/vdb命令进入磁盘操作,为什么是/dev/vdb而不是图中的/dev/vdb1,这vdb代表一个磁盘的名称,与阿里云后台磁盘 名称是对应的,而vdb1则代表vdb磁盘的第1个分区(个人理解) 3,输入 d 并按回车键,删除原来的分区(删除分区不会造成数据盘内数据的丢失) 输入 n 并按回车键,开始创建新的分区 输入 p 并按回车键,选择创建主分区 输入 1 代表后default默认是1,应该也可以直接回车 然后就发现First sector (2048-322961407,deffault 2048),其中322961407大于上图中End中的163577855,则代表分区大于原来的分区。 当看到“… size 154GiB is set” 说明已经成功建立新的主分区
输入 wq 并按回车键,开始保存之前对分区的操作 四:更新文件系统信息 1,查文系统,命令为:e2fsck -f /dev/vdb1 2,变更文件系统大小,命令为:resize2fs /dev/vdb13,将扩容完成的文件系统挂载到原来的挂载点(如本示例中的用宝塔官方挂载的第一块磁盘位置 /www), 命令为:mount /dev/vdb1 /www4,输入命令 df -h 查看信息
看图中的信息,Size 是152G,应该是可用的空间,Avail 是145G。 五,收尾 执行完后扩容好磁盘后重新挂载上去后执行以下两条命令 swapon /www/swap
echo "True" > /www/server/panel/data/502Task.pl
最后别忘了启动宝塔服务 /etc/init.d/bt start
登陆宝塔后台,刷新一下看看空间是不是变成了可用的空间152G呢? |