给服务器配硬盘时,配置单上常出现两种卡:RAID 卡和 HBA 卡。它们外观都像一张插在 PCIe 槽上的扩展卡,都能接一堆硬盘,价格却可能差好几倍。很多人搞不清差别,也不知道自己的场景到底该配哪种,甚至有人以为"RAID 卡更高级,闭眼买 RAID 卡就行"。
这篇文章把两种卡的区别讲清楚:它们分别是什么、关键差异在哪里(是谁来做校验计算)、RAID 卡上的缓存和掉电保护有什么用、性能和成本怎么权衡、什么场景该选哪种,以及怎么在系统里确认机器装的是哪种卡。文章给的是判断框架和量级参考,具体型号与参数以厂商规格书为准。
两种卡分别是什么
RAID 卡是一种带独立处理器的存储控制器。它上面有一颗专门的 RAID 芯片(有时还有缓存和电池/超级电容),硬盘接到卡上后,由卡自己把多块盘组织成 RAID 阵列,对操作系统呈现为一个逻辑卷。写数据时,卡负责计算奇偶校验、决定数据落在哪些盘上,还负责在盘故障时重建数据。对操作系统来说,它只看到一个"大硬盘",底层的 RAID 逻辑完全透明。
HBA 卡(Host Bus Adapter)则是一个相对"透明"的通道卡。它的主要作用是扩展主机能连接的硬盘数量、提供 SAS/SATA 接口,把硬盘原样透传给操作系统。HBA 卡通常不做 RAID 运算(部分卡支持简单的 RAID 0/1,称作 RAID-on-Chip 但一般关闭使用),也不带大缓存。操作系统看到的是每一块独立的物理盘,怎么组织由上层软件决定,比如用 mdadm 做软 RAID,或者用 ZFS 做存储池。
一句话概括:RAID 卡是"自己做决定的智能卡",HBA 卡是"只负责搬运的透明通道"。
关键差异:谁来做校验计算
两种卡最本质的区别在于校验计算放在哪里。
RAID 卡把校验计算放在卡的硬件芯片里。读写 RAID 5/6 这类带校验的阵列时,奇偶校验的生成和校验由卡上的处理器完成,不占用主机 CPU。这对 CPU 是减负,也是硬件 RAID 性能稳定的原因。代价是卡本身比较贵,而且一旦卡坏了,通常需要同型号或兼容型号的卡才能读回数据,存在一定的厂商锁定。
HBA 卡把校验计算交给软件。用 mdadm 做软 RAID 时,奇偶校验由主机 CPU 计算;用 ZFS 时,校验也由 CPU 完成。这会占用一部分 CPU 资源,但有现代多核 CPU 的情况下,开销往往可以接受。好处是硬件成本低、没有厂商锁定、数据可移植性好,换任意支持同样文件系统的机器都能读。ZFS 还额外提供数据校验、快照、压缩等能力,这是纯 RAID 卡做不到的。
| 对比项 | RAID 卡 | HBA 卡 |
|---|---|---|
| 定位 | 独立 RAID 处理 | 透传/直通 |
| 校验计算 | 卡上硬件完成 | 交给主机 CPU 或软件 |
| 对系统呈现 | 一个逻辑卷 | 每块物理盘 |
| 板载缓存 | 常见,带掉电保护 | 一般没有 |
| CPU 占用 | 低 | 略高(取决于软件方案) |
| 硬件成本 | 高 | 低 |
| 数据可移植性 | 依赖同型号卡 | 好,不绑定卡 |
| 典型软件 | 卡的固件 | mdadm、ZFS、Btrfs |
| 厂商锁定风险 | 有 | 低 |
RAID 卡上的缓存与掉电保护
RAID 卡上最值钱也最容易被忽视的部件是板载缓存和它的掉电保护。
缓存的作用有两个。第一,加速写操作。操作系统把写请求交给卡后,卡先写入自己的高速缓存就返回"写完成",再由固件在后台刷到硬盘。这样应用的写延迟从毫秒级的机械盘寻道,降到微秒级的缓存写入,对随机写密集的数据库提升非常明显。第二,缓存还能做读预取和聚合并发写,把零散的小写合并成大块顺序写,提升吞吐。
但缓存带来一个严重问题:如果缓存里的数据还没刷到硬盘,机器突然断电,这些数据就丢了。对数据库来说,这可能是灾难。解决方案是给缓存加掉电保护,分两种:传统的是加一块电池(BBU,Battery Backup Unit),断电后由电池维持缓存供电若干小时(视电池状态,常见几小时量级);较新的是超级电容加闪存(CacheVault 之类),断电瞬间用超级电容把缓存内容写入卡上的闪存,永久保存,恢复供电后再刷回硬盘。
这里有一个重要的使用开关:写策略。开启回写(Write Back)时,写请求先到缓存就返回,性能好,但必须有掉电保护兜底;改成写透(Write Through)时,写请求必须落盘才返回,数据最安全,但性能差很多,尤其是机械盘阵列。所以一块 RAID 卡如果没有可用的电池或超级电容,很多固件会强制或建议退回写透模式,性能优势就没了。这就引出维护要点:电池/超级电容是需要关注的耗材,电池会老化,健康状态要定期看。
HBA 卡没有这个问题,因为它不缓存写请求,数据要么直接落盘,要么由文件系统(比如 ZFS 的 ZIL)自己负责一致性。ZFS 配合独立的 SLOG 设备(日志盘)也能在保证一致性的前提下提速,思路和 RAID 卡缓存类似,但实现层面在软件。
性能、成本与适用场景
性能上,硬件 RAID 卡处理 RAID 5/6 这类带校验的阵列时,因为校验由卡完成,主机 CPU 负担小,性能比较稳定,适合对 CPU 资源敏感的场景。软 RAID 和 ZFS 在高并发、小文件随机写时对 CPU 有一定要求,但现代服务器 CPU 通常能胜任。
成本上,一块带缓存和掉电保护的主流 RAID 卡往往比一块普通 HBA 卡贵不少,具体差价因型号和缓存大小而异,这是经验判断。再加上电池/超级电容是耗材,长期还有更换成本。HBA 卡便宜、简单,配合开源软件方案能省下可观硬件费用。
适用场景可以这样区分:
硬件 RAID 卡适合传统企业 IT 环境、Windows 和多数商业数据库的推荐方案、需要把 RAID 交给成熟生态和厂商支持的场景,以及运维团队更习惯图形化管理工具的情况。它的优势是开箱即用、性能有保障、售后有厂商兜底。
HBA 卡适合自建存储、NAS、虚拟化超融合、对数据可移植性和灵活性要求高的场景,以及愿意用 ZFS 这类先进文件系统获得快照、校验、压缩能力的团队。它的优势是灵活、省钱、不锁定,代价是需要一定的运维能力。
需要特别说明的是,有些场景会混用:比如用 RAID 卡做硬件 RAID 保护系统盘,同时用 HBA 卡接数据盘跑 ZFS;或者干脆一块卡既支持 RAID 模式也支持 HBA 模式,通过固件切换。具体能不能切、怎么切,要看卡的型号和支持情况。
如何确认和操作
先看看机器上装的是什么卡。
# 列出 PCIe 设备,识别 RAID/HBA 控制器(需安装 pciutils)
sudo dnf install -y pciutils # RHEL/CentOS/Rocky
sudo apt install -y pciutils # Debian/Ubuntu
lspci | grep -Ei 'raid|sas|scsi|megaraid|hba'
# 查看有哪些 SCSI 主机控制器及其驱动(mpt3sas/megaraid_sas 等可区分类型)
ls /sys/class/scsi_host/ 2>/dev/null
cat /sys/class/scsi_host/host0/proc_name 2>/dev/null
# 查看系统识别到的磁盘(HBA 直通模式下能看到每块物理盘)
sudo dnf install -y lsscsi
lsscsi -s
如果装的是主流厂商的 RAID 卡,通常有配套管理工具查看阵列状态。以 Broadcom/LSI 系列常见的 storcli 为例(工具名称与路径因厂商和版本而异,请下载对应版本):
# 查看控制器信息与所有虚拟盘/物理盘状态(路径以实际为准)
sudo ./storcli64 /c0 show
sudo ./storcli64 /c0 /vall show
sudo ./storcli64 /c0 /eall /sall show
# 若使用旧的 MegaCli
sudo ./MegaCli64 -LDInfo -Lall -aALL
sudo ./MegaCli64 -PDList -aALL | grep -Ei 'slot|firmware|state'
# 通过 smartmontools 读取 RAID 卡后面的盘(RAID 模式下需要指定 -d 参数)
sudo dnf install -y smartmontools
sudo smartctl -a -d megaraid,0 /dev/sda
在 HBA 直通模式下,用 mdadm 或 ZFS 管理存储:
# 软 RAID:查看阵列状态
cat /proc/mdstat
sudo mdadm --detail /dev/md0
# ZFS:查看存储池状态
sudo zpool status
sudo zpool list
需要提醒的是,创建或销毁阵列、格式化磁盘都是破坏性操作。清空一块盘会永久丢失上面的数据,在不确定盘上有什么内容前,务必先确认清楚,并做好备份。RAID 不是备份,它只能应对磁盘故障,不能应对误删除和勒索软件。
常见问题
Q:HBA 卡能组 RAID 吗?
HBA 卡本身不做 RAID,但可以在操作系统层用 mdadm 组软 RAID,或用 ZFS 组存储池。效果类似,但计算由 CPU 承担,数据可移植性更好。
Q:RAID 卡的电池坏了会怎样?
很多固件会自动把写策略退回写透模式,写性能大幅下降,还会报错告警。发现电池或超级电容异常要尽快更换,别放着不管。
Q:软 RAID 性能一定不如硬件 RAID 吗?
不一定。顺序读写和大块写通常差距不大,随机小写场景硬件 RAID 的缓存优势更明显。现代多核 CPU 跑软 RAID 或 ZFS 完全够用,关键看负载特征。
Q:ZFS 和硬件 RAID 能不能叠加用?
技术上可做,但一般不推荐在硬件 RAID 之上再叠 ZFS,因为 ZFS 拿不到物理盘信息,校验和自动修复能力会打折扣。用 ZFS 时优先让 HBA 卡直通物理盘。
Q:换卡后阵列读不出来了怎么办?
硬件 RAID 通常依赖同型号或兼容型号的卡,元数据格式也因厂商而异。所以阵列配置信息、卡型号要记录下来,最好保留备件。这也是 HBA + 软件方案可移植性更好的原因。
总结
- RAID 卡自带处理器和缓存,校验计算在卡上完成,对系统呈现为一个逻辑卷;HBA 卡透传物理盘,校验交给软件。
- RAID 卡的价值很大程度在缓存和掉电保护上,写策略、电池/超级电容健康状态必须定期关注。
- HBA 卡更便宜、更灵活、可移植性好,适合 ZFS、mdadm、自建存储和超融合场景。
- 选型看业务:传统企业 IT 和商业数据库偏硬件 RAID,自建存储和追求灵活性偏 HBA + 软件方案。
- RAID 不是备份,任何组阵列、重建、换卡操作前先备份,并记录好控制器型号和阵列配置,避免卡坏后数据无法恢复。
企业QQ咨询




