NFS 数据缓存在哪里?

NFS 数据缓存在哪里?

我挂载了 NFS 导出并启动了一个进程,我预计该进程会将大量数据写入共享磁盘。共享磁盘的速度太慢了,我终止了该进程,但此后 90 分钟内,导出驱动器的机器上的 IO 一直很高。

这些数据会被缓存在 NFS 数据链的哪个位置?我该怎么做才能阻止这些数据被写入磁盘?

答案1

这是一个有趣的问题。很难回答,因为它变化很大,并且取决于:

  • 您的 NFS 服务器正在做什么。(NAS 设备在缓存方面通常非常聪明)。
  • 为什么你的速度“这么慢”。

但一般来说,服务器缓存写入操作是完全正常的。RAID 写入损失相当高*,您可以通过缓存和合并写入操作来大大减轻损失。

另外一般来说,‘搞砸’或以其他方式中止缓存中的待处理写入也是非常困难的,因为这样做会带来各种不愉快的后果。(例如数据损坏)。

如果导出机器上的 IO 很高,则可能是磁盘出现故障的迹象 - 您可能在“缓存中”有相对少量的数据,但写入时会失败并重试。(因为如果它“在缓存中”,则丢失它不是一种选择,因为您已经说过您“得到它了”)。

很难猜测它会在哪个缓存中。缓存有多个层次。不过我并不指望缓存能持续 90 分钟——缓存中的数据不是持久性数据,因此更容易受到电源故障的影响。

* 对于 RAID6 的每次写入,控制器必须读取:覆盖块、2 个奇偶校验块、重新计算,然后重写所有 3 个块。这意味着每次写入需要 6 次写入操作。如果您正确分组写入,这个问题会大大减少。

相关内容