lvs命令用于显示逻辑卷的详细信息,包括逻辑卷名称、所属卷组、大小、类型、挂载点、快照关系等。它是lvdisplay命令的简化版本,输出格式更紧凑易读,适合快速查看系统上的逻辑卷状态。
lvs [选项] [逻辑卷名]
| 选项 | 说明 |
|---|---|
-a, --all |
显示所有逻辑卷(包括快照、隐藏卷等) |
-o, --options |
指定输出字段 |
--noheadings |
不显示标题行 |
--units |
指定显示单位(bBsSkKmMgGtTpPeE) |
-v, --verbose |
详细模式 |
--separator |
指定字段分隔符 |
-S, --select |
根据条件选择逻辑卷 |
--nameprefixes |
在字段名前加前缀(如LV_NAME=) |
--rows |
以行形式输出 |
--reportformat |
指定报告格式(basic/json) |
| 字段 | 说明 |
|---|---|
| LV | 逻辑卷名称 |
| VG | 所属卷组名称 |
| Attr | 逻辑卷属性状态 |
| LSize | 逻辑卷大小 |
| Pool | 所属精简池(thin pool) |
| Origin | 原始卷(对于快照) |
| Data% | 精简卷使用百分比 |
| Meta% | 元数据使用百分比 |
| Move | 正在迁移的目标 |
| Log | 日志设备 |
| Cpy%Sync | 镜像同步百分比 |
| Convert | 转换类型 |
最基本的使用方式,显示系统中所有逻辑卷的概要信息:
# 显示所有逻辑卷
lvs
# 输出示例:
# LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
# root centos -wi-ao---- 50.00g
# swap centos -wi-ao---- 4.00g
# home centos -wi-ao---- 100.00g
# var centos -wi-ao---- 20.00g
# backup vg01 Vwi-a-tz-- 50.00g tp01 25.50
# snap1 vg01 swi-a-s--- 10.00g backup 0.01
# 以人类可读格式显示(自动选择合适单位)
lvs --units h
# 或
lvs -h
# 输出示例:
# LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
# root centos -wi-ao---- 50g
# home centos -wi-ao---- 100g
# 只显示LV、VG、大小和属性
lvs -o lv_name,vg_name,lv_size,lv_attr
# 显示精简卷信息
lvs -o lv_name,vg_name,lv_size,pool_lv,data_percent,metadata_percent
# 显示所有可用字段
lvs -o +lv_uuid,lv_tags,segtype,stripes,stripe_size
# 显示快照信息
lvs -o lv_name,vg_name,origin,lv_size,snap_percent
# 显示大于50G的逻辑卷
lvs -S 'lv_size > 50G'
# 显示特定类型的逻辑卷(如精简卷)
lvs -S 'lv_layout = "thin"'
# 显示特定卷组中的逻辑卷
lvs -S 'vg_name = "centos"'
# 显示使用率超过80%的逻辑卷
lvs -S 'data_percent > 80'
# 显示所有快照卷
lvs -S 'lv_attr =~ "^s"'
# 显示指定逻辑卷信息
lvs /dev/centos/root
# 显示多个逻辑卷
lvs /dev/centos/root /dev/centos/home
# 使用通配符
lvs /dev/centos/*
# 显示特定卷组的所有逻辑卷
lvs centos
# 详细模式
lvs -v
# 显示迁移信息
lvs -o +lv_name,move_pv,move_pe_count
# 显示条带化信息
lvs -o +stripes,stripe_size
# 显示镜像信息
lvs -o +mirror_log,copy_percent,sync_percent
# 以JSON格式输出(便于脚本解析)
lvs --reportformat json
# 选择特定字段的JSON输出
lvs --reportformat json -o lv_name,vg_name,lv_size
# 输出示例:
# {
# "report": [
# {
# "lv": [
# {"lv_name":"root", "vg_name":"centos", "lv_size":"50.00g"},
# {"lv_name":"swap", "vg_name":"centos", "lv_size":"4.00g"}
# ]
# }
# ]
# }
# 显示所有精简池
lvs -S 'lv_layout = "thin" && lv_role = "thin pool"'
# 显示精简池及其精简卷
lvs -a -o name,vg_name,attr,size,pool_lv,data_percent,metadata_percent
# 监控精简池使用率
lvs -o name,vg_name,data_percent,metadata_percent -S 'lv_layout = "thin" && lv_role = "thin pool"'
输出中的Attr字段包含9个字符,每个字符代表一种状态:
-:普通逻辑卷t:精简卷(thin)V:精简卷(thin volume)s:快照(snapshot)S:精简快照(thin snapshot)p:精简池(thin pool)v:虚拟(virtual)m:镜像(mirrored)M:镜像(未同步)r:RAIDR:RAID(未同步)w:可写(Writeable)r:只读(Read-only)R:只读激活(Read-only activated)i:继承(Inherited)a:任意(Anywhere)c:连续(Contiguous)l:条带化(Striped)n:正常(Normal)u:未管理(Unmanaged)-:固定次要编号m:无次要编号a:激活(Active)s:已挂载(Suspended)I:无效(Invalid)-:未激活o:打开(Open)X:未知(Unknown)-:未打开m:镜像(mirror)r:RAIDt:精简(thin)u:未知(unknown)v:虚拟(virtual)-:普通z:新空间归零(zero)-:新空间未归零基本的线性逻辑卷,数据连续存储。
lvs -o lv_name,lv_size,segtype
按需分配空间的逻辑卷,适合虚拟化环境。
lvs -S 'lv_layout = "thin"'
用于创建卷的快照,支持时间点恢复。
lvs -S 'lv_attr =~ "^s"'
lvs -a可以查看所有逻辑卷,包括快照和精简池df -h命令可以查看逻辑卷的实际使用情况:df -h | grep -E "^/dev/mapper"lvdisplay可以获得更详细的逻辑卷信息lvs --noheadings --units g -o lv_name,vg_name,lv_size,data_percentlvs --reportformat jsonlvs -S 'lv_attr =~ "^s"' -o lv_name,vg_name,snap_percentlvdisplay显示逻辑卷的详细信息
pvs显示物理卷信息
vgs显示卷组信息
lvcreate创建逻辑卷
#!/bin/bash
# 监控逻辑卷使用率
echo "检查逻辑卷使用情况..."
lvs --noheadings --units g -o lv_name,vg_name,data_percent | \
while read lv vg usage; do
usage_int=${usage%.*}
if [ $usage_int -gt 80 ]; then
echo "警告: 逻辑卷 $lv (卷组: $vg) 使用率达到 $usage%"
fi
done
# 检查快照空间使用
echo -e "\n检查快照状态..."
lvs --noheadings -S 'lv_attr =~ "^s"' -o lv_name,vg_name,snap_percent | \
while read lv vg usage; do
usage_int=${usage%.*}
if [ $usage_int -gt 90 ]; then
echo "警告: 快照 $lv (卷组: $vg) 使用率达到 $usage%,可能需要删除或扩展"
fi
done
#!/bin/bash
# 导出逻辑卷信息到CSV文件
OUTPUT_FILE="lvm_report_$(date +%Y%m%d).csv"
# 创建CSV文件头
echo "逻辑卷,卷组,大小,类型,使用率%,挂载点" > $OUTPUT_FILE
# 获取逻辑卷信息并追加到CSV
lvs --noheadings --units g -o lv_name,vg_name,lv_size,lv_attr,data_percent | \
while read lv vg size attr usage; do
# 判断卷类型
if [[ $attr == t* ]]; then
type="精简卷"
elif [[ $attr == s* ]]; then
type="快照"
elif [[ $attr == V* ]]; then
type="精简卷"
else
type="普通卷"
fi
# 获取挂载点
mount_point=$(df -h /dev/mapper/${vg}-${lv} 2>/dev/null | tail -1 | awk '{print $6}')
[ -z "$mount_point" ] && mount_point="未挂载"
echo "$lv,$vg,$size,$type,$usage,$mount_point" >> $OUTPUT_FILE
done
echo "报告已生成: $OUTPUT_FILE"