HPSA - Hewlett Packard Smart Array 驱动程序¶
此文件描述了 HP Smart Array 控制器的 hpsa SCSI 驱动程序。 hpsa 驱动程序旨在取代较新的 Smart Array 控制器的 cciss 驱动程序。 hpsa 驱动程序是一个 SCSI 驱动程序,而 cciss 驱动程序是一个“块”驱动程序。 实际上,cciss 既是一个块驱动程序(用于逻辑驱动器)又是一个 SCSI 驱动程序(用于磁带驱动器)。 cciss 驱动程序的这种“分裂”设计是过度复杂性的一个来源,消除这种复杂性是 hpsa 存在的原因之一。
支持的设备¶
Smart Array P212
Smart Array P410
Smart Array P410i
Smart Array P411
Smart Array P812
Smart Array P712m
Smart Array P711m
StorageWorks P1210m
此外,如果指定了内核启动参数“hpsa_allow_any=1”,较旧的 Smart Array 可能会与 hpsa 驱动程序一起工作,但是 HP 未使用此驱动程序对其进行测试或支持。 对于较旧的 Smart Array,仍应使用 cciss 驱动程序。
可以使用“hpsa_simple_mode=1”启动参数来防止驱动程序将控制器置于“高性能”模式。 区别在于,在简单模式下,每个命令完成都需要一个中断,而在“高性能模式”(默认模式,通常性能更好)下,可以通过单个中断指示多个命令完成。
/sys 中的 HPSA 特定条目¶
除了 /sys 中提供的通用 SCSI 属性外,hpsa 还支持以下属性
HPSA 特定主机属性¶
/sys/class/scsi_host/host*/rescan /sys/class/scsi_host/host*/firmware_revision /sys/class/scsi_host/host*/resettable /sys/class/scsi_host/host*/transport_mode主机“rescan”属性是一个只写属性。 写入此属性将导致驱动程序扫描新的、已更改的或已删除的设备(例如,热插拔磁带驱动器,或新配置或删除的逻辑驱动器等),并通知 SCSI 中间层检测到的任何更改。 通常,HP 的 Array Configuration Utility(GUI 或命令行变体)会自动触发此操作,因此对于逻辑驱动器更改,用户通常不必使用它。 在热插拔设备(如磁带驱动器)或包含预配置逻辑驱动器的整个存储盒时,它可能很有用。
“firmware_revision”属性包含 Smart Array 的固件版本。 例如
root@host:/sys/class/scsi_host/host4# cat firmware_revision 7.14transport_mode 指示控制器是否处于“高性能”或“简单”模式。 这由“hpsa_simple_mode”模块参数控制。
“resettable”只读属性指示特定控制器是否能够遵守“reset_devices”内核参数。 如果设备可重置,则此文件将包含“1”,否则包含“0”。 例如,kdump 使用此参数在驱动程序加载时重置控制器,以消除控制器上的任何未完成命令,并将控制器置于已知状态,以便 kdump 启动的 i/o 能够正常工作,并且不会因来自先前内核的控制器上剩余的陈旧命令或其他陈旧状态而中断。 此属性使 kexec 工具能够在用户尝试将无法遵守 reset_devices 内核参数的设备指定为转储设备时发出警告。
HPSA 特定磁盘属性¶
/sys/class/scsi_disk/c:b:t:l/device/unique_id /sys/class/scsi_disk/c:b:t:l/device/raid_level /sys/class/scsi_disk/c:b:t:l/device/lunid(其中 c:b:t:l 是设备的控制器、总线、目标和 lun)
例如
root@host:/sys/class/scsi_disk/4:0:0:0/device# cat unique_id 600508B1001044395355323037570F77 root@host:/sys/class/scsi_disk/4:0:0:0/device# cat lunid 0x0000004000000000 root@host:/sys/class/scsi_disk/4:0:0:0/device# cat raid_level RAID 0
HPSA 特定 ioctl¶
为了与为 cciss 驱动程序编写的应用程序兼容,hpsa 驱动程序也支持 cciss 驱动程序支持的许多(但不是全部)ioctl。 这些使用的数据结构在 include/linux/cciss_ioctl.h 中描述
- CCISS_DEREGDISK、CCISS_REGNEWDISK、CCISS_REGNEWD
以上三个 ioctl 都执行完全相同的操作,即导致驱动程序重新扫描新设备。 这与写入 hpsa 特定主机“rescan”属性执行的操作完全相同。
- CCISS_GETPCIINFO
返回 PCI 域、总线、设备和功能以及“板 ID”(PCI 子系统 ID)。
- CCISS_GETDRIVVER
以编码为三个字节的形式返回驱动程序版本
(major_version << 16) | (minor_version << 8) | (subminor_version)- CCISS_PASSTHRU、CCISS_BIG_PASSTHRU
允许将“BMIC”和“CISS”命令传递到 Smart Array。 HP Array Configuration Utility、SNMP 存储代理等广泛使用这些命令。 有关一些示例,请参见 http://cciss.sf.net 上的 cciss_vol_status。