虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟化软件,用户可以在一台物理服务器上模拟出一台或多台虚拟的服务器,服务器硬件资源经过虚拟化技术变成一个可以拆分的资源,拆分后的资源也就是一个个虚拟机,都拥有完整的原有硬件可提供的服务能力。虚拟机拥有一个杀手级的方案,就是虚拟机的在线迁移技术。所谓在线迁移,也就是可以在不停机的情况下,将虚拟机从一台物理服务器迁移到另外一台物理服务器上,迁移过程不影响虚拟机的正常运行,也就不会影响用户跑着虚拟机上的业务。
虚拟机迁移在数据中心里大受欢迎,原因在于:一是物理服务器故障。很多时候,物理服务器宕机或者故障是有先兆的。例如硬盘访问出错,在接收到错误直到设备宕机这段时间里,可以通过在线迁移将虚拟机迁移到其它状态正常的物理服务器上,避免受到物理机影响,保障用户业务正常运行;二是Raid卡故障。物理服务器的Raid卡若出现故障,会造成虚拟机的访问IO急剧下降,相当于虚拟机不能再用,同样可以通过在线迁移将虚拟机迁移走,保证虚拟机的IO性能;三是物理机过载。当物理服务器复杂达到瓶颈,上面的虚拟机性能也会受到影响,当出现过载问题,通过在线迁移上面的部分虚拟机,来降低物理机负载,以达到资源利用率和虚拟机性能的平衡。
显然虚拟机迁移技术给数据中心带来了极大好处,降低数据中心故障发生的概率,提升了物理服务器的利用率,节约能耗。所以,虚拟机技术已经成为数据中心必备的技术之一,在数据中心里使用非常普及。不过,虚拟机迁移技术虽好,也给数据中心带来了一些烦恼,为了满足虚拟机在线迁移,这给数据中心带来了网络实现上的难题。
首先是虚拟机要在二层环境中才能完成迁移,大二层环境。数据中心网络均是按照三层架构来搭建,不具备虚拟机迁移的环境。尤其是跨过数据中心的转发均要通过路由器才能完成,这显然是无法实现虚拟机迁移功能的。聪明的人类很快找到了解决的办法,即在物理网络上再叠加一层虚拟网络,虚拟的大二层网络,从而实现虚拟机在网络上自由迁移。要实现虚拟二层网络,需要数据中心在网络上做出翻天覆地的变化,和重建网络也差不多了。原来的网络设备均要换成支持虚拟技术的设备,部署难度相比以往更高。为了实现虚拟机在数据中心内部,甚至外部自由迁移,需要建设全新一代的数据中心网络,引入很多新的虚拟技术,这给数据中心带来了挑战,尤其是由此而带来的运维问题。
其次是虚拟机迁移随之也带来了MAC迁移,虚拟机迁移相当于同一个MAC在网络中换了一个位置,对于网络设备,会感知到这种变换,并及时刷新转发表项,这样才能不影响流量转发。当数据中心里虚拟机迁移频繁,将导致网络设备转发表项不稳定,不断进行刷新,当刷新不及时或者刷新错误时,就会对业务流量造成影响,这时的虚拟机迁移就属于失败了。正常的虚拟机迁移是在业务不受影响的情况下完成的。频繁的MAC迁移也给网络设备带来了计算负担,要频繁进行表项的更新,设备CPU和内存随之也会升高,影响网络设备运行稳定性。另外在静态IP地址和静态DNS解析环境中,虚拟机迁移是一个麻烦事情,此时好配置系统从 DHCP服务器自动获得所有的网络配置信息。
第三是虚拟机迁移到来的带宽问题。虚拟机迁移也要占用网络带宽,尤其是在频繁迁移的时候。虚拟主机需要速度更快的网络端口,用于主机之间迁移VM,比如在线迁移数据量大小为16GB的VM,通常会导致千兆端口饱和长达数分钟,当迁移涉及的虚拟机内容很大时,网络带宽问题会变得突出,出现拥塞的情况。如果配置了128GB内存的虚拟机内存被完全使用的话,那么使用单个千兆端口迁移该VM可能会花半个小时甚至更长的时间。如果是由于即将发生的物理故障而对VM进行迁移的话,那么会感觉迁移所花费的时间更加漫长,所以要给服务器留有一定带宽,如果将千兆端口改为万兆端口,此时迁移虚拟机的话,大概只需要五分钟,这大大降低了由于虚拟主机故障而导致虚拟机停用的风险,所以带宽是虚拟机能否成功迁移的关键,我们要保证服务器网卡不要工作在满带宽模式下,留有一定余量,以便在虚拟机发生迁移时,不至于影响迁移效果,或者导致虚拟机迁移失败。