SAS3008 RAID阵列卡驱动固件与IR/IT模式排查指南

发布时间:2026/10/23 1:09:23
SAS3008 RAID阵列卡驱动固件与IR/IT模式排查指南
简介面向服务器与存储运维人员、IT管理员及需要处理LSI 3008 RAID控制器的技术学习者这份驱动包用于解决操作系统识别、配置与维护该系列阵列卡时的兼容性问题。内容围绕SAS接口RAID控制器的驱动安装与设备管理展开适用于Windows等系统环境下的磁盘阵列部署、性能调优与故障恢复等场景。资源包共97个文件约21.1MB以sys、inf、cat等驱动核心文件为主辅以dll、xml、man、msu及exe等安装与说明组件rar压缩后结构较完整便于按系统版本和用途查找对应驱动。目前已有2176人浏览学习说明其在同类阵列卡驱动资料中具有一定参考价值。读者可从中获得与LSI 3008配套的驱动文件集合用于系统识别RAID卡、完成阵列初始化和日常监控包内说明性文档与配置辅助文件也有助于理解驱动与固件、管理工具之间的配合关系为排查设备识别异常、更新驱动版本和维持存储系统稳定运行提供素材。1. 一块 3008 卡插上不认盘问题多半不在卡本身老机器上拆下来的 LSI3008 插到新主板BIOS 启动项里空空如也进系统lspci明明能扫到设备lsblk却一块盘都不给。这时候绝大多数人的第一反应是卡坏了、要退货。我见过太多类似的现场最后查下来卡是好的问题出在模式、固件、线材或者引导 OpROM 上。这份 RAID 阵列卡 驱动资源包要解决的正是这一段从「认不到」到「跑得稳」的路它把 SAS3008 在 Linux、Windows、ESXi、FreeBSD 下的驱动文件、固件包、命令行管理工具sas3flash、sas3ircu、storcli以及刷写用的 UEFI Shell 环境打包在一起省掉你在若干个互不相关的地方东拼西凑的功夫。适合三类人手里有拆机 3008 想组软 RAID 或直通的给一批机器做批量部署要统一固件和驱动的以及已经装好但时不时掉盘、想弄清到底哪一层出问题的。2. IR 还是 ITSAS3008 的模式判定与四类系统的驱动选型买卡、捡卡、拆机卡最容易踩的第一个坑就是拿到手不知道它是 IR 还是 IT。这两种固件在硬件上完全一样烧进去的固件不同对外暴露设备的方式就不同后面选驱动、组阵列、能不能直通虚拟机全被这一个属性决定。资源包里两套固件都带着但你得先搞清楚手上这块现在是什么状态。2.1 IR 与 IT 在驱动层的真实差别IT 模式Initiator Target也常被叫作 HBA 直通模式下卡的固件基本不插手八条 PHY 上挂的每块盘原样透给操作系统系统看到的是八个独立的 SCSI 块设备。软 RAID 由 mdadm、ZFS、Storage Spaces 这类软件层自己管SMART 能透传盘的序列号、温度、坏道计数都看得到VMware 和 KVM 也能把整块卡直通给虚拟机。IR 模式Integrated RAID下卡上固件会做一层很薄的 RAID只支持 0、1、1E、10 这四级没有缓存颗粒也没有掉电保护电池。系统看到的是卷Virtual Drive加上少量未参与的物理盘SMART 要带-d megaraid,N这类参数绕一层才能读。好处是不依赖操作系统就能从卷启动做双盘镜像装系统很方便。Linux 下两种模式其实共用同一个mpt3sas模块这也是很多人误以为「模式跟驱动无关」的来源。但固件不同暴露的 SCSI 设备数量不同SMART 透传路径不同热插拔行为也不同。Windows 侧虽然都走 StorPort但安装包里 inf 绑定的设备 ID 是分开的装错了直接蓝屏或者设备管理器里挂个黄叹号。所以判定模式不是可选项是第一步。2.2 三步判定手上这块卡跑在哪种模式最硬的一条判据是 PCI class code。SAS3008 在 IR 固件下会把自己报成 RAID bus controllerclass 0104在 IT 固件下报成 Serial Attached SCSI controllerclass 0107。这个信息不用拆机箱、不用进 BIOS系统跑着就能看。# 1) 先定位设备记下 BDF 地址形如 0000:3b:00.0 lspci -nn | grep -i -E sas|raid|scsi # 2) 看 class code0104 是 RAID 控制器0107 是 SAS 控制器 # 再看 Kernel driver in use 一行确认有没有被 mpt3sas 接管 lspci -k -s 0000:3b:00.0 # 3) 从驱动日志里读出固件版本和模式线索 dmesg | grep -i mpt3sas | head -30lspci -nn输出里方括号中最后那对 ID 是 class code前一对是厂商和设备 ID具体数值以卡上标签和资源包 readme 为准不同 OEM 版本会有差异。lspci -k的Kernel driver in use一行如果显示mpt3sas说明驱动已经认领剩下的就是设备没暴露出来。dmesg里会打印类似ioc0: SAS3008, FWVersion: xx.xx.xx.xx的行这行固件版本号后面刷写时要用到先记下来。第二条路是开机自检时的 Option ROM 界面。看到 Ctrl-C 提示进入配置菜单如果菜单里有 Virtual Drive 管理、能创建 RAID 卷那是 IR如果菜单里只有 Adapter Properties、Device Properties看不到卷管理入口那基本是 IT。第三条是资源包里的sas3ircu 0 display输出会直接标注控制器型号和当前 IOC 固件类型这个最省事但前提是盘已经能进到系统里。提示class code 是经验判据不是绝对真理个别 OEM 定制固件会改报。真拿不准就以sas3ircu list的输出为准。2.3 按系统选驱动一张对照表模式判完驱动就好选了。资源包里的文件按系统分目录放下面这张表是我实际用下来最省事的对应关系。操作系统IT 模式IR 模式获取方式备注Linux内核 3.10 以上mpt3sasmpt3sas内核自带无需编译老内核需用包内 dkms 源码重编Linux内核 2.6 老版本mpt3sasmpt3sas包内源码 dkms建议直接换系统别硬撑Windows Server 2012R2 及以上StorPort 驱动StorPort 驱动包内 inf设备管理器手动指定装系统时需 F6 加载ESXi 6.7 / 7.xlsi_msgpt3lsi_msgpt3系统自带或离线包补装部分版本需额外组件FreeBSD 11 以上mprmpr内核自带无需额外操作UEFI Shell不需要不需要包内 sas3flash.efi刷固件时用Linux 这一行最容易被误解。很多人一看mpt3sas是内核自带的就以为不用管驱动了结果装完发现盘认不全。实际上内核自带的版本有新旧之分新卡配老内核经常出现只认到第一个 PHY 的情况dmesg里会有一串SAS: phy相关的告警。资源包里带源码的意义就在这里不是让你非得编译是给你一条退路。判断方法是modinfo mpt3sas | grep version把版本号跟资源包 readme 里的适配表对一下落在区间内就别折腾落在区间外再考虑 dkms 编译编译命令在包内文档里写得很直白。Windows 那一行要提醒一句装系统阶段如果没有软驱位得把驱动塞进安装介质。资源包里的 inf 支持在安装界面用「加载驱动程序」直接指定目录比早年用 F6 加软驱省事得多但目录里要选对子文件夹IT 和 IR 是分开的选错了安装程序会提示「找不到兼容的驱动程序」这个提示很多人误以为是介质坏了。3. Linux 侧把盘认出来mpt3sas 的加载、参数与 sas3ircu 验证Linux 是这类卡跑得最多的环境也是最容易「看着正常实际有病」的环境。盘认出来了不代表链路健康链路健康了不代表参数合适。这一段按加载、参数、验证三步走每步都有可以照着敲的东西。3.1 先判断内核自带还是必须外部编译别急着编译先花三十秒确认现状。三条命令足够定位。# 看模块是否存在、版本号、来源路径 modinfo mpt3sas | grep -E ^(filename|version|vermagic) # 看卡有没有被认领输出里应该有 Kernel driver in use: mpt3sas lspci -k | grep -A3 -i serial attached scsi # 看驱动初始化日志IOC 数量、固件版本、PHY 数量、有没有报错 dmesg | grep -i -E mpt3sas|sas: | head -40modinfo的filename如果指向/lib/modules/$(uname -r)/kernel/drivers/scsi/mpt3sas/说明是内核原生模块先用着如果modinfo直接报「Module not found」才需要走编译。dmesg那段是重点正常初始化会打印ioc0: SAS3008: Capabilities、mpt3sas0: 8 Phys之类的行如果只打印了ioc0却看不到 PHY 数量或者后面跟着mpt3sas0: doorbell handshake failed那是固件层面的问题编译驱动解决不了得回去刷固件。编译这一条我不太推荐新手走。资源包里的 dkms 源码适合老内核补新驱动编译前确认kernel-devel、gcc、dkms三个包都在然后dkms add加dkms install两条命令。有个血泪经验编译前把/lib/modules/$(uname -r)/kernel/drivers/scsi/mpt3sas/mpt3sas.ko备份一份万一新模块加载失败进不了系统还能用 Live 环境把老模块塞回去当后悔药。3.2 写一份能长期生效的 modprobe 配置mpt3sas有一批模块参数默认值在大多数场景够用但在老背板、扩展器串联、机械盘堆叠的场景下需要收敛一下。参数写在/etc/modprobe.d/下才会在每次开机生效临时modprobe -r再加载只对当次有效。# 写入持久化参数配置 sudo tee /etc/modprobe.d/mpt3sas.conf /dev/null EOF # 单次 IO 上限2048 扇区 1MB # 老背板/扩展器链路误码率高时收敛到 1MB 可显著降低重传 options mpt3sas max_sectors2048 # 队列深度-1 表示按控制器能力自动协商 # 机械盘堆叠时手动设为 1024 更稳 options mpt3sas max_queue_depth1024 # IO 超时秒默认 30 偏短大容量慢盘建议放宽 options mpt3sas scsi_io_timeout60 # 关掉冗余日志避免 dmesg 被刷爆导致真正的问题被淹没 options mpt3sas logging_level0 EOF # 重建 initramfs否则下次开机新参数不生效 sudo dracut -f # Debian/Ubuntu 用 sudo update-initramfs -u -k allmax_sectors这个参数是调优里最容易调过头的。有人为了追顺序读带宽把它拉到 3276716MB结果机械盘阵列反而掉速原因是大 IO 在扩展器上排队把小 IO 堵死了。2048 是个比较保守的起点SSD 阵列可以往上试到 4096机械盘阵列建议就停在 2048。max_queue_depth设成 1024 是我在八盘机械盘 单扩展器的组合上试出来的平衡点纯 SSD 直连可以留 -1 让固件协商。scsi_io_timeout放宽到 60 秒是给慢盘留余量尤其叠瓦盘写入放大严重的时候30 秒超时会导致内核把盘踢下线再重扫日志里表现为周期性reset很容易被误判成卡的问题。参数写完不用重启验证cat /sys/module/mpt3sas/parameters/*能逐项看当前生效值这个目录里的文件名就是参数名改完重启后对着核一遍最放心。3.3 用 sas3ircu 交叉验证控制器、背板、单盘链路速率lsblk只能告诉你「有盘」sas3ircu能告诉你「盘挂在哪、链路多快、有没有降速」。这一步是我每次上架必做的因为降速盘在系统层完全看不出来只是性能莫名差一截。# 赋予执行权限包内是预编译二进制 chmod x sas3ircu # 列出控制器记下控制器编号单卡一般是 0 sudo ./sas3ircu list # 核心命令控制器、PHY、每块盘的链路速率和 SAS 地址 sudo ./sas3ircu 0 display # 只看盘的状态Optimal / Failed / Missing sudo ./sas3ircu 0 status # 看 IOC 自身健康状态和温度部分固件版本支持 sudo ./sas3ircu 0 iocstatus # 看背板 / 扩展器信息判断是直连还是过扩展器 sudo ./sas3ircu 0 enclosuredisplay的输出信息量最大。每块盘会有三行内容第一行是 SAS 地址和盘型号第二行是SAS或SATA标识、链路速率12.0 Gbps、6.0 Gbps、3.0 Gbps、设备状态。链路速率这一项是重点SAS3008 是 12Gb/s 控制器但盘、线材、背板三者取最低值一块 12G 的盘协商到 6G九成是线材或背板的问题不是盘坏了。enclosure那一条要单独说。直连背板和过扩展器的背板enclosure输出完全不同。如果看到Enclosure#后面挂着SES设备说明中间有扩展器这种拓扑下max_sectors必须收敛热插拔行为也更依赖扩展器固件版本。见过不少「盘能认但插拔后不刷新」的现场最后都是扩展器固件太老跟 3008 本身没关系。验证完这三步Linux 侧的「能用」就算达标了。剩下的「用得稳」在最后一章展开。4. 固件、OpROM 与驱动三方对齐sas3flash 刷写和刷挂后的救法驱动装对了还是掉盘多半是版本没对齐。SAS3008 上有三个独立的东西需要管控制器固件Firmware、引导用的 OpROM也叫 BIOSUEFI 下是.rom文件、以及操作系统侧的驱动。三个里有两个版本跨度太大就会出现各种玄学症状。4.1 三个版本号必须对齐固件管的是卡自己的 PHY 训练、热插拔、错误恢复OpROM 管的是开机阶段能不能从这个卡上的设备引导驱动管的是操作系统怎么跟卡说话。三者的接口约定在不同版本间会变最典型的两种翻车一是新固件配老驱动。刷了新版固件之后dmesg里开始周期性出现mpt3sas: firmware fault或者sas: phy reset盘时有时无。原因是新固件改了下发 SCSI 命令的时序老内核的 mpt3sas 按旧时序应答握手失败。二是老固件配新驱动。现象更隐蔽盘能认、能读写但长时间跑顺序写会出现某一两块盘掉线重扫又回来了。这种「玄学掉盘」查到最后基本都是固件太老。资源包里带的固件版本和驱动版本是配套测过的别自己东拼西凑。部件版本获取方式出现频率最高的坑控制器固件sas3flash -c 0 -list查看刷了 OEM 定制版与通用驱动不兼容OpROMBIOS开机界面或sas3flash -c 0 -list刷 IT 固件时忘了同步刷对应 OpROM驱动模块modinfo mpt3sas内核自带版本过老只认到部分 PHY管理工具sas3ircu/storcli自带版本号老版本工具读不出新固件的字段4.2 UEFI Shell 下的刷写流程刷写必须在 UEFI Shell 里做不要在操作系统里刷更不要在虚拟机里刷。资源包里的sas3flash.efi是 UEFI 版本配一个 FAT32 格式的 U 盘把sas3flash.efi、固件 bin、OpROM 三个文件放根目录。# 进入 UEFI Shell 后先切到 U 盘所在文件系统 # 依次试 fs0: fs1: fs2:用 ls 确认能看到 sas3flash.efi fs0: ls # 第一步永远是先看确认卡被识别、当前版本号是多少 sas3flash.efi -list sas3flash.efi -c 0 -list # 第二步备份当前固件文件名自己定存 U 盘根目录 # 具体子命令以 sas3flash.efi -h 的输出为准 # 不同版本语法略有差异先看帮助再动手 sas3flash.efi -h # 第三步正式刷写-f 指定固件-b 指定 OpROM-bios 表示同时更新 sas3flash.efi -c 0 -f SAS3008_IT_FW.bin -b mptsas3.rom -bios # 第四步冷启动完全断电再上电不要用 reboot 热重启-c 0里的 0 是控制器编号多卡环境要先用-list确认编号刷错卡是灾难。-f后面跟的是控制器固件-b后面跟的是 OpROM-bios这个开关的意思是「连 BIOS/OpROM 一起写」少了它只更新固件不更新引导部分IT 固件配旧 IR 的 OpROM开机自检会卡在初始化阶段过不去。刷写过程大约一到两分钟屏幕上会滚动百分比这时候绝对不能断电。刷完必须冷启动也就是关机、拔电源线、等十秒、再上电。热重启时卡上的部分状态没有清空会出现「刷了但版本号没变」的假象我在这上面浪费过一个下午。注意从 IR 刷成 IT 会清掉卡上已有的 RAID 配置。刷之前用sas3ircu 0 display把现有卷和盘的关系截图存下来别指望刷完还能找回来。4.3 刷挂了怎么救回退与备份刷写中途断电、或者刷了不匹配的 OEM 固件卡可能直接不进自检。这时候别慌SAS3008 的引导区相对独立只要能进 UEFI Shell 并且sas3flash.efi -list还能列出控制器就还有救。第一种情况能进 Shell、能列卡但版本号显示乱码或者为空。重新执行一遍完整刷写加上擦除步骤。擦除命令在sas3flash里是带-o -e的组合具体参数以帮助输出为准这一步会把整个 Flash 清空之后必须立刻跟上完整刷写中间不能停。第二种情况Shell 里-list完全看不到卡。先换 PCIe 插槽再换机器试。有些主板的 UEFI 在检测到异常 OpROM 时会跳过该设备的初始化换到没有「快速启动」的槽位有时能救回来。还不行就用另一块同型号卡做参照把已知good的固件刷进去。第三种情况能列卡但刷写过程中报Flash region is write protected。这是卡的写保护跳线或者 OEM 锁定资源包里有一份说明文档讲怎么处理但说实话这种卡我一般直接放弃折腾成本高于卡本身的残值。备份这件事正确的做法不是在卡上备份是在刷之前把资源包里对应版本的固件包留一份在本地出问题直接回刷。刷完确认能正常认盘、能引导再考虑要不要清理旧文件。5. 避坑与排查五个真实翻车现场的现象、成因和解法这一章按故障域分组每组里的条目都按「现象 → 原因 → 解决」写对号入座即可。5.1 链路与背板类现象一系统能认卡lsblk一块盘都没有sas3ircu 0 display里 PHY 全是No Device。原因通常有三个层次。最外层是盘没插到底或者背板供电没接SAS 接口比 SATA 紧插的时候要有「咔」一声。中间层是背板的 SATA/SAS 兼容跳线很多背板对 SATA 盘需要单独配置默认只走 SAS。最内层是扩展器没上电或者固件没起来sas3ircu 0 enclosure会显示扩展器状态异常。解决顺序是从外到内先换一块已知good的盘插同一个槽位排除盘的问题再看背板跳线和供电最后用sas3ircu 0 enclosure确认扩展器是否在线。三步走完还不行把盘直接接到卡的 breakout 线上绕开背板能认就说明是背板或扩展器的问题。现象二盘能认能读写但dmesg里周期性出现I/O error, dev sdb, sector xxxxx重试后恢复。原因是链路误码。sas3ircu 0 display里那块盘的链路速率大概率显示6.0 Gbps而其他盘是12.0 Gbps或者虽然都是 12G 但 CRC 错误计数在涨。线材是最常见的元凶尤其是机箱内走线被压过、折过的地方其次是背板连接器的氧化再其次是盘本身的老化。解决先把这块盘换到另一个槽位如果速率恢复正常是背板接口问题如果还是降速换线换线还不行就是盘的问题。临时缓解可以在卡的配置里强制把该 PHY 速率降到 6G虽然损失带宽但能换稳定机械盘阵列基本感觉不出来。5.2 固件与引导类现象三Windows 装完重启蓝屏报INACCESSIBLE_BOOT_DEVICE或0x0000007B。原因不是驱动装错了是引导阶段的 OpROM 和运行阶段的驱动版本不匹配。安装程序用的是 inf 里的驱动重启后系统走的是卡上 OpROM 提供的 INT13 接口去读引导扇区两者对卷的寻址方式不一致就会蓝屏。解决进 UEFI 设置把该 PCIe 槽位的 OpROM 加载策略改成 UEFI Only 或者 Legacy Only 二选一别用 Auto。如果必须用 Legacy确认 OpROM 版本和驱动包是配套的。另一个办法是干脆改成 UEFI 引导 GPT 分区绕开 INT13 这一层这是我现在默认的做法。现象四刷完固件后卡烫得离谱负载一上来就掉盘重启能恢复。原因是刷了不匹配的 OEM 变体固件。同一颗 SAS3008不同 OEM 在板型、供电、散热设计上有差异固件里的功耗管理和温度阈值参数是定制过的。通用固件刷到定制板上温度阈值设错芯片还没到安全温度就触发限速表现出来就是「负载一高就掉盘」。解决从卡的标签上读出 OEM 型号回资源包里找对应的定制固件重刷。找不到就退回刷之前的版本。判断是不是这个原因看sas3ircu 0 iocstatus里的温度读数和dmesg里有没有温度相关的告警两边对得上基本就坐实了。5.3 系统与驱动类现象五ESXi 装完看不到任何盘lspci里卡在存储适配器列表里没有。原因是 ESXi 的镜像里没有包含对应版本的驱动组件。ESXi 的驱动是打包在镜像里的某些小版本更新会调整组件基线卡太老或者太新都可能不在默认列表里。资源包里的驱动组件需要用离线包方式合进镜像或者装完之后用命令行补装再重启。解决先用esxcli storage core adapter list确认适配器有没有被枚举没有就说明驱动没加载。补装驱动后必须重启ESXi 不支持热加载存储驱动。补装完还不行检查卡的 OpROM 是不是处于 Legacy 模式ESXi 的 UEFI 引导对 Legacy OpROM 支持有限改成 UEFI 模式通常能解决。这一章五条覆盖了八成现场。剩下两成属于硬件本身故障不在驱动和配置能解决的范围内该换卡就换卡别在软件层反复试。6. 上线前最后一公里温度、队列深度与一台自检脚本前面都在讲「能不能认」这里讲「认了之后会不会半夜挂」。我吃过最贵的一次亏是一批机器跑了两周其中一台在业务高峰掉了一块盘查下来是卡的温度在密闭风道里长期贴着限速线负载一上来就触发保护。从那以后我每次上架都要跑一遍下面这套自检流程二十分钟省掉后面一堆半夜电话。温度是第一优先。SAS3008 满载十几瓦芯片面积小没有风道直吹的话散热片温度很容易上去。链路上限速的阈值各版本不一但经验上芯片结温到 100℃ 上下就开始出问题。检查方式分两层硬件层看机箱风道卡所在的槽位有没有前进风、散热片是不是被线材挡住软件层看 hwmon。# 新内核会把卡的温度通过 hwmon 暴露出来逐个看 name 找到 mpt3sas 对应的 for h in /sys/class/hwmon/hwmon*; do echo -n $h: ; cat $h/name; done # 找到之后读温度单位毫摄氏度 cat /sys/class/hwmon/hwmon3/temp1_input读不到也别强求很多固件版本不上报温度。那就用土办法满载跑十分钟用手背靠近散热片别碰烫到不能停手就是有问题。加一个 4cm 风扇对着吹成本几块钱效果立竿见影这是我见过性价比最高的改造。第二是队列和调度参数。默认的cfq/mq-deadline对 SSD 阵列是负担none更适合闪存。这些参数重启会重置得写进 udev 规则或者开机脚本。# 临时生效用来验证效果 for d in /sys/block/sd*; do # 跳过非物理盘比如 loop、dm 设备 [ -f $d/queue/scheduler ] || continue echo none $d/queue/scheduler echo 1024 $d/queue/nr_requests echo 4096 $d/queue/read_ahead_kb donenr_requests调到 1024 是给高并发场景留余量机械盘阵列反而建议降回 128让 IO 调度器有更多合并机会。read_ahead_kb设 4096 对顺序读友好随机读为主的场景设 512 更合适。这三个值没有万能解取决于盘的类型改完用fio跑一遍对比。# 顺序读基线验证链路带宽有没有跑满 fio --nameseqread --rwread --bs1M --numjobs4 --iodepth32 \ --size4G --filename/dev/sdb --direct1 --runtime60 --time_based # 4K 随机写验证 IOPS 和有没有掉盘 fio --namerandwrite --rwrandwrite --bs4k --numjobs8 --iodepth64 \ --size2G --filename/dev/sdb --direct1 --runtime60 --time_based跑的时候另开一个终端dmesg -w任何reset、I/O error、firmware fault都会实时刷出来。跑完再看一遍sas3ircu 0 status确认所有盘还是 Optimal。这一套下来能筛掉绝大部分「平时没事、压力一大就掉」的隐患。SMART 透传也是必查项。IT 模式下直接smartctl -a -d sat /dev/sdb就能读IR 模式下要加-d megaraid,NN 是盘在卷里的位置。读不到 SMART 意味着这块盘的健康状态是黑匣子坏道涨到多少你都不知道批量部署的时候一定要把这一项作为准入条件。批量环境再往前一步是把这套流程脚本化接进 PXE 装机后的 post-install 环节自动读卡型号、比对固件版本、跑三分钟 fio、把结果和 SMART 上报到自己的资产表。我现在的习惯是任何一块新卡、新盘进机房先跑这套自检通过了才允许上业务。看着慢其实是把后面的故障排查成本提前付掉了。希望这套流程能帮到你少走几次半夜爬起来看dmesg的弯路。本文还有配套的精品资源点击获取