前言
最近发现 Ubuntu 服务器莫名其妙卡死
登上去看了下原来是硬盘满了
但是使用 df -h 查看后很奇怪,我明明在 PVE 里分配了32G空间,但在 Ubuntu 里查看只有 16G
bash
$ df -h
/dev/mapper/ubuntu--vg-ubuntu--lv 15G 14G 0 100% /
???明明分的是 32G,怎么只有 15G?这不是凭空消失了一半空间吗?
我一开始还以为 PVE 的磁盘配置出错了,后来才发现------真不是它的锅。
非常的奇怪
经过研究之后,原因是PVE分配的虚拟磁盘用了LVM
整个情况涉及 虚拟化磁盘、分区、LVM 逻辑卷和文件系统 这几层关系
真相
原来,Ubuntu 安装时默认启用了 LVM(逻辑卷管理器)。
LVM 的逻辑是:先把整块磁盘做成一个"卷组"(VG),然后从里面再划分出若干个"逻辑卷"(LV)来挂载使用。
问题就出在这里------安装程序默认只给根目录分了大概一半空间。
所以虽然虚拟磁盘是 32G,但根目录只分到了 16G,其余的空间静静地躺在卷组里没人用。
有点像你买了 32G 的 U 盘,却只分了一个 16G 的区用,剩下的部分被遗忘在角落。
扩容
知道原因就好办了,简单三步:
在 Ubuntu 服务器里执行
bash
# 1. 查看卷组剩余空间
# 里面会显示 Free PE / Size,也就是卷组里未分配的空间。
vgdisplay
# 2. 扩展根逻辑卷,把所有剩余空间都用上
# 这里 +100%FREE 表示把卷组里剩余的空间全给这个逻辑卷。
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
# 3. 扩展文件系统,让它真正能用上空间
resize2fs /dev/ubuntu-vg/ubuntu-lv
这里默认文件系统是 ext4,所以用 resize2fs 命令
如果是xfs,则用 xfs_growfs /
然后再 df -h 一看,完美!
bash
/dev/mapper/ubuntu--vg-ubuntu--lv 31G 14G 17G 45% /
小结
这次算是被 LVM 上了一课
我之前都没咋用过 LVM
以后再看到"分了 32G 却只显示 15G"这种情况,可以试试本文的解决方式