01 JAN

虚拟化平台运维 的知识和经验

随着虚拟化的应用普及,对虚拟机的运维及故障处理成了运维人员的的日常工作,例如VMware网络优化、PowerVM备份、PowerVM集中管理、Citrix应用停止响应等故障的处理。以下是社区会员分享的一些运维经验,供大家参考。

什么是虚拟化?

1.1 虚拟化概念

虚拟化是通过软件手段对计算机硬件资源镜像整合管理和再分配的一种技术,常用的手段有基于虚拟机的虚拟化和基于容器的虚拟化。

1.2 虚拟化技术分类

1.1.1 按应用场景分类

  • 操作系统虚拟化

  • 应用程序虚拟化

  • 桌面应用虚拟化

  • 存储虚拟化

  • 网络虚拟化

2.2.2 按照应用模式分类

一对多:其中将一个物理服务器划分为多个虚拟服务器,这是典型的服务器整合模式。

多对一:其中整合了多个虚拟服务器,并将它们作为一个资源池,这是典型的网格计算模式。

多对多:将前两种模式结合在一起。

2.2.3 按硬件资源调用模式分类

  • 全虚拟化

全虚拟化,虚拟化操作系统与底层硬件完全隔离。由中间的 Hypervisor 层转化虚拟化客户操作系统对底层硬件的调用代码,全虚拟化无需更改客户端操作系统,并兼容性好。典型代表有:Vmware Workstation、KVM。

  • 半虚拟化

半虚拟化,在虚拟客户操作系统中加入特定的虚拟化指令,通过这些指令可以直接通过 Hypervisor 层调用硬件资源,免除有 Hypervisor 层转换指令的性能开销。半虚拟化的典型代表 Microsoft Hyper-V、Vmware 的 vSphere。

注:针对 IO 层面半虚拟化要比全虚拟化要好,因为磁盘 IO 多一层必定会慢。一般说 IO 就是网络 IO 和磁盘 IO,因为这两个相对而言是比较慢的。

2.3 基于虚拟机(Hypervisor-based)的虚拟化

它通过一个软件层的封装,提供和物理硬件相同的输入输出表现。实现了操作系统和计算机硬件的解耦,将 OS 和计算机间从 1 对 1 变成了多对多(实际上是 1 对多)的关系。该软件层称为虚拟机管理器(VMM / Hypervisor),它可以直接运行在裸机上(Xen、VMware EXSi),也可以运行在操作系统上(KVM、VMware Workstation)。这项技术已经很成熟了,(发展了40 多年),但仍然存在以下几个问题:

在虚拟机上运行了一个完整的操作系统(GuestOS),在其下执行的还有虚拟化层和宿主机操作系统,一定比直接在物理机上运行相同的服务性能差;

有 GuestOS 的存在,虚拟机镜像往往有几个 G 到几十个 G,占用的存储空间大,便携性差;

想要使用更多硬件资源,需要启动一台新的虚拟机。要等待 GuesOS 启动,可能需要几十秒到几分钟不等。

实际使用场景中,我们使用虚拟化技术其实是为了按需分配资源来完成服务的部署和使用,同时对服务所依赖的环境进行隔离,不被其它服务感知或干扰。为此启动一个 GuestOS 并不是必需的,为什么不考虑让多个虚拟机公用一个操作系统内核,只隔离开服务运行环境同时控制服务使用的系统资源呢?基于容器的虚拟化就是这样一种技术。

2.4 基于容器的虚拟化

容器是没有 GuestOS 的轻量级虚拟机,多个容器共享一个 OS 内核,容器中包含需要部署的应用和它依赖的系统环境,容器大小通常只有几十到几百 MB。由于共享操作系统内核,所以容器依赖于底层的操作系统,各个操作系统大都有自己的容器技术和容器工具。

Docker 是一个 Linux 容器管理工具,随着 Docker 的兴起,Linux 容器技术也是当下最时兴的容器虚拟化技术。Linux 容器工具有很多,OpenVZ、LXC、Docker、Rocket、Lmctfy 等等,大都是基于 Linux 内核提供的两个机制:Cgroups(实现资源按需分配)和 Namespace(实现任务隔离)。

2.5 二种虚拟化技术的区别

虚拟机技术已经发展了很多年,虚拟机和虚拟化层间的接口、虚拟机镜像格式等都已经标准化了。相应的管理工具、分布式集群管理工具都有比较完善的解决方案,而容器最近几年才兴起,配套技术和标准还在完善中;

虚拟机由于有 GuestOS 存在,可以和宿主机运行不同 OS,而容器只能支持和宿主机内核相同的操作系统;

虚拟机由于有 VMM 的存在,虚拟机之间、虚拟机和宿主机之间隔离性很好。而容器之间公用宿主机的内核,共享系统调用和一些底层的库,隔离性相对较差;

容器比虚拟机明显更轻量级,对宿主机操作系统而言,容器就跟一个进程差不多。因此容器有着更快的启动速度(秒级甚至更快),更高密度的存储和使用(镜像小)、更方便的集群管理等优点。同时由于没有 GuestOS 存在,在容器中运行应用和直接在宿主机上几乎没有性能损失,比虚拟机明显性能上有优势。

一、虚拟化平台的运维中最关键的是什么?

运维中最关键的还是这几点:

1、高效

主要还是根据你虚拟化平台的规模来看,如果规模比较大,则使用python、PowerCLI(仅VMware)这类脚本运维方式会很省事,可以完成从虚拟化控制中心、主机、虚拟机、虚拟网络、存储等相关资源的新建、修改、删除等操作,尤其是批量操作更是方便,比如批量新建虚拟机。

有实力的可以用puppt、ansible这种自动化配置工具对虚机进行日常运维操作;

2、随时随地全局掌控

主要依赖监控和日志,zabbix、ELK之类或者商业版的,可以随时了解虚拟化平台健康状态并作出响应;

3、安全

主要在虚拟机和数据备份,即使虚拟机或数据损坏,还有备份可以恢复。

二、虚拟机备份容量及快照原理

当你创建一个虚拟机快照时,这是一个特定的文件。它也是redo-log日志。delta文件是在基础VMDK(虚拟机磁盘)上的变更位图,因此,它不能增长到比VMDK还大。为虚拟机创建每一个快照时,都会创建一个delta文件。当快照被删除或在快照管理里被恢复时,这些文件将自动删除。

这些文件用于存储关于快照的元数据和信息。这个文件是文本格式的,里面包括诸如快照显示名称、UID(编号)和磁盘文件名等信息。在你没创建虚拟机快照之前,这个文件的初始大小为0字节。这样说来,只要进行快照,这个文件就会增大和持续更新。

在快照被移开后,这个文件不能被完全清除。一旦你删除了个快照,它将仍然在文件里为每个快照遗留位置,不过仅增加编号并在“Consolidate Helper”里放置名称,这可能是用来整合备份*.vmsn file

这是快照状态文件,里面存储的是使用快照时,一台虚拟机精确的运行状态。这个文件大还是小取决于你选择保留这台虚拟机的存储作为快照的一部分。如果你选择保留虚拟机的存储,那么,这个文件将比较大,然后分配给虚拟机最大化的RAM。

这个文件类似于VMware暂停状态文件.vmss。虚拟机每个快照都将创建一个.vmss文件;当移动快照时,这些文件自动删除。

大多数情况下,应该避免为同一台虚拟机创建多个快照;每次为系统创建新的快照,其运行速度都会变慢。每个快照都会建立相应的delta磁盘文件,如果虚拟机需要读取多个delta文件,必然会增加系统的I/O负载。这个过程无疑会延长虚拟机的响应时间,并且产生额外的磁盘操作。

如果你只想保存一系列快照当中的最新版本,可以将它们整合为单一快照。这种方式可以帮助提升系统运行速度和管理效率。选择目标虚拟机,单击鼠标右键,之后选择整合。你可以在虚拟机和模板视图当中查询虚拟机是否需要整合,并且在列表当中显示所有需要进行整合的虚拟机。

三、如何优化VMware的网络设计实现网络高可用?

对于计算节点高可用来讲,除了在资源数量上要保证其冗余性之外,策略设置也非常重要。可以参考以下几个点:

1 Admission Control Policy:对于生产环境来讲,一般认为选择(Host Failure the cluster tolerates =1)比较合适,当然如果你的资源非常空闲,可以适当调大。

2 对于每一台物理机上的虚拟机根据其重要程度不同,设置其启动的优先级(高中低)。

3 当一台物理机上的虚拟机远超过集群当中的物理机数量时,可以考虑设置虚拟机HA互斥分离规则。

4 生产环境当中尽量把DRS的策略设置的不要太激进。尤其是前段具有负载均衡设备的时候建议把DRS打成建议模式。

对于存储来讲,必须保证集群内所有节点看到的外部存储视图是一样的,完全共享的,才能很好保证其HA及DRS功能。另外说到存储,有以下几个点:

1 卷属性里面,把Storage IO Control 选项Disable。不建议vwmare层干预底层IO,反而有尤其性能故障的风险。

2 将卷的多路劲策略设置为(Round Robin)。

VMware提供了VMware HA和FT两种高可用,但只能做到esxi主机级别的故障监测和恢复。一般会从应用级别上来做高可用,根据不同的业务角色,使用相应的群集或负载均衡,对于后端数据库角色,一般会部署在物理机上,如果非要在虚拟机上可以考虑veritas公司的infoscale系列中的群集软件(原vcs),可以与VMware的vmotion和其他管理手段有联动,也可以不需要裸设备等支持来避免脑裂,还支持不同优先级的应用按指定顺序启停。同类群集基本只能做到基础的功能。

四、VMware逃逸问题

虚拟机逃逸是指利用虚拟机软件或者虚拟机中运行的软件的漏洞进行攻击,以达到攻击或控制虚拟机宿主操作系统的目的。

“VMware Workstation和Fusion的拖放(drag-and-drop,DnD)功能中存在一个越界内存访问漏洞。在运行Workstation或Fusion的操作系统上,攻击者可以利用这个漏洞实现客户机逃逸,在宿主机上执行代码。在Workstation Pro和Fusion上,如果拖放功能和复制粘贴(copy-and-paste,C&P)功能都被禁用,那么这个漏洞就无法利用”。

五、VMware快照删除时的合并策略

【问题描述】

如,有快照A->B->C->当前位置

当虚拟机关闭时

问题1.如果删除快照B,快照B的内容是合并到A还是C?

问题2.如果删除快照C,快照C的内容是合并到B还是当前位置?

当虚拟机打开时

问题3.如果删除快照B,快照B的内容是合并到A还是C?

问题4.如果删除快照C,快照C的内容是合并到B还是当前位置?

如果回滚的快照不包含内存状态,服务器将关闭,在重启后使用前一快照状态。如果快照中包含了内存状态,虚拟机只是简单中断一下后恢复到之前快照的磁盘和内存状态。

当用户对VMware虚拟机快照进行操作时,要注意,当需要删除虚拟机所有快照时,所有创建的delta文件首先被合并到原VMDK文件然后进行删除,如果您选择仅删除某个快照,那么只有该快照被合并到上一级快照中,如果选择回滚快照,那么现有的磁盘和内存状态都被抛弃,系统恢复到所选择的回滚时间点状态。无论您选择了哪一级的快照进行回滚,它都成为新的父级快照。而父级快照并非代表最新的快照,如果选择之前的时间点进行回滚,虚拟机就恢复到老时间点的状态。在Snapshot Manager中,父级快照总是带有标签“You are here”,代表虚拟机的当前状态。

六、VMware 和 VirtualBox 有什么区别?

VMware和VirtualBox虚拟机孰优孰劣,相信每个使用虚拟机产品的用户都有自己的一套理论。

但就个人而言,还是比较倾向于使用VMware。首先在资源占用上,无论是操作系统在其上的安装还是使用的时候,VMware虚拟机的CPU占用率大多数时间都是维持在100%;而VirtualBox虚拟机的CPU占用率在相比之下占用不是很多,最高在60%左右,平均在30%。当然这只是在我使用的PC机上。顺便大概提一下我的电脑配置:奔腾D处理器主频2.81×2、2个GB内存,160GB硬盘7200转。我在使用VirtualBox的时候一般都需要手工分配一个内核给它使用,因为如果不这样的话,我的其他工作就没有办法进行了。其次在网络设置上,VirtualBox虚拟机的网络类型设置明显没有VMware的种类齐全。至少桥接这一项我没有找到,如果有的话也说明在简单易用性方面VirtualBox虚拟机没有VMware做得更好。

虽然VirtualBox虚拟机在许多方面存在不足,但与VMware虚拟机相比还是有许多优点的。第一,免费使用;第二,跨平台使用,VirtualBox虚拟机不仅仅支持Windows平台,其他的一些主流平台,如Linux,Unix等等,有许多用户使用VirtualBox虚拟机很大一部分原因也在于此;第三,最新的版本支持的操作系统也相当丰富。单就从个人用户单机安装虚拟机用于学习、工作或者程序的开发调试等VirtualBox虚拟机完全可以胜任这些工作;但是在企业级应用,如在一台服务器上搭建多虚拟服务器,我个人认为VMware在易用性和管理的方便性,还有在资源的利用等方面的优势将使其更适合这方面的工作。

七、PowerVM备份方式与传统的备份有哪些差别?

VIO Server其实是一个经过封装的AIX,它的备份恢复有两种方式,一种为NIM备份恢复,但在恢复时一定注意把“是否作为NIM server的client标记为否”,另一种是viosbr命令进行备份恢复。

VIO Client的备份与传统的备份相同,操作系统可以通过NIM备份恢复,其它的也可以用备份软件实现lan-free的备份恢复。

PowerVM不多的情况下,我觉得用磁带机做个操作系统备份就可以了。毕竟操作系统级别的备份不用做得那么频繁。客户分区可以采用磁带机的方式,当然这会有很多次的设备映射操作,比较麻烦。可以在VIOS上做个虚拟镜像库。

八、PowerVM如何实现集中管理?

PowerVC,这个是基于OpenStack架构开发的,它可以对PowerVM进行纳管,实现图形化的快速部署与维护。

九、生产环境不能停机的情况下,PowerVM动态加个硬盘做镜像如何操作?

实际上PV做镜像,也就是在做PV中LV层次的镜像,可以用lspv -l hdisk0,hdisk1查询。比如说rootvg做镜像的时候就有dumplv的镜像。在已经建好镜像的rootvg中新建LV,默认是不选择同步的,即此新建的lv只会在一个PV中建立,而另一个PV是不建有这个LV的。

十、如何处理Citrix平台上发布的应用无法使用的问题?

发现Citrix上发布的应用程序用不了,登录Citrix客户端报CGP错误。登录到Xenapp服务器检查日志错误来源Reliability Server,描述为Unable to connect to the CGP tunnel destination (127.0.0.1:1494),服务器前一天晚上有自动重启的记录。前一天一切应用还是正常的,怀疑跟系统升级补丁有关系,选择卸载掉所有前一天更新的补丁,重启服务器,再测试Citrix 一切应用正常。因为当时急着用,所以没有一个一个补丁去卸载做测试,初步判断跟.net的补丁关系最大。随后关掉了该服务器的自动更新。