Storage 使用lsattr解释AIX中的LUN id和目标id

Storage 使用lsattr解释AIX中的LUN id和目标id,storage,aix,scsi,Storage,Aix,Scsi,我对AIX非常陌生,我在AIX中发现了一个命令lsattr,它有助于获取设备的SCSI id和LUN id。我无法理解如何解释SCSI id和LUN id的值。以下是一个示例输出: bash-4.2# lsattr -El hdisk693 ....... lun_id 0x25f000000000000 Logical Unit Number ID False scsi_id 0x21300

我对AIX非常陌生,我在AIX中发现了一个命令lsattr,它有助于获取设备的SCSI id和LUN id。我无法理解如何解释SCSI id和LUN id的值。以下是一个示例输出:


bash-4.2# lsattr -El hdisk693
.......
lun_id        0x25f000000000000             Logical Unit Number ID           False
scsi_id       0x21300                       SCSI ID                          False
.......
我跳过了不相关的行

1) LUN id是0x25f000000000000,这是一个巨大的值,在一些博客中读到,我们必须将其右移48位以获得实际值,这在哪里记录

2) 还有SCSI id,即使这个值看起来很大,0x21300

有人能帮我吗

谢谢和问候


Arun Vijapur

LUN为8字节。共有4种形式,这些形式在LUN的高阶2位中给出。当人们说要将其右移48位时,这是因为他们采用的是“单级LUN结构”,即您的LUN


它变得相对复杂。参见sam5r14.pdf,第4.7节。您可以在此处获取所有SCSI规范:

以下是我可读的答案。有关更多信息,请参阅我上面的评论

typedef struct scsi_long_lun_t

{

   union
   {

      struct
      {

         // Method 0 - Peripheral Device Addressing Method (8 bit LUN)

         // |        7-6        |            5-0            |
         // +-------------------+---------------------------+
         // |Address Method(00b)|    Bus Identifier (00h)   |
         // +-----------------------------------------------+
         // |       Single Level LUN (00h to FFh)           |
         // +-------------------+---------------------------+
         byte   MethodAndBus;
         byte   Lun8;
         byte   Reserved[6];
      } Method0;

      struct
      {
         //  Method 1 - Flat Space Addressing Method (14 bit LUN)

         // |        7-6        |            5-0            |
         // +-------------------+---------------------------+
         // |Address Method(01b)|   High Flat Space LUN     |
         // +-----------------------------------------------+
         // |      Flat Space LUN (0000h to 3FFFh)          |
         // +-------------------+---------------------------+
         byte   MethodAndHighLun;
         byte   LowLun;
         byte   Reserved[6];
      } Method1;

      struct
      {
         //  Method 2 - Logical Unit Addressing Method

         // |        7-6        |            5-0            |
         // +-------------------+---------------------------+
         // |Address Method(10b)|          Target           |
         // +-----------------------------------------------+
         // |     Bus (7-5)        |       LUN (4-0)        |
         // +-------------------+---------------------------+
         byte   MethodAndTarget;
         byte   BusAndLun[7];
      } Method2;

      struct
      {

         //  Method 3 - Extended Logical Unit Addressing

         // |        7-6        |  5-4    |      3-0         |
         // +-------------------+----------------------------+
         // |Address Method(11b)| Length  |Extended Addr Meth|
         // +------------------------------------------------+
         // |  Extended address method specific (7 bytes)    |
         // +------------------------------------------------+
         byte  MethodEtc;
         byte  MethodSpecific[7];
      } Method3;

   } u;

} scsi_long_lun_t;

首先谢谢你的回复。现在我明白为什么我们要移位48位了。但移位48位仅在“使用外围设备寻址方法的单级LUN结构”的情况下才是正确的。我如何知道正在使用哪种LUN结构(单级或复杂),以及正在使用哪种寻址方法(外围设备、平面空间、扩展平面空间或长扩展平面空间)?这有点复杂,但我将尝试减少它:下面是一些来自SCSI目标的剪报,可能会有所帮助。由于长度为'struct{//Method 1-平面空间寻址方法(14位LUN)//| 7-6 | 5-0 |/+/+-------------+------------------------------------+/|寻址方法(01b),我不得不使用一些注释|高级平面空间LUN |/+------------------------------------------------------------------+/|平面空间LUN(0000h到3FFFh)|/+-------------------+-----------------------------------------+字节方法和高级LUN;字节低级LUN;字节保留[6];}方法1;`结构{//Method 2-逻辑单元寻址方法//7-6-5-0 |//+------------------+--------------------------------------+/|地址方法(10b)|目标//+--------------------------------------+/|总线(7-5)| LUN(4-0)|//+--------------+------------------------------------+字节方法和目标;字节总线和LUN[7];}方法2;`结构{//Method 3-扩展逻辑单元寻址//7-6-5-4 | 3-0 |//++-------------------------------------------------------------------------++//|地址方法(11b)|长度|扩展地址方法//+----------------------------------------------------------------------------++/|特定扩展地址方法(7字节)|//+--------------------------------------+字节方法等;字节方法特定[7];}方法3`