我正在为专线连接构建一个 Linux 流量整形路由盒。此盒必须可靠,因此我计划在 RAID 1 配置上安装操作系统和数据文件。我的问题有两个:
我原本打算使用 Linux 软件 RAID。我听说,只有当您花钱购买优质 RAID 卡(至少配备电池备份)时,硬件 RAID 才能真正带来显著的好处。我不太关心速度——我根本不会使用磁盘,但我担心万一发生意外,数据能否恢复。花钱购买硬件 RAID 卡值得吗?如果值得,有人可以推荐一款卡吗?
我以前也遇到过这种情况,当时购买的硬盘也几乎同时出现故障 - 即一周之内。为了避免这种情况,我想用来自不同制造商的磁盘填充我的 RAID 阵列。只要磁盘大小、速度和缓存大小相同,有人能看出这有什么问题吗?
干杯,
答案1
1)Linux 软件 RAID 是非常如今,软件 RAID 已经成熟,每次都可以从一台机器上移除驱动器并将其放入另一台机器。使用硬件解决方案时,您需要获得一张备用卡,因为该特定芯片执行 RAID 的方式可能与另一个不同,并且您可能丢失了数据。使用现代 CPU,软件 RAID 使用起来既安全又快速 - 除非您有足够的预算购买高端 RAID 卡,否则我更相信它而不是硬件解决方案。这些的好处是它们具有电池备份单元,可以在断电时存储数据。通常,您不会真正受到断电的影响 - 驱动器本身也倾向于进行缓存,因此您将失去一些无论如何,只需使用 Linux 软件 RAID。或者 ZFS - 它非常好,非常安全,功能很有用,但是是不同的范例。
2) 没问题。只要它们之间的差异在 1% 左右,您就会得到一个最小驱动器大小的 RAID 集。我也是这样做的 - 我倾向于坚持使用同一家制造商,但获得不同的构建集。
请记住 RAID 也不是备份。
答案2
硬件 RAID 有几个优点,可能值得也可能不值得花这个卡的价格:
- 设置软件 RAID 时必须小心谨慎,以确保系统从两个驱动器启动,并且在主驱动器发生故障时以相同的方式工作。一开始很容易忘记在辅助驱动器上放置一个有效的 MBR,如果不小心,非 RAID 启动分区可能会在两个驱动器之间不同步。硬件 RAID 卡更容易做到这一点,这样即使发生故障,您的系统也将始终正常工作。
- 当驱动器发生故障时,如果它们不断产生垃圾数据,则整个系统都会陷入混乱。您的主板可能没有经过测试,无法确定它在这种情况下会如何工作。硬件 RAID 控制器往往会采取更明智的措施,隔离坏驱动器并忽略其正在执行的操作。我曾多次在 Linux 软件 RAID 设置中遇到驱动器故障,导致整个系统瘫痪,直到驱动器被移除——没有数据丢失,但服务器不得不停机一段时间,直到我找出哪个驱动器是坏的。提示:设置阵列后,务必记下所有驱动器的序列号,这样当驱动器停止工作时,更容易找出丢失了哪个驱动器。
- 更换硬件 RAID 系统上的故障驱动器通常足以启动重建,而在 Linux 软件 RAID 中,您必须自己添加新驱动器。一般来说,启动硬件 RAID 更容易,学习曲线也更容易。有人可能会说软件 RAID 解决方案由于其复杂性而更强大,有时人们只想更换坏磁盘并继续前进。
- 如果您的应用程序调用 fsync 强制将数据输出到驱动器,则可以通过硬件 RAID 卡使用其缓存来加速这一过程,这是其他方式无法做到的。写入操作将移交给电池支持的缓存,应用程序将继续运行,即使断电,写入操作仍然是安全的(在电池使用寿命的范围内)。通常,数据库是执行此操作的主要应用程序,邮件或日志数据也可能会发生这种情况。能够像这样缓存写入可以显著提高性能,既可以停止等待 fsync,也可以重新排序写入,从而减少对物理磁盘的搜索。但是,如果您没有需要它的应用程序,这种事情就没有价值。如果您不强制写入,操作系统将缓存写入并以减少写入的方式将其输出,并且大多数应用程序并不依赖于这些写入在所有情况下进入磁盘 - 您只会丢失最后一点数据并继续运行。
除了成本之外,硬件 RAID 的主要缺点是,你可能会遇到这样的情况:从服务器中取出驱动器后,你无法在另一台没有相同 RAID 卡的服务器上使用它。有关该问题的完整讨论,请参阅另一个答案这里。
至于供应商,3ware 的 RAID 卡对 Linux 的支持最好,只需确保它们提供的 tw_cli 程序与您的系统兼容即可。我从未在主流 Linux 版本/硬件上遇到过问题,但这是需要检查的事情。Areca 的卡速度稍快一些,但它们的管理软件很差,您需要购买一种通过网络连接提供管理界面的型号,然后才能使用。
在硬件或软件 RAID 中,不同大小的磁盘不会有问题,只要您小心地在所有地方使用最小驱动器的大小即可。您可能希望将大小略微缩小,这样可以提高类似大小的替换件可用的几率。
答案3
这里的所有答案都很好。您可能需要考虑的一件事是,特别是如果您有 UPS 电源,使用极简安装并将整个系统加载到 RAM 中。
在这种情况下,硬盘本质上只是一个保存配置数据的地方。查看小狗Linux几年前,一位朋友为一个项目做过这样的事情,并且实际上让一个硬盘故障的系统运行了大约一年!
答案4
对于#2,尽管 Linux RAID 会自动降至您的磁盘组的最小大小,但您可能希望将 RAID 分区设置为比该大小小几 GB,以防您购买稍微小一点的替换磁盘。
您可以将磁盘上的额外空间用作交换空间。(如果您希望机器在磁盘故障时不崩溃,请对交换空间进行 RAID!)