1、问题发现 500G磁盘空间去哪里了
2、问题分析:
2.1 问题验证;
验证命令:
parted /dev/vda print free
现状确认
根据parted输出,你的磁盘情况已经完全明确:
- 磁盘总容量:537GB(对应标称 500GB 磁盘,属于十进制与二进制计算的正常差值)
- 已分配空间:共约 129GB
/dev/vda1:1GB,主分区,/boot启动分区/dev/vda2:128GB,主分区,LVM 物理卷
- 未分配空闲空间:408GB,位于磁盘尾部,完全未创建分区、未被系统使用
- 分区表类型:
msdos(MBR 格式),当前仅 2 个主分区,可直接新建第 3 个主分区
3、 完整扩容根分区操作步骤
3.1 磁盘查看
结合fdisk -l输出,磁盘结构已完全明确:
- 磁盘总容量:
/dev/vda总计 500 GiB - 已分配分区
/dev/vda1:1 GiB,普通 Linux 分区,为/boot启动分区/dev/vda2:119 GiB,类型8e(Linux LVM),是当前系统 LVM 的物理卷,承载根分区和交换分区
- 未分配空间:约 380 GiB,位于磁盘尾部,未创建任何分区,因此系统无法识别使用
- 分区表类型:
dos(MBR 格式),当前仅 2 个主分区,可直接创建第 3 个主分区,无需扩展分区
3.2 步骤1:新建 LVM 分区
fdisk /dev/vda # 进入 /dev/vda 磁盘的分区编辑交互界面
进入交互界面后,按以下顺序输入指令:
n # 指令:新建一个分区
p # 选择分区类型:主分区(primary),MBR分区表支持最多4个主分区
3 # 分区编号:默认3即可(直接回车也会默认取3),对应最终分区名 /dev/vda3
# 起始扇区:直接回车,系统会自动从磁盘空闲空间的起点开始分配
# 结束扇区:直接回车,系统会自动占用全部剩余空闲空间
t # 指令:修改分区的类型ID
3 # 选择目标分区:刚创建的第3个分区 8e
# 将分区类型设置为 Linux LVM,只有LVM类型的分区才能加入逻辑卷
p # 【可选,强烈建议执行】打印当前分区表,核对新分区的大小、类型是否正确 w # 指令:保存分区表修改并退出 fdisk 工具
你现在处于 MBR(dos)分区表的 fdisk 交互中,p主分区和e扩展分区是 MBR 架构下的特有概念,核心区别在于能否直接使用和分区数量限制。
为什么不建议选 e:
- 你的需求只是新增 1 个分区用来扩容 LVM,完全用不到多分区,主分区一步就能完成。
- 如果坚持用扩展分区,后续你还必须在扩展分区里再创建 1 个逻辑分区(如
/dev/vda5),才能继续做 pvcreate 扩容,平白多了一层嵌套,没有任何实际价值。
只有当你需要把一块磁盘分成5 个及以上独立分区的时候,才需要用到扩展分区。例如:
- 老 Windows 机器要分 C、D、E、F、G 多个盘符
- 服务器需要单独拆分 /home、/var、/data、/opt 等超过 4 个独立挂载点
你的场景只需要 1 个分区给 LVM,用主分区是最简洁、最标准的做法。
p # 【可选,强烈建议执行】打印当前分区表,核对新分区的大小、类型是否正确
w # 指令:保存分区表修改并退出 fdisk 工具
3.3 步骤 2:刷新内核分区表,让系统识别新分区
# 让内核重新读取 /dev/vda 的分区表,识别刚创建的 /dev/vda3
# 查看系统块设备列表 验证本步是否成功 lsblk
输出中如果能看到vda下新增了vda3分区,说明分区创建并识别成功,继续下一步。
3.4 步骤 3:将新分区初始化为 LVM 物理卷(PV)
LVM 体系中,磁盘分区必须先初始化为物理卷(PV),才能加入容量池。
# 在 /dev/vda3 分区上初始化 LVM 物理卷元数据 pvcreate /dev/vda3
验证本步是否成功 pvs
输出中出现/dev/vda3条目,且 VG 列为空(还未加入卷组),即为正常。
3.5 步骤 4:将新物理卷加入现有卷组(VG),扩容容量池
卷组(VG)是 LVM 的容量池,把新 PV 加进去后,池子里就多了可用空间。
# 将 /dev/vda3 物理卷加入名为 openeuler 的卷组 vgextend openeuler /dev/vda3
验证本步是否成功 # 列出系统中所有卷组信息 vgs
输出中openeuler卷组的VSize(总容量)会变大,VFree(空闲容量)会显示约 400G,即为扩容成功。
3.6 步骤 5:扩展根目录逻辑卷(LV),分配全部空闲空间
卷组有了空闲空间后,需要把空间分配给根分区对应的逻辑卷。
# 将卷组中 100% 的空闲空间,全部追加给根逻辑卷 openeuler-root
# -l +100%FREE:参数含义为「追加所有剩余空闲空间」
lvextend -l +100%FREE /dev/mapper/openeuler-root
验证本步是否成功 # 列出所有逻辑卷信息 lvs
输出中root逻辑卷的LSize(容量)已变大,说明逻辑卷扩容完成。
注意:此时df命令看到的容量还不会变,因为文件系统还没识别新空间。
3.7 步骤 6:扩容 ext4 文件系统,让系统识别新增空间
逻辑卷只是块设备变大了,上面的文件系统还需要单独扩容才能使用新空间。
# 在线扩容 ext4 文件系统,无需卸载分区,运行中的业务无感知
resize2fs /dev/mapper/openeuler-root
原理说明:ext4 文件系统原生支持内核态在线扩容,扩容过程中分区可以正常读写,仅会有极轻微的 IO 延迟,业务完全无感知。
3.8 步骤 7:最终验证扩容结果
# 以人类可读格式 + 显示文件系统类型,查看所有挂载点的容量
4、 关于MBR(dos)分区表
先讲大前提:MBR 的天生限制
把整块硬盘想象成一个大仓库,分区表就是仓库门口的房间登记本。 MBR 分区表的登记本天生只有 4 页,最多只能登记 4 个独立房间 —— 这就是 “最多 4 个主分区” 的来源。
1. 主分区(Primary,选项 p)
- 就是直接登记在登记本上的独立房间,可以直接格式化、存数据,也可以作为系统启动分区。
- 数量限制:MBR 磁盘最多 4 个主分区。
- 你的系统里,
vda1(/boot)和vda2(LVM)就是两个主分区,直接创建、直接使用。
2. 扩展分区(Extended,选项 e)
- 它本质是一个特殊的 “空套间”,同样占用 1 个主分区名额(占登记本 1 页),但它本身不能格式化、不能存数据。
- 它唯一的作用:在套间内部再隔出多个小房间,这些小房间叫逻辑分区(编号固定从 5 开始,比如
vda5、vda6)。
存在的意义:突破 “MBR 最多 4 个分区” 的数量限制。