• 解决虚拟机磁盘满了,无法上传文件,给虚拟机扩容问题


    1:问题描述

    在本地virtualbox创建的虚拟机中,已有了mysql服务,从外部打包了一个数据库,想要导入到这个虚机的数据库中,将这个sql文件上传到虚机时,执行命令
    df -h
    发现此时虚拟机的磁盘已经用尽(只怪自己当初创建虚拟机时没有分配更多的磁盘),如下图所示
    在这里插入图片描述
    此外,由于磁盘空间用尽,mysql服务也宕机了,且无法启动,报错如下

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
    
    • 1

    此时想要启动mysql,必须要释放磁盘空间,方法有2种:
    (1)删除无用的大文件
    (2)扩容

    2:问题解决

    (1)删除无用的大文件

    这个方法要找到大文件的位置,可以通过在不同的目录下执行如下命令,可以查看当前目录下各个文件所占空间大小

    du -sh *
    
    • 1

    结果如下,可以酌情删除

    [root@localhost opt]# du -sh *
    684M    lbaas
    550M    x86_20220527.tar.gz
    211M    x86_20220822.tar.gz
    
    • 1
    • 2
    • 3
    • 4

    在我删除掉一些大文件后,磁盘空间降了下来,
    在这里插入图片描述
    但是这种方式需要自己去找大文件,而且必须要提供足够大的空间,同时还要注意经常清理,最难受的是,一旦想要上传到该虚拟机上的文件过大,就会再次崩溃。因此,我推荐方法(2),一劳永逸。

    (2)扩容

    步骤1:分配额外的磁盘空间

    首先要先关闭虚拟机(virtualbox似乎不支持热扩容),不然如下的配置是灰色,不可操作。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    事情到此,还没有结束,因为系统还没有识别到新的磁盘,接着向下操作

    步骤2:识别并挂载磁盘

    首先打开虚拟机
    在这里插入图片描述
    登录后,我们执行一下命令df -h后发现,我们的磁盘空间还是36G,新的4G没有算在内,这是因为系统还没有识别到这个磁盘。
    在这里插入图片描述

    1:查看当前虚拟机磁盘

    lsblk
    
    • 1

    输入命令后,能够查看到我们新建的这个磁盘,名字叫sdc,如果你是第一次扩容,名字默认是sdb我们能够看到,之前的sda和第一次我扩容的sdb都在root下,sdc还没有关联上。
    在这里插入图片描述

    2:接着输入命令查看磁盘编号,即返回结果sdc位置

    ls /dev/sd*
    
    • 1

    结果如下
    在这里插入图片描述

    3:创建pv

    注意,这里要写你刚创建的盘名,如果你第一次创建,应该是sdb

    pvcreate /dev/sdc
    
    • 1

    如下结果表明创建成功

    [root@localhost ~]# pvcreate /dev/sdc
      Physical volume "/dev/sdc" successfully created.
    
    • 1
    • 2

    4:将pv加入到虚拟硬盘组中,扩容

    先查询现在的vg组信息,输入vgs

    vgs
    
    • 1

    结果如下,说明此时4G的新空间还没有挂载上来,这里注意如下结果所示,当前的组名为c1,这个名字具体是什么,取决于你自己的虚拟机。

    [root@localhost ~]# vgs
      VG #PV #LV #SN Attr   VSize  VFree  
      cl   2   2   0 wz--n- 36.99g 228.00m
    
    • 1
    • 2
    • 3

    扩展这个虚拟硬盘组(注意这里是c1的组,且sdc和sdb的区别这里不再赘述)

    vgextend cl /dev/sdc
    
    • 1

    结果如下,说明成功扩展vg的卷

    [root@localhost opt]# vgextend cl /dev/sdb
      Volume group "cl" successfully extended
    
    • 1
    • 2

    扩展了vg后我们再执行命令vgs,发现已经扩展了,变为40G了
    在这里插入图片描述
    不过到这里还差最后一步,才会在df -h中显示新的盘符,实现扩容。

    5:扩展lv

    先查看lv的信息,输入如下命令

    lvs
    
    • 1

    结果如下,发现还是只有原来的大小
    在这里插入图片描述
    输入命令如下,注意,下面命令的cl-root的来源是vg的名称和root用户的拼接也可以看做df-h后显示的文件系统的名称

    lvextend -L +4G /dev/mapper/cl-root
    
    • 1


    执行结果如下

    [root@localhost ~]# lvextend -L +4G /dev/mapper/cl-root
      Size of logical volume cl/root changed from 35.97 GiB (9208 extents) to 39.97 GiB (10232 extents).
      Logical volume cl/root successfully resized.
    
    • 1
    • 2
    • 3

    6:让系统重新识别盘符

    输入如下命令,同样注意cl-root的名称

    xfs_growfs /dev/mapper/cl-root
    
    • 1

    在这里插入图片描述

    7:查看磁盘空间df -h

    df -h
    
    • 1

    如下结果,说明扩容成功。
    在这里插入图片描述

  • 相关阅读:
    17-GuliMall 搭建虚拟域名访问环境
    在ESP32上使用Arduino(Arduino as an ESP-IDF component)
    VNC Viewer安装教程(保姆级安装)
    C语言IO操作fread/fwrite/fflush
    Hadoop-2.7.3完全分布式集群搭建(Centos7系统)
    Day08--组件通信-使用属性绑定实现父向子传递数据
    网站服务器该怎么选择呢?
    Android 10 状态栏通知图标和下拉状态栏图标为白色问题
    CSS的语法规则——基础选择器
    第5章 自定义存储模块功能实现
  • 原文地址:https://blog.csdn.net/qq_21583139/article/details/126513380