服务器测评网
我们一直在努力

Linux下如何查看LUN信息?具体命令和步骤是什么?

在Linux系统中,查看LUN(Logical Unit Number,逻辑单元号)是存储管理中的常见操作,主要用于识别和管理连接到服务器的存储设备,LUN是存储网络中逻辑设备的标识符,通常通过SCSI(Small Computer System Interface)或光纤通道(Fibre Channel)协议与服务器通信,本文将详细介绍在Linux系统中查看LUN的多种方法,涵盖不同场景和工具,帮助用户高效获取存储设备信息。

Linux下如何查看LUN信息?具体命令和步骤是什么?

使用lsscsi命令查看LUN基本信息

lsscsi是一个轻量级命令行工具,用于列出系统中所有SCSI设备,包括LUN信息,该工具以列表形式展示设备的通道号(Channel)、目标ID(Target ID)、LUN号以及设备型号和厂商,适合快速查看存储设备的连接状态。

安装与使用

在基于Debian/Ubuntu的系统上,可通过以下命令安装:

sudo apt-get install lsscsi  

在基于RHEL/CentOS的系统上,使用:

sudo yum install lsscsi  

安装后,直接执行lsscsi即可列出所有SCSI设备:

lsscsi  

输出示例中,每行包含[设备类型] [通道号:目标ID:LUN号] [设备路径] [厂商/型号]

[0:0:0:0] disk /dev/sda  ATA Kingston SA400S37  
[1:0:1:0] disk /dev/sdb  LSI Logic MegaRAID SAS  
[2:0:0:1] disk /dev/sdc  HGST HMS5C4040BLE640  

[2:0:0:1]表示通道号为2,目标ID为0,LUN号为1的磁盘设备,若需过滤特定LUN,可结合grep命令,例如查看所有LUN为0的设备:

lsscsi | grep ":0 "  

通过/proc/scsi/scsi文件查看原始LUN信息

Linux内核在/proc/scsi/scsi文件中存储了SCSI设备的原始信息,包括LUN、设备类型、厂商和型号等,该方法无需安装额外工具,适合调试或查看底层细节。

查看方法

直接使用catless命令查看文件内容:

cat /proc/scsi/scsi  

输出示例如下:

Attached devices:  
Host: scsi0 Channel: 00 Id: 00 Lun: 00  
  Vendor: ATA      Model: Kingston SA400S37 Rev: S4M0  
  Type:   Direct-Access                    ANSI SCSI revision: 06  
Host: scsi1 Channel: 00 Id: 01 Lun: 00  
  Vendor: LSI      Model: MegaRAID SAS Rev: 05.24.00.00  
  Type:   RAID                           ANSI SCSI revision: 06  
Host: scsi2 Channel: 00 Id: 00 Lun: 01  
  Vendor: HGST     Model: HMS5C4040BLE640 Rev: CO4O  
  Type:   Direct-Access                    ANSI SCSI revision: 06  

Lun: 00Lun: 01直接标识了设备的逻辑单元号,若需提取LUN信息,可结合awkcut命令,例如提取所有LUN号:

cat /proc/scsi/scsi | grep "Lun:" | awk '{print $3}'  

使用multipath工具查看多路径环境下的LUN

在存储多路径(Multipathing)环境中,单个LUN可能通过多条物理路径连接到服务器。multipath工具用于管理多路径设备,其输出可清晰展示LUN的路径信息和WWID(World Wide Identifier)。

Linux下如何查看LUN信息?具体命令和步骤是什么?

安装与使用

基于Debian/Ubuntu的系统安装:

sudo apt-get install multipath-tools  

基于RHEL/CentOS的系统安装:

sudo yum install device-mapper-multipath  

安装后,执行multipath -l列出所有多路径设备:

multipath -l  

输出示例:

3600507680281080b70001200000b0000 dm-0 LSI,MR9266-8i  
size=8T features='1 queue_if_no_path' hwhandler='1 alua'  
`-+- policy='service-time 0' prio=50 status=active/optimized  
  |- 2:0:0:1 sdc 8:32 active ready running  
  `- 3:0:0:1 sdd 8:48 active ready running  

2:0:0:13:0:0:1分别表示两条物理路径的通道、目标ID和LUN号,若需查看多路径设备的详细映射关系,可使用multipath -v3命令增加输出级别。

通过sysfs文件系统查看LUN属性

Linux的sysfs文件系统挂载在/sys目录下,包含了内核和设备的详细信息,通过遍历/sys/class/scsi_device目录,可获取每个SCSI设备的LUN属性。

查看方法

列出所有SCSI设备目录:

ls /sys/class/scsi_device  

输出类似0:0:0:01:0:1:0等目录名称,格式为通道号:目标ID:LUN号,进入特定设备目录后,可查看其属性,

cat /sys/class/scsi_device/2:0:0:1/device/scsi_disk  

或直接提取LUN号:

for device in /sys/class/scsi_device/*; do  
  lun=$(basename $device | cut -d: -f3)  
  echo "Device: $(basename $device), LUN: $lun"  
done  

该方法适合脚本化处理,可批量获取LUN信息。

使用scsi_id命令获取LUN对应设备的唯一标识

在自动化管理中,可能需要通过LUN获取设备的唯一标识(如WWID)。scsi_id工具可基于SCSI设备的 Inquiry数据生成唯一ID,常用于多路径配置。

Linux下如何查看LUN信息?具体命令和步骤是什么?

安装与使用

基于Debian/Ubuntu的系统安装:

sudo apt-get install scsi_id  

基于RHEL/CentOS的系统安装(通常包含在sg3_utils包中):

sudo yum install sg3_utils  

执行以下命令获取指定设备的WWID:

scsi_id -g -u -d /dev/sdb  

-d /dev/sdb指定设备路径,-g表示使用SCSI-3格式,-u输出唯一ID,输出示例:3600507680281080b70001200000b0000,该ID与LUN一一对应,可用于标识存储设备。

结合udev规则实现LUN自动识别

通过udev规则,可根据LUN信息自动触发设备挂载、标签设置等操作,为特定LUN的设备创建符号链接:

  1. 创建/etc/udev/rules.d/99-lun.rules文件,添加规则:
    KERNEL=="sd*", SUBSYSTEM=="block", ENV{SCSI_IDENT_LUN}=="1", SYMLINK+="storage-lun1"  
  2. 重载udev规则并触发设备事件:
    sudo udevadm control --reload-rules  
    sudo udevadm trigger  

    上述规则中,ENV{SCSI_IDENT_LUN}=="1"表示LUN号为1的设备,将被创建为/dev/storage-lun1符号链接。

在Linux系统中查看LUN的方法多样,可根据需求选择合适的工具:

  • 快速查看:使用lsscsi/proc/scsi/scsi,适合日常运维;
  • 多路径环境:通过multipath工具管理路径和LUN映射;
  • 底层调试:利用sysfs文件系统获取设备属性;
  • 自动化场景:结合scsi_idudev规则实现设备标识与自动处理。

掌握这些方法,可帮助用户高效管理存储设备,确保存储系统的稳定运行。

赞(0)
未经允许不得转载:好主机测评网 » Linux下如何查看LUN信息?具体命令和步骤是什么?