在具有不可预测的能力的情况下,Linux MD RAID的弹性

如果您因为不能控制的原因而必须使用RAID,并且RAID服务器可能没有进行电池备份, 并且该build筑物容易断电,那么您可以做些什么来使RAID在力量立即死亡的情况下更有弹性? 这种情况听起来很有意思,但实际上我现在正处于这种情况,因为我不能进去。

Linux软件RAID支持的任何特定的RAID规范是否比任何其他RAID规范更具弹性处理电力损失,或者是否有任何RAIDconfiguration参数在这里可能会有所帮助?

例如,RAID 10比掉RAID 5或RAID 6等基于奇偶校验的RAIDconfiguration更容易丢失。 另外,有没有RAIDconfiguration设置,试图处理没有一个很好的硬件RAID BBUcaching写入的现实?

我不记得任何MD RAID特定的选项,但是:

禁用磁盘写入caching

 hdparm -W get/set drive write-caching flag (0/1) 

使用sync / dirsync选项挂载所有分区

从男人坐骑:

 dirsync All directory updates within the file system should be done synchronously. This affects the following sys-tem calls: creat, link, unlink, symlink, mkdir, rmdir, mknod and rename. sync All I/O to the file system should be done synchronously. In case of media with limited number of write cycles (eg some flash drives) "sync" may cause life-cycle shortening. 

…也许在断电后它会同步。

有几件事你可以做,这将有助于TomTom和Barlomiej的覆盖。 但是,这仍然是一个坏主意。 真正的解决办法是有人的需求需要改变 。 所以我会给你一些理由,这是一个坏主意,你可以采取任何人认为这些要求是可以接受的。

将RAID放置一会儿,意外地断开服务器的电源,最终会导致问题:

  • 如果build筑物内的功率损耗很常见,那么不稳定的功率也可能是不稳定的 – 掉电和过压条件会对硬件造成严重损失,并大大降低其使用寿命。
  • 当服务器崩溃时,你会失去你正在处理的任何东西。 即使文件系统本身没有问题,当电源被切断时,文件会发生什么变化? 在某些情况下,你不仅失去了你刚刚储存的工作,而且整个文件都是腐败的,并在之前失去了所有的工作。
  • 最终,你的文件系统将被损坏。 现代文件系统通常可以很好地处理这个问题,尽pipe当电源恢复时你可能会花费额外的时间来检查文件系统。 在大型磁盘上,这可能需要几个小时。 有时候几天。 即使这台服务器的用户可以容忍在电源断电时重新启动,但他们不太可能容忍在电力恢复后的4个小时内。
  • 即使写caching被禁用,您仍然会丢失一些数据。 这大大降低了风险,但并没有完全避免。
  • 有一天,你的文件系统将被损坏,而fsck不会修复它。 然后,您可以从备份中恢复。 然后,您意识到由于相同的电源问题,备份已损坏。

现在把RAID投入混合:

  • 在数据可能被损坏的地方添加另一层存储 – 文件系统,RAID和磁盘本身。
  • 所以,当电源出现故障时,其中一个磁盘会损坏。 没问题。 这就是RAID的用途。 抛出一个新的磁盘在服务器,并开始重build。 大多数系统重build需要几个小时或几天的时间。 在繁忙的重build过程中,performance太糟糕了,但至less系统还在运转。 然后电源再次熄灭。 取决于RAID,它可能会重新启动,或者可能从停止的地方开始。 但最糟糕的情况是功率损耗导致第二块磁盘出现故障。 还是三分之一 而现在RAIDarrays是不可恢复的。

UPS的存在是有原因的。 你不需要一个花哨的服务器机架大小的UPS。 如果你不得不这样做,你可能会拿走更高端的消费者UPS大概100-200美元。 所有你真正需要的是持续足够长的时间来正确closures服务器。 连接USB电缆,设置UPS软件并进行设置,以使计算机在断电10秒后开始closures。 现在它在停电半小时停顿(UPS确保服务器没有看到通常伴随这种事件的任何可怕的电力状况)。 而在这个漫长的过程中,它会很好地有序地closures,没有数据丢失,也没有工作20个小时的class次,试图让服务器恢复。

如果您给我们提供更多关于这些要求存在的信息,我们可以给您更多关于如何在要求的精神下工作的想法,并提出一个可以接受的解决scheme。 但正如现在所说,我只能说: 获得一个UPS。

开始使用写入cachingSSD – 并获取一个与冷凝器处理功率损失。

否则,请确保您禁用任何性能提示。 在堆栈中的任何地方(包括硬件级别)都不回写caching。

就是这个。 不知道Linux有一个文件系统为此优化。