OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?

在 OCI 上创建测试主机时,明明给启动盘分配了 200G,但进入系统后执行 df -h,根目录却只有 30G 左右。这种情况并不是磁盘没有分配成功,而是分区和 LVM 还没有把剩余空间用起来。

01 | 先看 200G 到底在不在

笔者环境中,df -h 看到的是文件系统大小:

bash 复制代码
/dev/mapper/ocivolume-root 30G 8.7G 21G 30% /
/dev/mapper/ocivolume-oled 15G 140M 15G 1% /var/oled

这会让人误以为系统盘只有几十 G。

lsblk 里已经能看到整块磁盘是 200G:

bash 复制代码
sda 8:0 0 200G 0 disk

也就是说,OCI 已经把 200G 的启动盘分配给这台虚拟机了。问题不在云盘容量,而在系统内部的分区和 LVM 还没有扩展。

02 | 为什么根目录只有 30G?

继续看 lsblk

bash 复制代码
sda
├─sda1 100M /boot/efi
├─sda2 2G /boot
└─sda3 44.5G
 ├─ocivolume-root 29.5G /
 └─ocivolume-oled 15G /var/oled

这里的关键点是:虽然物理盘 sda 是 200G,但真正加入 LVM 的分区 sda3 只有 44.5G。

vgspvs 也能看到同样的信息:

bash 复制代码
VG VSize VFree
ocivolume 44.50g 0
bash 复制代码
PV VG PSize PFree
/dev/sda3 ocivolume 44.50g 0

也就是说,当前 LVM 卷组只有 44.5G,里面又被切成了两个逻辑卷:29.5G 给 /,15G 给 /var/oled

剩下大约 153G 仍然躺在 sda 这块 200G 磁盘里,但还没有分配给 sda3,也没有进入 LVM 卷组,所以 df -h 看不到。

03 | 把剩余空间扩到根目录

处理思路分四步:先扩分区,再扩 LVM 物理卷,然后扩逻辑卷,最后扩文件系统。

① 扩大 sda3 分区

让第三个分区 sda3 使用后面的剩余空间:

bash 复制代码
sudo growpart /dev/sda 3

② 刷新 LVM 物理卷

分区变大后,让 LVM 识别新的空间:

bash 复制代码
sudo pvresize /dev/sda3

③ 扩大 root 逻辑卷

把卷组中的空闲空间全部分配给根目录对应的逻辑卷:

bash 复制代码
sudo lvextend -l +100%FREE /dev/ocivolume/root

④ 扩大文件系统

笔者环境中的根目录使用 XFS 文件系统,因此使用:

bash 复制代码
sudo xfs_growfs /

执行完成后,再检查根目录大小:

bash 复制代码
df -h /

此时 /dev/mapper/ocivolume-root 的容量会从 30G 左右扩展到 180G+。这时,原本没有被使用的剩余空间才真正变成根目录可用空间。

关注我,和AI一起成长~

相关推荐
AlfredZhao16 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈2 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
凡人叶枫2 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++