我挂载了 NFS 导出并启动了一个进程,我预计该进程会将大量数据写入共享磁盘。共享磁盘的速度太慢了,我终止了该进程,但此后 90 分钟内,导出驱动器的机器上的 IO 一直很高。
这些数据会被缓存在 NFS 数据链的哪个位置?我该怎么做才能阻止这些数据被写入磁盘?
答案1
这是一个有趣的问题。很难回答,因为它变化很大,并且取决于:
- 您的 NFS 服务器正在做什么。(NAS 设备在缓存方面通常非常聪明)。
- 为什么你的速度“这么慢”。
但一般来说,服务器缓存写入操作是完全正常的。RAID 写入损失相当高*,您可以通过缓存和合并写入操作来大大减轻损失。
另外一般来说,‘搞砸’或以其他方式中止缓存中的待处理写入也是非常困难的,因为这样做会带来各种不愉快的后果。(例如数据损坏)。
如果导出机器上的 IO 很高,则可能是磁盘出现故障的迹象 - 您可能在“缓存中”有相对少量的数据,但写入时会失败并重试。(因为如果它“在缓存中”,则丢失它不是一种选择,因为您已经说过您“得到它了”)。
很难猜测它会在哪个缓存中。缓存有多个层次。不过我并不指望缓存能持续 90 分钟——缓存中的数据不是持久性数据,因此更容易受到电源故障的影响。
* 对于 RAID6 的每次写入,控制器必须读取:覆盖块、2 个奇偶校验块、重新计算,然后重写所有 3 个块。这意味着每次写入需要 6 次写入操作。如果您正确分组写入,这个问题会大大减少。