ZFS/Solaris 上的 NFS IO 优先级

ZFS/Solaris 上的 NFS IO 优先级

我有一台 Nexenta/ZFS NAS,用作小型 VMware vSphere 场的 NFS 后备存储。目前我有 9x1TB 磁盘,全部镜像(最后一个磁盘配置为写入日志设备)。

磁盘性能对于我通过 NFS 实现的需求来说非常好。但是,我注意到的一件事是,如果我直接在 NAS 上执行任何 IO 密集型操作,VM 性能就会变得非常缓慢。例如,在同一个 zpool 内的两个不同 ZFS 文件系统之间复制 1TB 的数据。

有什么好方法可以确保 NFS 守护进程执行的 IO 请求优先于磁盘上的其他 IO 操作?在理想情况下,我会将虚拟机备份到完全独立的 zpool,这样它们就不会受到 ZFS 文件系统负载的影响。但是,我想知道是否有一个好方法可以用单个 zpool 来实现这一点。

Linux 有 ionice,因此如果我使用它,如果我要以低 IO 优先级移动大量数据,我可以mv在命令前加上前缀。但是,我不认为这在 Solaris 内核上可用。ionice

有什么建议么?

答案1

据我所知,对于 ZFS 来说,所有 I/O 都是 I/O。我的意思是它不会区分您的本地操作和 NFS 要求 ZFS 执行的操作。

您可以使用调度类来以某种方式减慢在本地复制所有这些数据的用户进程的速度。

顺便说一句,您专用的 1TB 磁盘用于写入日志设备对您没有任何帮助,除非该特定磁盘比其他磁盘快得多(例如 SATA 7200 与 SAS 15k)。我们通常将 SSD 用于日志/缓存设备,或者根本不使用。

答案2

之后再添加更多 RAM。您可能需要考虑添加更多 RAM。SSD 上的 L2ARC 很棒,我有好几个。它们不需要镜像。ZIL 必须镜像(不必,但如果没有镜像,游戏就结束了,并且出现了一些故障)。您可能还想添加一些 RAM。

德里克

答案3

您将无法限制 I/O,除非您使用一些丑陋的混合体pv……dd但这并不值得。另一位发帖者说得对,您的第 9 个磁盘作为 ZIL 是无用的。SSD 或无磁盘对此来说会更好。不过,它可能对 L2arc 缓存有用。

另请参阅:http://opensolaris.org/jive/thread.jspa?messageID=493112

答案4

您能从另一个虚拟机运行 IO 密集型任务吗?

是的,这会有很多开销,而且您仍然必须确保您的 NFS 不会超载,但这样所有流量都会得到平等对待。

相关内容