Storage 使用lsattr解释AIX中的LUN id和目标id
我对AIX非常陌生,我在AIX中发现了一个命令lsattr,它有助于获取设备的SCSI id和LUN id。我无法理解如何解释SCSI id和LUN 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
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 VijapurLUN为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`