原文地址:https://www.linuxidc.com/Linux/2017-03/141972.htm

云最成熟的架构是IaaS(Infrastructure as a Service),其中用到的技术有xen,kvm,lxd等,VMware虚拟化技术也是其中的一种。

为什么要虚拟化技术呢?目前在众多大规模互联网公司和游戏公司大都采用xen,kvm等虚拟化技术,使用这些虚拟化技术的好处是当服务器宕机时,运维人员在做维护时只需要将在虚拟机上运行的服务切换到另一台物理机上。而如果不使用虚拟化技术,运维人员就必须在服务离线前再找一台物理机配置服务,以实现切换。因此,虚拟化技术可以实现服务实时切换、迁移。另外,在运维上,特别是自动化运维以及实现弹性运算等高级功能只能通过虚拟机的运行方式来实现,而物理机的运行方式是运行不了的。

IBM和Intel公司在硬件制造生产上也不断地为提供更好地、更便捷地实现虚拟化技术开发出CPU的新特性。

那么,创建虚拟机的工作原理又是怎样的呢?创建虚拟机又是一个怎样的过程?简单地说,创建虚拟机就是在一台电脑上虚拟出多台电脑,并且虚拟机之间彼此独立,看起来就像独立的电脑一样。我们知道,一台主机最核心的硬件部件是CPU(Central Processing Unit),Memory,I/O设备,它们通过主板连接起来。因此严格来说,创建虚拟机是通过软件方式虚拟出各个具有独立的CPU、Memory、I/O设备的平台。我们把宿主机称为Host,把各个虚拟机称为Guest

问题来了,假设我们的电脑CPU只有一个,所以底层能实现运算的只有一个CPU,那么软件如何保证各个虚拟机拥有独立的CPU?对于Memory和I/O来说又是怎么实现的?

对于CPU来说,因为CPU的工作方式是分时的(Time-sharing),它能把运行时间分为多个时间段,并将这些时间段分配给各个虚拟机,是这样来实现的。

对于Memory来说,首先要明白读取内存数据的方式。内存是编址的存储单元,读取方式是CPU通过寻址后定位到内存某一个cell存储空间上获取数据的。因此,虚拟内存是通过人为地在逻辑上把内存切成多段,分别分配给各个虚拟机,每个虚拟机只能使用自己地址范围内的内存,剩下的内存则分配给宿主机。

I/O的虚拟化是比较难的。例如输入设备键盘是不可能同时为多个虚拟机以及宿主机占用的,因此也只能类似“分时”地使用,键盘或者鼠标的控制权在各个虚拟机和宿主机间的切换是通过“捕获”来实现的。

此外,网卡的虚拟化是通过软件的方式,为各个虚拟机虚拟出网卡,这些网卡最终都要对应到物理网卡上。

OK,创建虚拟机的原理大概讲完了,那么创建虚拟机的步骤究竟怎么样呢?主要有两大步骤,一是虚拟出一个物理机,二是为这个物理机安装OS。

虚拟出一个物理机是指虚拟出硬件部件的意思,根据上面提到的,主要是虚拟出CPU、Memory、I/O(Disk,Ethercard等)。例如指定有多少个CPU,CPU有几个核,有多少内存,有多少个硬盘,这些硬盘是什么格式的,有多少个网卡,这些网卡又是什么格式的......做完这一步骤之后,物理机就虚拟出来了,但是我们知道,如果没有软件在这些硬件上面运行,那么这些硬件就相当于一堆废铁,所以我们还要为这个物理机安装上操作系统

再拓展一点,上面创建虚拟机的过程中,硬盘的虚拟化或磁盘的虚拟化是通过磁盘映像文件来实现的(disk image file),即将一个或多个文件当做硬盘或磁盘来使用。那么问题来了,怎么把文件当成磁盘来使用的?这就是这个用来做虚拟化的软件(例如VMware Workstation)的意义了。这个软件能够通过某个接口虚拟出硬盘控制器,这个控制器就能把文件当做磁盘来使用了,而且不仅能指定这个硬盘文件的大小,还能支持稀疏格式(sparse)。什么是稀疏格式呢?例如我们在创建虚拟机时,指定这个虚拟机的硬盘为20G,但实际上在我们的电脑上看到的这个硬盘文件只是显示20k,由此导致的虚拟机的硬盘大小与其在宿主机上占用空间的大小不一致,这就是稀疏格式(sparse)。并且,这个20k会随着我们的需求以及我们在虚拟机上的操作不断增加,例如从20k增加到4G,再到10G等等。

以下以VMware Workstation 12 PRO为例创建虚拟机:

(1)首先打开软件,点击创建虚拟机

(2)为了尽可能满足个人需求,建议选择自定义(高级)

(3)这里的硬件兼容性是向下兼容的,可以选择兼容的版本,这里默认选项即可。

(4)选择稍后安装OS。

(5)这里选择的操作系统的意义在于,因为不同的OS对于硬件的要求以及一些配置各不相同,所以在虚拟物理机时尽量选择匹配的客户机操作系统,这样才能够对硬件做更具针对性的优化

(6)如果主机支持硬件虚拟化则选择64位。

(7)这里虚拟机名称是虚拟机的标签,可随意设置,但一般设置为操作系统版本名以方便识别。

位置是创建的磁盘映像文件的存放位置。

(8)指定多少个CPU,一个CPU多少核。注意两者相乘不能超过物理机核心数。

(9)指定虚拟机内存(Memory),不管主机内存多少,建议指定为512MB或1024MB即可。

(10)指定网络类型,这里选择NAT模式

(11)默认。

(12)要注意FAT32分区无法存放大于4G的单个文件。注意:不推荐选择“立即分配所有磁盘空间”,否则不支持稀疏格式。

(13)指定磁盘映像文件名。

(14)创建物理机后可重新调整硬件设置。

(15)对于不需要的硬件可以删除,需要的硬件可以添加,或者编辑硬件的设置。

(16)如果CPU支持硬件虚拟化,则可以选择此选项。

(17)点击开启,按组合键“Ctrl+Alt+Insert”建可重启,开机按F2键可进入BIOS界面。

最后就只剩下安装系统这一步骤啦!

VMware 虚拟化技术 创建虚拟机的更多相关文章

  1. VMware workstation批量创建虚拟机和自动化安装操作系统(一)

    一. 简述 作为从事IT行业运维工作的Linuxer,大多情况下需要在测试环境中部署业务系统并进行测试,在没有足够的计算存储网络条件下,使用虚拟机进行虚拟集群的创建和使用,是一种不错的学习和实践方式. ...

  2. VMware workstation批量创建虚拟机和自动化安装操作系统(二)

    一. 简述 在上一篇<VMware workstation批量创建虚拟机和自动化安装操作系统(一)>中,主要介绍了VMware workstation自定义创建虚拟机的过程,和一些其他的有 ...

  3. Xen、OpenVZ、KVM、Hyper-V、VMWare虚拟化技术介绍

    一.Xen 官网:http://xen.org/ Xen 由剑桥大学开发,它是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售.可分为Xen-PV(半虚拟化),和Xen-HVM( ...

  4. vmware vsphere client 创建虚拟机

    浏览器访问https://192.168.120.29 用户名:administrator@zhcs.com 密码:  Deyi123456! 说明:此案例为创建linux的Centos7的操作系统的 ...

  5. VMware workstation创建虚拟机console

    1. 使用VMware workstation创建虚拟机硬件2. 安装操作系统3. 操作系统安装过程 1. 使用VMware workstation创建虚拟机硬件 使用VMware workstati ...

  6. 虚拟化技术KVM

    1>虚拟化技术: 计算机虚拟化技术是多种技术的综合实现,它包括硬件平台,操作系统,存储以及网络等,简单地说,虚拟化技术就是在单台主机上可以虚拟多个虚假主机,并可以在这些虚拟主机上运行不同的操作系 ...

  7. 【VMware虚拟化解决方案】 基于VMware虚拟化平台VDI整体性能分析与优化

    一.说一说 本来打算将前期项目里面出现的问题的分析思路与解决方法写出来,第一.疏导一下自己的思路,第二.分析并找出自身在技术层面所存在欠缺.但由于每个人都有一根懒经所以迟迟未动.今天突然发现51CTO ...

  8. VMware安装RedHat Linux虚拟机图文详解

    创建Red Hat Linux虚拟机 1.打开VMware,开始创建虚拟机 点击菜单[文件]->[新建虚拟机]. 2.默认典型,单击[下一步] 3.选择安装来源 在这里,我们选择安装来源为[安装 ...

  9. 虚拟化技术之kvm虚拟机创建工具qemu-kvm

    在前边的博客中我们介绍了如何创建kvm虚拟机,以及一些常用的工具的介绍和使用,今天我们来了解下kvm原始工具qemu-kvm:为什么说qemu-kvm是一个原始的工具呢,如果你用kvm虚拟机,心细的你 ...

随机推荐

  1. 1 java开发工具IDEA的使用

    IntelliJ IDEA 2017.1汉化破解版安装图文教程(附汉化补丁) 注册码:http://idea.lanyus.com/  点击在线生成 IntelliJ IDEA 2017.1正式版发布 ...

  2. 用JAVA的抽象类实现编码组合进度的灵活性

    都是实际开发逼出来的吧. 人类真灵活~~~~:) 就是将整个功能的实现在编程时,打散到一个一个文件中,提前写好核心算法, 在TEAM的实现方案确定下来之后,再进行组装. GuessGame.java ...

  3. 【POJ 2486】 Apple Tree(树型dp)

    [POJ 2486] Apple Tree(树型dp) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8981   Acce ...

  4. 安卓实现序列化之Parcelable接口

    安卓实现序列化之Parcelable接口 1.实现序列化的方法: Android中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的) .一是实现Parcelabl ...

  5. PHP反射类的理解(代码篇)

    <?php/** * Created by PhpStorm. * User: * Date: 2017/6/12 * Time: 14:34 * 关于反射类的理解 */class Person ...

  6. python为在线漫画站点自制非官方API(未完待续)

    接下来将记录我一步一步写一个非官方API的过程,由于一些条件的约束,最后的成品可能非常粗暴简陋 如今介绍要准备的全部工具: 系统:ubuntu 14.04 语言:python 2.7 须要自行安装的库 ...

  7. GIS中mybatis_CMEU的配置方法

    基本常用功能预览: 生成实体类(可以自定义:get/set,有参无参构造方法,自定义类型与属性,序列化等); 生成dao层接口(查询全部信息,通过ID查询信息,插入全部属性,插入不为空的属性,通过ID ...

  8. Visio的安装教程

    1.下载地址:https://msdn.itellyou.cn/ 2.输入关键字:Visio,选择想要下载的版本,展开详细信息,并复制 3.(我下载的13) ed2k://|file|cn_visio ...

  9. 0x56 状压DP

    gan这两题怎么差不多 #include<cstdio> #include<iostream> #include<cstring> #include<cstd ...

  10. 第17章 Redis概述

    17.2.1 在Windows下安装Redis https://github.com/ServiceStack/redis-windows/tree/master/downloads redis-se ...