OpenStack学习预备知识-1

跟着CloudMan的系列文章《每天5分钟玩转OpenStack》进行学习OpenStack。

虚拟化

虚拟化是一种计算机技术,通过在物理硬件上创建虚拟(而非实际)的计算资源,从而使得一台物理服务器能够同时运行多个虚拟服务器或虚拟操作系统。虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。

物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。

虚拟化是云计算的基础,虚拟化技术主要形式:

  1. 硬件虚拟化: 在物理硬件上创建虚拟化层,允许多个虚拟机(VM)同时运行在同一台物理服务器上。硬件虚拟化使得每个虚拟机都能够访问自己的虚拟CPU、内存、磁盘和网络接口,从而实现在单一硬件上运行多个独立的操作系统实例。
  2. 操作系统级虚拟化: 也称为容器化,是一种在操作系统层面上实现的虚拟化技术。容器化允许多个容器共享同一台操作系统的内核,但每个容器拥有自己的用户空间,因此能够运行独立的应用程序实例。与硬件虚拟化相比,容器化通常更轻量级,启动速度更快,并且具有更少的资源开销。
  3. 应用程序虚拟化: 将应用程序及其依赖项打包到一个独立的容器中,以实现跨平台部署和便捷的环境复制。应用程序虚拟化不同于操作系统级虚拟化,它主要关注于应用程序的打包和隔离,而不涉及操作系统的虚拟化。

在 OpenStack 中,通常会使用硬件虚拟化技术来实现虚拟机(VM)的创建和管理。除了硬件虚拟化,OpenStack 也支持容器化技术,例如通过项目如 Magnum(容器编排服务)来管理容器集群。

硬件虚拟化主要是通过一个叫做 Hypervisor 的程序实现的。根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:1型虚拟化和2型虚拟化

1型虚拟化

Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。 Xen 和 VMWare 的 ESXi 都属于这个类型。

2型虚拟化

物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。
KVM、VirtualBox 、Parallels Desktop和 VMWare Workstation 都属于这个类型。

KVM

基本概念

KVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。OpenStack 对 KVM 支持得也最好,故而选择 KVM 作为 实验环境的 Hypervisor。

作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu。

Libvirt

Libvirt 是一个用于管理不同虚拟化技术的开源工具包,它提供了一个统一的管理接口,使得管理和控制虚拟化环境变得更加简单和高效。Libvirt 是KVM 的管理工具。

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

  1. libvirtd是服务程序,接收和处理 API 请求;
  2. API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具;
  3. virsh 是我们经常要用的 KVM 命令行工具,后面会有使用的示例。

KVM环境准备

KVM 是 2 型虚拟化,是运行在操作系统之上的,所以我们先要装一个 Linux,Ubuntu、Redhat、CentOS 都可以,我使用 Ubuntu18.04 作为测试环境。

安装KVM 需要的包

基本的 Ubuntu 操作系统装好之后,安装 KVM 需要的包

sudo apt-get install qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan -y

  1. qemu-kvm 和 qemu-system 是 KVM 和 QEMU 的核心包,提供 CPU、内存和 IO 虚拟化功能
  2. libvirt-bin 就是 libvirt,用于管理 KVM 等 Hypervisor
  3. virt-manager 是 KVM 图形化管理工具
  4. bridge-utils 和 vlan,主要是网络虚拟化需要,KVM 网络虚拟化的实现是基于 linux-bridge 和 VLAN。

配置apt下载源

$ sudo getdit /etc/apt/sources.list 

deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

$ sudo apt update

KVM 图形化界面安装

sudo apt-get install xinit
sudo apt-get install gdm
sudo apt-get install kubuntu-desktop

作为 2型虚拟化的 KVM,是支持虚拟化嵌套,这使得我们可以在虚拟机中实验 KVM。 比如我在 VMWare Fusion 中安装了一个 Ubuntu18.04 的虚拟机,为了能让 KVM 能创建嵌套的虚机,要把 CPU 的虚拟化功能打开。

Ubuntu 启动后,用以下命令确认 CPU 支持虚拟化

egrep -o '(vmx|svm)' /proc/cpuinfo
vmx
vmx

确认 Libvirtd 服务已经启动

service libvirt-bin status
● libvirtd.service - Virtualization daemon
   Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset:
   Active: active (running) since Wed 2024-03-13 22:53:06 PDT; 58s ago
     Docs: man:libvirtd(8)
           https://libvirt.org
 Main PID: 1031 (libvirtd)
    Tasks: 19 (limit: 32768)
   CGroup: /system.slice/libvirtd.service
           ├─1031 /usr/sbin/libvirtd
           ├─2001 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default
           └─2003 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default

virt-manager 启动图形界面

virt-manager

创建虚拟机

cirros 是一个很小的 linux 镜像,非常适合测试用,可以到 http://download.cirros-cloud.net/ 下载,然后放到 /var/lib/libvirt/images/ 目录下,这是 KVM 默认查找镜像文件的地方。

然后一直Forward就可以安装成功。

virt-manager 图形化可以对虚机进行各种管理操作,也可以用命令 virsh 管理虚机,比如查看宿主机上的虚机。

virsh list

工作+学习繁忙希望可以抽出时间1周1-2篇学习记录。

posted @ 2024-03-14 14:37  九天揽月丶  阅读(6)  评论(0编辑  收藏  举报