前言

  1. 搜素了半天关于ubuntu扩容的方法,基本都是用gparted,可是本人的虚拟机抽风无法使用这个工具,提示tmp.mount不存在,同时Can’t connect to “”,找了半天并没有找到好的解决方案,先占坑。
  2. 使用命令行扩容的没有提到本文的天坑,同时过程繁杂,例如按照这篇点我跳转会在扩展的时候提示超出定义范围,本文后续会解决这个问题。
  3. 同时有几个是centos的教程,但是我使用vgdisplay命令没有输出值,为了避免其他问题,没有往下实践了

解决方案

扩展内存的时候,可能会因为无桌面或者未知因素无法使用图形化工具gparted,此时只能使用纯命令行来分配内存:

  1. 删除需要扩容虚拟机的所有快照,然后才能在硬件 - 硬盘 - 扩展扩展虚拟内存,和gparted相关教程中对VMWare的操作方式一样
    在这里插入图片描述

  2. 进入虚拟机

  3. 查看内存情况

    df -h
    

    我们只关心我们需要扩容的目录,比如/

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda5   20G  19G    1G  98% /	
    ...
    

    可以看到//dev/sda5分区

  4. 查看逻辑分区的实际情况,/dev/sda5/实际上在/dev/sda/下,可以通过以下命令验证

    cd /dev
    ls
    

    目录下应该会有sda为前缀的逻辑分区

  5. 查看/dev/sda情况

    $ sudo parted /dev/sda
    GNU Parted 3.3
    Using /dev/sda
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted)p free
    

    在这里插入图片描述

5分区下面的free space实际上就是新扩展的内存的地址范围,因此如果我们想要精确分配内存空间,比如使用unit命令定义内存单位值再扩容时,需要保证分配的空间的值小于free space的End值,参考

坑1:sda2与sda5关系是包含关系,因为大多数人使用VMware创建虚拟机的时候,都是设置的虚拟内存,设置的内存并不是占用内存,因此sda5实际上是包含在sda2里面的。

  1. 因此我们想要扩容sda5,需要先扩容sda2,如果直接扩容sda5会提示超出范围而失败。使用以下命令扩容,设置的值为End值,计算方法为Start + 扩容后大小
    在这里插入图片描述
  2. 用同样方法扩容sda5,但是要在sda2分区的Start End范围内
    在这里插入图片描述
  3. 可以看到逻辑分区已经划分成功了,接下来就更新文件系统:
    • 如果分区是ext2、ext3或ext4类型的,则可以使用以下命令进行文件系统调整(坑2:只需要更新实际使用的逻辑分区sda5,更新sda2会报错):

      • 更新sda2报错:
        在这里插入图片描述
      • 更新sda5即可
        在这里插入图片描述
    • 如果分区是其他类型的文件系统(如XFS下扩容),则需要使用相应的工具进行文件系统调整

  4. 重启虚拟机

- End -

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐