4.8. 自定义 LVM 的报告
LVM 提供了大量的配置和命令行选项来生成自定义报告,并过滤报告的结果。有关 LVM 报告特性和功能的完整描述,请查看 lvmreport(7)手册页。
您可以使用 pvs、lvs 和 vgs 命令生成 LVM 对象的简明且可自定义的报告。这些命令生成的报告包括每行对象的输出结果。每行包含一个与对象相关的属性的字段的有序列表。选择要报告的对象有五种:通过物理卷、卷组、逻辑卷、物理卷段和逻辑卷段来选择。
从 Red Hat Enterprise Linux 7.3 发行版本开始,您可以使用 lvm fullreport 命令一次报告物理卷、卷组、逻辑卷、物理卷片段和逻辑卷片段的信息。有关这个命令及其功能的详情,请查看 lvm-fullreport(8)手册页。
从 Red Hat Enterprise Linux 7.3 发行版开始,LVM 支持日志报告,其包含一个操作日志、信息以及在 LVM 命令执行过程中收集的具有完整对象标识的每个对象状态。有关 LVM 日志报告的示例,请参考 第 4.8.6 节 “命令报告(Red Hat Enterprise Linux 7.3 及更新的版本)”。有关 LVM 日志报告的详情,请查看 lvmreport(7)手册页。
以下小节提供了有关使用 pvs、lvs 和 vgs 命令自定义报告的总结信息:
- 第 4.8.1 节 “格式控制”,它提供一个可用于控制报告格式的命令参数的总结。
- 第 4.8.2 节 “对象显示字段”,它提供了一个您可以为每个 LVM 对象显示的字段的列表。
- 第 4.8.3 节 “LVM 报告排序”,它提供一个可用于对所生成的报告进行排序的命令参数的总结。
- 第 4.8.4 节 “指定单位”,它提供了指定报告输出单元的说明。
- 第 4.8.5 节 “JSON 格式输出(Red Hat Enterprise Linux 7.3 及更新的版本)”它提供了一个指定 JSON 格式输出的示例(Red Hat Enterprise Linux 7.3 及更新版本)。
- 第 4.8.6 节 “命令报告(Red Hat Enterprise Linux 7.3 及更新的版本)”,它提供了一个命令日志的示例。
4.8.1. 格式控制 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您是否使用 pvs、lvs 或 vgs 命令来确定显示的默认字段集和排列顺序。您可以使用以下参数来控制这些命令的输出结果:
- 您可以使用
-o
参数将显示的字段更改为默认值以外的其他值。例如,以下输出是 pvs 命令的默认显示(显示有关物理卷的信息)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下面的命令只显示物理卷的名称和大小。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您可以使用加号(+)将字段附加到输出中,该符号与 -o 参数结合使用。下面的例子除默认字段外还显示物理卷 UUID。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 向命令中添加
-v
参数来包含一些额外的字段。例如,pvs -v 命令除了默认字段外还显示DevSize
和PV UUID
字段。Copy to Clipboard Copied! Toggle word wrap Toggle overflow --noheadings
参数可抑制标题行。这对编写脚本非常有用。以下示例将--noheadings
参数与pv_name
参数结合使用,这将生成一个所有物理卷的列表。pvs --noheadings -o pv_name
# pvs --noheadings -o pv_name /dev/sdb1 /dev/sdc1 /dev/sdd1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --separator separator
参数使用 分隔符 来分隔各个字段。下例使用等号(=)将 pvs 命令的默认输出字段分隔开。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在使用separator
参数时保持字段对齐,请将separator
参数与--aligned
参数结合使用。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关显示参数的完整列表,请查看 pvs(8)、vgs(8)和 lvs(8)手册页。
可将卷组字段与物理卷(和物理卷段)字段或逻辑卷(和逻辑卷段)字段混合,但不能将物理卷与逻辑卷字段混合。例如:以下命令可显示每行物理卷的输出结果。
4.8.2. 对象显示字段 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
这部分提供了一系列表,列出您可以使用 pvs、vgs 和 lvs 命令显示的信息。
为方便起见,字段名称前缀如果与命令的默认名称匹配就可以省略。例如,使用 pvs 命令,
name
表示 pv_name
,但使用 vgs 命令时,name
被解释为 vg_name
。
执行以下命令等同于执行 pvs -o pv_free。
注意
pvs、vgs 和 lvs 输出中属性字段中的字符数可能会在以后的版本中增加。现有字符字段不会改变位置,但可能会在末尾添加新字段。在编写脚本时您应该考虑到这一点,该脚本搜索特定的属性字符,根据其到字段开头的相对位置搜索字符,而不是根据其到字段结尾的相对位置。例如,要在
lv_attr
字段的第 ninth 位中搜索字符 p
,您可以搜索字符串 "^/.........p/",但您不应该搜索字符串 "busyboxp$/"。
pvs 命令 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
表 4.3 “pvs 命令显示字段” 列出 pvs 命令的显示参数,以及字段名称,就像其在标头显示和字段描述中显示的那样。
参数 | 标头 | 描述 |
---|---|---|
dev_size | DevSize | 创建物理卷的基本设备的大小 |
pe_start | 第一个 PE | 在基础设备中调整到第一个物理扩展的起始位置 |
pv_attr | Attr | 物理卷的状态:(a)可分配的或(x)导出的。 |
pv_fmt | Fmt | 物理卷的元数据格式(lvm2 或 lvm1) |
pv_free | PFree | 物理卷中剩余的可用空间 |
pv_name | PV | 物理卷名称 |
pv_pe_alloc_count | Alloc | 已使用的物理扩展数目 |
pv_pe_count | PE | 物理扩展数目 |
pvseg_size | SSize | 物理卷的片段大小 |
pvseg_start | Start | 物理卷片段的起始物理扩展 |
pv_size | PSize | 物理卷的大小 |
pv_tags | PV 标签 | 附加到物理卷的 LVM 标签 |
pv_used | Used | 目前物理卷中已经使用的空间量 |
pv_uuid | PV UUID | 物理卷的 UUID |
pvs 命令默认显示以下字段:
pv_name
,vg_name
,pv_fmt
,pv_attr
,pv_size
,pv_free
.显示按照 pv_name
进行排序。
将
-v
参数与 pvs 命令一起使用,将以下字段添加到默认显示中: dev_size
,pv_uuid
。
您可以使用 pvs 命令的
--segments
参数来显示每个物理卷段的信息。一个片段就是一组扩展。查看片段在想查看逻辑卷是否碎片时很有用。
pvs --segments 命令默认显示以下字段:
pv_name
,vg_name
,pv_fmt
,pv_attr
,pv_size
,pv_free
,pvseg_start
,pvseg_size
.该显示根据物理卷中的 pv_name
和 pvseg_size
进行排序。
您可以使用 pvs -a 命令查看 LVM 检测到的设备,这些设备没有初始化为 LVM 物理卷。
vgs 命令 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
表 4.4 “vgs 显示字段” 列出 vgs 命令的显示参数,以及在标头显示中的字段名称以及字段描述。
参数 | 标头 | 描述 |
---|---|---|
lv_count | #LV | 卷组包含的逻辑卷数 |
max_lv | MaxLV | 卷组中最多允许的逻辑卷数目(如果没有限制就是 0) |
max_pv | MaxPV | 卷组中最多允许的物理卷数目(如果没有限制就是 0) |
pv_count | #PV | 定义卷组的物理卷数目 |
snap_count | #SN | 卷组包含的快照数 |
vg_attr | Attr | 卷组的状态:(w)riteable、(r)eadonly、resi(z)eable、e(x)ported、(p)artial 和(c)lustered。 |
vg_extent_count | #Ext | 卷组中的物理扩展数目 |
vg_extent_size | Ext | 卷组中物理扩展的大小 |
vg_fmt | Fmt | 卷组的元数据格式(lvm2 或 lvm1) |
vg_free | VFree | 卷组中剩余可用空间大小 |
vg_free_count | Free | 卷组中可用物理扩展数目 |
vg_name | VG | 卷组名称 |
vg_seqno | seq | 代表修正卷组的数 |
vg_size | VSize | 卷组大小 |
vg_sysid | SYS ID | LVM1 系统 ID |
vg_tags | VG Tags | 附加到卷组中的 LVM 标签 |
vg_uuid | VG UUID | 卷组的 UUID |
vgs 命令默认显示以下字段:
vg_name
,pv_count
,lv_count
,snap_count
,vg_attr
,vg_size
,vg_free
.显示按照 vg_name
进行排序。
vgs
# vgs
VG #PV #LV #SN Attr VSize VFree
new_vg 3 1 1 wz--n- 51.42G 51.36G
将
-v
参数与 vgs 命令一起使用,将以下字段添加到默认显示中: vg_extent_size
,vg_uuid
.
lvs 命令 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
表 4.5 “LVS 显示字段” 列出 lvs 命令的显示参数,以及在标头显示中的字段名称以及字段描述。
注意
在以后的 Red Hat Enterprise Linux 版本中,lvs 命令的输出可能会有所不同,以及输出中的其他字段。但是,这些字段的顺序将保持不变,所有附加字段也会在显示的末尾出现。
参数 | 标头 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chunk | 快照卷的单位大小 | ||||||||||
copy_percent | Copy% | 镜像逻辑卷的同步百分比 ; 也在使用 pv_move 命令移动物理扩展时使用 | ||||||||||
devices | Devices | 组成逻辑卷的基本设备:物理卷、逻辑卷以及启动物理扩展和逻辑扩展 | ||||||||||
lv_ancestors | Ancestors | (Red Hat Enterprise Linux 7.2 及更新的版本)对于精简池快照,逻辑卷的敏感度 | ||||||||||
lv_descendants | descendants | (Red Hat Enterprise Linux 7.2 及更新的版本)对于精简池快照,逻辑卷的后代 | ||||||||||
lv_attr | Attr | 逻辑卷的状态。逻辑卷属性字节如下:
| ||||||||||
lv_kernel_major | KMaj | 逻辑卷的真实主设备号码(如果不活跃则为 -1) | ||||||||||
lv_kernel_minor | KMIN | 逻辑卷的真实从设备号码(如果是不活跃则为 -1) | ||||||||||
lv_major | Maj | 逻辑卷持久的主设备号码(如果未指定则为 -1) | ||||||||||
lv_minor | Min | 逻辑卷持久的从设备号(如果未指定则为 -1) | ||||||||||
lv_name | LV | 逻辑卷名称 | ||||||||||
lv_size | LSize | 逻辑卷的大小 | ||||||||||
lv_tags | LV Tags | 附加到逻辑卷的 LVM 标签 | ||||||||||
lv_uuid | LV UUID | 逻辑卷的 UUID。 | ||||||||||
mirror_log | Log | 镜像日志所在的设备 | ||||||||||
modules | 模块 | 使用这个逻辑卷需要对应的内核设备映射器目标 | ||||||||||
move_pv | Move | 使用 pvmove 命令创建的临时逻辑卷的源物理卷 | ||||||||||
Origin | Origin | 快照卷的源设备 | ||||||||||
| 区域 | 镜像的逻辑卷的单元大小 | ||||||||||
seg_count | #Seg | 逻辑卷中片段的数 | ||||||||||
seg_size | SSize | 逻辑卷中片段的大小 | ||||||||||
seg_start | Start | 逻辑卷中片段的偏移 | ||||||||||
seg_tags | Seg Tags | 附加到逻辑卷片段的 LVM 标签 | ||||||||||
segtype | 类型 | 逻辑卷的片段类型(例如:镜像、条带、线性) | ||||||||||
snap_percent | Snap% | 已使用的快照卷的比例 | ||||||||||
条带 | #Str | 逻辑卷中条带或者镜像的数目 | ||||||||||
| Stripe | 条带逻辑卷中条带逻辑卷的单元大小 |
lvs 命令默认显示以下字段:
lv_name
,vg_name
,lv_attr
, lv_size ,
origin
,snap_percent
,move_pv
,mirror_log
,copy_percent
,convert_lv
.默认显示根据卷组中的 vg_name
和 lv_name
进行排序。
lvs
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lvol0 new_vg owi-a- 52.00M
newvgsnap1 new_vg swi-a- 8.00M lvol0 0.20
将
-v
参数与 lvs 命令一起使用,将以下字段添加到默认显示中: seg_count
,lv_major
,lv_minor
,lv_kernel_major
,lv_kernel_minor
,lv_uuid
.
您可以使用 lvs 命令的
--segments
参数来显示带有突出显示网段信息的默认列的信息。使用 segment 参数时
,seg
前缀是可选的。lvs --segments 命令默认显示以下字段: lv_name
,vg_name
,lv_attr
,stripes
,segtype
,seg_size
。默认显示根据卷组中的 vg_name
、lv_name
和逻辑卷中的 seg_start
进行排序。如果逻辑卷有碎片化的问题,这个命令的输出会显示相关信息。
将
-v
参数与 lvs --segments 命令一起使用,将以下字段添加到默认显示中: seg_start
,stripesize
,chunksize
.
以下示例显示了在配置了一个逻辑卷的系统上 lvs 命令的默认输出,后跟 lvs 命令的输出,并指定了
片段
参数。
4.8.3. LVM 报告排序 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
通常,必须在内部生成并存储 lvs、vgs 或 pvs 命令的整个输出,然后才能正确排序和列。您可以指定
--unbuffered
参数,以在生成后马上显示未排序的输出。
要指定不同的列排序,请使用任何报告命令的
-O
参数。在输出中不一定要包含这些字段。
以下示例显示了 pvs 命令的输出,该命令显示物理卷名称、大小和可用空间。
下面的例子显示相同的输出结果,根据可用空间字段排序。
以下示例显示,您不需要显示您要排序的字段。
要显示反向排序,请在
-O
参数之后使用 -
字符指定的字段。
4.8.4. 指定单位 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要指定 LVM 报告显示的单元,使用 report 命令的
--units
参数。您可以指定(b)ytes、(k)ilobytes、(m)egabytes、(g)igabytes、(e)xabytes、(p)etabytes 和(h)uman- readable。默认显示是人类可读的。您可以通过在 lvm.conf
文件 的全局
部分中设置 units
参数来覆盖默认设置。
以下示例以 MB 为单位指定 pvs 命令的输出,而不是默认的千兆字节。
默认情况下,显示的单位是 1024 的倍数。您可以使用大写字母代表单位是 1000 的倍数(B、K、M、G、T、H)。
下面的命令以默认单位(1024 的倍数)显示输出结果。
下面的命令以 1000 的倍数为单位显示输出结果。
您也可以指定y (s)ectors(定义为 512 字节)或自定义单元。
以下示例将 pvs 命令的输出显示为多个扇区。
以下示例显示了 pvs 命令的输出,单位为 4 MB。
4.8.5. JSON 格式输出(Red Hat Enterprise Linux 7.3 及更新的版本) 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
从 Red Hat Enterprise Linux 7.3 开始,您可以使用 LVM 显示命令的
--reportformat
选项以 JSON 格式显示输出。
以下示例显示了以标准默认格式的 lvs 的输出。
以下命令显示在指定 JSON 格式时相同的 LVM 配置输出。
您还可以使用
output_format
设置,将报告格式设置为 /etc/lvm/lvm.conf
文件中的配置选项。但是,命令行的 --reportformat
设置优先于此设置。
4.8.6. 命令报告(Red Hat Enterprise Linux 7.3 及更新的版本) 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
从 Red Hat Enterprise Linux 7.3 开始,如果启用了
log/report_command_log
配置设置,则面向报告的 LVM 命令都可以报告命令日志。您可以确定要显示的一组字段,并为此报告排序。
以下示例将 LVM 配置为为 LVM 命令生成完整日志报告。在这个示例中,您可以看到逻辑卷
lvol0
和 lvol1
已被成功处理,因为 是包含卷的卷组 VG
。
有关配置 LVM 报告和命令日志的详情,请参考 lvmreport man page。