服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

BBWC:理论上是一个好主意,但有一个曾经保存过你的数据?

我很熟悉BBWC(电池支持的写入caching)打算做什么 – 以前曾在我的服务器中使用它们,即使是使用良好的UPS。 有不可预料的失败,它不提供保护。 我很好奇它是否真的在实践中提供了实际的好处。 (注意,我特别寻找那些有BBWC的人的反应,并且有崩溃/失败,以及BBWC是否帮助恢复) 更新 经过这里的反馈,我越来越怀疑BBWC是否增加了任何价值。 为了对数据完整性有信心,文件系统必须知道数据何时被提交到非易失性存储器(不一定是磁盘 – 我将回到这一点)。 值得注意的是,当数据被提交到磁盘时,大量的磁盘都是谎言( http://brad.livejournal.com/2116715.html )。 虽然认为禁用磁盘caching可能会使磁盘更加诚实似乎是合理的,但仍然不能保证也是如此。 由于BBWC中的缓冲区很大,因此屏障可能需要将更多的数据提交到磁盘,从而导致写入延迟:一般的build议是在使用非易失性回写高速caching时禁用屏障(并禁用片上caching)磁盘caching)。 然而,这似乎破坏了写入操作的完整性 – 仅仅因为在非易失性存储中维护更多的数据并不意味着它会更加一致。 实际上,逻辑交易之间可以说没有划分,似乎没有机会确保一致性。 如果BBWC在数据input到非易失性存储(而不是承诺磁盘)的时候承认存在障碍,那么它似乎满足数据完整性要求,而不会有性能损失 – 这意味着应该仍然启用障碍。 然而,由于这些设备通常performance出与将数据刷新到物理设备(显着慢于屏障)和广泛的禁用屏障的build议一致的行为,因此它们不能以这种方式performance。 为什么不? 如果操作系统中的I / O被build模为一系列stream,那么当写caching由OSpipe理时,有一定范围可以最小化写屏障的阻塞效应 – 因为在此级别只有逻辑事务(单个stream)需要承诺。 另一方面,不知道哪些数据位构成事务的BBWC将不得不将其整个caching提交到磁盘。 在实践中,内核/文件系统是否真正实现了这一点,需要比我现在想要投资的更多的努力。 磁盘组合告诉fib什么已经承诺和突然失去权力无疑会导致腐败 – 和一个Journalling或日志结构的文件系统,在停电后不能完全fsck不太可能检测到腐败,更不用说了试图修复它。 就故障模式而言,根据我的经验,大多数突然断电都是由于主电源断电(容易通过UPS进行缓解以及pipe理关机)而发生的。 人们把错误的电缆从机架中拉出来意味着数据中心的不良(标签和电缆pipe理)。 有些types的突然掉电事件不会被UPS阻止 – 在PSU或VRM故障时,带有障碍的BBWC将在这里出现故障时提供数据完整性,但是这种事件有多普遍? 在这里没有回应,这是非常罕见的。 当然,将堆栈中的容错移动到更高的位置是比BBWC更昂贵的 – 但是,将服务器作为群集来实现,对于性能和可用性还有很多其他好处。 另一种减轻突然断电影响的方法是实施一个SAN-AoE,使其成为一个实际的主张(我在iSCSI中并没有真正看到这一点),但是成本更高。