vgs命令用于显示卷组的详细信息,包括卷组名称、大小、可用空间、包含的物理卷数量、逻辑卷数量等。它是vgdisplay命令的简化版本,输出格式更紧凑易读,特别适合快速查看系统上的卷组状态。
vgs [选项] [卷组名]
| 选项 | 说明 |
|---|---|
-a, --all |
显示所有卷组(包括未激活的) |
-o, --options |
指定输出字段 |
--noheadings |
不显示标题行 |
--units |
指定显示单位(bBsSkKmMgGtTpPeE) |
-v, --verbose |
详细模式 |
--separator |
指定字段分隔符 |
-S, --select |
根据条件选择卷组 |
--nameprefixes |
在字段名前加前缀(如VG_NAME=) |
--rows |
以行形式输出 |
| 字段 | 说明 |
|---|---|
| VG | 卷组名称 |
| #PV | 卷组中的物理卷数量 |
| #LV | 卷组中的逻辑卷数量 |
| #SN | 快照数量 |
| Attr | 卷组属性状态 |
| VSize | 卷组总大小 |
| VFree | 卷组可用空间大小 |
| VG UUID | 卷组的唯一标识符 |
| VG Tags | 卷组标签 |
最基本的使用方式,显示系统中所有卷组的概要信息:
# 显示所有卷组
vgs
# 输出示例:
# VG #PV #LV #SN Attr VSize VFree
# vg00 1 3 0 wz--n- 100.00g 20.00g
# vg01 2 2 1 wz--n- 500.00g 50.00g
# data_vg 3 5 0 wz--n- 1.50t 300.00g
# 以人类可读格式显示(自动选择合适单位)
vgs --units h
# 或
vgs -h
# 输出示例:
# VG #PV #LV #SN Attr VSize VFree
# vg00 1 3 0 wz--n- 100g 20g
# vg01 2 2 1 wz--n- 500g 50g
# 只显示VG、大小和可用空间
vgs -o vg_name,vg_size,vg_free
# 显示扩展字段信息
vgs -o vg_name,vg_size,vg_free,vg_uuid,vg_tags
# 显示所有可用字段
vgs -o +vg_seqno,vg_mda_count,vg_mda_free
# 输出示例:
# VG VSize VFree
# vg00 100.00g 20.00g
# vg01 500.00g 50.00g
适用于脚本处理:
vgs --noheadings
# 或者结合自定义字段
vgs --noheadings -o vg_name,vg_size,vg_free
# 输出示例:
# vg00 100.00g 20.00g
# vg01 500.00g 50.00g
# 显示可用空间大于50G的卷组
vgs -S 'vg_free > 50G'
# 显示名称匹配特定模式的卷组
vgs -S 'vg_name =~ "^vg"'
# 显示有快照的卷组
vgs -S 'snap_count > 0'
# 显示包含特定逻辑卷的卷组
vgs -S 'lv_name = "root"'
# 以MB为单位显示
vgs --units m
# 以GB为单位显示(默认)
vgs --units g
# 以TB为单位显示
vgs --units t
# 以字节为单位显示(无后缀)
vgs --units b --nosuffix
# 输出示例:
# VG #PV #LV #SN Attr VSize VFree
# vg00 1 3 0 wz--n- 104857600 20971520
# 使用逗号作为分隔符(CSV格式)
vgs --separator ","
# 添加字段名前缀,便于脚本解析
vgs --nameprefixes -o vg_name,vg_size,vg_free
# 输出示例:
# LVM2_VG_NAME='vg00' LVM2_VG_SIZE='100.00g' LVM2_VG_FREE='20.00g'
# LVM2_VG_NAME='vg01' LVM2_VG_SIZE='500.00g' LVM2_VG_FREE='50.00g'
# 显示指定卷组信息
vgs vg00
# 显示多个卷组
vgs vg00 vg01
# 配合正则表达式
vgs $(sudo vgs --noheadings -o vg_name | grep "^vg")
输出中的Attr字段包含6个字符,每个字符代表一种状态:
w:可写(Writeable)r:只读(Read-only)z:可调整大小(Resizeable)-:不可调整e:已导出(Exported)-:未导出p:部分(Partial)-:完整c:连续分配(Contiguous)l:条带化(Striped)n:正常(Normal)a:任意(Anywhere)i:继承(Inherited)c:集群(Clustered)c:集群(Clustered)-:非集群vgs -a可以查看所有卷组,包括那些未激活的卷组awk命令可以提取特定信息:vgs --noheadings -o vg_name,vg_free | awk '$2 > 50'vgdisplay可以获得更详细的卷组信息--nameprefixes选项可以更方便地解析输出vgs --noheadings --units g -o vg_name,vg_free | grep -v "^[[:space:]]*$"vgdisplay显示卷组的详细信息
pvs显示物理卷信息
lvs显示逻辑卷信息
vgcreate创建卷组
在监控脚本中使用vgs命令检查卷组的可用空间,当空间不足时发送告警。
#!/bin/bash
vgs --noheadings --units g -o vg_name,vg_free | while read vg free; do
if [ $(echo "$free < 10" | bc) -eq 1 ]; then
echo "警告: 卷组 $vg 可用空间不足, 仅剩 ${free}G"
fi
done
在自动化部署脚本中检查卷组是否存在,决定是否创建新的卷组。
#!/bin/bash
VG_NAME="app_vg"
if vgs $VG_NAME &>/dev/null; then
echo "卷组 $VG_NAME 已存在"
echo "可用空间: $(vgs --noheadings --units g -o vg_free $VG_NAME)G"
else
echo "创建卷组 $VG_NAME"
vgcreate $VG_NAME /dev/sdb1 /dev/sdc1
fi