我的电脑里曾经有一个三盘 RAID5 (mdadm),用于存储个人媒体(音乐、视频、照片、程序、游戏……)。它有三张盘,每张 750 GB,因此阵列容量为 1.5 TB。
有一天(一年前),我需要其中一张光盘来安装另一个操作系统。我想,我不再需要冗余了,因为我无论如何都会在外部光盘上备份最重要的东西(例如个人照片)。所以我决定移除三张光盘中的一张,而不将 RAID 转换为 RAID0 甚至两张单独的光盘,因为我没有临时存储(因为据我所知,不能简单地将 RAID5 转换为 RAID0)。
现在,大约一年来,我有一个非冗余 RAID5,其中 2/3 个磁盘在运行。有时,其中一个磁盘的电源线接触不良或类似问题导致驱动器暂时停止工作(我不知道具体是什么原因)。由于它在重新启动计算机时仍能工作,并且在大多数情况下通过调用一些 mdadm 命令,所以问题并不大。请注意,数据不是很重要,因为我仍然有最重要的内容的备份。
但在过去几周里,其中一个驱动器频繁出现故障(每隔几个小时),因此管理这个问题真的很烦人。
我的问题是:
与 RAID0 相比,非冗余 RAID5(比典型情况少一个驱动器)有什么缺点(除了烦人的管理)吗?如果我理解正确的话,两者都没有冗余,容量相同。在临时驱动器故障时,我可以在这两种情况下重新启动阵列,假设驱动器本身在故障后仍能正常工作。
驱动器发生故障时,驱动器内容是否会发生变化,从而导致阵列不一致?如果是这样,我可以让 mdadm 检查阵列是否发生故障(不使用文件系统级检查工具)吗?
由于驱动器很可能仅仅存在接触缺陷而导致其仅发生一秒钟的故障,我可以告诉 mdadm 自动重新启动阵列吗?这样,如果在故障期间没有应用程序想要访问文件系统,我甚至不会注意到故障?
答案1
由于奇偶校验计算,即使驱动器已满,RAID5 与其他 RAID 格式相比也存在写入损失。由于您使用的是软件 RAID,因此这会影响系统性能,而不仅仅是驱动器性能,因为 CPU 正在执行所有奇偶校验计算。这可能会或可能不会引起注意,具体取决于您的系统以及您在访问驱动器时所做的事情,但值得注意。如果没有第三个驱动器,我想读取性能也会受到一定影响,因为通常存在于第三个驱动器上的所有数据现在都必须通过奇偶校验位进行计算,而不是直接读取。可能还有其他影响,但我知道性能影响是最大的。
我对您的其他问题不太熟悉,无法提供答案,但目前我建议尽可能重新利用驱动器使其独立运行。这不会像将它们显示为一个驱动器那样有用,但您不必处理间歇性驱动器故障,并且它应该会减轻系统其余部分的压力。当然,最困难的部分是迁移,但也许朋友可以借给您一些磁盘?
还有一件事需要考虑:这真的只是存储吗?还是一些文件系统位于阵列上(/usr
、/var
、/bin
或类似的东西)?如果这些上面有任何与系统相关的东西,它可能会导致严重的系统不稳定,并且阵列不可靠。
答案2
与 RAID0 相比,非冗余 RAID5(比通常少一个驱动器)有什么缺点吗(除了烦人的管理之外)?
是的。无论磁盘组是否已满,RAID5 写入速度都比 RAID0 写入速度慢。
驱动器发生故障时驱动器内容会不会发生改变,从而导致阵列不一致?
是的;但这是文件系统损坏,因此,如果整个阵列处于脱机状态,无论您使用哪个 RAID 集,都可能发生这种情况。一个非常典型的例子是带有写入缓存的 RAID5 阵列。它报告文件已写入磁盘,以便操作系统可以继续处理,但实际上它不是写入磁盘时,RAID 控制器仍在计算其奇偶校验,稍后会将其写入磁盘。如果在报告 All OK 和写入数据之间断电,则可能会出现无法恢复的文件系统损坏。这就是为什么 RAID-5 通常仅在电池备份缓存或关闭写入缓存的情况下使用。
如果是这样,我可以告诉 mdadm 检查阵列是否存在故障(不使用文件系统级检查工具)吗?
由于驱动器很可能仅仅存在接触缺陷而导致其仅发生一秒钟的故障,我可以告诉 mdadm 自动重新启动阵列吗?这样,如果在故障期间没有应用程序想要访问文件系统,我甚至不会注意到故障?
抱歉,我对 Linux 的 mdadm 了解不够,无法回答这个问题。但我做我对硬盘故障有足够的了解,可以告诉你 750GB 硬盘坏掉只是时间问题永远并且您发现自己正在从备份中恢复。
最好是替换所有这些驱动器并构建一个新的、完全冗余的阵列,而不是采用一些黑客式的解决方法。