ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

浪潮服务器装Windows找不到硬盘:阵列卡驱动注入与懒人镜像制作

浪潮服务器装Windows找不到硬盘:阵列卡驱动注入与懒人镜像制作 跑过几台浪潮服务器的人大概都见过这个画面U盘插在前置口安装程序转完圈语言和键盘选完点“现在安装”进度条读完屏幕上跳出来一句“找不到任何驱动器”安装位置列表空空如也下一步按钮是灰的。第一次碰上这种情况很多人的第一反应是硬盘坏了、背板线没插好、机器是二手翻新车然后开始拆机箱、换盘位、换线折腾两小时才发现问题根本不在硬件上——Windows 安装程序压根就没认出那张阵列卡。这个场景在浪潮 NF5280M5、NF5466M5、NF5180M5 这些机器上出镜率极高尤其是从二手渠道拿到的整机前面的人把阵列卡拆了或者把 RAID 配置清了你拿到的就是一块对安装镜像完全“隐形”的卡。这篇内容想解决的事情很具体浪潮服务器装 Windows 时找不到硬盘、识别不到阵列卡、找不到驱动器怎么用一份自带大量驱动的系统镜像一次性绕开反复装驱动的麻烦。我会把“为什么安装程序看不见盘”这件事从根上讲清楚然后把阵列卡配置、驱动注入、镜像打包、U盘制作、装完之后的收尾这几段串成一条完整的线。不管你是刚开始接触二手服务器的小白还是已经装过十几台机器的老手这里面关于 boot.wim 和 install.wim 都要注入驱动、FAT32 放不下大镜像、Write Back 不能乱开这些细节应该都能省你半天时间。1. 安装程序停在那儿锅其实在 Windows 自己的驱动库里1.1 安装程序眼里的“硬盘”是它认识的那一块很多人对“硬盘”这个概念的理解是物理层面的——盘插在背板上背板连到 RAID 卡RAID 卡插在 PCIe 槽里机器开着那硬盘就在。这个理解没错但 Windows 安装程序不是这么看世界的。它启动之后跑的是一个精简到极致的 WinPE 环境里面预置的存储驱动只有那么一套常见的 AHCI、NVMe、部分 Intel 快速存储技术的驱动再加上一些老掉牙的 IDE 兼容驱动。这个列表里没有 LSI/Broadcom 的 MegaRAID 驱动没有 PMC Adaptec 的驱动也没有浪潮自研 RAID 卡的驱动。于是逻辑就变成了物理盘在RAID 卡也在但 RAID 卡在系统层面把自己伪装成一块“SCSI 控制器”而 Windows 不认识这个控制器的身份自然就不会加载它的驱动也就不会向它发指令去枚举下面的虚拟磁盘。结果就是那句冷冰冰的“找不到任何驱动器”。这不是硬盘坏了是通信协议的两端有一端不认识对方。打个比方硬盘是仓库里的货RAID 卡是仓库管理员Windows 安装程序是来提货的司机。司机手里有一份允许进入的仓库名单名单上写的是“AHCI 仓库”“NVMe 仓库”没写“MegaRAID 仓库”。名单上没有门卫就不让进司机只能说“这儿没货”。1.2 阵列卡把物理盘“藏”起来是为了让你能换盘还有一点常被忽略当硬盘挂在 RAID 卡下面并且已经组了 RAID 之后Windows 能看到的不是物理盘本身而是一块由 RAID 卡虚拟出来的逻辑盘。RAID 卡会对上层屏蔽物理盘的具体型号、坏道、重建过程只交出一块容量、扇区大小、逻辑块地址都规规矩矩的虚拟盘。这个设计在运维上非常香——你换一块坏盘上层系统完全无感但在装系统这件事上它意味着Windows 必须先认识 RAID 卡才能看到任何一块盘。所以“识别不到阵列卡”和“找不到硬盘”在绝大多数情况下是同一件事的两种说法前者是因后者是果。有些机器的报错会稍微委婉一点比如提示“未找到设备驱动程序”或者干脆在分区界面列出 0 字节的空设备本质上都是驱动没加载。1.3 三种不同报错的对应关系装机的时候报错文案不止一种我把常见的几种整理成表方便你一眼判断该往哪个方向查。界面现象底层原因优先排查方向“找不到任何驱动器”安装程序未加载阵列卡驱动往 boot.wim 注入阵列卡驱动“未找到设备驱动程序”并让选磁盘有控制器但缺对应 inf驱动包与卡型号不匹配列表里能看到磁盘但“下一步”灰着磁盘未初始化或已有分区表冲突阵列卡里做初始化、清分区能看到磁盘但容量明显不对阵列卡上还没建 VD看到的是裸盘或残留先建 RAID 虚拟盘安装到一半蓝屏 0x7B系统启动阶段缺驱动boot 卷驱动链断裂同时注入 boot.wim 和 install.wim提示“下一步”按钮灰色这个情况多数时候跟驱动没关系是盘上还有别的系统的分区表或者阵列卡里压根没做初始化。别一上来就往驱动方向钻。2. 先搞清楚你的盘挂在哪张卡上再谈装驱动2.1 三类主流阵列卡驱动完全不是一回事浪潮服务器上能遇到的存储控制器大致分成这么三类它们的驱动文件完全是两套东西互相不通用装错了跟没装一样。第一类是LSI/Broadcom 系的 MegaRAID这是浪潮机器里出镜率最高的一类包括 3008、3108、3508、3516 这些芯片的卡浪潮自己的型号像 PM8060、PM8204 也都属于这一脉。Windows 下的驱动通常是lsi_sas2i.inf6Gb/s 时代和lsi_sas3i.inf12Gb/s 时代这两个具体用哪个看卡的代次。第二类是PMC Adaptec 系驱动文件名一般是aacraid.inf或者adp94xx.inf这一类浪潮在一些老机型上有用过。第三类是Intel 平台的 VROC 和板载 SATA。VROCVirtual RAID on CPU是把 CPU 里那几条 PCIe 通道拿来做 NVMe RAID 的方案驱动是iaStorE.inf或iaStorAC.inf系列。M.2 或者 U.2 的 NVMe 盘如果直接挂在 PCH 上走 AHCI一般系统自带驱动能认一旦开了 VROC 组阵列就一定要装 Intel 的驱动。2.2 怎么确认自己机器上是哪张卡最省事的办法是开机看自检画面。加电之后屏幕上会闪过一段文字里面会写控制器的型号和固件版本比如 “MegaRAID SAS 3108” 或者 “AVAGO MegaRAID”。自检太快看不清的话进 BIOS 或者进阵列卡配置界面看名字都会露出来。另一个办法是看卡的物理标签。浪潮的机器拆开顶盖之后RAID 卡一般插在专门的存储槽位上卡上贴着型号标签标签上会写类似 “PM8060-RAID” 这样的字样。拿到型号之后直接去浪潮的官网支持页面按机型下载对应的 Windows 驱动包这是最稳的来源。第三方渠道拿到的驱动包不是不能用但版本对不上的概率明显更高。2.3 进配置界面的两条路确认了卡之后下一步是进配置界面看阵列状态。老一点的 MegaRAID 卡在自检时按CtrlH进 WebBIOS界面比较粗糙但功能全。新一点的卡走的是 UEFI 下的 HII 图形界面开机按F2或者Delete进 BIOS 之后在 “Advanced” 或者 “Device Settings” 里面能找到那张卡的入口点进去就是图形化的配置页。这里有个容易踩的细节如果 BIOS 里的 Boot Mode 设成了 UEFI 并且把 CSM 关了有些老卡可能会因为没加载 OpROM 而完全不出现。这时候要么把 CSM 打开要么在 BIOS 的 PCIe 配置里确认那张卡的 OpROM 是 Enabled。同理装 Windows Server 2016 及以后的版本推荐的做法是把 Boot Mode 设成 UEFI、CSM 关掉、Secure Boot 按需开关这样分区表是 GPT系统盘能做大于 2TB 的分区也不用担心 MBR 那套限制。3. 建虚拟盘这件事优先级比装驱动还高很多人装不上系统是驱动注入了但阵列卡上压根没建虚拟盘插着一堆物理盘在卡下面裸着。Windows 就算认出了卡也只会看到一个空的控制器列表里还是一片空白。3.1 RAID 级别、条带大小和盘数的对应关系建 VDVirtual Drive的时候有几个参数要选选错了性能会很难看或者容量白白浪费。我按常见场景整理了一下场景推荐级别最少盘数可用容量说明系统盘、要求可靠RAID12单盘容量小容量 SSD 做系统盘首选读性能翻倍通用业务、平衡RAID53(N-1)×单盘写性能受限于校验计算建议开写缓存数据安全优先RAID64(N-2)×单盘允许同时坏两块盘重建窗口更安全性能优先、不怕丢RAID104N/2×单盘随机写性能最好成本高单盘直通RAID0 / JBOD1单盘容量用于测试或者不需要冗余的场景条带大小Strip Size的选择上数据库这类随机小 IO 为主的业务用 64KB 是比较通用的选择备份归档、视频存储这种顺序大文件读写为主的256KB 到 1MB 会跑得更顺。不确定业务类型的时候64KB 是那个不会出大错的默认值。3.2 写策略和掉电保护Write Back 不是想开就开建 VD 的时候还有一个选项叫写策略一般有 Write Through、Write Back、Always Write Back 三档。Write Through 是数据直接落盘才算写完安全但慢Write Back 是先写进卡的缓存等攒够了再批量刷盘速度快很多Always Write Back 是无论有没有电池都走缓存。这里有个硬性前提Write Back 依赖 RAID 卡上的缓存电池或者超级电容CacheVault。电池有电的时候卡的固件才会允许数据在缓存里待着因为万一掉电电池还能撑住把数据刷回盘。电池没电、老化、或者压根没装电池的情况下卡会自动降级到 Write Through这时候你选了 Write Back 也没用性能上不去。所以如果发现阵列性能不如预期先去阵列卡界面看 BBU 的状态是不是 “Optimal”。反过来如果卡上没有电池你强行选了 Always Write Back短期跑分很漂亮但一次意外断电就可能把还在缓存里的数据全丢了文件系统损坏的概率很高。生产环境不要这么干。3.3 初始化方式和建完之后的确认VD 建好之后要初始化。MegaRAID 里有 Fast Init 和 Full Init 两种Fast Init 只写元数据几秒钟完事Full Init 会把整个盘的扇区写一遍 0 并做校验几十 TB 的盘可能要跑几个小时甚至一整夜。新盘首次使用建议 Full Init能提前暴露坏道如果时间紧或者盘是刚用过的Fast Init 也够用。初始化完成之后回到 BIOS 确认一件事启动顺序里那张阵列卡下面的虚拟盘要排在 U 盘前面不然装完系统拔掉 U 盘之后机器可能找不到引导。另外顺手看一眼盘的容量和你预期的是否一致如果少了八成是 RAID 级别选错了。4. 把驱动塞进镜像DISM 注入 boot.wim 和 install.wim 的完整流程前面三步做完硬件层面已经就绪现在到了真正的关键环节。市面上流传的“懒人镜像”“自带大量驱动”的思路本质就是提前把驱动注入到 Windows 安装镜像的两个 wim 文件里让你在装机现场不用再点“加载驱动程序”去翻 U 盘。4.1 为什么必须同时注入两个 wim只注 install.wim 没用这是最多人栽的地方。一个 Windows 安装 ISO 的sources目录下有两个东西跟驱动有关boot.wimWinPE 环境负责启动安装程序、分区、拷贝文件。安装界面能不能看到硬盘全靠它。install.wim装到硬盘上的完整系统镜像决定了系统装完之后第一次启动时有没有那个驱动。只往install.wim注驱动安装界面照样空白只往boot.wim注驱动安装过程能看到盘、能装完但第一次重启进系统的时候因为系统自己缺驱动会直接蓝屏0x0000007B或者无限重启。两个都要注缺一不可。boot.wim里面通常有两个索引index 1 是 “Microsoft Windows Setup”index 2 是 “Microsoft Windows PE”。两个都要挂载并注入不能只做 index 1。4.2 驱动源从哪儿来怎么从一堆 inf 里挑对驱动包到手之后往往是一整个压缩包解压出来几十个文件夹什么win7、win8、win10、win2012、win2016还有x86和x64找起来头疼。我的做法是先按目标系统版本筛装 Server 2019 就用win2016或者win2019目录下的装 Win10 就用win10的。Windows 10 和 Server 2016/2019 内核相近很多时候目录是共用的。位数一定要选x64服务器没有 32 位的道理。找到形如lsi_sas3i.inf、megasr.inf、iaStorE.inf这类文件把它们所在的整个文件夹留着其他不相干的目录可以删掉减少注入体积和干扰。驱动包里的 inf、sys、cat 文件必须放在同一个目录里注入的时候用/Recurse参数让 DISM 自动向下扫描但不要按单个 inf 文件逐个指定因为 inf 之间有依赖关系漏一个就可能加载失败。4.3 命令行全过程参数一条条拆开说先把驱动目录和挂载目录准备好比如D:\drivers\raid放驱动C:\mount当挂载点。挂载点必须是空目录路径不要太长用管理员权限打开命令提示符。第一步看清楚boot.wim有几个索引dism /Get-WimInfo /WimFile:D:\sources\boot.wim输出里会列出 Index : 1Name: Microsoft Windows Setup和 Index : 2Name: Microsoft Windows PE。第二步挂载 index 1 并注入dism /Mount-Image /ImageFile:D:\sources\boot.wim /Index:1 /MountDir:C:\mount dism /Image:C:\mount /Add-Driver /Driver:D:\drivers\raid /Recurse /ForceUnsigned dism /Unmount-Image /MountDir:C:\mount /Commit第三步index 2 重复一遍dism /Mount-Image /ImageFile:D:\sources\boot.wim /Index:2 /MountDir:C:\mount dism /Image:C:\mount /Add-Driver /Driver:D:\drivers\raid /Recurse /ForceUnsigned dism /Unmount-Image /MountDir:C:\mount /Commit第四步看install.wim有哪些索引选你要装的那个版本注入dism /Get-WimInfo /WimFile:D:\sources\install.wim dism /Mount-Image /ImageFile:D:\sources\install.wim /Index:4 /MountDir:C:\mount dism /Image:C:\mount /Add-Driver /Driver:D:\drivers\raid /Recurse /ForceUnsigned dism /Unmount-Image /MountDir:C:\mount /Commit参数解释一下。/Recurse是递归扫描子目录里所有的 inf/ForceUnsigned是强制接受没有数字签名的驱动装 Windows 7 的时候基本必须加Server 2016 之后驱动一般有签名加了也不影响/Commit不加的话所有改动都会被丢弃这个参数漏掉是最常见的“白干一场”。注意/Unmount-Image之前不要打开挂载目录里的任何文件也不要让杀毒软件扫这个目录否则会报“目录正在使用中”此时用/Unmount-Image /MountDir:C:\mount /Discard丢弃重来。4.4 打包 ISO 和制作 U 盘的两个细节如果你打算继续用 ISO 文件用 Windows ADK 里的oscdimg重新生成oscdimg -m -o -u2 -udfver102 -bootdata:2#p0,e,bD:\boot\etfsboot.com#pEF,e,bD:\efi\microsoft\boot\efisys.bin D:\iso_root D:\new_win.iso参数里的-u2是同时生成 UDF 和 ISO9660 文件系统兼容性好一些两个-b分别指定 BIOS 和 UEFI 的引导文件。如果你想直接做 U 盘最大的坑来了FAT32 单个文件不能超过 4GB。Server 2019 的install.wim经常是 4.5GB 往上直接拷进去会失败或者拷到一半报错。两个解法用dism /Split-Image /ImageFile:install.wim /SWMFile:install.swm /FileSize:3800把它拆成多个 swm 文件安装程序会自动识别。或者把 U 盘格式化成 NTFS再用 Rufus 之类的工具按 GPT UEFI 分区方案写入同时勾上 UEFI:NTFS 的引导支持。Rufus 里选分区方案的时候浪潮服务器装 Server 2016 及以上选GPT UEFI非 CSM如果是装 Windows 7 这种老系统老老实实选MBR BIOS因为 Win7 的 UEFI 引导支持很别扭。5. 装不上的时候按这个顺序一层层往下捋5.1 三层确认法装机失败的时候最容易乱东改一下西改一下最后自己也记不清改了什么。我习惯按三层顺序走每层确认完再进下一层效率高很多。第一层BIOS 和阵列卡。进 BIOS 看 Boot Mode 是 UEFI 还是 LegacyCSM 开着还是关着阵列卡的 OpROM 有没有启用。然后进阵列卡配置界面确认 VD 已经建好、状态是 Optimal、已经初始化完成。这一层没有任何一项确认通过之前不要动驱动。第二层安装介质。确认boot.wim里真的注入了驱动。验证方法很简单挂载boot.wim然后用dism /Image:C:\mount /Get-Drivers把驱动列表打出来看看你注的那个lsi_sas3i.inf在不在列表里。另外要确认你修改的是 U 盘上那份文件而不是硬盘上备份的那份。第三层驱动匹配。确认卡型号和驱动的对应关系。同一个品牌下不同芯片的驱动不通用MegaRAID 3008 和 3108 用的是同一套lsi_sas3i但如果你拿到的是megasr.inf那一套那是老的 SAS2108/2208 时代的注进去也没用。5.2 常见现象与处置对照现象大概率原因处置方法装完重启进不去蓝屏 0x7Bboot.wim 注了但 install.wim 没注补注 install.wim重新装装完重启找不到引导设备启动顺序里虚拟盘不在第一位进 BIOS 调整 Boot Order安装过程中断报“无法写入”盘上有旧的 LVM/分区表残留阵列卡里做一次 Full Init写入到 99% 报错U 盘 FAT32 超 4GB 限制拆分 install.wim 或改 NTFS阵列卡界面里看不到卡CSM 关了且 OpROM 未加载开 CSM 或启用卡 OpROM装了驱动还是看不到盘驱动版本与固件不匹配去官网按机型下载对应版本6. 系统装完之后还有几个坑等着你6.1 设备管理器里那一片黄色感叹号Windows 装完能进桌面不代表完事了。设备管理器里通常会有一串黄色感叹号芯片组、网卡、板载显卡、未知设备。浪潮机器上的网卡如果是 X710 或者 X722 这类Windows Server 自带驱动的版本可能很旧得手动装 Intel 的官方驱动板载显示走的是 BMC 的 ASPEED 芯片一般自带驱动能认但分辨率可能会很低这个问题得在带外管理页面里调。芯片组驱动一定要装它决定了 PCIe 设备能不能被正确识别、电源管理能不能正常工作。芯片组驱动没装有些 PCIe 设备在系统里会以“未知设备”的形式挂着性能也可能打折。6.2 电源策略和性能表现机器装完跑起来觉得性能不对、风扇一直高转、CPU 频率上不去可以先看 BIOS 里的电源策略设置。节能相关的选项比如 C-State、P-State 相关的配置在通用业务场景下保持默认一般没问题如果是延迟敏感型的负载可以把电源策略切到性能优先模式避免 CPU 频繁进出低功耗状态造成响应抖动。这块每个机型的具体选项名不一样以 BIOS 里的实际文字为准。6.3 带外管理的用法服务器没有光驱装系统最省事的路径其实是走 BMC。浪潮的 BMC 网页里有个虚拟光驱功能把做好的 ISO 挂在里面然后在 KVM 远程控制台里从虚拟光驱引导跟本地装一模一样。这个方式的好处是不用抱着 U 盘跑来跑去机房远的时候尤其省事。BMC 的默认地址和管理员账号在机器顶盖的标签上第一次登录之后记得改掉默认密码。7. “自带大量驱动的懒人镜像”到底值不值得做7.1 集成镜像的真实收益把驱动提前注进镜像最直接的收益是装机现场的确定性和速度。一台机器上省下的十几分钟“翻驱动、点加载、报错重来”的时间十台机器就是两三个小时。而且这个过程是可以沉淀的做好的镜像放在移动硬盘或者内部文件服务器上下次拿到新机器直接用不用重新走一遍 DISM。但要注意一个现实问题集成驱动会让镜像体积变大boot.wim和install.wim都会膨胀。如果注入了大量跟你实际用不到的硬件的驱动镜像可能从 5GB 涨到 8GBU 盘制作的麻烦程度也跟着上升。我的建议是按机型做小批量定制而不是搞一个包打天下的万金油镜像。一台机器上就那么一张阵列卡把它认识清楚注一套驱动就够了。7.2 维护一份自己的集成镜像我现在维护的镜像有几个版本一个给 LSI 系阵列卡的一个给 Intel VROC 的还有一个纯 NVMe 直连的备用。每个版本里只放对应那一套存储驱动加上常用的网卡和芯片组驱动。做新版本的时候我先在一个干净目录里解压原始 ISO改完之后立刻用虚拟机跑一遍验证确认安装界面能看到盘、能装完、能进系统再拿去上生产。验证这一步千万别省。DISM 注入失败的情况很多种有的报错很明确有的悄无声息地什么都没做等到现场才发现。花十分钟在虚拟机里跑一遍比在机房里对着黑屏猜半小时划算得多。虚拟机里验证的时候记得把虚拟磁盘的类型设成跟目标机器一致的控制器比如设成 LSI Logic SAS 或者 NVMe这样才能真正验证驱动有没有生效。还有个小习惯分享一下每次做完镜像在 ISO 同级目录放一个纯文本的说明文件写清楚这个镜像基于哪个原始版本、注入了哪些驱动的哪个版本、适用于哪些机型、做完的日期。三个月之后你拿着一堆名字差不多的 ISO 文件光靠文件名是绝对分不清哪个是哪个的这个说明文件能救命。
返回列表