我最近了解到启用磁盘写入缓存可以显着提高系统性能。但是,我担心突然断电时数据损坏或丢失的潜在风险。
以下是有关我的设置的一些背景信息:
操作系统:Windows Server 2012 R2
磁盘类型:SATA 3.0 硬盘
目的:我正在考虑在磁盘上启用写入缓存以提高性能。我的理解是,如果写入缓存上的数据尚未提交到磁盘时发生电源故障、操作系统崩溃或访问数据的应用程序崩溃,则可能会发生数据损坏。
在我的研究过程中,我在这篇文章中发现了以下详细信息,他们提到“当启用活动磁盘写入缓存并且磁盘执行预读(RLA)时,数据损坏会在用户不知情的情况下发生,而提前结束。” 。我无法理解这句话的确切含义。
即使在断电时没有进行数据写入,启用写入缓存后是否会发生数据损坏/文件损坏的情况。
我正在更新/扩展我的磁盘集,但不太确定要获取哪种磁盘,缓存方面。
16/32/64MB 的磁盘缓存量与 1/1.5/2TB SATA 磁盘容量有什么区别?这些磁盘将用于 webapp 服务器和媒体工作站,在 raid-1/raid-5 配置中使用 Linux 的 softraid。请注意,由于这两个目的纯粹是出于爱好,因此一打磁盘的价格是一个大问题。
我有一台 Windows Server 2008 x64 Standard 虚拟机,它运行在带有硬件 RAID 控制器 Perc 6/i 的机器上,它有一个板载电池。
尽我所能提高性能,我想我应该禁用它。不过这很危险吗?
我的理解是电池支持的写入缓存为主机操作系统提供了性能提升,当它们仍在闪存中等待写入时告诉它写入已完成。
但是,我看不出它对性能有什么不利影响,但是启用/禁用它是否有收益(即使是微不足道的)?
Ps 有机器有备用电源。
这是一个屏幕截图以供澄清:

我对读取磁盘缓存对通过 NFS 访问文件的影响感兴趣。假设我在 NFS 上有一个文件。我从 linux 主机“A”访问它(做“cat myfile”)。如果有足够的 RAM,文件最终会出现在磁盘缓存中。现在我从主机“B”修改该文件。主机“A”上的操作系统如何知道它必须使缓存的那部分无效?是否有来自 NFS 的回调?或者磁盘缓存很快过期?
我在当前没有电源保护的服务器上有一个存储空间池。它仅由机械硬盘驱动器组成。
我想比较启用和禁用写入缓存的性能,以便我可以决定应该有多少优先级电源保护。
通过设备管理器 ->每个物理硬盘驱动器的策略禁用写入缓存是否足够,或者我是否需要通过存储空间在其他任何地方禁用它?
例如,它在设备管理器中的Microsoft 存储空间设备条目上启用,并且无法禁用。我不确定这是否重要。
我负责托管一个又大又慢但易于扩展的 PHP 应用程序。该应用程序是完全静态的,需要可写磁盘存储。我们已经分析了应用程序,主要瓶颈似乎来自加载应用程序而不是应用程序所做的工作。该应用程序不是 CPU 密集型的,尽管它确实使用了相当数量的内存(想想 Magento)。
目前,我们通过在硬盘驱动器上具有相同 PHP 文件的一系列服务器和在它们前面的负载平衡器来分发它。容易但昂贵。
我一直在阅读有关RAM 磁盘及其提供的 IO 优势的信息,并想知道它们是否非常适合 PHP 应用程序。
由于 PHP 应用程序是针对每个请求从磁盘加载的,并且通常涉及许多不同的文件(而不是像 Java 应用程序那样保存在内存中),我认为磁盘性能可能是一个严重的瓶颈。
将 PHP 文件放在 RAM 磁盘上并使用挂载点作为 Apache 的文档根目录会提供性能优势吗?启动脚本可以创建 RAM 驱动器,然后将文件(纯文本和小文件)从永久位置复制到临时 RAM 驱动器。
这是否有意义,还是我应该相信 linux 内核自己将适当的文件缓存在内存中?