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。