Show Table of Contents
4.8. LVM 的自定义报告
可使用
pvs、lvs 和 vgs 命令生成简洁且可自定义的 LVM 对象报告。这些命令生成的报告包括每行一个对象的输出结果。每行包含与该对象有关的属性字段顺序列表。有五种方法可用来选择要报告的对象:即根据物理卷、卷组、逻辑卷、物理卷片段及逻辑卷片段报告。
以下小节提供:
- 用来控制所生成报告格式的命令参数概述。
- 可为每个 LVM 对象选择的字段列表。
- 可用来对生成的报告进行排序的命令参数概述。
- 指定报告输出结果单位简介。
4.8.1. 格式控制
是否使用
pvs、lvs 或者 vgs 命令可决定显示字段的默认设置及排序顺序。可使用下面的参数控制这些命令的输出结果:
- 可使用
-o参数将显示的字段改为默认值以外的内容。例如:下面的输出结果是pvs命令的默认显示内容(即显示物理卷信息)。#
pvsPV VG Fmt Attr PSize PFree /dev/sdb1 new_vg lvm2 a- 17.14G 17.14G /dev/sdc1 new_vg lvm2 a- 17.14G 17.09G /dev/sdd1 new_vg lvm2 a- 17.14G 17.14G下面的命令只显示物理卷名称和大小。#
pvs -o pv_name,pv_sizePV PSize /dev/sdb1 17.14G /dev/sdc1 17.14G /dev/sdd1 17.14G - 可将加号(+)于 -o 参数合用,在输出结果中附加一个字段。下面的示例除显示默认字段外还显示该物理卷的 UUID。
#
pvs -o +pv_uuidPV VG Fmt Attr PSize PFree PV UUID /dev/sdb1 new_vg lvm2 a- 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY /dev/sdc1 new_vg lvm2 a- 17.14G 17.09G Joqlch-yWSj-kuEn-IdwM-01S9-X08M-mcpsVe /dev/sdd1 new_vg lvm2 a- 17.14G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-UqkCS - 在命令中添加
-v参数可显示额外的字段。例如:pvs -v命令会在默认字段外显示DevSize和PV UUID字段。#
pvs -vScanning for physical volume names PV VG Fmt Attr PSize PFree DevSize PV UUID /dev/sdb1 new_vg lvm2 a- 17.14G 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY /dev/sdc1 new_vg lvm2 a- 17.14G 17.09G 17.14G Joqlch-yWSj-kuEn-IdwM-01S9-XO8M-mcpsVe /dev/sdd1 new_vg lvm2 a- 17.14G 17.14G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-tUqkCS --noheadings参数会取消标题行。这在编写脚本时有用。下面的示例将--noheadings参数与pv_name参数联合使用生成所有物理卷的列表:#
pvs --noheadings -o pv_name/dev/sdb1 /dev/sdc1 /dev/sdd1--separator separator参数使用 separator 分离各个字段。下面的示例使用等号(=)分离pvs命令的默认输出字段。#
pvs --separator =PV=VG=Fmt=Attr=PSize=PFree /dev/sdb1=new_vg=lvm2=a-=17.14G=17.14G /dev/sdc1=new_vg=lvm2=a-=17.14G=17.09G /dev/sdd1=new_vg=lvm2=a-=17.14G=17.14G要在使用separator参数时保持字段对齐,请将separator参数与--aligned参数配合使用。#
pvs --separator = --alignedPV =VG =Fmt =Attr=PSize =PFree /dev/sdb1 =new_vg=lvm2=a- =17.14G=17.14G /dev/sdc1 =new_vg=lvm2=a- =17.14G=17.09G /dev/sdd1 =new_vg=lvm2=a- =17.14G=17.14G
有关完整显示参数列表,请查看
pvs(8)、vgs(8) 和 lvs(8) man page。
卷组字段可与物理卷(和物理卷片段)字段或者逻辑卷(和逻辑卷片段)字段混合,但物理卷和逻辑卷字段不能混合。例如:下面的命令会每行显示一个物理卷的输出结果。
# vgs -o +pv_name
VG #PV #LV #SN Attr VSize VFree PV
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdc1
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdd1
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdb14.8.2. 对象选择
本小节提供可用来使用
pvs、vgs 和 lvs 命令显示 LVM 对象信息的表格。
为方便起见,如果字段名称前缀与该命令的默认匹配,则可将其去掉。例如:在
pvs 命令中,name 的含义是 pv_name,但在 vgs 命令中,会将 name 解读为 vg_name。
执行下面的命令与执行
pvs -o pv_free 等同。
# pvs -o free
PFree
17.14G
17.09G
17.14G注意
在之后的发行本中,
pvs、vgs 和 lvs 输出结果中 attribute 字段中的字符数可能会增加。现有字符字段不会更改位置,但可在结尾处添加新字段。为具体属性字符编写脚本时应考虑这个因素,并根据字符与该字段起始位置的相对位置搜索字符,而不是根据其与该字段的截止位置的相对位置进行搜索。例如:要在 lv_attr 字段的第九个字节搜索字符 p,可搜索字符串 "^/........p/",但不应搜索字符串 "/*p$/"。
pvs 命令
表 4.2 “pvs Display 字段” 列出
pvs 目录的显示参数以及在标头显示中出现的字段名称及该字段的描述。
表 4.2. pvs Display 字段
| 参数 | 标头 | 描述 |
|---|---|---|
dev_size | DevSize | 该物理卷所在底层设备的大小 |
pe_start | 1st 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 | 起始 | 物理卷片段的起始物理扩展 |
pv_size | PSize | 物理卷大小 |
pv_tags | PV 标签 | 附加到物理卷的 LVM 标签 |
pv_used | 已使用 | 该物理卷中目前已使用的空间数量 |
pv_uuid | PV UUID | 该物理卷的 UUID |
pvs 命令默认显示以下字段:pv_name, vg_name, pv_fmt, pv_attr, pv_size, pv_free。该显示结果按 pv_name 排序。
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd1 new_vg lvm2 a- 17.14G 17.13G
使用
pvs 命令的 -v 参数值默认显示中添加以下字段:dev_size,pv_uuid。
# pvs -v
Scanning for physical volume names
PV VG Fmt Attr PSize PFree DevSize PV UUID
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G 17.14G Joqlch-yWSj-kuEn-IdwM-01S9-XO8M-mcpsVe
/dev/sdd1 new_vg lvm2 a- 17.14G 17.13G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-tUqkCS
可使用
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 --segments
PV VG Fmt Attr PSize PFree Start SSize
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 0 1172
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 1172 16
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 1188 1
/dev/sda1 vg lvm2 a- 17.14G 16.75G 0 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 26 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 50 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 76 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 100 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 126 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 150 22
/dev/sda1 vg lvm2 a- 17.14G 16.75G 172 4217
/dev/sdb1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdc1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdd1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sde1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdf1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdg1 vg lvm2 a- 17.14G 17.14G 0 4389
可使用
pvs -a 命令查看已被 LVM 探测到但尚未初始化为 LVM 物理卷的设备。
# pvs -a
PV VG Fmt Attr PSize PFree
/dev/VolGroup00/LogVol01 -- 0 0
/dev/new_vg/lvol0 -- 0 0
/dev/ram -- 0 0
/dev/ram0 -- 0 0
/dev/ram2 -- 0 0
/dev/ram3 -- 0 0
/dev/ram4 -- 0 0
/dev/ram5 -- 0 0
/dev/ram6 -- 0 0
/dev/root -- 0 0
/dev/sda -- 0 0
/dev/sdb -- 0 0
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc -- 0 0
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd -- 0 0
/dev/sdd1 new_vg lvm2 a- 17.14G 17.14Gvgs 命令
表 4.3 “vgs Display 字段” 列出
vgs 命令的显示参数以及在标头显示中出现的字段名称及该字段的描述。
表 4.3. vgs Display 字段
| 参数 | 标头 | 描述 |
|---|---|---|
lv_count | #LV | 卷组所包含逻辑卷数 |
max_lv | MaxLV | 卷组允许的最大逻辑卷数(0 表示无限大) |
max_pv | MaxPV | 卷组允许的最大物理卷数(0 表示无限) |
pv_count | #PV | 定义该卷组的物理卷数 |
snap_count | #SN | 卷组包含的快照数 |
vg_attr | Attr | 卷组状态:(w)可写入;(r)只读;(z)可重新定义大小;(x)可导出;(p)部分;以及(c)集群。 |
vg_extent_count | #Ext | 卷组中的物理扩展数 |
vg_extent_size | Ext | 卷组中的物理扩展大小 |
vg_fmt | Fmt | 卷组的元数据格式(lvm2 或者 lvm1) |
vg_free | VFree | 卷组中剩余的可用空间大小 |
vg_free_count | 可用 | 卷组中的可用物理扩展数 |
vg_name | VG | 卷组名称 |
vg_seqno | Seq | 代表卷组修改的次数 |
vg_size | VSize | 卷组大小 |
vg_sysid | SYS ID | LVM1 System ID |
vg_tags | VG 标签 | 附加到卷组的 LVM 标签 |
vg_uuid | VG UUID | 卷组的 UUID |
vgs 命令默认显示以下字段:vg_name, pv_count, lv_count, snap_count, vg_attr, vg_size, vg_free. The display is sorted by vg_name。
# vgs
VG #PV #LV #SN Attr VSize VFree
new_vg 3 1 1 wz--n- 51.42G 51.36G
使用
vgs 命令的 -v 参数值默认显示着添加以下字段:vg_extent_size,vg_uuid。
# vgs -v
Finding all volume groups
Finding volume group "new_vg"
VG Attr Ext #PV #LV #SN VSize VFree VG UUID
new_vg wz--n- 4.00M 3 1 1 51.42G 51.36G jxQJ0a-ZKk0-OpMO-0118-nlwO-wwqd-fD5D32lvs 命令
表 4.4 “lvs 显示字段” 列出了
lvs 命令的显示参数以及在标头显示中的字段名称以及该字段的描述。
表 4.4. lvs 显示字段
| 参数 | 标头 | 描述 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 区块 | 快照卷的单位大小 | ||||||||||
copy_percent | Copy% | 镜像逻辑卷的同步百分比;也可在使用 pv_move 命令移动物理扩展时使用。 | ||||||||||
devices | 设备 | 组成逻辑卷的底层设备:即物理卷、逻辑卷及起始物理扩展和逻辑扩展 | ||||||||||
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 标签 | 附加到逻辑卷的 LVM 标签 | ||||||||||
lv_uuid | LV UUID | 逻辑卷的 UUID | ||||||||||
mirror_log | Log | 镜像日志所在设备 | ||||||||||
modules | 模块 | 需要使用这个逻辑卷的对应内核设备映射器目标 | ||||||||||
move_pv | 移动 | 使用 pvmove 命令创建的临时逻辑卷之源物理卷 | ||||||||||
origin | Origin | 快照卷的原始设备 | ||||||||||
| 区域 | 镜像逻辑卷的单元大小 | ||||||||||
seg_count | #Seg | 逻辑卷中的片段数 | ||||||||||
seg_size | SSize | 逻辑卷的片段大小 | ||||||||||
seg_start | 起始 | 逻辑卷中的片段偏移 | ||||||||||
seg_tags | Seg 标签 | 附加到逻辑卷片段的 LVM 标签 | ||||||||||
segtype | 类型 | 逻辑卷的片段类型(例如:镜像、条带、线性) | ||||||||||
snap_percent | Snap% | 目前使用的快照卷百分比 | ||||||||||
stripes | #Str | 逻辑卷中的条状卷或镜像卷数 | ||||||||||
| 条带 | 条带逻辑卷的单元大小 |
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
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
使用
lvs 命令的 -v 参数将下面的字段添加到默认显示中:seg_count、lv_major、lv_minor、lv_kernel_major、lv_kernel_minor、lv_uuid。
# lvs -v
Finding all logical volumes
LV VG #Seg Attr LSize Maj Min KMaj KMin Origin Snap% Move Copy% Log Convert LV UUID
lvol0 new_vg 1 owi-a- 52.00M -1 -1 253 3 LBy1Tz-sr23-OjsI-LT03-nHLC-y8XW-EhCl78
newvgsnap1 new_vg 1 swi-a- 8.00M -1 -1 253 5 lvol0 0.20 1ye1OU-1cIu-o79k-20h2-ZGF0-qCJm-CfbsIx
可使用
lvs 命令的 --segments 参数显示默认栏信息,并强调片段信息。使用 segments 参数后,seg 前缀为自选项。lvs --segments 命令默认显示下面的字段:lv_name、vg_name、lv_attr、stripes、segtype、seg_size。默认显示是根据卷组的 vg_name 和 lv_name,以及该逻辑卷的 seg_start 排序。如果逻辑卷碎片化,这个命令的输出结果会体现此状态。
# lvs --segments
LV VG Attr #Str Type SSize
LogVol00 VolGroup00 -wi-ao 1 linear 36.62G
LogVol01 VolGroup00 -wi-ao 1 linear 512.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 88.00M
使用
lvs --segments 命令的 -v 参数在默认显示着添加以下字段:seg_start、stripesize、chunksize。
# lvs -v --segments
Finding all logical volumes
LV VG Attr Start SSize #Str Type Stripe Chunk
lvol0 new_vg owi-a- 0 52.00M 1 linear 0 0
newvgsnap1 new_vg swi-a- 0 8.00M 1 linear 0 8.00K
下面的示例演示了在已配置逻辑卷的系统中运行
lvs 命令的输出结果,以及运行附加 segments 参数的 lvs 命令的输出结果。
#lvsLV VG Attr LSize Origin Snap% Move Log Copy% lvol0 new_vg -wi-a- 52.00M #lvs --segmentsLV VG Attr #Str Type SSize lvol0 new_vg -wi-a- 1 linear 52.00M
4.8.3. 将 LVM 报告排序
通常必须生成
lvs、vgs 或者 pvs 命令的整个输出结果,并在可将其排序并正确对齐前保存。可指定 --unbuffered 参数在生成后即刻显示未排序的输出结果。
要制定可替换的列排序顺序,请使用任意报告命令的
-O 参数。不一定要在输出结果中包含这些字段。
以下示例显示
pvs 命令的输出结果,其中显示内容包括物理卷名称、大小及可用空间。
# pvs -o pv_name,pv_size,pv_free
PV PSize PFree
/dev/sdb1 17.14G 17.14G
/dev/sdc1 17.14G 17.09G
/dev/sdd1 17.14G 17.14G
以下示例显示同样的输出结果,但根据可用空间字段排序。
# pvs -o pv_name,pv_size,pv_free -O pv_free
PV PSize PFree
/dev/sdc1 17.14G 17.09G
/dev/sdd1 17.14G 17.14G
/dev/sdb1 17.14G 17.14G
以下示例表示不需要显示用来排序的字段内容。
# pvs -o pv_name,pv_size -O pv_free
PV PSize
/dev/sdc1 17.14G
/dev/sdd1 17.14G
/dev/sdb1 17.14G
要显示反向排序,请在
-O 参数前指定 的字段前添加 - 字符。
# pvs -o pv_name,pv_size,pv_free -O -pv_free
PV PSize PFree
/dev/sdd1 17.14G 17.14G
/dev/sdb1 17.14G 17.14G
/dev/sdc1 17.14G 17.09G4.8.4. 指定单位
要指定 LVM 报告显示的单位,请使用该报告命令的
--units 参数。可指定 (b)、(k)、(m)、(g)、(t)、(e)xabytes、(p) 和 (h)。默认显示为 human-readable(用户可读)。可在 lvm.conf 文件的 global 部分设置 units 参数覆盖默认值。
以下示例采用 MB 指定
pvs 命令的输出结果,而不是默认的 GB。
# pvs --units m
PV VG Fmt Attr PSize PFree
/dev/sda1 lvm2 -- 17555.40M 17555.40M
/dev/sdb1 new_vg lvm2 a- 17552.00M 17552.00M
/dev/sdc1 new_vg lvm2 a- 17552.00M 17500.00M
/dev/sdd1 new_vg lvm2 a- 17552.00M 17552.00M
默认情况是以 2 的次方数(1024 的倍数)显示单位。可使用大写单位(B、K、M、G、T、H)以 1000 的倍数显示单位。
下面的命令采用 1024 的倍数(即默认行为)显示命令输出结果。
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd1 new_vg lvm2 a- 17.14G 17.14G
下面的命令采用 1000 的倍数显示命令输出结果。
# pvs --units G
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 18.40G 18.40G
/dev/sdc1 new_vg lvm2 a- 18.40G 18.35G
/dev/sdd1 new_vg lvm2 a- 18.40G 18.40G
还可以指定 (s) 扇区(默认为 512 字节)或自定义单位。
下面的示例以扇区数显示
pvs 命令的输出结果。
# pvs --units s
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 35946496S 35946496S
/dev/sdc1 new_vg lvm2 a- 35946496S 35840000S
/dev/sdd1 new_vg lvm2 a- 35946496S 35946496S
下面的示例以 4MB 为单位显示
pvs 命令的输出结果。
# pvs --units 4m
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 4388.00U 4388.00U
/dev/sdc1 new_vg lvm2 a- 4388.00U 4375.00U
/dev/sdd1 new_vg lvm2 a- 4388.00U 4388.00U
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.