独家:提升SQL Server 2008虚拟化效能

来源:百度文库 编辑:神马文学网 时间:2024/04/26 17:08:24

独家:提升SQL Server 2008虚拟化效能

作者: 纪平,  出处:IT专家网, 责任编辑: 关睿, 2009-11-18 09:15
  实现SQL Server数据库虚拟化所带来的好处是不言而喻的。就SQL Server 2008来说,Hyper-V无疑是其首选的虚拟化平台。不过,要充分发掘Hyper-V潜能将SQL Server虚拟化进行到底还有许多工作要做。

  【IT专家网独家稿件】本文和大家分享提升SQL Server数据库虚拟化效能的几点经验。

  1、合理分配虚拟处理器

  虚拟处理器是影响虚拟机性能的重要因素,对于有四个或更少的CPU核的系统来说,为SQL Server虚拟机分配虚拟处理器的数量是一项相对简单易行的工作。Hyper-V对每个虚拟机支持多达四个虚拟CPU。

  (1).分配虚拟处理器

  要给虚拟机分配多个虚拟处理器可这样操作:打开Hyper-V Manager,在虚拟机上单击右键选择“Settinqs”,然后单击“Processor”。在“Number of logical processors”下拉列表框中,选择供虚拟机使用的虚拟处理器的数量。当然,我们最多只能为虚拟机分配与系统中的物理核一样多的虚拟处理器。

(图1)

  (2).CPU的量化分配

  在SQL Server虚拟环境中,保证虚拟化宿主机有足够的处理能力来为所有活动的虚拟机提供服务是特别重要的。要计算Hyper-V宿主机所需的处理能力,我们可以通过一个公式来计算:

  CPU核×CPU速度×CPU利用率=CPU总数

  这里的“CPU核” 是要虚拟化的物理服务器内的CPU数量。“CPU速度”是CPU的速度,“CPU利用率”是该CPU的平均利用率。

  我们需要针对所有要运行在Hyper-V宿主机上的服务器进行这一运算。然后,使用下列公式,把“CPU总数”的数值加在一起,得到所有虚拟机所需的全部CPU的估计值:

  “CPU总数” 之和=全部CPU

  尽管特定的需求会有变化,笔者的经验是应该保留25%的宿主机处理能力。所以,我们可以使用下列公式来确定宿主机的虚拟化性能:

  全部CPU×25%

  理想情况下,应该力争在虚拟CPU和物理CPU核之间保持1对1映射的关系。虽然大多数服务器虚拟环境的映射比例要高一些。需要注意的是:向虚拟机增加虚拟CPU不会带来性能方面的线性增长。也就是说,增加第二个虚拟CPU不会让虚拟机性能翻倍,一般会使虚拟CPU性能提升10%到15%。  2、科学分配虚拟机内存

  (1).分配虚拟内存

  SQL Server虚拟机的内存分配也很重要,要设定一个SQL Server虚拟机的内存大小,只需用分配给运行在Hyper-V宿主机上的虚拟机一定数量的内存来创建虚拟机即可。

(图2)

  (2).增加虚拟内存

  如果宿主机的内存不足,我们需要增加更多的内存。Hyper-V支持每个虚拟机高达64GB的内存,而宿主机可以支持高达1TB的物理内存。要充分利用超过4GB的内存,虚拟机的操作系统必须是64位的。需要注意的是:活动虚拟机所需的RAM加在一起不能超过Hyper-V宿主机中的物理RAM的数量。也就是说,一个32GB的Hyper-V宿主机不能支持五个8GB的虚拟机。

  (3).虚拟内存的量化分配

  要实现虚拟内存的科学分配,我们需要要计算Hyper-V宿主机的内存需求。首先先需要对每个虚拟机的RAM的虚拟化开销增加大约32MB,然后把所有虚拟机的RAM加在一起。

  另外,需要为宿主机保留内存。笔者的经验是:为Hyper-V宿主机保留512MB RAM就足够了。Hyper-V自身需要大约300MB,可以使用下面的公式来计算宿主机所需的内存:

  “虚拟机RAM+32MB” 之和+512MB+300MB=所需内存

  毫无疑问,向虚拟机增加内存SQL Server能把额外的内存用作缓存,这样有助于提高虚拟机的I/O性能。 3、优化虚拟机的I/O操作

  我们知道,大多数数据库服务器的瓶颈是I/O操作,而不是处理能力,因此,在虚拟机上运行SQL Server绝对不能忽视I/O操作,I/O吞吐量的提高会大大提升SQL Server虚拟机的效率。当然,最主要的I/O设备是磁盘,下面就从这方面谈谈它的优化。

  (1).三种虚拟硬盘

  为SQL Server选择正确类型的虚拟硬盘至关重要。我们知道,Hyper-V支持三种类型的VHD:

  动态VHD:动态VHD只使用需要的空间,当需要更多空间时会自动扩展。

  固定VHD:固定VHD在生成时把大小设置为它的全部容量。

  通过式VHD:通过式VHD被配置为使用虚拟化宿主机上的存储设备。

  (2).创建通过式VHD

  Hyper-V的“New Virtual Machine Wizard”和“New Virtual Hard Disk wizara不允许你创建通过式磁盘。要创建一个通过式VHD可这样操作:打开Hyper-V Manager,在想要修改为使用通过式VHD的虚拟机上单击右键。然后选择要修改的虚拟硬盘,选中“Physical hand disk”单选按钮,然后选择你想用作通过式磁盘的物理磁盘。物理磁盘可以是本地磁盘或者在SAN上。需要注意的是:必须是处于离线状态的磁盘才会出现在下拉列表框中,创建通过式VHD。

  (2).虚拟硬盘选择策略

  如何科学选择虚拟磁盘呢?对于测试和开发服务器来说,动态VHD通常是最好的,因为它们能减少所需的磁盘空间。对于运行着与生产相关的SQL Server系统来说,固定VHD或通过式VHD是最好的。它们能提供更好的性能,因为它们不会像动态VHD扩展时对性能造成影响。

  当然,能实际获得的I/O性能在很大程度上取决于所使用的底层存储子系统,但是如果所有东西都一样的话,通过式VHD能提供最佳性能。不过,它不能提供固定VHD的灵活性,也不如它那样容易在系统之间移动。固定VHD也能提供非常好的性能,而且对大多数SQL Server负载来说,是一个更好的解决方案。因此,具体使用哪种虚拟磁盘要根据需要确定。 4、不容忽视的网卡流量

  在进行SQL Server虚拟化时,网卡可用流量往往被忽视。当我们在单独一台服务器上合并多个物理SQL Server系统的时候,它实际上承担了之前发给多个服务器和它们的网卡的所有网络通讯。

  (1).需要多少网卡?

  要知道虚拟化SQL Server需要多少网卡,我们首先要知道所需的网卡容量,可以使用公式:

  虚拟机网卡×网卡速度×网卡利用率=所需的网卡

  这里“虚拟机网卡”是宿主机上活动的虚拟机的数量,“网卡速度”是网卡的速度,而“网卡利用率”是这些网卡的平均网络利用率。

  然后,要计算宿主机的全部网络容量,用宿主机上的网卡数量乘以其速度值,公式如下:

  网卡数量×网卡速度=全部网卡容量

  最后,用“全部网卡容量”除以“所需的网卡”,就会知道你需要的Hyper-V宿主机网卡的数量了。

  (2).优化策略

  理想情况下,应该为每个虚拟机分配一块单独的宿主机网卡。另外,建议保留一块额外的网卡用作Hyper-V的宿主机管理。为了增加安全性,最好把管理网卡放到一个分开的网络上,并且不要与用作生产环境虚拟机的网卡放在一起。 5、使用新的SND

  SND即synthetic network device,确保SQL Server虚拟机使用Hyper-V的新的synthetic网卡非常重要,它能够极大地提升SQL Server虚拟机的网络能力。对于Windows Server 2008和Windows Server 2008 R2来说,这都不成问题,因为新的SDN驱动已经包含其中了。如果是基于Server 2O03或者更早服务器系统,需要装Hyper-V Integration Components。Integration Components包括的SND的驱动程序、增强的鼠标和视频支持以及宿主机的时间同步。

  然后可连接到虚拟机,然后打开Device Manaqer,确保使用synthetic network device。展开“Network adapters节点,并选中带编号的“Microsoft VMBus Network

  Aaapter”。如果要安装要安装Integration Components,打开Hyper-V Manaqer,在虚拟机上单击右键,并选择Connect。在出现的Virtual Machine Console中,选择“Action”→“Insert Integration Services Setup Disk”,然后根据向导一路“Next”即可。

(图3)

  总结:SQL Server的虚拟化好处多多,而SQL Server 2008与Hyper-V的组合可谓绝配。不过,要实现节能增效Hyper-V的优化设置不可不少。希望本文对您有所帮助。