ENZH

你的数据到底存在硬盘哪儿,顺便说说 RAID 5 为啥不保险

上一篇里的寄存器、缓存、内存都有个共同的怂点:一断电,存的全没。你存进硬盘的照片能搁十年,靠的是另一套完全不同的物理。机械硬盘用磁,固态硬盘用电子,原理天差地别,咱一个一个看。

机械硬盘:拿磁,把 0 和 1 刻进盘片

拆开一块机械硬盘,最要命的两个零件,一个是盘片,一个是摆臂。盘片表面镀了层磁性材料,分成一小块一小块,每块朝哪个方向磁化,就代表存的是 0 还是 1。盘片由电机带着转,5400 转、7200 转说的就是它每分钟转多少圈。摆臂末端那个磁头负责读写,它干活时并不碰盘片,而是悬在盘片上方大约 15 纳米的地方掠过——这精度,相当于一架客机贴着地面几毫米高速巡航还不能蹭着。

写数据,是磁头上的电磁铁给那一小块磁化,改电流方向就改磁化方向。早年磁化方向是平躺的(LMR),费地方,早淘汰了;现在都立起来(PMR),密度高得多。读数据更讲究:靠的是某些材料在不同磁场里电阻会变。1988 年,人类发现把磁性和非磁性的薄膜像肉夹馍一样叠起来,对磁场敏感得吓人,微弱的磁场变化就引起电阻剧变,这叫巨磁电阻效应。发现它的两位科学家 2007 年拿了诺贝尔物理学奖,你硬盘里就装着一块诺奖成果。

巨磁电阻让读取头能做得极小极灵敏,磁道就能挨得更密、容量更大。可写入头偏偏缩不小,磁力不够就磁化不动盘片。厂商于是憋出一个 Redknot 口中「卧龙凤雏」的损招:磁道照样做窄,宽写入头硬往里写,写这条顺手把隔壁那条覆盖了,那就先把隔壁读出来、写完这条再补回去,一条压一条像房顶的瓦,这就是叠瓦盘(SMR)。容量是上去了,写入速度稀烂,只配干「写得少、读得多」的活。买盘的时候,商家只标 PMR 你得多问一句,是正经的 CMR 还是叠瓦的 SMR,别被文字游戏坑了。再往后还有热辅助(拿激光把那块先加热到 400 到 700 度退磁再写)、微波辅助这些花活,单盘容量已经能捅破 18TB。

固态硬盘:拿电子,关进绝缘层里

固态硬盘没有任何机械结构,它把电子直接锁起来。一颗电子面前有堵绝缘墙,按常理过不去,但在足够强的电场下,它有概率直接「穿墙」,这就是量子隧穿。利用它,造个被绝缘层包住的导体(浮栅):加强电场把电子隧穿进去,撤了电场电子就出不来,断电还能关它十年。把这玩意儿塞进 MOS 管的栅极底下,就是浮栅晶体管,靠浮栅里有没有电子来表示 1 和 0。

一个浮栅只存 1 比特叫 SLC,又快又耐用但贵;硬塞两比特叫 MLC,三比特 TLC,四比特 QLC,越能塞成本越低,可读写越慢、越娇气。这些浮栅晶体管串起来组成阵列,因为接法跟「与非门(NAND)」一样串联,所以叫 NAND 闪存。名字里那个 Flash,是当年东芝的舛冈富士雄觉得它快得像闪电。后来从平面 2D 卷到往上叠的 3D,又是一段腥风血雨。这段更细的NAND 演化、3D 堆叠和厂商厮杀,我在「存储这门生意」系列里专门拆过,这儿就不重复了。

RAID:拿多块盘,换可靠

一块盘总会坏。把多块盘组队,就是 RAID。

最莽的是 RAID 0:把数据切块,轮流丢进几块盘,读写一起上,性能翻几倍,可任何一块挂了,整组数据全报废,纯粹拿命换速度。最稳的是 RAID 1:一份数据原样拷进每块盘,互为备份,挂一块还有另一块,代价是俩 8TB 盘只能当 8TB 用,一半空间在陪跑。

折中的是争议最大的 RAID 5。它也把数据切块分散存,但每攒够一组,就用异或算出一个校验块塞进去。异或你可以糙糙地理解成「不进位的加法」。好处是:坏掉任意一块盘,用校验块加其余数据就能反推出丢的那块,阵列照常跑,换上新盘还能重建回来。只牺牲一块盘的空间换「容忍一块盘损坏」,听着挺香。

RAID 5 为什么让人半夜睡不着

香归香,网上有种吓人的说法:RAID 5 坏一块盘后重建,失败率高达 99%。这从哪儿来的?

得引入一个概念,URE,不可恢复读取错误。硬盘读着读着会有极小概率读错某一比特,某款盘的技术文档里写的是 10 的 14 次方分之一,听着小,可换算下来,每读约 12.5TB 数据就摊上一次。RAID 5 重建时,幸存的几块盘要从头到尾完整读一遍。要是盘都是 12TB 的,一路读下来撞上至少一次 URE 的概率,能飙到 96%。而一旦撞上,传统阵列就崩了。99% 的恐怖故事就是这么算出来的。

但这账算得太狠。一来,厂商文档里的 URE 是个保守的最大值,实际没那么频;谷歌一篇论文统计,硬盘五年内最高的年故障率也就 8.6%。二来,也是更关键的:为啥一个数据块出错就要整盘陪葬?问题出在阵列卡所在的 RAID 层只看得见数据块,看不见文件。它遇到一个 URE,根本不知道这块数据属于哪个文件、对你重不重要,企业级阵列卡的最优解就是一刀切:停下重建,喊你来处理。所以严格说,URE 不是「让阵列崩溃」,是「让重建停下等你救」,大部分数据还在。像 ZFS 的 RAIDZ1 更进一步,它能直接感知到文件层,撞了 URE 会告诉你是哪个文件坏了,你按文件取舍就行。

真嫌不够保险,那就上 RAID 6:在 RAID 5 的基础上多算一组校验,能扛两块盘同时挂,对 URE 的耐受也高一截。说到底,RAID 给的从来不是「数据永不丢」,是「多花点盘,换一层冗余」。它替代不了真正的备份。

数据存哪儿讲完了,可数据要被 CPU 飞速调用,还得先经过内存和显存这道关。它俩明明都是存数据,却走上了两条完全相反的路


本文整理自 B 站 UP 主 Redknot-乔红 的硬件科普合集。叠瓦盘那个「卧龙凤雏」的吐槽、还有 RAID 5 那套 URE 算账,都来自他的原视频,讲得比我细。本系列只做主题重编与转写。


© Xingfan Xia 2024 - 2026 · CC BY-NC 4.0