前言
- 搜素了半天关于ubuntu扩容的方法,基本都是用gparted,可是本人的虚拟机抽风无法使用这个工具,提示tmp.mount不存在,同时Can’t connect to “”,找了半天并没有找到好的解决方案,先占坑。
- 使用命令行扩容的没有提到本文的天坑,同时过程繁杂,例如按照这篇点我跳转会在扩展的时候提示超出定义范围,本文后续会解决这个问题。
- 同时有几个是centos的教程,但是我使用
vgdisplay
命令没有输出值,为了避免其他问题,没有往下实践了
解决方案
扩展内存的时候,可能会因为无桌面或者未知因素无法使用图形化工具gparted
,此时只能使用纯命令行来分配内存:
-
删除需要扩容虚拟机的所有快照,然后才能在
硬件 - 硬盘 - 扩展
扩展虚拟内存,和gparted相关教程中对VMWare的操作方式一样
-
进入虚拟机
-
查看内存情况
df -h
我们只关心我们需要扩容的目录,比如
/
Filesystem Size Used Avail Use% Mounted on /dev/sda5 20G 19G 1G 98% / ...
可以看到
/
在/dev/sda5
分区 -
查看逻辑分区的实际情况,
/dev/sda5/
实际上在/dev/sda/
下,可以通过以下命令验证cd /dev ls
目录下应该会有
sda
为前缀的逻辑分区 -
查看
/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里面的。
- 因此我们想要扩容sda5,需要先扩容sda2,如果直接扩容sda5会提示超出范围而失败。使用以下命令扩容,设置的值为End值,计算方法为Start + 扩容后大小
- 用同样方法扩容
sda5
,但是要在sda2
分区的Start End范围内
- 可以看到逻辑分区已经划分成功了,接下来就更新文件系统:
-
如果分区是ext2、ext3或ext4类型的,则可以使用以下命令进行文件系统调整(坑2:只需要更新实际使用的逻辑分区sda5,更新sda2会报错):
- 更新sda2报错:
- 更新
sda5
即可
- 更新sda2报错:
-
如果分区是其他类型的文件系统(如XFS下扩容),则需要使用相应的工具进行文件系统调整
-
- 重启虚拟机
- End -