设为首页 收藏本站
查看: 749|回复: 0

[经验分享] 在虚拟环境中运行SQL Server

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-18 10:51:42 | 显示全部楼层 |阅读模式
虚拟化数据库服务器设计

内存

对于数据库服务器,你通常要确保分配给虚拟服务器每GB内存,主机就要有1GB无竞争性的物理内存。如果管理程序(hypervisor)允许,如同VMware所做,应该设置预留内存以确保虚拟服务器总能保留分配给它的内存。然而,Windows Server 2008 R2 SP1及以上的版本中的Hyper-V技术提供了动态内存(Dynamic Memory),当探测到低内存的虚拟机时,它能把主机不用的物理内存分配给该虚拟机。通过Hyper-V,虚拟机能够配置启动内存16GB,但上限是32GB。运行过程中虚拟机使用的内存接近初始的16GB时,如果有足够的可用物理内存,Hyper-V管理程序就会增加内存分配给虚拟机。

存储

给虚拟机分配存储是通过附加虚拟硬盘驱动实现的。虚拟驱动仅仅是一个平面文件,由管理程序存放和管理。作为最佳实践,对于活跃且繁忙的服务器,推荐如下存储设计准则:

    如果你能把每块硬盘都放置在独立的物理SAN分区中(被称为是LUN),确保Windows OS内的每个逻辑驱动都是独立的虚拟硬盘
    在你部署之前,测试在管理程序(hypervisor)和存储层中的任何自动精简配置(Thin Provisioning)的使用
    考虑存储基础结构的网络竞争。

CPU

配置虚拟机的虚拟CPU,也称为vCPU,是最容易的任务。 vCPU和物理CPU内核之间没有一对一的对应关系。相反,当vCPU要执行任务时,一个vCPU就是放置在物理CPU内核队列中的一个逻辑线程。队列中的请求越多,执行线程就越久。由于CPU访问延迟,通常推荐配置虚拟机时,vCPU要比实际所需少一点。虚拟机自身完全察觉不到延迟,因此这仅能从虚拟机外部去监控。例如,高CPU延迟不会引发SQL Server里SOS_SCHEDULER_YIELD高等待统计信息。最新一代的管理程序目前支持每台虚拟机可以配置大量vCPU。Windows Server 2012支持32个vCPU。尽量确保每个物理CPU内核不超过2个vCPU。

网络

如果你知道数据库服务器需要通过网络转移大量数据,或对网络延迟很敏感,那么要确保主机有足够的网卡。同样,主机SAN存储所需的总线适配器也会变得争夺,所以网卡也会争夺。

高可用性

在运行SQL Server的虚拟机上部署AlwaysOn Failover Clustering Instances和AlwaysOn Availability Groups,建议:

    为虚拟机配置“server affinity”,以致于管理程序确保属于群集或AlwaysOn可用性组的虚拟机从来不会同时运行在相同的物理主机上。这是为了防止主机故障,因此你想移除任何故障的单个节点
    如果你部署任何同步数据库镜像,那么要确保所有运行虚拟SQL Server实例的主机上都有足够的网络带宽
    同样,对于任何涉及同步镜像的服务,要确保有足够的物理CPU资源,以便延迟最小化
    如果要部署SAN级别的复制,来把存储系统复制到另一个SAN基础设施中,用于灾难恢复,那么就应该考虑是否使用同步或异步镜像,及SQL Server有什么性能及数据连续性影响。维持存储级别事务连续性至关重要。

OS增强

当Windows实例部署到虚拟机时,除了确保正确的硬件设备驱动器,OS里没有其他特殊的要配置虚拟化,除了确定管理程序的工具。

SQL Server内存配置

就像Windows,SQL Server也能安装到虚拟机,并能成功运行,没有任何特定的调校或配置。然而,你或许想考虑配置SQL Server的Max Server Memory,尽管你可能在调校好的物理机上做这件事情。在SQL Server 2012中,这项设置现在把工作极限放在SQL Server使用的全部内存上,然而之前的版本中,这仅仅影响缓冲池的大小。在标准或企业版的SQL Server 2012或企业版之前版本上,Hyper-V配置中,Max Server Memory要比Maximum RAM值低大约2GB,以便SQL Server能够增加比分配的内存更多的内存使用。

通常的虚拟化设计误区

下面罗列了一些常见的对SQL Server有负面影响的设计:

    过多的vCPU----越多vCPU,等待物理CPU内核就越久。实际有2个vCPU比较恰当。
    非托管(unmanaged)的内存配置----给一个虚拟机分配所有的内存,有时会严重影响其它虚拟机的正常运行。
    只有一个大分区的大LUN(逻辑单元号)----SQL Server受益于不同类型的文件使用多个非竞争的驱动。
    饱和的主机总线适配器----常常看到一个主机仅有一个HBA,运行几个I/O敏感的虚拟机。不仅容易出现单点故障,HBA还容易饱和,引起I/O需求排队并导致存延迟。

监控虚拟化的数据库服务器

如果你使用Hyper-V,可以通过Dynamic Memory功能来查询SQL Server的内存使用。下面的查询返回虚拟机内存使用的百分比。


    select (m.total_physical_memory_kb /1024)  
    as 'Physical Memory (MB)',  
    convert(decimal(3,1),(convert(decimal(10,1),m.available_physical_memory_kb / 1024)  
    / convert(decimal(10,1),m.total_physical_memory_kb / 1024)) * 100)  
    as 'Available Memory as % of Physical Memory'  
    from sys.dm_os_sys_memory m,sys.dm_os_sys_info i  
    select convert(decimal(10,1),(convert(decimal(10,1),i.committed_target_kb / 1024)  
    /convert(decimal(10,1),m.total_physical_memory_kb / 1024))  
    * 100) as 'Committed Target as % of Physical Memory',  
    convert(decimal(3,1),(convert(decimal(10,1),i.committed_kb / 1024)  
    /convert(decimal(10,1),m.total_physical_memory_kb / 1024))  
    * 100) as 'Total Committed as % of Physical Memory'  
    From sys.dm_os_sys_memory m, sys.dm_os_sys_info i  

推荐的性能监控计数器
推荐监视下面的3类Performance Monitor计数器来追踪虚拟数据库服务器的健康:

主机(Host Server):

? Percentage of physical CPU utilization
? Percentage of physical memory utilization
? Any CPU latency experienced by the hypervisor (VMware calls this CPU Ready Time)
? Total amount of memory currently allocated to the host’s virtual servers
? Physical storage MB/s and IOPS that the hypervisor is using
? Physical storage read and write latency times
? Percentage of HBA bandwidth utilization
? Percentage of NIC bandwidth utilization

虚拟机(Virtual Server):

? % logical CPU utilization
? Total physical memory (MB)
? Available memory (MB)
? Logical storage MB/s and IOPS that the operating system is using
? Logical storage read and write latency times

SQL Server实例:

? SQL Server fi le I/O latencies from sys.dm_io_virtual_file_stats
? Committed and Target Committed Memory values from sys.dm_os_sys_info
? Batch requests/sec as a benchmark of server activity levels

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22299-1-1.html 上篇帖子: sql server管理和性能 下篇帖子: SQLSEVER 中的那些键和约束
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表