答案1
您必须了解数据是如何写入磁盘的。
在将数据从进程写入物理磁盘的过程中,有几个子系统参与。
通常,进程会要求内核(操作系统)将某些内容写入磁盘。此外,内核本身也可以将一些数据写入磁盘,例如作为交换操作。
需要写入磁盘的内存页保存在物理内存中称为文件系统缓存被称为脏页,当满足以下条件之一时,这些页将被写入磁盘:
- 该进程要求内核使用以下方式将数据写入磁盘刷新文件缓冲区称呼
- 经过一段时间自上次写入磁盘以来
- 如果文件系统缓存没有可用内存(这是一个由内核做出的复杂决定,它是否应该丢弃非脏页、将脏页写入磁盘、交换不活动的内存页等...)
现在数据将进入磁盘,但磁盘子系统有两个对此解释很重要的组件:
- 磁盘控制器,即磁盘上的电子板
- 永久存储器,可以是磁盘或闪存
现代的磁盘控制器有一些内存模块称为磁盘缓冲区。如果激活此功能,刷新到磁盘子系统的数据将写入磁盘缓冲区,操作系统和程序将认为操作已完成,但数据尚未写入磁盘。问题是,如果您重新启动计算机,则很有可能丢失数据。您可能直到文件系统损坏或数据库损坏时才会注意到这一点。
以下是进程或操作系统需要将数据刷新到磁盘的一些原因:
- 他们有个杂志对于像数据库或文件系统这样的事务系统,它们需要强制写入磁盘的数据的一致性和完整性。
- 他们完成了一项重要的操作,例如创建文件和磁盘缓冲区,他们希望确保整个文件都在磁盘上
- 糟糕的编程
当前配置是性能和安全性之间的最佳权衡,除非您有 UPS(不间断电源)。
答案2
第二个选项不是您所说的“windows 缓存”,而是“flush”系统调用的抑制:
Turn off Windows write cache buffer flushing
此选项将禁用某些应用程序调用的刷新命令(以及在机器关闭时),其目的是有效地将磁盘缓存写入磁盘。
它不会禁用写入缓存。
您可以尝试启用此选项,但可能会有数据丢失的风险,但根据您的情况,性能提升可能不明显。
答案3
确实,移除政策中突出了差异。这看起来像是以下问题: https://superuser.com/questions/215372/what-does-write-cache-buffer-flushing-mean