我们最近在一台装有 8 个 73GB 硬盘的 SQL 2008 服务器上遇到了 RAID 阵列故障。(戴尔 2950)。有两个硬盘坏了(其中一个似乎已经坏了几个月,但一直没有发现……)。更糟糕的是,这台服务器上的日志传送功能无法正常工作,上次备份是 3 天前的事了……
所以我手头有这 8 个驱动器,如果我选择将它们发送出去进行恢复,哪些驱动器(如果有的话)上有特定的已完成的 DB 文件?
我的程序员说 HDD2 和 HDD3。在这些情况下,Raid 5 或 SQL 是否使用一致的逻辑将数据写入特定驱动器?HDD0 首先坏了,然后 HDD4 是最后一个发生故障并导致阵列崩溃的驱动器。
附注一下,我们将不再在所有新服务器上使用 Raid 5,而是改用 Raid 10。
提前致谢。
答案1
我曾经处理过 2 个驱动器故障的 RAID 5 阵列,简而言之,如果你想要恢复数据,你必须将阵列中的所有驱动器送去恢复。这将花费你数千美元,因此管理层将决定生产力损失是否值得付出这样的代价。
通常,RAID 5 会将数据条带化到所有磁盘,并为每个条带内置一个奇偶校验驱动器。文件永远不会存储在阵列的特定驱动器上的连续块中。请参阅此处了解 RAID 5 的工作原理:http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5
我同意 Sven 的观点,将时间和金钱投入到可靠的备份和硬件监控上要好得多。与切换到 RAID 10(如果您不需要 IOPS,这将花费您一些钱)相比,它们将为您提供两层(在我看来更好)的数据丢失防御。
答案2
在 n 磁盘 RAID5 中,您需要 n-1 个磁盘来读回数据。如果两个驱动器坏了,其他磁盘将不会包含完整的数据,您只能求助于备份。
为了提高速度,数据被分散到磁盘上以便于更快地读取。