sa289 Asked: 2015-04-07 13:03:27 +0800 CST2015-04-07 13:03:27 +0800 CST 2015-04-07 13:03:27 +0800 CST mdadm 3 路 RAID 1 - 保证 2 驱动器容错的良好解决方案? 772 使用 mdadm 的 3 路 RAID1 是否是一个很好的解决方案,能够维持任何两个驱动器发生故障而 RAID 不发生故障?我知道在只能使用 1/3 的磁盘空间(3 个驱动器中的 1 个)的意义上,这会产生额外的成本,但除此之外呢? linux 5 个回答 Voted Best Answer shodanshok 2015-04-20T07:56:18+08:002015-04-20T07:56:18+08:00 要使单个阵列能够发生 2 个磁盘故障,您有两种选择: 三路 RAID1,正如你所建议的 RAID6,作为另一种可能性。 什么是最好的选择?这取决于您要达到的目标。 如果您想要一个可以取出磁盘的设置,将其安装在另一台计算机上并且仍然能够读取您的数据,请使用RAID1。 如果您希望每次都能够扩展阵列并获得额外空间,请使用RAID6 关于 RAID1 性能下降的说明:它不取决于总线拥塞,而是取决于平均磁盘寻道时间如何受多次写入的影响。磁盘寻道时间由两个不同的部分组成:寻道延迟(磁头需要到达正确角度的时间)和旋转延迟(磁盘盘片需要旋转到正确位置的时间)。 当涉及多个磁盘时,多个相同的写入,主机测量的旋转延迟将是所有涉及的磁盘中最差的。另一方面,RAID1 磁盘之间的寻道时间应该相对相似。最后,这意味着与单个相同磁盘相比,RAID1 阵列的写入 IOPS 值会略低。 Linux 的 mdadm 有一个有趣的规定,可以最大限度地减少不同磁盘延迟的影响。例如,阅读有关“write-behind”和“write-mostly”的手册页: -W, --write-mostly 列在 --build、--create 或 --add 命令中的后续设备将被标记为“write-mostly”。这仅对 RAID1 有效,意味着“md”驱动程序将尽可能避免从这些设备中读取数据。如果通过慢速链接进行镜像,这可能很有用 --write-behind= 指定应启用后写模式(仅对 RAID1 有效)。如果指定了参数,它将设置允许的最大未完成写入数。默认值为 256。为了使用 write-behind 模式,需要 write-intent 位图,并且 write-behind 仅在标记为 write-mostly 的驱动器上尝试。 请注意,这会降低您的随机读取 IOPS 性能(因为某些磁盘将有效地仅用于写入),因此请谨慎选择毒药。 fukawi2 2015-04-16T16:04:40+08:002015-04-16T16:04:40+08:00 是的,您可以根据需要向 RAID1 添加任意数量的镜像,并且您可以容忍除 1 个设备之外的所有设备的故障。如果添加 10 台设备,则可以容忍 9 台设备出现故障。 不过,不要忘记此设置会受到写入惩罚。所有数据都必须写入每个设备。通常它应该是相当微不足道的,但如果所有设备都在同一个控制器/总线上,那么您可能会开始注意到延迟,因为您的数据被写入每个设备。例如,对于 3 个设备,将 1mb 的数据写入阵列需要控制器/总线实际将 3mb 写入磁盘。 Dan Sawyer 2015-04-07T20:07:22+08:002015-04-07T20:07:22+08:00 另一种解决方案是带有 3 个磁盘的 raid 6。看到这个帖子: 实现 RAID6 的最小磁盘数 Raid 6 还将通过添加第四个驱动器将容量翻倍。我有 2 个驱动器在阵列上发生故障,并且没有丢失数据。 Sibin Grasic 2015-04-19T13:14:23+08:002015-04-19T13:14:23+08:00 首先,我认为重要的是要注意使用场景和所用组件的质量。如果您使用桌面 HDD 和廉价的 RAID 控制器或使用完整的企业硬件,情况就不一样了。 如果您唯一要做的事情是跨 HDD (RAID1) 进行复制,那么您可以承受丢失 n-1 个硬盘驱动器并保持所有数据完好无损的后果。 但是我真的很想知道您如此担心同时丢失 2 个驱动器的使用场景和硬件选择是什么? 最近,我为 ISP 设置了一个网络服务器。服务器有一个 6 端口 RAID 控制器。因此,我将 RAID 60 设置为速度/安全性之间的良好折衷。 我建议您阅读此链接 关于您的说明,我强烈建议您选择 RAID 5 或 RAID 60……或者,如果成本是问题,带有两层异地备份的简单 RAID0 就足够了。 我的参考资料是我自己在截然不同的使用场景中设置大量服务器的经验。 Jake Page 2017-07-27T22:41:34+08:002017-07-27T22:41:34+08:00 我一直是基于硬件的 RAID 5 的忠实粉丝。如果计划使用允许,我通常使用 Ubuntu Linux 作为服务器。借助基于硬件的 RAID,Ubuntu(以及任何其他操作系统)在大多数现代服务器中从 RAID-5 阵列启动时都不会遇到问题。我也使用多个备份。第一次备份是在外部驱动器上的服务器上每小时备份一次,使用 Back-In-time 在工作时间内每小时提供一次现场备份。第二级备份是使用另一台运行 Ubuntu 和 Back-In-Time 的计算机对网络共享驱动器进行夜间备份。每晚备份也可用于便携式 USB 驱动器,并且至少有一个保存在异地。驱动器在工作日期间每天轮换。第三级备份是运行 Ubuntu Linux 的退役 Windows Vista 计算机,配置类似于服务器配置,每晚使用 Linux 实用程序 rsync 将服务器文件同步到备份系统。过去几年出现驱动器故障时,RAID-5(带有热备用)很好。在每个实例中都更换了故障驱动器(可热插拔),而不会中断网络活动。当服务器发生严重崩溃时,RAID-5 没有帮助,可能是由于主板或内存故障。有帮助的是备用备份服务器,它具有前一天晚上下班后的同步文件。我运行了一个小脚本来将服务器配置迁移到备份服务器,该备份服务器会迁移所有用户和机器帐户,从而使备用计算机成为临时 PDC。花了几个小时组装另一台退役的 Windows 计算机来制作新的备份计算机系统并将其上线。我选择用更适中的 Proliant ML10 服务器替换更昂贵的 Proliante ML350 服务器。我将使用 RAID-1 将新服务器配置为具有热备用的 3 驱动器镜像。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。我选择用更适中的 Proliant ML10 服务器替换更昂贵的 Proliante ML350 服务器。我将使用 RAID-1 将新服务器配置为具有热备用的 3 驱动器镜像。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。我选择用更适中的 Proliant ML10 服务器替换更昂贵的 Proliante ML350 服务器。我将使用 RAID-1 将新服务器配置为具有热备用的 3 驱动器镜像。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。 我想表达的要点是为您的服务器发生故障做好准备并制定良好的备份计划。要成为一个好的备份计划,您必须实际测试备份和恢复过程。在最近一次失败的情况下,从接到电话让我起床、穿衣服、出门时吃点东西、开车到现场(10 分钟车程)、诊断问题(包括尝试重新启动服务器),使备份服务器联机需要 52 分钟。 您可以讨论 RAID 的不同可能性中哪个更好。请记住,除了硬盘驱动器之外,更多的东西可能会失败。使用您认为最适合您使用的 RAID 类型,但由于硬件故障或恶意软件/病毒攻击而计划恢复。
要使单个阵列能够发生 2 个磁盘故障,您有两种选择:
什么是最好的选择?这取决于您要达到的目标。
关于 RAID1 性能下降的说明:它不取决于总线拥塞,而是取决于平均磁盘寻道时间如何受多次写入的影响。磁盘寻道时间由两个不同的部分组成:寻道延迟(磁头需要到达正确角度的时间)和旋转延迟(磁盘盘片需要旋转到正确位置的时间)。
当涉及多个磁盘时,多个相同的写入,主机测量的旋转延迟将是所有涉及的磁盘中最差的。另一方面,RAID1 磁盘之间的寻道时间应该相对相似。最后,这意味着与单个相同磁盘相比,RAID1 阵列的写入 IOPS 值会略低。
Linux 的 mdadm 有一个有趣的规定,可以最大限度地减少不同磁盘延迟的影响。例如,阅读有关“write-behind”和“write-mostly”的手册页:
请注意,这会降低您的随机读取 IOPS 性能(因为某些磁盘将有效地仅用于写入),因此请谨慎选择毒药。
是的,您可以根据需要向 RAID1 添加任意数量的镜像,并且您可以容忍除 1 个设备之外的所有设备的故障。如果添加 10 台设备,则可以容忍 9 台设备出现故障。
不过,不要忘记此设置会受到写入惩罚。所有数据都必须写入每个设备。通常它应该是相当微不足道的,但如果所有设备都在同一个控制器/总线上,那么您可能会开始注意到延迟,因为您的数据被写入每个设备。例如,对于 3 个设备,将 1mb 的数据写入阵列需要控制器/总线实际将 3mb 写入磁盘。
另一种解决方案是带有 3 个磁盘的 raid 6。看到这个帖子:
实现 RAID6 的最小磁盘数
Raid 6 还将通过添加第四个驱动器将容量翻倍。我有 2 个驱动器在阵列上发生故障,并且没有丢失数据。
首先,我认为重要的是要注意使用场景和所用组件的质量。如果您使用桌面 HDD 和廉价的 RAID 控制器或使用完整的企业硬件,情况就不一样了。
如果您唯一要做的事情是跨 HDD (RAID1) 进行复制,那么您可以承受丢失 n-1 个硬盘驱动器并保持所有数据完好无损的后果。
但是我真的很想知道您如此担心同时丢失 2 个驱动器的使用场景和硬件选择是什么?
最近,我为 ISP 设置了一个网络服务器。服务器有一个 6 端口 RAID 控制器。因此,我将 RAID 60 设置为速度/安全性之间的良好折衷。
我建议您阅读此链接
关于您的说明,我强烈建议您选择 RAID 5 或 RAID 60……或者,如果成本是问题,带有两层异地备份的简单 RAID0 就足够了。
我的参考资料是我自己在截然不同的使用场景中设置大量服务器的经验。
我一直是基于硬件的 RAID 5 的忠实粉丝。如果计划使用允许,我通常使用 Ubuntu Linux 作为服务器。借助基于硬件的 RAID,Ubuntu(以及任何其他操作系统)在大多数现代服务器中从 RAID-5 阵列启动时都不会遇到问题。我也使用多个备份。第一次备份是在外部驱动器上的服务器上每小时备份一次,使用 Back-In-time 在工作时间内每小时提供一次现场备份。第二级备份是使用另一台运行 Ubuntu 和 Back-In-Time 的计算机对网络共享驱动器进行夜间备份。每晚备份也可用于便携式 USB 驱动器,并且至少有一个保存在异地。驱动器在工作日期间每天轮换。第三级备份是运行 Ubuntu Linux 的退役 Windows Vista 计算机,配置类似于服务器配置,每晚使用 Linux 实用程序 rsync 将服务器文件同步到备份系统。过去几年出现驱动器故障时,RAID-5(带有热备用)很好。在每个实例中都更换了故障驱动器(可热插拔),而不会中断网络活动。当服务器发生严重崩溃时,RAID-5 没有帮助,可能是由于主板或内存故障。有帮助的是备用备份服务器,它具有前一天晚上下班后的同步文件。我运行了一个小脚本来将服务器配置迁移到备份服务器,该备份服务器会迁移所有用户和机器帐户,从而使备用计算机成为临时 PDC。花了几个小时组装另一台退役的 Windows 计算机来制作新的备份计算机系统并将其上线。我选择用更适中的 Proliant ML10 服务器替换更昂贵的 Proliante ML350 服务器。我将使用 RAID-1 将新服务器配置为具有热备用的 3 驱动器镜像。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。我选择用更适中的 Proliant ML10 服务器替换更昂贵的 Proliante ML350 服务器。我将使用 RAID-1 将新服务器配置为具有热备用的 3 驱动器镜像。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。我选择用更适中的 Proliant ML10 服务器替换更昂贵的 Proliante ML350 服务器。我将使用 RAID-1 将新服务器配置为具有热备用的 3 驱动器镜像。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。我订购的 ML10 服务器使用软件 RAID 控制器,必须将其配置为 AHCI 而不是 RAID 才能启动 Ubuntu。服务器和四个 1TB 驱动器的总成本大约是 ML350 上一个 300GB 驱动器的成本。这是 25 年来管理服务器的第二次 RAID-5 没有帮助(第一次可能是 RAID 控制器出现故障)。这两种情况都不是RAID的问题,只是使用技术的问题。
我想表达的要点是为您的服务器发生故障做好准备并制定良好的备份计划。要成为一个好的备份计划,您必须实际测试备份和恢复过程。在最近一次失败的情况下,从接到电话让我起床、穿衣服、出门时吃点东西、开车到现场(10 分钟车程)、诊断问题(包括尝试重新启动服务器),使备份服务器联机需要 52 分钟。
您可以讨论 RAID 的不同可能性中哪个更好。请记住,除了硬盘驱动器之外,更多的东西可能会失败。使用您认为最适合您使用的 RAID 类型,但由于硬件故障或恶意软件/病毒攻击而计划恢复。