【技服新员工云计算实验手册】3.KVM创建虚拟机实验
  

鸡爷 3830

{{ttag.title}}
本帖最后由 鸡爷 于 2019-11-22 15:47 编辑

本文是CSDN博主「CloudMan6」的原创文章

KVM基本概念
x86 平台上最热门运用最广泛的虚拟化方案莫过于 KVM 了。OpenStack 对 KVM 支持得也最好,我们的教程也理所当然选择 KVM 作为 实验环境的 Hypervisor。
KVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。
KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。
IO 的虚拟化,比如存储和网络设备由谁实现呢?
这个就交给 Linux 内核和Qemu来实现。
说白了,作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu。

Libvirt
大家在网上看 KVM 相关文章的时候肯定经常会看到 Libvirt 这个东西。
Libvirt 是啥?
简单说就是 KVM 的管理工具
其实,Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。
OpenStack 底层也使用 Libvirt,所以很有必要学习一下。
Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh
1.libvirtd是服务程序,接收和处理 API 请求;
2.API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具,后面我们也会介绍;
3.virsh 是我们经常要用的 KVM 命令行工具,后面会有使用的示例。

基本的 Linux操作系统装好之后,安装 KVM 需要的包
1
$ sudo apt-get install qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan
通过这些安装包我们顺便复习一下的 KVM 的相关知识。
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,后面我们会讨论。

确认KVM实验基础环境
KVM是支持虚拟化嵌套,这使得我们可以在虚拟机中实验 KVM。 比如我在 VMWare Workstation 中安装了一个 Ubuntu14.04 的虚拟机,为了能让 KVM 能创建 嵌套的虚机,要把 CPU 的虚拟化功能打开。

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

2

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

确认 Libvirtd 服务已经启动
1

2

# service libvirt-bin status
libvirt-bin start/running, process 1478

KVM 准备就绪,下一节我们将创建虚拟机

本节演示如何使用 virt-manager 启动 KVM 虚机。
首先通过命令 virt-manager 启动图形界面
1
# virt-manager

点上面的图标创建虚机
给虚机命名为 kvm1,这里选择从哪里启动虚机。如果是安装新的 OS,可以选择第一项。如果已经有安装好的镜像文件,选最后一项(如上图)
接下来需要告诉 virt-manager 镜像的位置。
点击 “Browser”
在我的系统中存放了一个 cirros-0.3.3-x86_64-disk.img 镜像文件 。cirros 是一个很小的 linux 镜像,非常适合测试用,大家可以到 http://download.cirros-cloud.net/ 下载,然后放到 /var/lib/libvirt/images/ 目录下,这是 KVM 默认查找镜像文件的地方。
为虚拟机分配 CPU 和内存
点击 “Forward”, 再确认一下信息,就可以启动虚机了。
virt-manager 会打开虚机 kvm1 的控制台窗口,可以看到启动情况
virt-manager 可以对虚机进行各种管理操作,界面直观友好,很容易上手。 同时我们也可以用命令 virsh 管理虚机,比如查看宿主机上的虚机
1
2
3
4
root@ubuntu:~# virsh list
Id    Name              State
--------------------------------
8     kvm1              running

KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的。
Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论。Volume 是在 Storage Pool 中划分出的一块空间,宿主机将 Volume 分配给虚拟机,Volume 在虚拟机中看到的就是一块硬盘。
目录类型的 Storage Pool
文件目录是最常用的 Storage Pool 类型。
KVM 将宿主机目录 /var/lib/libvirt/images/ 作为默认的 Storage Pool。
那么 Volume 是什么呢?
答案就是该目录下面的文件了,一个文件就是一个 Volume。
大家是否还记得我们之前创建第一个虚机 kvm1 的时候,就是将镜像文件 cirros-0.3.3-x8664-disk.img 放到了这个目录下。文件 cirros-0.3.3-x8664-disk.img 也就是Volume,对于 kvm1 来说,就是它的启动磁盘了。
KVM 是怎么知道要把 /var/lib/libvirt/images 这个目录当做默认 Storage Pool 的呢? 实际上 KVM 所有可以使用的 Storage Pool 都定义在宿主机的 /etc/libvirt/storage 目录下,每个 Pool 一个 xml 文件,默认有一个 default.xml,其内容如下:
注意:Storage Pool 的类型是 “dir”,目录的路径就是 /var/lib/libvirt/images

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

一个无趣的人 发表于 2019-11-30 22:17
  
楼主对于安装的步骤条理描述的很清晰,图文结合。
Sangfor_闪电回_朱丽 发表于 2019-11-18 15:08
  
您好,非原创内容,请注明出处哦!
感谢楼主带来的知识分享!
起瑞康 发表于 2019-11-17 13:32
  
学习打卡
发表新帖
热门标签
全部标签>
西北区每日一问
技术盲盒
安全效果
每日一问
干货满满
【 社区to talk】
技术笔记
新版本体验
GIF动图学习
产品连连看
技术咨询
2023技术争霸赛专题
功能体验
自助服务平台操作指引
每周精选
通用技术
安装部署配置
原创分享
秒懂零信任
信服课堂视频
标准化排查
排障笔记本
玩转零信任
答题自测
技术晨报
社区新周刊
POC测试案例
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
高手请过招
升级&主动服务
高频问题集锦
全能先锋系列
云化安全能力

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人