一.VMware中安装ubuntu14.04

安装教程:
安装完后可通过调整虚拟机分辨率的方式来调整窗口大小
14.04
16.04:https://www.jb51.net/article/163921.htm

安装vmtools,让虚拟机和主机之间可以共享剪切板:

修改apt的配置文件,改为国内的镜像,修改后执行:apt update
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

二.虚拟化

参考:https://item.jd.com/12086376.html

1.概念
物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest);
虚拟化主要是通过一个叫做 Hypervisor 的程序实现的,而KVM就是一种Hypervisor 程序

2.分类
根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:

  • 1型虚拟化:基于硬件
    Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行
  • 2型虚拟化:基于操作系统,如KVM
    物理机上首先安装常规的操作系统,Hypervisor 作为 OS 上的一个程序模块运行

理论上讲:
1型虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比2型要高;
2型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。

3.KVM
KVM 是 OpenStack 使用最广泛的 Hypervisor,全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。

作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 的虚拟化,比如存储和网络设备则交给 Linux 内核和 Qemu。

而Libvirt是KVM的管理工具
Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh

4.安装KVM

  • 安装 KVM 需要的包
sudo apt-get install qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan
  • 为了能让 KVM 能创建嵌套的虚机,需要开启 CPU 的虚拟化功能
  • Ubuntu 启动后,用以下命令确认 CPU 支持虚拟化
# egrep -o '(vmx|svm)' /proc/cpuinfo
# vmx
  • 确认 Libvirtd 服务已经启动
# service libvirt-bin status
libvirt-bin start/running, process 1478
  • 启动图形界面
virt-manager

http://download.cirros-cloud.net/ 下载cirros-0.3.3-x86_64-disk.img 镜像文件
放入/var/lib/libvirt/images/ 目录下,这是 KVM 默认查找镜像文件的地方

virsh list    # 查看宿主机上的虚机

5.cpu的虚拟化
一个 KVM 虚机在宿主机中其实是一个 qemu-kvm 进程,与其他 Linux 进程一样被调度。
虚机中的每一个虚拟 vCPU 则对应 qemu-kvm 进程中的一个线程

例如,宿主机有两个物理 CPU,上面起了两个虚机 VM1 和 VM2。 VM1 有两个 vCPU,VM2 有 4 个 vCPU。 VM1 和 VM2 分别有2个和 4 个线程在两个物理 CPU 上调度。

虚机的 vCPU 总数可以超过物理 CPU 数量,这个叫 CPU overcommit(超配)。 KVM 允许 overcommit,这个特性使得虚机能够充分利用宿主机的 CPU 资源,但前提是在同一时刻,不是所有的虚机都满负荷运行。 当然,如果每个虚机都很忙,反而会影响整体性能,所以在使用 overcommit 的时候,需要对虚机的负载情况有所了解,需要测试。

6.内存虚拟化
KVM 通过内存虚拟化共享物理系统内存,动态分配给虚拟机

虚机 OS 不能直接访问实际机器内存,因此 KVM 需要负责映射客户物理内存到实际机器内存

内存也是可以 overcommit 的,即所有虚机的内存之和可以超过宿主机的物理内存。但使用时也需要充分测试,否则性能会受影响。

7.存储虚拟化
KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的。

Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型:目录类型,LVM类型等;

Volume 是在 Storage Pool 中划分出的一块空间,宿主机将 Volume 分配给虚拟机,Volume 在虚拟机中看到的就是一块硬盘。

文件目录是最常用的 Storage Pool 类型。KVM 将宿主机目录 /var/lib/libvirt/images/ 作为默认的 Storage Pool。
那么 Volume 就是该目录下面的一个文件

8.KVM 网络虚拟化基础
网络虚拟化中最重要的两个东西:Linux Bridge 和 VLAN

Linux Bridge 是 Linux 上用来做 TCP/IP 二层协议交换的设备,其功能大家可以简单的理解为是一个二层交换机或者 Hub。多个网络设备可以连接到同一个 Linux Bridge当某个设备收到数据包时,Linux Bridge 会将数据转发给其他设备

图中eth0代表宿主机上的网卡,br0即为Linux Bridge,vnet即为虚拟机的虚拟网卡

Ubuntu进入bios虚拟化 ubuntu 虚拟化_ubuntu


LAN 表示 Local Area Network,本地局域网,LAN 中的所有成员都会收到任意一个成员发出的广播包。

VLAN 表示 Virtual LAN。一个带有 VLAN 功能的switch 能够将自己的端口划分出多个 LAN。计算机发出的广播包可以被同一个 LAN 中其他计算机收到,但位于其他 LAN 的计算机则无法收到。 简单地说,VLAN 将一个交换机分成了多个交换机,限制了广播的范围,在二层将计算机隔离到不同的 VLAN 中。

比方说,有两组机器,Group A 和 B,我们想配置成 Group A 中的机器可以相互访问,Group B 中的机器也可以相互访问,但是 A 和 B 中的机器无法互相访问。 一种方法是使用两个交换机,A 和 B 分别接到一个交换机。 另一种方法是使用一个带 VLAN 功能的交换机,将 A 和 B 的机器分别放到不同的 VLAN 中。

eth0 是宿主机上的物理网卡,有一个命名为 eth0.10 的子设备与之相连。 eth0.10 就是 VLAN 设备了,其 VLAN ID 就是 VLAN 10。 eth0.10 挂在命名为 brvlan10 的 Linux Bridge 上,虚机 VM1 的虚拟网卡 vent0 也挂在 brvlan10 上。这样宿主机就用软件实现了一个虚拟交换机

Ubuntu进入bios虚拟化 ubuntu 虚拟化_Ubuntu进入bios虚拟化_02

Linux Bridge + VLAN = 虚拟交换机

  • 物理交换机存在多个 VLAN,每个 VLAN 拥有多个端口。 同一 VLAN 端口之间可以交换转发,不同 VLAN 端口之间隔离。 所以交换机其包含两层功能:交换与隔离。
  • Linux 的 VLAN 设备实现的是隔离功能,但没有交换功能。 一个 VLAN 母设备(比如 eth0)不能拥有两个相同 ID 的 VLAN 子设备,因此也就不可能出现数据交换情况。
  • Linux Bridge 专门实现交换功能将同一 VLAN 的子设备都挂载到一个 Bridge 上,设备之间就可以交换数据了