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.14

transport_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。