今天的IT界,虚拟化可谓是发展最迅速的技术之一。推动其快速发展的动力在于虚拟化技术能够消除服务器和基础硬件设备之间的相互依赖,使我们能够在单个硬件平台上运行多个虚拟机,并且能够很轻松地将虚拟机(机器附带的基础客户操作系统和服务器)转移到不同的硬件平台。很多企业都已经将这种技术作为服务器整合的方法。但是虚拟化技术并不是整合服务器的唯一途径。与微软的其他服务器产品不同,SQL Server 自2000以后的版本,都能够在同一系统下支持多SQL Server实例。
SQL Server对多服务器实例的支持使我们能够在同一个服务器上运行多个SQL Server数据库引擎。SQL Server 2005的企业版支持多达50个服务器实例。互联网服务器供应商和其他需要有主机提供服务的情况下,往往会用采用多SQL serve实例,以便大量的客户都能够自己控制自己的SQL Server数据库服务器而不要专门的硬件平台支持。那么虚拟化和多SQL server实例之间有什么异同,孰优孰劣,我们又该如何选择呢?
这两种服务器整合方案的主要一个主要区别在于,虚拟化是服务器水平的技术,而多实例是操作系统水平的技术。如果你运行的是多SQL Server实例,所有的实例都不虚运行在相同的Windows Server操作系统上。虚拟化则实现了更细粒度的操控,因为每一台虚拟机都需要有自己的操作系统。例如,一台虚拟机运行在装有SQL Server 2005的Windows Server 2003系统下,而在同一个服务器下的另一台虚拟机则可能运行在装有SQL Server 2000的Windows 2000系统下。
在选择过程中,首先要考虑的因素,而且在大多数情况下也是最重要的因素就是性能。由于本身的属性决定了虚拟化服务器不会提供与物理服务器水平相当的性能,因为虚拟环境造成的额外开销要从性能来抵消。大多数情况下,估计虚拟机造成的额外开销约为10%-15%。在服务器整合环境下,由于其他虚拟机所支持的工作负荷的关系,这种对性能造成的冲击可能更为严重。相比之下,运行在物理硬件上的服务器实例,除了在服务器实例上运行查询所产生的工作负荷之外,不会产生任何额外的开销。
在管理方面,虚拟化和服务器实例很相似,但是运行多SQL Server有几个优势,比管理虚拟机要更为轻松。因为只需安装一套操作系统和服务器软件,所以服务器实例需要打补丁的机会更少。而对于虚拟化服务器而言,每个虚拟机都拥有自己的客户操作系统和服务器产品,都需要独立的管理和打补丁。这两种解决方案中,都要用到企业管理器和SQL Server Management Studio来执行服务器管理任务。
而在部署和恢复方面,虚拟化技术则更有竞争优势。通过虚拟化,构建可以部署到新的服务器的基础映像只需要短短几分钟的时间;而且,可以对虚拟镜像进行备份,或将其复制到远程站点,这样在发生故障时能够在几分钟甚至数秒中之内恢复连线。
考虑到虚拟机的多操作系统和多SQL Server安装问题,另外还有一个需要衡量的因素就是使用许可。多 SQL server实例并不需要额外的 SQL server许可。SQL Server 2005企业版提供了多达50个实例,而不需要额外的许可费用。在这种情况下,对于单个服务器,你只需要支付购买一个Windows Server 操作系统、一个SQL Server以及客户端访问许可的费用即可。而对于虚拟化来说,你需要为各个虚拟机上的每个 Windows Server操作系统,以及每个安装的SQL Server都分别支付许可费用。也就是说,如果你运行了5台虚拟机,而且每一个都包含了一套Windows Server和SQL Server的拷贝,那么你就要支付5个Windows Server许可、5个 SQL Server许可以及相应的客户端访问许可费用。不过,Windows 2003 R2和Windows 2003企业版都支持4个Windows实例而不加收额外费用。卖价最为昂贵的Windows 2003数据中心版则支持无限制的虚拟Windows实例。同样的,SQL Server 2005以及2008企业版,提供了无限制的虚拟机使用许可。
所有权和责任也是值得三思的重要因素。运行多SQL Server实例的责任通常会落在持有SQL Server系统的团队身上。而对于虚拟化,每个安装了自己的操作系统和SQL Server的团队或部门都保留了自身的责任。
对于服务器整合计划来说,这两种都可能都是有效的解决方案,并不是非此即彼的选择。你可以将SQL Server和虚拟化结合起来,在一个虚拟机里运行多SQL Server实例。不过请记住,即便虚拟化是当今炙手可热的技术也不意味着你就要单恋这一枝花。