在Linux系统中,LUN(Logical Unit Number,逻辑单元号)是存储区域网络(SAN)或附加存储设备中逻辑单元的唯一标识符,用于区分同一存储控制器下的不同存储设备,准确查看LUN ID对于存储管理、多路径配置、故障排查等操作至关重要,本文将详细介绍Linux环境下查看LUN ID的多种方法,涵盖常用命令、系统文件及厂商工具,并对比不同场景下的适用性。
通过lsscsi命令查看LUN ID
lsscsi
是一个轻量级命令行工具,用于列出系统中的SCSI设备(包括SAS、SATA、SAN等),并以易读的格式显示设备信息,其中直接包含LUN ID。
安装lsscsi
若系统中未预装lsscsi
,可通过包管理器安装:
- 基于Red Hat的系统(如CentOS、RHEL):
yum install lsscsi
- 基于Debian的系统(如Ubuntu):
apt install lsscsi
基本使用
直接执行lsscsi
命令,默认按主机、通道、目标ID、LUN ID的顺序列出设备,输出格式为:
[主机号:通道号:目标ID:LUN ID] 设备类型 供应商 设备名
lsscsi
输出示例:
[0:0:0:0] disk VMware, VMware Virtual S /dev/sda
[1:0:0:0] disk LSILOGIC, LSI MegaRAID 8 /dev/sdb
[2:0:1:0] disk DELL PERC 8/HBA Adapter /dev/sdc
[0:0:0:0]
表示主机0、通道0、目标ID0、LUN ID0,最后一个数字即为LUN ID。
高级选项
-g
:显示设备标识符(如WWN),同时包含LUN信息:lsscsi -g
输出示例:
[0:0:0:0] /dev/sda TCG_IBM__3PARStorage_C0F1000000000000 [1:0:0:0] /dev/sdm LSILOGIC_312f444400194e007e7d4a4d53414900
-s
:以简短格式输出,仅显示设备路径和LUN信息:lsscsi -s
输出示例:
/dev/sda: [0:0:0:0] /dev/sdm: [1:0:0:0]
通过/sys文件系统查看LUN ID
Linux内核将SCSI设备信息暴露在/sys
文件系统中,通过读取特定文件可直接获取LUN ID,无需额外安装工具。
查看SCSI设备目录
/sys/class/scsi_device/
目录下以hostX:channelY:idZ:lunW
格式命名的子目录,对应每个SCSI设备,其中W
即为LUN ID:
ls /sys/class/scsi_device/
输出示例:
0:0:0:0 1:0:0:0 2:0:1:0
关联块设备与LUN ID
对于块设备(如/dev/sda
),可通过其设备目录下的链接获取LUN信息:
ls -l /sys/block/sda/device/scsi_device
输出示例:
lrwxrwxrwx 1 root root 0 10月 1 10:00 /sys/block/sda/device/scsi_device -> ../../0:0:0:0
链接路径中的0:0:0:0
即表示主机0、通道0、目标ID0、LUN ID0。
提取LUN ID脚本
若需批量提取LUN ID,可通过以下脚本遍历/sys/class/scsi_device/
目录:
for device in /sys/class/scsi_device/*; do lun_id=$(basename $device | cut -d: -f4) block_path=$(readlink $device/device/block) device_name="/dev/${block_path##*/}" echo "设备: $device_name, LUN ID: $lun_id" done
输出示例:
设备: /dev/sda, LUN ID: 0
设备: /dev/sdm, LUN ID: 0
设备: /dev/sdc, LUN ID: 1
多路径环境下的LUN ID查看
在多路径存储环境中,同一LUN可能通过多条物理路径呈现,需使用多路径工具(如multipath
或device-mapper
)查看逻辑LUN ID。
安装multipath工具
- 基于Red Hat的系统:
yum install device-mapper-multipath
- 基于Debian的系统:
apt install multipath-tools
使用multipath命令
执行multipath -l
列出多路径设备,输出中包含WWID(全球唯一标识符)和路径信息,部分场景下可直接关联LUN ID:
multipath -l
输出示例:
360050768028108b7000123456789abcd dm-0 DELL,Virtual Disk
size=100G features='1 queue_if_no_path' hwhandler='1 alua'
`-+- policy='service-time 0' prio=50 status=active
|- 2:0:1:0 sdc 8:32 active ready running
`- 3:0:1:0 sdd 8:48 active ready running
路径2:0:1:0
和3:0:1:0
中的1
即为LUN ID。
查看多路径设备属性
通过multipathd show paths
命令可获取更详细的路径信息,包括LUN ID:
multipathd show paths format "%d %n %L"
输出示例:
sdc 2:0:1:0 1
sdd 3:0:1:0 1
通过存储厂商工具查看LUN ID
不同存储厂商(如Dell、HP、EMC、NetApp等)提供专用管理工具,可更精准地获取LUN ID及存储元数据。
Dell PowerStore/EqualLogic
使用omreport
命令(需安装OpenManage Essentials):
omreport storage pdisk controller=0
输出中包含“LUN ID”字段,
ID: 0
Name: Disk 0:0:0
Status: Ok
LUN ID: 0
HP 3PAR StoreServ
使用ssacli
命令(需安装HP Smart Storage Administrator CLI):
ssacli controller slot=0 pdisk show
输出示例:
Port Box Bay Size Type LUN ID
0I1 1 1 960GB SSD 0
0I2 1 2 960GB SSD 1
EMC VNX/VNXe
使用naviseccli
命令(需安装EMC Unisphere CLI):
naviseccli -h <storage_ip> storagegroup -list -lunid
输出中列出存储组关联的LUN ID。
不同方法对比与适用场景
为便于选择合适的方法,以下通过表格对比各工具的特点:
方法 | 适用场景 | 优点 | 缺点 | 示例命令 |
---|---|---|---|---|
lsscsi | 通用SCSI设备查看 | 简单直观,信息全面 | 需要安装工具 | lsscsi -g |
/sys文件系统 | 底层设备信息查询 | 无需额外工具,信息准确 | 需要熟悉文件系统结构 | ls /sys/class/scsi_device/ |
multipath工具 | 多路径环境 | 支持多路径聚合信息 | 仅适用于多路径配置 | multipath -l |
厂商工具 | 特定存储设备 | 功能强大,厂商定制信息 | 依赖厂商工具,兼容性差 | omreport storage pdisk |
相关问答FAQs
Q1: 为什么使用不同命令查看LUN ID时,结果可能不一致?
A1: 这通常是由查询角度不同导致的。lsscsi
显示的是SCSI总线层面的原始LUN ID(物理路径标识),而multipath
在多路径环境下可能显示逻辑映射后的LUN ID(由存储阵列分配的逻辑标识),厂商工具可能使用自定义的LUN命名规则(如基于LUN组或WWN映射),导致与系统工具结果不一致,需结合实际场景判断:若需物理路径信息,使用lsscsi
或/sys
;若需逻辑设备信息,使用multipath
或厂商工具。
Q2: 如何在Linux中永久记录LUN ID与设备名的对应关系?
A2: 可通过编写udev规则实现,创建/etc/udev/rules.d/99-lun-id.rules
文件,添加以下内容(以lsscsi
输出的LUN ID为基准):
ACTION=="add", KERNEL=="sd*", SUBSYSTEM=="block", ENV{ID_SERIAL}=="<WWID>", SYMLINK+="disk/by-lun/%E{LUN_ID}"
<WWID>
需替换为设备的WWN(可通过lsscsi -g
获取),%E{LUN_ID}
为udev环境变量(需通过scsi_id
命令提取),规则生效后,设备可通过/dev/disk/by-lun/<LUN_ID>
访问,实现LUN ID与设备名的永久绑定。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/15126.html