ZeroTermux 内置命令手册深度解读:vgdisplay 显示 LVM 卷组信息
ZeroTermux 内置命令手册深度解读:vgdisplay 显示 LVM 卷组信息
vgdisplay 是 Linux 逻辑卷管理(LVM)体系中用于显示卷组(Volume Group)属性信息的核心查询命令。本文以 ZeroTermux 内置命令手册中的 vgdisplay.md 为骨架,结合仓库内同系列 LVM 命令文档与源码实现,系统讲解 vgdisplay 的语法、选项、输出字段语义,并给出从"扫描卷组 → 查看详情 → 扩容/缩容 → 删除"的完整实战流程。读完本文,你将能熟练使用 vgdisplay 排查卷组空间分配情况,并在 ZeroTermux 内随时查阅该命令的完整手册。
vgdisplay 是什么:LVM 卷组信息查看命令
vgdisplay(Volume Group Display)用于显示 LVM 卷组的信息。如果不指定"卷组"参数,则分别显示所有卷组的属性。
要理解 vgdisplay 的价值,先要厘清 LVM 的三层抽象模型:
- 物理卷 PV(Physical Volume):对应实际硬盘分区(如
/dev/sdb1),是 LVM 存储的基本单元,可通过 pvdisplay.md 查看其属性; - 卷组 VG(Volume Group):由一个或多个物理卷汇聚而成的存储池,屏蔽了底层物理卷的细节,是 vgdisplay 的查询对象;
- 逻辑卷 LV(Logical Volume):在卷组之上划分出的可直接格式化、挂载使用的逻辑设备,可用 lvdisplay.md 查看。
在 ZeroTermux 内置的 Linux 命令手册体系中,vgdisplay 与 vgscan、vgcreate、vgchange、vgextend 等同属卷组管理命令族,共同存放在 app/src/main/assets/cmd/ 目录下,按命令名一一对应的 Markdown 文档组织。
命令语法与选项参数
语法
vgdisplay(选项)(参数)
选项
| 选项 | 说明 |
|---|---|
-A |
仅显示活动卷组的属性(Active volume groups) |
-s |
使用短格式输出信息(short format) |
参数
卷组:要显示属性的卷组名称。省略该参数时,vgdisplay 会分别显示系统中所有卷组的属性。
从源码结构看,ZeroTermux 的命令手册文档严格遵循"命令名 + 语法 + 选项 + 参数 + 实例"的统一编排格式,vgdisplay.md 即采用这一结构,便于在 App 内渲染后快速定位关键信息。
实战示例:显示卷组 vg1000 的属性
使用 vgdisplay 命令显示存在的卷组 vg1000 的属性,在命令行中输入:
[root@localhost ~]# vgdisplay vg1000 #显示卷组"vg1000"的属性
输出信息如下:
--- Volume group ---
VG Name vg1000
......省略部分输出内容......
free PE / Size 50 / 200.00 MB
VG UUID ICprwg-ZmhA-JKYF-WYuy-jNHa-AyCN-ZS5F7B
输出字段解读
对照原文档给出的输出样例,几个关键字段的含义如下:
VG Name:卷组名称,即命令参数中指定的卷组标识;free PE / Size:该卷组当前剩余(未分配)的物理扩展块数量及其对应容量。示例中表示还剩 50 个 PE、共 200.00 MB 可用空间,这是判断"卷组是否还能继续创建/扩展逻辑卷"的最直接依据;VG UUID:卷组的全局唯一标识符,由 LVM 在创建卷组时自动生成。即使两个卷组同名,其 UUID 也互不相同,常用于在脚本或工具中精确区分卷组。
在 LVM 的完整输出中,卷组详情通常还会包含访问权限(VG Access)、状态(VG Status)、当前逻辑卷/物理卷数量(Cur LV / Cur PV)、最大物理卷数(Max PV)、PE 大小(PE Size)、总 PE 数(Total PE)、已分配 PE 数(Alloc PE)等字段,与上述字段共同构成卷组的完整画像。
PE 与 UUID 的深层含义
- PE(Physical Extent):物理卷被划分成的固定大小的最小分配单位,其大小在创建卷组时由
-s选项决定。逻辑卷的大小总是 PE 的整数倍,因此free PE / Size中 PE 数 × PE 大小 = 剩余容量。示例中 50 个 PE 对应 200.00 MB,可推知该卷组的 PE 大小为 4 MB; - UUID:LVM 元数据中的稳定标识。只要卷组不被删除重建,UUID 就不会改变,可用于在
/etc/fstab、备份脚本等场景中稳定引用卷组。
与其他命令协同:构建卷组查询工作流
vgdisplay 通常不单独使用,而是与卷组管理命令族配合,形成完整的运维闭环:
- 扫描卷组:先使用 vgscan.md 查找系统中存在的 LVM 卷组,得到卷组名称列表:
[root@localhost ~]# vgscan #扫描并显示LVM卷组列表
Found volume group "vg2000" using metadata type lvm2
Found volume group "vg1000" using metadata type lvm2
再针对具体卷组执行 vgdisplay vg1000 查看详细信息——vgscan 只给出卷组名称与元数据类型,要得到卷组的完整属性必须使用 vgdisplay。
- 创建卷组:用 vgcreate.md 将物理卷组织为卷组,创建时可通过
-s指定 PE 大小、-l限定最大逻辑卷数、-p限定最大物理卷数:
[root@localhost ~]# vgcreate vg1000 /dev/sdb1 /dev/sdb2 #创建卷组"vg1000"
Volume group "vg1000" successfully created
- 查询验证:创建完成后即可用
vgdisplay vg1000验证卷组属性是否符合预期(PE 大小、总容量、可用空间等)。
卷组生命周期管理速览
vgdisplay 位于卷组管理的"读"端,与之配套的"写"端命令在 ZeroTermux 手册中同样有完整文档,构成卷组从创建到删除的完整生命周期:
| 阶段 | 命令 | 说明 |
|---|---|---|
| 创建 | vgcreate.md | 创建卷组并加入物理卷 |
| 激活/停用 | vgchange.md | 如 vgchange -ay vg1000 激活卷组、-an 停用;活动状态的卷组无法被删除 |
| 扩容 | vgextend.md | 向卷组动态添加物理卷,如 vgextend vg2000 /dev/sdb2 |
| 缩容 | vgreduce.md | 从卷组移除物理卷(不能移除最后一个物理卷),--removemissing 可清理丢失的物理卷 |
| 格式转换 | vgconvert.md | 将 LVM1 格式卷组转换为 LVM2,如 vgconvert -M2 vg1000(转换前须先 vgchange -an 停用) |
| 删除 | vgremove.md | 删除卷组,如 vgremove vg1000;卷组上已有逻辑卷时需确认,-f 可强制删除 |
在使用扩容、缩容、删除等操作前后,都应当用 vgdisplay 复核卷组的 Total PE、Alloc PE 与 free PE / Size 变化,确保操作结果与预期一致。
在 ZeroTermux 中查阅 vgdisplay 手册
ZeroTermux 将 vgdisplay 等数百条 Linux 命令的中文手册以 Markdown 文档形式内置在 app/src/main/assets/cmd/ 目录中。用户通过终端侧边栏(BoomWindow)点击"命令"入口即可打开命令手册对话框:
- 触发入口位于 BoomWindow.java,点击"命令"按钮后实例化
CommandDialog并弹出; - 命令列表由 CommandDialog.java 的
initData()通过AssetManager.list("cmd")动态读取 assets 目录生成,并支持输入关键字实时过滤排序; - 点击具体命令后,
showCmdDetail()(CommandDialog.java)使用 commonmark 库将对应.md文件解析为 HTML,通过 WebView 展示,因此本文展示的语法、选项、参数与实例格式在 App 内即是以文档原样呈现的。
也就是说,在 ZeroTermux 中打开命令手册,搜索 vgdisplay,即可直接看到本文所讲解的全部内容;配合其内置的 Linux 环境,可边查边练,对照文档逐字段验证真实输出。
小结
vgdisplay 是 LVM 卷组信息查询的基础命令,核心用法可概括为:
- 不加参数查看所有卷组,加卷组名查看指定卷组;
-A只看活动卷组,-s使用短格式输出;- 重点阅读
PE Size、Total PE、Alloc PE / Size、free PE / Size与VG UUID字段,即可快速掌握卷组的容量分配状况。
在实际运维中,建议将 vgdisplay 与 vgscan、vgcreate、vgextend、vgreduce、vgchange、vgremove 等命令族配合使用,并结合 ZeroTermux 内置手册(vgdisplay.md)随查随学,形成完整的 LVM 卷组管理能力。