Linux 中的写入缓存

Linux 中的写入缓存

我已经阅读了大量有关 serverfault 的文章并在 google 上搜索了有关写入缓存的信息,但仍然找不到答案。

我有一台 HP ProLiant DL380 G5,配有 HW raid 和 512 MB 电池备份缓存。我使用 Debian Linux。

有 3 个写入缓存:1. 操作系统写入缓存 2. 带有 512 MB 电池备份缓存的硬件 raid 3. HDD 缓存

我的问题是:如何正确配置它们,以便在断电时不会丢失数据?

我认为禁用操作系统写入缓存和 HDD 缓存可以解决问题,并且由于 HW raid 缓存,它仍将表现良好。我是对的吗?

第二个问题是关于 HW raid 缓存的读/写比率。我认为,由于 OS RAM 用作读取缓存,因此最好将 HR raid 缓存的比率更改为 0/100 或 0/80(读/写)。这样,它的利用率将比 50/50 更好,我认为 50/50 是默认的读/写缓存比率。这个比率的最佳值是什么?

谢谢

答案1

这些系统设计为即插即用。以下是每个层处理 I/O 的方式。

操作系统

当 I/O 子系统实际提交内容时,写入内容会短暂缓存在 RAM 中(脏页)。一旦提交写入,页面就会被缓存,以防立即再次读取。OS Cache 不维护未承诺写入时,它维护一个池已经承诺可能需要再次读取的写入。实际上,这是一个 100% 的读取缓存。

RAID 控制器

RAID 控制器的 BBC 接收来自操作系统的写入。根据正在写入的卷的缓存策略(直写还是回写),RAID 控制器此时可能会将写入报告为已提交。然后,它会将写入排队以提交到实际磁盘

磁盘

有些 RAID 卡确实会禁用 HD 缓存。其他则不会。我不记得 HP 是如何做到的,但如果禁用 HD 缓存并将写入优化逻辑推入 RAID 控制器本身,我也不会感到惊讶;HP 在其驱动器上使用自定义固件是有原因的。


操作系统及其支持的文件系统非常清楚,突然断电是一种故障模式,在操作系统确定需要发生断电和存储系统报告断电完成之间的时间内,这种故障模式可能会终止写入操作。我们已经这样做了一段时间,而且我们非常擅长防范这种故障。

由于处理元数据写入的方式,XFS 文件系统在突然断电情况下的生存能力不佳。但是,它的目标环境是假定电源具有足够冗余度的环境。其他文件系统,ext 系列、btrfs,当然还有 zfs,也能很好地适应这种情况。


如果您在已知电源故障的环境中操作,为确保断电期间不会丢失数据,请执行以下操作:

  • 使用已知能够应对突然断电的文件系统(基本上,除了 XFS 之外的任何文件系统)

就是这样。RAID 卡上的 BBC 确保 RAID 缓存在电源恢复之前得到保留。磁盘缓存可能被禁用。无需将 RAID 卡缓存调整为全读。无需禁用 OS 块缓存。

真的。

答案2

HP ProLiant 服务器和控制器的典型设置是保持操作系统写入缓存打开,启用 RAID 控制器的缓存(设置为 25:75 读写比),然后由您选择各个磁盘的缓存。在此设置中,最好将它们关闭以确保安全。阵列控制器配置实用程序中的警告仅指定启用驱动器写入缓存您拥有稳定/受保护的设施电源。虽然 HP 在其磁盘上使用特定固件,但它们与其使用的 RAW Seagate(或其他 OEM)磁盘之间没有性能差异。

您还需要系统中嵌入的 Smart Array P400i 控制器的最新固件。

对于企业级(服务器级)硬件来说,XFS 是一种非常好且稳定的文件系统选项,特别是当您的阵列控制器上有由电池支持的闪存缓存时。

您不应该期望服务器突然、不可控地断电。如果是这样,请使用容量合适的不间断电源 (UPS)。

此外,这里还有许多问题可以解决您提出的问题:

RAID 卡上的内存模块有何用途?

HP ProLiant DL385 G7 的磁盘性能极低

非易失性缓存 RAID 控制器:针对 NVCACHE 故障有哪些类型的保护?

相关内容