Linux系统之lvs 命令详解
·
lvs 命令详解
一、命令概述
lvs 是 LVM(逻辑卷管理)工具集中用于显示逻辑卷(LV)信息 的核心命令,输出格式紧凑且高度可配置,支持自定义显示字段、筛选、排序等操作,是查询LV状态的首选工具(替代较繁琐的 lvdisplay)。其核心功能是快速展示LV的关键属性(如大小、状态、所属卷组、类型等),适用于日常存储监控、脚本化管理及故障排查场景。
二、语法格式
lvs [选项]... [VG|LV|Tag...]
- 参数说明:
选项:控制输出内容(如字段选择、筛选条件)、格式(如单位、分隔符)等。VG|LV|Tag...(可选):指定要查询的卷组(VG)、逻辑卷(LV,格式VG/LV)或标签(Tag),不指定则默认显示所有可见LV。
三、核心功能
lvs 的核心功能是灵活查询逻辑卷的属性,具体包括:
- 多维度信息展示:支持显示LV的名称、大小、所属卷组、激活状态、类型(如线性、RAID、快照)、健康状态等。
- 自定义输出:通过
--options选择需显示的字段(如仅显示名称和大小),按需精简或扩展信息。 - 筛选与排序:通过
--select按条件筛选LV(如仅显示激活状态的LV),通过--sort按指定字段排序(如按大小降序)。 - 特殊LV显示:支持显示内部LV(如镜像卷的组件)、历史LV(已删除但保留记录的LV)等。
四、选项详解
1. 输出内容控制
| 选项 | 长选项 | 说明 |
|---|---|---|
-a | --all | 显示内部LV(如镜像卷的 _mimage、_mlog 组件),这些LV不可独立访问(无法挂载)。 |
-H | --history | 包含历史LV(已删除但保留记录的LV),需 lvm.conf 中 metadata/record_lvs_history 启用才有效。 |
--segments | - | 按段(segment) 展示LV的组成(如条带段、镜像段),适合分析LV的存储布局。 |
2. 字段选择与格式
| 选项 | 长选项 | 说明 |
|---|---|---|
-o String | --options String | 指定要显示的字段(逗号分隔),如 lv_name,vg_name,size,status。使用 -o help 查看所有支持的字段,-o lv_all 显示所有LV相关字段。 |
--noheadings | - | 不显示表头(列标题),适合脚本处理(如通过 grep 筛选结果)。 |
--nameprefixes | - | 为输出字段添加 LVM2_ 前缀(如 LVM2_lv_name=data_lv),配合 --noheadings 可生成环境变量格式的键值对。 |
--separator String | - | 自定义列分隔符(如 --separator "," 用逗号分隔列,默认空格)。 |
3. 筛选与排序
| 选项 | 长选项 | 说明 |
|---|---|---|
-S String | --select String | 按条件筛选LV,语法为 字段=条件(如 lv_name=~"data.*" 筛选名称以 data 开头的LV,status=active 筛选激活状态的LV)。 |
-O String | --sort String | 按指定字段排序,前缀 - 表示降序(如 -O size 按大小升序,-O -size 按大小降序)。 |
4. 单位与数据格式
| 选项 | 长选项 | 说明 |
|---|---|---|
--units 单位 | - | 指定大小单位: - 小写字母(如 k、m、g):基础2进制单位(1k=1024字节);- 大写字母(如 K、M、G):十进制单位(1K=1000字节);- h:人类可读格式(自动选择单位);例如 --units G 以GiB显示大小。 |
--nosuffix | - | 不显示单位后缀(需与 --units 配合,如 --units M --nosuffix 仅显示数字)。 |
--binary | - | 用二进制值(0/1)表示二值属性(如激活状态:1 表示active,0 表示inactive)。 |
5. 特殊场景选项
| 选项 | 长选项 | 说明 |
|---|---|---|
--foreign | - | 显示外部VG中的LV(通常是其他系统的VG,默认跳过)。 |
--shared | - | 显示共享VG中的LV(需配合 lvmlockd,默认跳过未启用共享的VG)。 |
--readonly | - | 以只读模式运行,不获取锁(用于查看虚拟机镜像或集群VG的元数据,无法判断LV是否正在使用)。 |
五、LV属性字符串(lv_attr)解析
lvs 输出中的 LV Attribute 字段(简写 Attr)是一个由10位字符组成的字符串,每一位代表LV的特定属性,具体含义如下:
| 位置 | 含义 | 常见值说明 |
|---|---|---|
| 1 | 卷类型 | l:线性卷;s:快照;m:镜像;r:RAID;t:瘦卷;T:瘦池。 |
| 2 | 权限 | w:可读写;r:只读。 |
| 3 | 分配策略 | n:正常;c:连续;a:任意。 |
| 4 | 固定次设备号 | m:固定;无标识:不固定。 |
| 5 | 状态 | a:激活;s:暂停;h:历史;p:部分可用(PV缺失)。 |
| 6 | 设备打开状态 | o:已打开(如挂载);无标识:未打开。 |
| 7 | 目标类型 | m:镜像;r:RAID;s:快照;t:瘦卷。 |
| 8 | 零初始化 | z:新块自动清零;无标识:不清零。 |
| 9 | 健康状态 | p:部分可用(PV缺失);m:RAID数据不一致;F:瘦池故障。 |
| 10 | 激活跳过 | k:标记为激活时跳过;无标识:正常激活。 |
六、使用示例
1. 显示所有LV的基本信息(默认格式)
lvs # 输出示例:
# LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
# data_lv vg00 -wi-ao---- 100.00g
# snap_lv vg00 sri-aor--- 20.00g data_lv 0.00
2. 自定义显示字段(名称、卷组、大小、状态)
lvs -o lv_name,vg_name,size,lv_status # 仅显示指定字段
3. 筛选激活状态的LV并按大小降序排序
lvs -S "lv_status=active" -O -size # 激活的LV按大小从大到小排列
4. 以GiB为单位显示,不显示表头和单位后缀
lvs --units G --noheadings --nosuffix -o lv_name,size # 适合脚本解析
5. 显示所有内部LV(如镜像卷组件)
lvs -a # 包含镜像的_mimage、_mlog等内部LV
七、注意事项
- 与lvdisplay的区别:
lvs输出更简洁,支持灵活配置字段和筛选,适合快速查询和脚本处理;lvdisplay输出更详细但格式固定,适合深入分析单个LV。 - 权限要求:需root权限才能查看所有LV信息(普通用户可能只能看到部分可访问的LV)。
- 属性解析:
lv_attr字符串是理解LV状态的关键,需结合上述解析表解读(如wi-ao----表示可读写、激活、线性卷)。
更多推荐
所有评论(0)