选购服务器或者搭建NAS,经常会碰到RAID选项。RAID 0、RAID 1、RAID 5、RAID 10,这几组数字看着晦涩,本质是多块硬盘组合工作的不同方案。做阵列的目的无非两类,要么提升读写速度,要么保障数据安全,少数方案两者兼顾。不过想要同时兼顾速度和安全,往往要付出更高成本,所以理解不同方案的取舍,远比死记定义更实用。
RAID 0逻辑最简单。系统把数据切割成小块,交替写入每一块硬盘,两块盘的场景,一半数据写第一块,另一半写第二块。读写的时候多块硬盘并行工作,速度直接提升,总容量也是所有硬盘相加,空间利用率100%。看着优势很大,但它没有任何故障容错能力。任意一块硬盘损坏,整套阵列内全部数据直接丢失,文件被拆分存储在全部硬盘,缺少任意一块硬盘,数据就无法重组。RAID 0适合存放丢失也无所谓的数据,比如视频剪辑临时缓存、游戏盘、测试环境。拿它存放重要资料,相当于赌硬盘永远不会故障。

RAID 1走向另一个方向。两块硬盘互为镜像,写入一份数据时,会同步保存两份完全相同的副本到两块盘。读取时可以从任意硬盘调取,读性能尚可;写入操作需要等待两块硬盘全部完成写入,写性能相比单盘会略低。空间利用率只有50%,两块1TB硬盘组建RAID 1,实际可用容量仅1TB。优点是稳定性强,一块硬盘损坏,另一块保留完整数据,业务可以继续运行,更换新硬盘之后自动完成数据重建。系统盘、代码、重要文档存储,RAID 1是很稳妥的选择。缺点就是成本偏高,想要2TB可用容量,需要购置两块2TB硬盘,相当于花费双倍成本换取数据安全。
RAID 5是很多人纠结的折中方案。最少需要三块硬盘,数据按条带分散存储,奇偶校验信息也拆分保存在不同硬盘。任意单块硬盘故障,依靠剩余硬盘的数据和校验信息,就能恢复丢失内容。容量利用率是(n-1)/n,三块1TB硬盘组RAID 5,可用空间为2TB。读性能接近RAID 0,写入时需要额外计算校验,写速度弱于RAID 0。看起来性价比不错,读写尚可,容量损耗不大,还能承受单盘故障。但RAID 5有个容易被低估的隐患:重建风险。一块硬盘损坏,更换新盘开始重建数据,剩余硬盘会长时间满负载读取,这个阶段如果再有一块硬盘故障,整套阵列直接失效。硬盘数量越多、单盘容量越大,重建耗时越长,二次故障概率随之上升。RAID 5适合文件存储、备份库、媒体库这类写入频次低、看重容量的场景,不太适合数据库、高并发写入业务。
RAID 10结合了RAID 1镜像与RAID 0条带化的特点,最少需要四块硬盘。先两两组建镜像组,再把两组镜像做条带化。空间利用率50%,四块1TB硬盘,可用容量2TB。读写性能表现优秀,条带化带来速度提升,镜像机制提供数据冗余。容错能力优于RAID 5,只要不是同一镜像组内两块硬盘同时损坏,阵列都可以正常工作。重建速度更快,只需要从镜像硬盘复制数据,不用额外计算校验。代价就是成本高,一半硬盘容量被镜像占用。数据库服务器经常选用RAID 10,数据库对随机读写和可靠性都有硬性要求,RAID10两项指标都能满足。
这四种阵列选型逻辑并不复杂,先问自己一个核心问题:硬盘里的数据丢失会造成什么后果?数据丢了无所谓,RAID 0速度最快、成本最低。数据丢失影响很大,但预算有限,两块硬盘起步选RAID 1。数据体量较大,想要兼顾容量和基础容错,可以考虑RAID5,但要接受重建阶段的风险。对性能和数据安全都有硬性要求,预算充足,RAID10是最稳妥的选项。
还有一个容易被忽略的关键点,RAID不等于备份。RAID解决的是硬盘物理损坏造成的业务中断,抵御不了误删除、病毒、勒索软件,或是整机被盗。你删除一份文件,RAID1两块盘内的文件会同步消失;RAID5同样,校验信息无法恢复逻辑删除的数据。完整方案需要RAID搭配定期离线备份,重要数据至少保留两份副本,并且两份副本不能存放在同一台设备。RAID保证硬盘损坏时业务不停机,备份用来应对误删、加密勒索这类逻辑故障,两者各司其职,缺一不可。