最近,我将所有Dell Equalogic SAN整合到同一个组中; 以前每个SAN都在自己的组里。 它们都装有RAID 6中的15k RPM SAS驱动器,所以我没有打算对新合并组的存储进行分层,因为它们基本上都是一样的。
在这样做的过程中,我改变了所有的虚拟机使用VMDK存储,而不是iSCSI,因为我相信性能会更好。
现在我被告知,我们的MS SQL 2005服务器(现在是我们的主SQL框)的磁盘I / O性能一直比执行这些操作之前差,但是我看不到这是怎么回事。它的磁盘(C-OS,D-MDF,E-LDF)现在跨越了更多的读取磁头,我的理解是VMDK存储比iSCSI更高效。
那么给了什么? 下面是Solarwinds数据库性能分析器的“总I / O等待时间”图:
将这些EQLarrays合并到一个池中的第一件事情是,每个卷上的工作负载都有可能影响其他卷上的性能。 有可能您的SQL数据库(现在位于更多的物理主轴上)由于其他工作负载共享相同的主轴而导致更多的资源争用。
想到的第二个主要因素是存储networking。 当成员处于不同的池或组中时,几乎所有的iSCSInetworkingstream量都来自主机的I / O。 尽pipe只有一个组和组中的成员,但您必须从组内的stream量(主要是页面移动)进行计算。 页面移动甚至可以在成员之间保持使用中的容量,还可以将“热门”数据平衡到工作负载相对较低的成员。 查看Equalogic负载平衡器上的白皮书,获取更深入的信息。
如果交换机不符合戴尔存储兼容性列表 (参见第19页)中所述的标准,
您可能还需要阅读适用于VMware和Equallogic的最佳实践白皮书,以确保您的configuration不是故障原因。
一些问题:
你有任何arrays的积极保证? 如果是这样的话,那么这真的是你应该从支持上获得投入 – 大量可用于帮助性能的资源。
不幸的是,我没有对任何arrays进行有效保修。
您是否已经安装了SAN总部并对该组进行了监控? 如果没有…得到它的安装和configuration(假设你有保修,可以得到它)。 它提供了一些关于您了解潜在根本原因所需的许多存储性能指标的重要信息。
我确实有SAN HQ,但是……你能否详细说明我应该在其中看什么来帮助确定这一点?
最容易检查的地方是“实验分析”,它给出了一个“估计的最大IOPS”的工作量图。 您可以查看整个组和单个成员。 您也可以在硬件部分看到单个主轴的IOPS和队列深度,但单靠这些数字来判断主轴是否过载是很困难的。
现在在同一个池中有5个数组
我强烈build议你考虑将它们分成两个池,一个池中不超过3个成员。 一个卷只在3个成员之间进行分配,而不是在对不同成员重新平衡容量的过程中(在快照不断变化的使用空间的卷上经常发生这种情况)。 将成员最大限度地削减到3个成员,在成员之间获得使用容量尽可能相等的情况下,会在成员之间进行无休止的追逐,从整个体积片中停止大量的“stream失”。
在所有这些信息之外……如果你自己不能深入了解事情的底部,你可能会考虑只需付戴尔的支持服务,就可以让某个人在环境中与环境中的所有事物一起散步,找出原因。
VMDK和块级iSCSI之间的性能差异取决于工作负载types,可能会因应用程序而有所不同。 我强烈build议你在这两种存储访问协议上执行一些testing,比如运行一些应用程序,看看它是如何工作的。 由于VMDK是应用程序和存储之间的附加层,因此如果控制虚拟驱动器的主机负载过重,则可能会变慢。
想象一下,你有两个应用程序“A”和“B”:
应用程序“A”有一个只有40GiB的小型数据库,每天加载1GiB,大多数查询使用上周的数据。 在20GiB专用于磁盘高速caching的服务器中,大概20天左右的数据将在磁盘高速caching上,大部分读取甚至不会移动磁头。
应用程序“B”,另一方面是一个2000GiB的媒体档案,每天载入20GiB的数据,大多数查询顺序地读取整个事物。 这是一个档案,主要是做文本查询是很难的索引和顺序阅读发生在一天之内,这是足够的应用程序用户。 许多档案只用于不需要更快反应的听众。
如果您使用相同的64GiBcaching将这两台服务器的磁盘join同一个存储,则应用程序“A”和“B”每天移动21GiB数据。 然后caching将保存至多3天的数据。 在合并之前,应用程序“A”在RAM上做了大部分查询,现在大多数需要读取一个物理磁盘。 在合并之前,应用程序“B”从磁盘访问中的应用程序“A”几乎没有并发,现在有很多并发。
有想法?
对磁盘caching进行分段对于性能非常重要,因为RAM速度比随机访问的15k磁盘快4到4百万倍。 磁盘必须移动头部才能获取数据,RAM不会。 15K RPM磁盘是浪费钱。 它们是普通SATA驱动器随机存取速度的2倍左右,成本是SATA驱动器价格的2倍多。
我的服务器太大了,以前我们在VMWare上有很大的虚拟机(例如700GiB RAM)。 我们也有严重的性能问题和不明原因的崩溃。 出于这个原因,我们转移到KVM。 当时我并不是虚拟化服务器的经理,所以我不能说我们的VMWare出了什么问题。 但是,既然我们迁移到KVM,并成为虚拟化服务器pipe理器,我们就没有更多的问题。
我在物理设备(SCSI转发)上有一些虚拟磁盘映像,某些映像是.img映像文件(类似于VMDK,大小固定)。 互联网上的人表示SCSI转发速度更快,但对于我的使用模式,性能是一样的。 如果有一个差距足够小,我不会看到。 唯一的问题是,在创build新的虚拟机时,我们必须指示KVM不要在主机操作系统上caching磁盘访问。 我不知道VMWare是否有类似的select。
通过内部磁盘交易存储。 24个内部SATA磁盘允许一个大型RAID 10比大多数存储更便宜和更快。 而且还有一个好处,就是为了降低成本,在那些可以在交叉备份和维护任务中使用的服务器上会有足够的磁盘空间。
但是不会把这个多余的空间暴露给你的用户。 坚持自己。 否则,将是地狱做备份。
为他们devise的东西使用存储:
而且…甚至不费心购买磁盘caching很多的存储。 取而代之的是增加使用存储的服务器的RAM。
假设你在统一后拥有相同数量的cachingRAM,你可能有足够的内存。 尝试将存储caching中的RAM按照您以前的比例移动到实际的服务器上。 如果RAM芯片兼容。 这可能会诀窍。
Raid 5和6是数据库性能最差的。 移动到Raid 10. Raid 10使读取速度加倍,因为你有两个独立的可以独立读取的扇区的独立副本。
我使用postgres,并将提前写入日志移动到专用磁盘有很大的不同。 事情是,大多数现代数据库服务器在将信息写入数据库数据区本身之前将信息写入日志中。 日志通常是一个循环缓冲区,写入都是顺序的。 如果你有一个专用的物理磁盘,磁头将始终处于写入位置,即使是低速旋转驱动,几乎没有寻道时间。 正如我在互联网上读到的,Mysql使用了相同的devise。