序言

软件定义数据中心是最近一两年来非常热门的话题,软件定义数据中心一般可以分为软件定义服务器、软件定义存储、软件定义网络等。使用软件定义数据中心可以极大减化数据中心的部署以及日常管理,同时可以提供资源分布式调整、虚拟机快速部署、虚拟机高可用、虚拟机冗余等多种高级特性。

除了软件定义数据中心外,云计算的底层不能避免的涉及虚拟化,因此也引发了技术人员对虚拟化技术的关注与学习。随之而来的问题很多:如何学习虚拟化技术?学习虚拟化技术需要具体什么知识?究竟是学习开源虚拟化技术还是厂商自定标准的技术?作者简单谈谈如何学习虚拟化知识。

为什么要学习虚拟化技术

软件定义数据中的核心之一软件定义服务器,也就是常说的服务器虚拟化,在服务器虚拟化市场上,以开源为代表的KVM虚拟化平台和以商业为代表的VMware平台占据了大部分市场份额。

看看企业的生产环境,BATJ等巨头的环境不在我们的讨论范围,以作者从2011年到2018年参与的项目来看,除了一些Oracle数据库或其他特殊应用外,基本上没有企业不使用虚拟化技术,原因很简单:第一,充分发挥了物理服务器性能;第二,低成本实现了高可用、冗余等功能;第三,优化了数据中心服务器管理;

再来看看前程无忧等招聘网站,如果几年前,招聘虚拟化工程师或者是运维人员的很少,现在可以说非常多,不少企业还在高薪招聘有经验的虚拟化运维人员。如果是数据中心的运维人员或者是企业的技术人员,学习并掌握虚拟化技术已经是必须的技能。

作者学习虚拟化技术感受以及开专栏的目的

作者是从2009年开始接触虚拟化技术的,当时研究的是VMware ESX服务器虚拟化产品,典型一个Linux系统,可以运行Linux大部分命令,由于资料的缺乏,如果没有记错的话,ESX 2.5版本弄了快一个月才成功安装到DELL 1950服务器上,当时成功运行的那种感觉无法形容。后续在学习研究VMware的同时又开始折腾开源XEN以及KVM平台,初学的时候问题真的非常多加上资料缺乏,可能连一个基本的系统安装都需要很长的时候,在一定程度也影响了学习。总体来说,在学习的时候存在几个问题:

1、 技术资料的缺乏,摸着石头过河;
2、 学习的过程非常零碎,缺乏系统的学习;
3、 缺乏物理设备实践,模拟设备可以模拟基本的安装以及命令的使用,但无法模拟生产环境中使用的设备;
4、 缺乏老师答疑,很多问题事后感觉很简单,但在刚遇到时候可能花费大量的时候去解决,如果在遇到问题的时候有老师进行解答会节省很多时间;

开KVM订阅专栏实际是为了解这些问题,从零开始,完全使用企业生产环境真实设备带给大家不同的学习体检。网络上的各种部署文章以及视频非常多,我相信很多人看完还是一头雾水,依然不会部署,作者希望从最基础的底层开始,一步一步带大家部署KVM虚拟化系统,再加上一些常用的服务器如果在KVM虚拟化平台搭建运行,让大家能够入门KVM虚拟化。

学习并熟练掌握一种虚拟化平台搭建

既然要学习虚拟化,建议评估一下自己掌握了多少的计算机知识。由于虚拟化所涉及的内容很多,完全没有计算机基础知识的人需要学习的内容相当多。那么,学习虚拟化需要具备的知识,作者整理了一下:

(1)常用物理服务器的安装调试;
(2)Windows/linux服务器的安装调试;
(3)Windows以及linux基本服务的搭建;
(4)网络相关知识;
(5)存储相关知识。

对于以上的知识要求不需要精通,了解其基本概念就行,如果了解这些知识,学习虚拟化应该会起到事倍功半的效果。

目前市面上的虚拟化平台很多,商业的VMware vSphere、Microsoft Hyper-V以及Linux KVM、XEN等。
究竟选择学习谁?这对于初学者来说是迷惘的事情。实际上,这些虚拟化平台都可以提供高性能的虚拟化服务,作者认为,无论学习使用那一种虚拟化平台,深入是必须的,不能浅尝辄止或者半途而废,当熟练掌握一种虚拟化平台后再去学习另外一种,会发现很容易上手,因为虚拟化很多概念是相通的。

作者对于虚拟化平台的选择是包容并存的原则,开源平台和商业平台都可以学习,开源平台的学习推荐以KVM为主,商业平台推荐以VMware为主。因为在生产环境中,两者的市场占用率都不少,推荐至少熟悉掌握一种。

熟练掌握各种系统的安装调试

读者可能会有疑问,前面刚说了了解基本概念就行,怎么又变成熟练掌握了呢。这样理解一下,当虚拟化基础架构搭建好后,对外提供服务的是运行在虚拟化基础架构上的虚拟机,虚拟机的操作系统无非就是Windows和Linux,后期的重点就是对Windows和Linux系统的维护操作。如果无法熟练掌握Windows/Linux系统的安装调试,那么对外提供服务的稳定性也就无法保证。

对于Windows系统来说,多数企业的技术人员都能够比较熟练的操作。对于Linux系统来说,不少技术人员不熟悉其命令行操作模式,由于Linux系统的日趋成熟以及版权问题,不少企业在实施虚拟化架构的时候选择了Linux系统,所以熟练掌握Linux系统的安装调试也是必须的。

学习了解基本的网络知识

虚拟化架构对网络的依赖很重,无认是二层网络还是三层网络,网络的连接性是虚拟化架构对外提供服务的关键,我们没有要求必须掌握到HCIE、CCIE这种级别,基本的TCP/IP协议、VLAN的划分、VLAN间的路由、静态路由等最基本的网络知识是需要学习的,掌握基本的网络配置对于虚拟化平台网络的设计会有大帮助作用,特别是对虚拟化平台网络配置部分更会起到事半功倍的效果。

学习了解基本的存储知识

存储知识对于虚拟化架构的依赖很重,生产环境中物理服务器本地硬盘一般不存放数据使用专业级存储,一些高级特性的使用也依赖共享存储,虚拟机的日常备份也会使用到存储,所以了解存储的基本知识就显得非常重要,比如常见的RAID阵列、NFS、iSCSI、 FC存储,甚至需要知道它们是什么。

多进行实践操作

学习任何计算机知识的重要一点是多进行实践操作,虚拟化也不例外。生产环境不能随意进行操作,但可以使用桌面虚拟软件搭建测试平台进行完整测试,不要担心将测试平台搞崩溃,多从实践中发现问题,解决问题,这样动手能力会得到快速提高。

总结

说了这么多,总体来说,无论是学习KVM虚拟化也好还是其他也好,继续的学习是必须的,不能半途而废,当遇到问题要尝试去解决,记住一句话,解决方法永远比问题多。希望我们使用真实环境打造的《从零开始学KVM》专栏对大家入门KVM虚拟化有所帮助,这仅仅是起点,后续还需要我们深入学习,这样才能真正意义上玩转KVM虚拟化。

专栏目录