在SAN上创建的虚拟机存储和直接使用SAN上的存储读写数据在性能上有什么区别?
我的意思是,我们有基于 VM 安装的 SQL 服务器并使用虚拟硬盘。
VM 位于我的 SAN 上。
让 SQL Server 直接读写 SAN 数据是否更好?我的解决方案性能更好吗?
答案1
当谈到基于虚拟机的服务器与裸机服务器之间的性能差异时,很明显裸机解决方案的性能应该更好,因为它实际上具有更少的抽象层,因此对 I/O 操作的惩罚影响更小。对于使用简单 VHD 的情况确实如此。但是,可以选择借助块级 iSCSI 存储来提高虚拟机性能。使用 iSCSI 存储的虚拟机可提供更快的性能,因为 I/O 的执行方式就像直接在硬件上执行一样。
对于这种情况,你可以看看StarWind 虚拟 SAN,HPE VSA, 和UnityVSA提供 iSCSI 存储。我推荐 StarWind,因为它以 DAS 存储的速度运行,但是,如果启用 DRAM 和 SSD 缓存,StarWind 可以提供更高效的 DAS 性能利用率。
答案2
通常,共享存储阵列用于管理功能,而不一定用于性能。高可用性、共享存储、克隆和快照、集中管理。
特别是对于数据库应用程序,通过原始设备利用阵列级克隆进行备份和测试环境可能很有价值。
我认为原始设备和 VMware 数据存储等抽象设备之间的区别并不大。不过,您必须在配置中运行一些性能测试才能看到。
而就主机本地存储与共享阵列而言,两者都可以表现得相当好,特别是一些更快的固态存储。
答案3
首先,我的背景。在过去的 10 年里,我管理着一个运行着 700 多台生产服务器的环境,其中 75 台是 SQL Server。我经历了裸机、带有直接 SAN 存储的 VM 以及带有驻留在 SAN 上的 VMDK 的 VM 的迭代。您提到了 VMWare,所以我将坚持使用该技术堆栈进行回复。
当比较类似硬件(SSD、HDD 等)时,裸机总是更快。但是,在虚拟化时,我发现直接与 SAN 交互进行存储的 VM 与使用位于同一 SAN 上的 VMDK 进行存储的 VM 之间没有可测量的差异。在大多数情况下,增加的虚拟化层不会增加足够的延迟。但是,每个人的用例都不同。可能是 VMDK 更快。例如,您是否正在考虑通过 1GB 以太网接口将 iSCSI 连接到 SAN 以进行直接连接存储,而您的计算层使用 8Gb 或 16Gb 光纤通道连接到 SAN?如果是这样,VMDK 会更快。
话虽如此,使用 VMDK 还有许多其他优势。vMotion 和 Storage DRS 就是其中两个。一个潜在的缺点是,根据 VMDK 的大小,您无法在 VM 运行时增加其大小。我相信 VMWare 会在 2TB 时停止让您热添加空间。如果您说的是较小的 VMDK,则不适用。因此,我的建议是虚拟化整个堆栈。
此外,如果我要推荐一种用于数据库的 SAN 技术,我会推荐 Nimble(http://www.nimblestorage.com) 在业界无与伦比。尤其是与 VMWare 结合使用时。速度极快、价格合理、稳定。总而言之,这是一个可靠的解决方案