DL380 G6/G7 P410i 阵列卡驱动:Windows hpvsa 与 Linux hpsa 装机实战

发布时间:2026/10/23 2:12:28
DL380 G6/G7 P410i 阵列卡驱动:Windows hpvsa 与 Linux hpsa 装机实战
简介面向使用惠普 DL380 G6/G7 服务器并搭载 P410i 智能阵列控制器的运维与装机人员这份磁盘驱动包用于解决系统识别不到硬盘、驱动不匹配或安装阶段加载失败等问题也可作为旧平台重装系统时的驱动备份。压缩包共 11 个文件约 254KB包含 sys、inf、cat、oem 等驱动核心与安装配置文件exe 安装程序dll 通用库以及少量 xml、url 辅助文件基本覆盖 Windows 下的驱动安装、签名校验与文本模式加载需求。目前已有 1990 人学习下载。读者可从中获得与 P410i 控制器匹配的驱动文件及安装入口了解各文件在部署与排错中的分工便于在磁盘无法加载、重装系统或维护老服务器时快速定位可用驱动减少兼容性排查时间。1. 装系统时磁盘列表是空的DL380 G7 的 P410i 驱动卡在哪一步二手市场搬回来一台惠普 HP DL380 G7盘插满、阵列也做完了Windows 安装界面里的磁盘列表却干干净净——十有八九不是硬盘坏了是 P410i 这块板载阵列卡没被安装介质认出来。惠普 HP DL380 G6/G7 这代机器出厂年头久P410i 的驱动不在 Windows 安装镜像的自带清单里Linux 侧又要先分清 hpsa 和 cciss 是两条完全不同的路子。装不好会怎样轻则在分区界面耗半小时重则阵列配好了却把系统写进 U 盘或者驱动版本和固件对不上跑起来随机丢盘。这套环境适合手里压着 G6/G7 老机器、想把它重新拉起来当文件服务器、虚拟化宿主机或者练手机的人。2. 环境清单G6/G7 该配哪个版本的 hpvsa 与 hpsa 驱动2.1 先确认三件事机型代号、阵列卡固件、目标系统G6 和 G7 都是板载 Smart Array P410i外观几乎一样但 BIOS 分支和后期固件不同驱动选型不能只凭“都是 DL380”就下结论。我一般先确认三件事再动手准备介质顺序错了后面全是返工。第一件是机型代号。开机能从自检画面上看到HP ProLiant DL380 G7这行字已经在跑 Linux 的机器不用拆直接读 DMI# 需要 root输出应为 ProLiant DL380 G6 或 ProLiant DL380 G7 dmidecode -s system-product-name # 找惠普的 PCI Vendor ID 103c确认阵列卡被识别成什么设备 lspci -nn | grep -i -E raid|storagedmidecode读的是 SMBIOS 表比看机箱标签靠谱有些机器换过主板标签和实际对不上。lspci里103c:开头的那一行就是惠普自家的阵列控制器G6/G7 板载 P410i 常见的是103c:323a这一类 ID具体以实际输出为准——这个 ID 决定了内核会去绑哪个驱动后面排查认不到盘时要回头看它。第二件是阵列卡固件版本。不想重启就用ssacli ctrl slot0 show detail看Firmware Version机器还没进系统就在自检时按 F8 进 ORCA第一屏会把 P410i 的固件版本和缓存容量一起打出来。固件版本和驱动版本是一条链上的两环驱动装得再新固件还停在很早的分支某些高级特性也开不出来。第三件是目标系统。Windows Server 2003/2008 和 2008 R2 之后用的不是一个驱动文件Linux 那边取决于内核版本走 cciss 还是 hpsa。三件事确认完才轮到下载驱动——直接搜“P410i 驱动”抓一个压缩包就装是最容易踩坑的做法。2.2 驱动对照Windows 认 hpvsaLinux 认 hpsaP410i 在不同系统下的驱动名字、文件形态、要不要在安装阶段加载差别很大。下面这张表是我自己装机时对着核对用的具体的驱动小版本号以官方发布页当时列出的为准别照抄别人截图里的数字。目标系统Windows 侧驱动文件设备形态安装阶段是否需要手动加载Windows Server 2003 / 2008x86、x64hpcisss2.sys.inf.catStorport 小端口驱动需要Windows Server 2008 R2 / 2012 / 2012 R2hpvsa.sys.inf.catStorport 小端口驱动多数情况需要个别版本自带旧版Windows Server 2016 及以后不在官方支持范围—不建议在生产上折腾RHEL / CentOS 5、SLES 10cciss.ko块设备/dev/cciss/c0d0内核自带RHEL / CentOS 6cciss.ko或hpsa.ko/dev/cciss/c0d0或/dev/sda自带可用参数切换RHEL / CentOS 7 及新内核hpsa.koSCSI 设备/dev/sda内核自带表格里最容易被忽视的是最后一列。Windows 那边的问题不是“没有驱动”而是“驱动不在安装镜像里”所以要么在图形界面现场加载要么提前注入镜像。Linux 那边恰好相反主流发行版的内核早就内置了 hpsa装机时通常不用管真正的坑在装完之后设备名从/dev/cciss/c0d0变成了/dev/sda任何写死盘符的脚本、fstab、监控采集项全都要跟着改。文件形态也值得说一句。hpvsa和hpcisss2都是 Storport 小端口驱动不是即插即用的普通设备驱动解压出来必须保持.inf、.sys、.cat三个文件在同一层目录。有人把压缩包直接扔进三层文件夹里图形界面点“浏览”一路点下去选中的是别的 inf装完重启还是看不到盘。2.3 介质准备一个 U 盘、一份驱动目录、一张 SPP 镜像介质这一步别省。我见过太多“驱动明明拷进去了却读不到”的情况最后查出来是 U 盘的问题。G6/G7 这代机器板载只有 USB 2.0插一个 USB 3.0 的盘进 Windows 安装环境十次有三次认不出来换回老 U 盘就好了。所以准备清单是这样一个 8G 以上的 USB 2.0 U 盘格式化成 FAT32G6/G7 以 Legacy BIOS 引导为主FAT32 最省事。驱动目录压平hpvsa.inf、hpvsa.sys、hpvsa.cat直接放在 U 盘根目录下的drv\里不要再套子文件夹。Windows 安装 ISO 用原版别用第三方精简版。精简版动过boot.wim后面 DISM 挂载经常直接报错那时候连排查的入口都没有。一份 SPPService Pack for ProLiant镜像装完系统之后刷固件、补全管理组件要用比一个个去官网翻页面省时间。有 iLO 的话优先用虚拟光驱挂 ISO比刻盘、比反复插 U 盘都快也不用蹲在机柜前面。驱动下载页面上的文件通常是自解压 exe 或者 zip。Exe 在 Windows 上双击解开就行在 Linux 上做准备的话用unzip或者7z解解完先ls看一眼三个文件在不在同一层再往 U 盘里拷。3. Windows 落地把 hpvsa 驱动塞进安装介质的两种做法3.1 现场加载安装界面的「加载驱动程序」这是最直接的做法适合只装一两台机器。前提是阵列已经配好boot逻辑盘也在 ORCA 里设过了。开机自检按 F8 进 ORCA先建系统盘阵列两块盘做 RAID 1保存退出数据盘先不建等系统装完再说能少一半装错盘的概率。从 Windows ISO 引导走到“你想将 Windows 安装在哪里”这一步列表是空的点左下角“加载驱动程序”。浏览到 U 盘的drv\目录选中hpvsa.inf列表里会出现“HP Smart Array P410i Controller”一类的条目勾上下一步。驱动加载成功后磁盘列表会立刻刷新出现一块和逻辑盘容量对得上的磁盘。这一步失败最多的是签名提示。“Windows 无法验证此驱动程序软件的发布者”弹出来先别急着找绕过办法先核对位数x64 系统装 x86 驱动inf 里硬件 ID 对不上装十次也装不上。还有一种情况是驱动包从 P420/P430 那代机器上拷过来的硬件 ID 根本不是同一个同样会卡在这里。另一种常见做法是走 iLO 的 Virtual Floppy把驱动塞进一个 1.44M 的虚拟软盘镜像里安装界面里当成 A 盘加载。这招在 Windows Server 2003 时代是标配现在用的人少了但碰上老系统还是管用。3.2 离线注入用 DISM 把驱动写进 boot.wim 与 install.wim要批量装机器或者机器在异地只能远程挂 ISO就得提前把驱动注进镜像。这一步做对了安装全程不需要再插 U 盘。:: 管理员权限运行。先把原版 ISO 里的 boot.wim 和 install.wim 拷到本地目录 dism /Mount-Wim /WimFile:C:\wim\boot.wim /Index:2 /MountDir:C:\wim\mount :: 注入 hpvsa/ForceUnsigned 只在测试环境用正式环境优先用带正规签名的版本 dism /Image:C:\wim\mount /Add-Driver /Driver:D:\drv\hpvsa\hpvsa.inf /ForceUnsigned :: 确认驱动真的进去了别凭感觉 dism /Image:C:\wim\mount /Get-Drivers /Format:Table dism /Unmount-Wim /MountDir:C:\wim\mount /Commit/Index:2是boot.wim里的 Setup 映像索引 1 一般是 WinPE注错索引等于白做不确定就先dism /Get-WimInfo /WimFile:boot.wim看一眼。/Commit不能漏卸载时不提交挂载目录里的改动全部丢弃而且下次挂载还会提示上次没清理干净。/ForceUnsigned的代价是系统可能进入测试签名模式生产机上我一般不这么干宁可去找带正规签名的驱动版本。boot.wim注完只是让安装界面能认出盘install.wim还得同样注一遍。原因是系统装完第一阶段要重启进第二阶段那时候加载的是install.wim里的驱动集合只注boot.wim会出现“第一阶段能看到盘、重启之后又蓝屏找不到启动设备”的经典翻车。改完的镜像重新打包如果用 U 盘装注意 FAT32 单文件 4G 上限:: install.wim 超过 4G 时拆成 swm3800MB 是给 4G 上限留的余量 dism /Split-Image /ImageFile:C:\wim\install.wim /SWMFile:C:\wim\install.swm /FileSize:3800拆分之后安装器会自动识别同一目录下的install.swm、install2.swm不用额外改什么。整个目录拷进 FAT32 U 盘引导起来就能用。3.3 阵列、分区与首启动的收尾驱动装上了不代表就完事。P410i 上一个常见问题是逻辑盘建了不止一块容量还差不多安装器默认选第一块装完才发现系统跑在数据盘上。稳妥的顺序是先在 ORCA 里只建系统盘阵列装完系统进桌面再用ssacli或者重启进 ORCA 建第二块数据盘。这样安装阶段只有一块盘可选想装错都难。引导顺序也要设。G6/G7 进 BIOS 的 Boot 页把“Hard Drive”里的逻辑盘顺序调对系统盘排第一用 iLO 虚拟光驱装完记得把 Virtual CD/DVD 断开否则重启又回到安装界面。进系统之后第一件事不是装业务软件是把 SPP 里的驱动和管理组件补上。设备管理器里如果还有“其他设备”带黄色感叹号多半是 iLO 的管理接口没装驱动不影响磁盘但影响后面远程带外管理。补完之后用pnputil /enum-drivers | findstr /i hpvsa确认一下当前生效的驱动版本和固件版本记在一起以后出问题好回溯。4. Linux 落地hpsa 与 cciss 的取舍和设备命名4.1 判断内核接管的是 hpsa 还是 ccissLinux 这边装系统基本不用加载驱动但得先看清楚内核到底把这块卡交给了谁因为这决定了设备名和后面所有脚本的写法。# 看内核给阵列卡绑了哪个驱动Kernel driver in use 那行最直接 lspci -k -nn | grep -A3 -i 103c: # 看内核日志里谁认领了逻辑盘 dmesg | grep -i -E hpsa|cciss | head -20 # 看块设备命名sda 说明走 hpsacciss/c0d0 说明走 cciss lsblk -o NAME,SIZE,MODEL,TYPElsblk的MODEL列会显示LOGICAL VOLUME这是 P410i 逻辑盘的典型标识看到它就说明阵列卡这一层是通的问题只可能出在驱动绑定或者分区表上。dmesg里 hpsa 会打印控制器地址和队列深度cciss 打印的格式完全不一样对比一眼就能分辨。新内核基本只剩 hpsa。RHEL/CentOS 7 之后 cciss 逐步不启用4.20 之后的内核里干脆把 cciss 移除了。这意味着老机器升级系统时设备名会从/dev/cciss/c0d0变成/dev/sda/etc/fstab、监控采集、备份脚本全要跟着动。我一般在上生产前先把/etc/fstab里的设备名全换成 UUID用blkid取这一步做了能省掉后面一整轮故障排查。4.2 安装引导参数与 initramfs 的重建RHEL/CentOS 6 是个分水岭。同一块 P410i有的内核分支把它交给 cciss有的交给 hpsa而早期 hpsa 只认白名单里的控制器 IDP410i 有时候正好落在名单外面。表现就是安装器能看到盘装完重启进不去停在 dracut 的紧急 shell 里。强制切换的做法是在内核行末尾加参数# grub 引导菜单里按 e 编辑在内核行末尾追加 hpsa_allow_any1这个参数的语义是“不管控制器在不在白名单里hpsa 都接管”。副作用也要知道同一台机器上如果还插了别的 Smart Array 卡也会一起被 hpsa 抢走原来走 cciss 的设备名全变。写死盘符的脚本要先评估再上。驱动换过、或者内核升级过之后initramfs 必须重建否则新内核启动时找不到根分区# 把 hpsa 明确加进 initramfs-f 覆盖已有文件 dracut --force --add-drivers hpsa /boot/initramfs-$(uname -r).img $(uname -r) # 重建完先验证别直接 reboot lsinitrd /boot/initramfs-$(uname -r).img | grep -i hpsa--add-drivers是增量添加不会把原有驱动挤掉$(uname -r)保证写进当前运行内核对应的文件。验证这一步别省lsinitrd里看不到 hpsa 就重启等于把机器送进救援模式。远程机器上我还会在 grub 里留一个旧内核条目真起不来还能从 iLO 切回去。批量装机走 kickstart 的话驱动盘用inst.dd指定RHEL 6 上是inst.dd/dev/sdb1这种写法指向 U 盘上那个带rhdd3标记的目录。这一步现在用得越来越少但碰上必须锁在老版本内核的环境还是得会。4.3 装完补齐 ssacli 与 smartctl把盘看到裸设备层系统起来之后lsblk能看到盘只是第一步要看到阵列卡这一层得装管理工具。惠普这套命令行工具改过几次名字早期叫hpacucli中间叫过hpssacli现在叫ssacli。命令结构基本没怎么变老脚本里把hpacucli替换成ssacli通常能直接跑。# 控制器、逻辑盘、物理盘三层一起看 ssacli ctrl all show config ssacli ctrl slot0 ld all show ssacli ctrl slot0 pd all show status # 穿透阵列卡读逻辑盘的 SMART0 是逻辑盘序号不是物理盘 smartctl -a -d cciss,0 /dev/sdactrl slot0里的 slot 号从ctrl all show config的输出里取多控制器机器上不能想当然写 0。-d cciss,0这个写法在 hpsa 接管之后依然可用0指的是逻辑盘编号想看单块物理盘的 SMARTP410i 上多数情况拿不到只能看到逻辑盘层面这一点和直连 SATA 的机器不一样做硬盘健康监控的时候要提前想好降级方案。到这一步Linux 侧算是装完了内核认卡、设备名确定、管理工具能查。剩下的就是把阵列卡固件和驱动版本记进台账下次换盘、扩容的时候不用重新摸一遍。5. 排查清单P410i 认不到盘、驱动装不上的 5 个坑5.1 坑一加载驱动时提示「找不到签名的驱动程序」现象是选中 inf 之后弹窗拒绝或者驱动条目出现在列表里但一装就报错安装界面反复刷新还是看不到磁盘。原因通常有三个位数拿反了x64 系统喂了 x86 驱动驱动包是从 P420/P430 那代机器上拷来的inf 里的硬件 ID 和 P410i 对不上在 Windows Server 2016 之后的系统上装 2008 R2 时代的hpvsa签名算法不匹配。解决办法是先核对硬件 ID。设备管理器里看未知设备的属性硬件 ID 里应该有PCI\VEN_103CDEV_323A这一类和驱动 inf 里[Manufacturer]段的条目对得上才往下走。确实要用老驱动就在离线注入时加/ForceUnsigned别在图形界面里硬点。5.2 坑二iLO 挂载 ISO 后引导不起来直接进了旧系统现象是重启后没从虚拟光驱启动几秒之后又进了原来那个系统白等一轮。原因是 G6/G7 的 iLO 2/iLO 3 虚拟介质必须在 POST 之前挂好并 Connect而且 BIOS 里的引导顺序得把 CD/DVD 排在硬盘前面。有人挂上 ISO 就直接重启POST 阶段虚拟光驱还没枚举出来自然轮不到它。做法是先在 iLO 的 Virtual Media 页面挂载并点 Connect再重启自检时按 F11 进 Boot Menu 手动选iLO Virtual CD-ROM。装完之后记得回去断开挂载否则每次重启都先进安装界面。5.3 坑三Linux 装完重启卡在 dracut 紧急 shell现象是 grub 过了之后屏幕停在一行行日志最后掉进 dracut 的紧急 shellls /dev里找不到sda也找不到cciss。原因有两个方向initramfs 里没带 hpsa内核起来之后没人认领阵列卡或者内核已经从 cciss 切到 hpsa但 grub 里的root还写着/dev/cciss/c0d0那个设备节点已经不存在了。处理办法是从安装介质进救援模式chroot 进去重建 initramfs同时把root改成 UUID。用blkid取 UUID 写进 grub 和 fstab比写设备名抗折腾。改完先用lsinitrd确认 hpsa 在里面再重启。5.4 坑四阵列建了两块逻辑盘系统装到了错的那块现象是装完拔掉 U 盘起不来或者起来了发现数据盘上有个 Windows 目录。原因是 P410i 上有多块逻辑盘的时候ORCA 里的 Boot Controller Order 没设安装器按枚举顺序默认选了第一块而第一块未必是系统盘。两块盘容量还一样的话肉眼根本分不出来。我一般的做法是装系统阶段只建一块逻辑盘装完进桌面再建数据盘已经在多盘环境里装的进 ORCA 把系统盘那块设为 boot volume或者装的时候按容量和盘位编号认准了再点下一步。5.5 坑五缓存电池失效写缓存被自动关掉现象是系统装好了业务跑起来感觉不对劲随机写慢得离谱数据库刷盘延迟高但 CPU、内存、网络全都不高。原因是 P410i 上的 BBWC/FBWC 电池老化或者没充满控制器检测到电池不可用自动把写缓存关掉RAID 5 的写惩罚全部暴露到业务层。这个问题不会报错只会慢属于典型的黑匣子。排查用ssacli ctrl slot0 show status看Cache Status和电池状态。电池确实不行就换或者干脆接受现实把阵列从 RAID 5 换成 RAID 10。有些固件版本支持ssacli ctrl slot0 modify dwcenable nobatteryenable强开写缓存我不建议在存业务数据的机器上这么干断电就是丢数据省下来的那点性能不值得。6. 装完怎么验证从阵列卡缓存状态到一次顺序读压测驱动装上、系统起得来只能算“装完了”离“跑得住”还有一段。我每次装完 G6/G7 都会走一套固定检查从阵列卡往下逐层验证一层不通就不往下走。先看控制器这一层# 固件版本、驱动名、缓存状态、电池状态一次看全 ssacli ctrl slot0 show detail # 逻辑盘的后台校验/初始化有没有跑完 ssacli ctrl slot0 ld all show detailshow detail里重点看三项Firmware Version是不是和驱动匹配的分支Cache Status是不是EnabledBattery/Capacitor Status是不是正常。刚建完阵列的机器Parity Initialization可能还在跑这时候测性能毫无意义等它跑完再压。再往下看操作系统这一层。Linux 上用lsblk -o NAME,SIZE,MODEL确认设备名和容量对得上cat /sys/block/sda/device/model会打出LOGICAL VOLUMEWindows 上用Get-Disk和pnputil /enum-drivers | findstr /i hpvsa确认驱动版本。这一步是给自己留证据将来出问题能说清楚当时是什么状态。最后跑一次压测顺序读和随机写各来一段# 顺序读验证链路带宽/dev/sdb 必须先确认是空数据盘 fio --nameseqread --filename/dev/sdb --rwread --bs1M \ --iodepth16 --numjobs2 --direct1 --runtime60 --time_based # 4K 随机写验证写缓存到底有没有真的生效 fio --namerandwrite --filename/dev/sdb --rwrandwrite --bs4k \ --iodepth32 --numjobs4 --direct1 --runtime60 --time_based--direct1绕开页缓存测的才是真实设备--time_based配--runtime60让测试跑满 60 秒而不是写完就停--filename写错一个字母就是事故跑之前一定要lsblk再确认一遍。P410i 是 3G SAS 背板顺序读跑不满很正常但 4K 随机写如果只有几百 IOPS基本可以断定写缓存没生效回头查电池。现象先看哪里大概率结论安装界面看不到磁盘ssacli有没有逻辑盘阵列没建或没设 boot volume驱动装了但重启蓝屏install.wim是否也注入了只注了boot.wimLinux 设备名和脚本对不上lspci -k的驱动名cciss 切 hpsa 了顺序读正常、随机写极慢Cache Status缓存电池失效从那以后我每次装完 G6/G7都强制走一遍这套流程ssacli看缓存 →lsblk看命名 →fio跑 60 秒。多花十分钟比业务上线之后半夜被叫起来查磁盘强得多。希望帮到你。本文还有配套的精品资源点击获取