在虚拟机的管理中为了不浪费资源空间,有一个原则,就是宁可初始化空间分的比较小,随着使用情况而逐步增加,也不要初始化空间分很大,造成物理磁盘空间的浪费和不够用
因为虚拟机扩容相对容易,缩容比较困难(有丢失数据的风险)
下面为我的一次扩容操作记录,用于日后回顾备忘
问题场景:
/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也可以)
#扩展第三个分区(/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
resize2fs 针对文件系统ext2 ext3 ext4
xfs_growfs 针对文件系统xfs
https://blog.csdn.net/qq_41980563/article/details/102469164
顿时豁然开朗
---------------------------------------------------------后记---------------------------------------------------------------
后来发现 VMWare ESXI编辑设置硬盘为灰色无法修改大小
解决办法:
经过分析和网上查看发现这是由于当前虚拟机存在快照,从而锁定了磁盘空间容量,删除快照即可解决此问题。
如果快照中存在重要节点备份,在删除前请考虑清楚,删除后快照无法恢复。修改磁盘大小有风险的,扩展磁盘大小必须删除快照,恰恰快照又是系统备份重要的手段,如何解决这个矛盾呢,系统确实很重要的话,建议克隆备份。