![在共享存储上使用虚拟磁盘,或在客户机内部公开共享存储](https://linux22.com/image/612686/%E5%9C%A8%E5%85%B1%E4%BA%AB%E5%AD%98%E5%82%A8%E4%B8%8A%E4%BD%BF%E7%94%A8%E8%99%9A%E6%8B%9F%E7%A3%81%E7%9B%98%EF%BC%8C%E6%88%96%E5%9C%A8%E5%AE%A2%E6%88%B7%E6%9C%BA%E5%86%85%E9%83%A8%E5%85%AC%E5%BC%80%E5%85%B1%E4%BA%AB%E5%AD%98%E5%82%A8.png)
在工作中,我们有一个系统,它依赖于我所认为的平面文件数据库。它似乎对每个数据库文件进行线性扫描。当然,我们的限制是文件 I/O。此应用程序数据库表页面位于同一目录中。虽然有些表经常被读取,但其他表在正常业务过程中几乎不会被触及。
我们正在创建共享存储设置(早期阶段,尚不确定供应商或设置)。
我的问题是,通过共享存储(如存储在 ISCSI 目标或 NFS 共享上的 VMDK)公开磁盘或连接到客户机内部的共享存储是否会有更好的性能。
我的假设(基于我有限的知识)是后者,因为存储服务器可能只缓存更常用的文件,而不是整个磁盘,而前者需要缓存整个磁盘,可能会占用更多的缓存,并且根据缓存大小可能需要更多的缓存交换。
答案1
首先,你对缓存工作原理的假设是有缺陷的。它们几乎总是在块级别而不是文件级别进行缓存。
在其他条件相同的情况下,从客户机内部直接访问共享存储会比通过虚拟磁盘略快。但是,要了解您的设置的实际性能差异,唯一的方法是测试两种配置并对其进行基准测试。
答案2
任何缓存文件会发生在客户机级别。缓存(可能)发生在存储头。一般来说,证明偏离正常虚拟化策略的合理性应该需要显著的好处。听起来它们都是虚拟磁盘,所以除非你有证据表明有显著的改进可以“覆盖”服务器的独特性,否则我会坚持使用虚拟磁盘。