如何检查某个 LUN 是否已提供给我的服务器?Linux 命令有哪些?LUN 是否
fdisk -l
像正常的 /dev/sda 一样显示在命令中?Linux 中与常规 SAN 相关检查相关的其他命令有哪些?
WWN 是什么?它有什么关系?
如果我们有 LUN,那么多路径有什么用呢?
有点长,但我无法理解这个主题。任何帮助都将不胜感激。
答案1
是的,HBA 将把 LUN 作为另一个磁盘呈现给操作系统;fdisk -l
应该列出这一点。
由于操作系统无法查看 SAN 存储,因此操作系统中没有特殊命令可以让您了解 SAN 环境。但是,一些存储供应商提供了与 HBA 卡交互的工具,让您能够查看。
设备的 WWN(全球名称)是一种标识符,很像 IP 网络中的 MAC 地址(本质上等同于 iSCSI 方面的 EUI);它应该唯一地标识存储网络的成员(SAN 和客户端计算机的 HBA 都具有 WWN),并且用于传输(“这些数据需要去哪里?”)以及身份验证(“哪个系统可以看到这个 LUN?”)。
本质上,多路径是一种消除单点故障或平衡整个存储网络负载的方法。
例如,假设您的 SAN 机架有两个控制器单元,这样如果其中一个发生故障,另一个仍可以提供数据。但是,如果您仅通过单个控制器单元获得 LUN,那么这对您没有任何好处小路- 通过现已去世的控制人。
SAN 交换机和服务器中的 HBA 卡也是如此;您不希望因为单个设备发生故障而失去连接。由于每台设备都有自己的 WWN,因此在整个系统中添加冗余将为您提供至少 4 条路径;两个 HBA 中的每一个都将通过两个控制器中的每一个查看每个 LUN。
但问题在于,如果没有多路径感知,客户端系统上的操作系统会将这 4 条路径视为单独的磁盘(回到磁盘只是按原样呈现给主机操作系统的事实)。因此,多路径赋予操作系统的能力是,它能够确定同一磁盘的所有副本实际上只是到达同一磁盘的多条路径,并且可以使用备用路径作为故障转移或平衡路径上的负载。
答案2
在 Linux 上,与 SAN 存储交互时使用的命令取决于所使用的协议。您从 SAN 提供给 Linux 服务器的存储通常不会通过类似命令显示,fdisk
直到您发现它为止。对于 iscsi,您可以使用 PORTAL 来执行此操作,iscsiadm --mode discovery --portal $PORTAL --type sendtargets
其中 PORTAL 是您的 SAN 的 IP 地址。对于光纤通道,您可以编写$C $T $L到 /sys/class/scsi_host/host$H/scan,其中 C 是通道,T 是目标 id,L 是 lun,H 是主机。
答案3
另一点需要注意的是:您可以使用命令查看 iscsi 启动器的当前状态iscsiadm -m session -P 3
。这将向您显示哪些块设备映射到哪些目标上的哪些 LUN。
通过查看 sysfs 文件系统也可以获得相同的信息。我编写了一个 Perl 脚本,用于查询 sysfs 条目并将 iscsi 块设备映射到其目标和 LUN:https://gist.github.com/3154821