在虚拟机的管理中为了不浪费资源空间,有一个原则,就是宁可初始化空间分的比较小,随着使用情况而逐步增加,也不要初始化空间分很大,造成物理磁盘空间的浪费和不够用

因为虚拟机扩容相对容易,缩容比较困难(有丢失数据的风险)

下面为我的一次扩容操作记录,用于日后回顾备忘

问题场景:

/data分区不够用了,需要增加200G空间

 

操作步骤:

1.在VMWare ESXi中给虚拟机扩容

在虚拟机列表中找到待扩容的虚拟机,首先需要关闭待扩容的虚拟机:操作前为了以防万一最好先给虚拟机做个快照备份,关机要按照关闭应用,在虚拟机中关闭系统的步骤,不要直接用关闭电源选项
然后选中虚拟机 -> 编辑 -> 硬盘 -> 然后修改大小就好了(如下图所示)

 

注意:添加新硬盘应该也是可以的, 不过我一般是在原有硬盘上进行扩容,如果是灰色有可能是因为有快照导致不能改变磁盘信息, 可能需要先将快照删掉。

 

2.进入虚拟机查看系统分区情况(检查容量是否增加)

# 查看磁盘中使用情况
df -Th
# 查看当前系统的分区情况
lsblk

从下图可以看出sda分区已经扩容到400G,但是文件系统/dev/mapper/ubuntu--vg-lv--1中还是70G没有变,而且使用了85%了。

#查看磁盘情况
fdisk -l

发现有个报错:

GPT PMBR size mismatch (419430399 != 838860799) will be corrected by write.

这是正常现象,加完磁盘空间,系统信息和实际不一致所致

 

3.扩展分区

 (1)使用parted工具分配剩余的可用空间

#使用parted工具修复 /dev/sda分区
parted /dev/sda
#查看分区情况(用p也可以)
print
#扩展第三个分区(/dev/sda3)到100%
resizepart 3 100%
#退出工具
quit

 此时可以看到磁盘已修复,fdisk -l后不报错

 (2)刷新物理卷

#查看物理卷
pvdisplay
#刷新物理卷
pvresize /dev/sda3
#再次查看物理卷
pvdisplay

  (3)扩展逻辑分区

#查看所有逻辑分区
lvdisplay
#查看磁盘情况,确认要扩展的分区
df -h
#扩展分区
lvextend -l +100%FREE /dev/ubuntu-vg/lv-1
#确认逻辑分区扩展情况
lvdisplay
命令详解:
lvdisplay可以看到路径,但是不能确定哪个是/data分区

 这个时候可以用df -h辅助,确认路径为/dev/ubuntu-vg/lv-1

 使用命令扩展分区:lvextend -l +100%FREE /dev/ubuntu-vg/lv-1

 此时查看/data分区已扩展

 但是系统未更新

 (4)使扩展生效

resize2fs /dev/ubuntu-vg/lv-1

这里一开始使用xfs_growfs报错

使用resize2fs 执行成功

 原因为:

resize2fs 针对文件系统ext2 ext3 ext4
xfs_growfs 针对文件系统xfs

参考文档:https://blog.csdn.net/qq_41980563/article/details/102469164

命令详解:

 执行之后查看磁盘空间,扩容成功!

另这里通过df -Th可以确认文件系统为 ext4,所以用resize2fs命令

 至此系统扩容成功!

后记:

我这个是在线扩容

扩容还是建议遵循 卸载分区,扩容,装载分区的步骤

因为一开始参照另一种方法用fidisk分区时报如下错误

This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.

 当时并没有当回事,在线扩容的,虽然一切正常

谨慎起见,最好还是先卸载要扩容的磁盘,再操作

这个parted比另一个方式的扩容真的简洁不少,但是令我困惑的点是,这种方式一系列的步骤里并没有包含格式化步骤,他是如何使磁盘生效的,对此我还是疑惑不解。

 

参考文档:

https://blog.51cto.com/wemux/5661516

https://blog.csdn.net/qq_39983826/article/details/122339291

https://zhuanlan.zhihu.com/p/566390496?utm_id=0

 

 

-------------------------------------------下面为我的处理问题反思分割线,赶时间的客官可以略过--------------------------------------------------------

 其实发现parted扩容方式也是误打误撞,因为一开始我是参照这两个文档的:

https://blog.csdn.net/QIU176161650/article/details/118379783

https://blog.csdn.net/qq_36393978/article/details/130981612

但是第一步我就懵逼了:一开始想分区,结果有报错

GPT PMBR size mismatch (419430399 != 838860799) will be corrected by write.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.

 于是参照这个文档进行修复:https://blog.csdn.net/chengzixiannv/article/details/131242238

但是我执行 parted -l 之后,并没有跳出fix啊

 

 在我搜 GPT PMBR size mismatch (419430399 != 838860799) will be corrected by write. This disk is currently  这个报错时,无意中搜到了这个

https://blog.51cto.com/wemux/5661516

当时心想反正都是parted 命令,这个相当于手动修复呗,于是照着操作了下

之后再进行fidisk分区操作时,问题来了:

分区时发现,只能分出1007k空间,这还玩毛线

 

现在有两条路放在我面前,要么就是改回去,要么就是研究parted 分区方式是否可行

改回去还得面对那个GPT PMBR size mismatch 的问题,而且我也不知道怎么改,问题陷入两难

但是有一种直觉告诉我,parted 分区方式是可行的

 于是我开始着重搜索 《parted扩容》

后面搜到了这篇,顿时给我了定心丸

https://blog.csdn.net/qq_39983826/article/details/122339291

 后面又搜到了这篇

https://zhuanlan.zhihu.com/p/566390496?utm_id=0

好家伙,果然扩容有两种方式咧,顿时感觉我就是天才~

 

主要有两种方法:

方法一:fdisk进行分区

查看磁盘情况(lsblk、fdisk -l、pvdisplay)

创建分区(fdisk 磁盘名称)

创建物理卷(pvcreate)

将磁盘扩展到卷组(vgextend)

扩展逻辑分区(lvextend)

使扩展生效(xfs_growfs)

查看(df -H)

方法二:用parted命令调整大小

查看磁盘情况(parted /dev/sda print free)

分配剩余的可用空间(parted /dev/sda resizepart 2 100%)

刷新物理卷(pvresize /dev/sda2)

扩展逻辑分区(lvextend)

使扩展生效(xfs_growfs)

查看(df -H)

 

此时还是不放心,于是做了个服务器快照之后,开始操作,还好成功了~

不过好事多磨,最后那步还是有问题

因为好几个文档都是用的这个命令

一开始有点蒙,后来想到了另一个文档命令好像不一样

https://blog.51cto.com/wemux/5661516

于是又试了下,成功了~

最后搜索了下resize2fs和xfs_growfs

https://blog.csdn.net/qq_41980563/article/details/102469164

顿时豁然开朗

posted on 2023-12-22 15:33  06  阅读(870)  评论(0编辑  收藏  举报