docker-modocker

kvm教程

Docker·2022-09-14 09:09·618 次阅读

kvm教程

KVM

虚拟化#

虚拟机的组成#

  • 内核虚拟模块 ( KVM )#

  • 系统设备仿真 ( QEMU )#

  • 虚拟机管理程序 ( Libvirt )
  • 一个 XML 文件 ( 虚拟机配置声明文件)#

    • 位置: /etc/libvirt/qemu
  • 一个磁盘映像文件 ( 虚拟机的硬盘 )#

    • 位置: /var/lib/libvirt/images/

企业进化#

  • 将任意一种形式的资源抽象成另一种形式的技术#

  • 初期: cup资源不够用时,会产生蓝屏,< 当一个应用蓝屏后,其他应用也会他停止,那么就一台服务器运行一个应用,(简单的说,就是应用隔离)>#

  • 进化一: 一台服务器不够用#

  • 进化二: 购买服务器,< 由于一台服务器只能运行一个项目,成本高>#

  • 成熟阶段: 利用KVM 虚拟化技术,既实现了应用隔离,也实现了资源利用率#

虚拟化的几个重要概念#

虚拟化架构#


什么是KVM#

  • KVM 即 Kernel-based Virtual Machine 基亍内核的虚拟机。#

  • KVM,是一个开源 的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各个主要发行版本中。#

  • 它使用 Linux 自身的调度器进行管理,所以相对亍 Xen,其核心源码很少。KVM 目前已成为学术界的主流 VMM(虚拟机监控器)之一。KVM 的虚拟化需要硬件支持(如* *Intel VT 技术戒者 AMD V 技术)。是基于硬件的完全虚拟化。而 Xen 早期则是基亍软件模拟的 Para-Virtualization。#

KVM:#

  • 是挃基亍 Linux 内核的虚拟机(Kernel-based Virtual Machine)。是第一个整合到 Linux内核的虚拟化技术。在 KVM 模型中,每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可以在用户空间启劢客户机操作系统。
  • 一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)
  • KVM 支持 linux 以外的其它系统。比如:windows
QEMU:
  • 是一套由 Fabrice Bellard 所编写的以 GPL 许可证分发源码的模拟处理器,在 GNU/Linux平台上使用广泛。QEMU 具有高速度和跨平台的特性,QEMU 能模拟至接近真实电脑的速度。
  • QEMU 能模拟整个电脑系统,包括中央处理器及其他周边设备。
  • QEMU 和 vmware 一样都是支持仿真虚拟化,效率比较低。

配置 KVM 前期准备工作#

KVM 实验拓扑图#

环境准备#

虚拟机规划#

安装一台 Centos7 Linux 系统, 并开启虚拟化

注意:

**安装时不知道怎么点,百度也很难找到,怎么办? **

查看官方文档

查看是否支持虚拟化#

Copy
grep -Em 1 "vmx|svm" /proc/cpuinfo PS: svm是amdcpu,vmx是intel的cpu

装载模块#

先查看是否存在模块#

Copy
lsmod | grep kvm kvm_amd 2177212 0 kvm 586948 1 kvm_amd irqbypass 13503 1 kvm

如果没有模块,则执行以下操作#

Copy
modprobe kvm # 加载 kvm 模块 modprobe kvm-amd # 加载 amd 支持模块

检验#

Copy
ll /dev/kvm crw-------. 1 root root 10, 232 Jan 29 2022 /dev/kvm # 出现以下结果表明 “可以运行虚拟机”

实战一: 创建虚拟机#

命令行#

安装程序包
Copy
yum -y install qemu-kvm # Qemu-Kvm 命令行工具
创建软连接
Copy
- 查看命令路径 rpm -ql qemu-kvm /usr/libexec/qemu-kvm - 创建软连接 ln -sv /usr/libexec/qemu-kvm /usr/bin/qemu-kvm # 将 '/usr/libexec/qemu-kvm' 放入/usr/bin 形成快捷键

查看映像文件
Copy
ls /var/lib/libvirt/images/ # 映像文件路径 cirros-0.3.4-x86_64-disk.img # 使用此镜像运行虚拟机
使用qemu-img info命令查看虚拟磁盘映像文件信息
Copy
qemu-img info /image/kvm/cirros-0.3.4-x86_64-disk.img image: /image/kvm/cirros-0.3.4-x86_64-disk.img file format: qcow2 virtual size: 39M (41126400 bytes) disk size: 13M cluster_size: 65536 Format specific information: compat: 0.10
创建虚拟机
Copy
qemu-kvm -m 128 -smp 2 -name cirros -hda /image/kvm/cirros-0.3.4-x86_64-disk.img VNC server running on `::1:5900' -m : 指定虚拟内存 (MB) -smp : 指定虚拟CPU个数 -name: 指定虚拟机名字 -hda : 指定硬盘
访问虚拟机 < 通过VNC>
Copy
复制一个终端
Copy
下载软件 yum -y install tigervnc 会产生一个 'vncviewer' 命令
在桌面界面打开
Copy
vncviewer:5900

Copy
sudo su - # 进入root用户

图形化工具#

安装相关软件#

< libvirtd —— 虚拟化平台 >
Copy
yum -y install qemu-kvm libvirt virt-manager virt-install virt-viewer libvirt # 虚拟机管理工具 virt-manager # 图形化管理工具 virt-install # 命令行 virt-viewer # 图形化远程连接虚拟机工具
Copy
- 查看命令路径 rpm -ql qemu-kvm /usr/libexec/qemu-kvm - 创建软连接 ln -sv /usr/libexec/qemu-kvm /usr/bin/qemu-kvm # 将 '/usr/libexec/qemu-kvm' 放入/usr/bin 形成快捷键

设置开机自启#

Copy
systemctl start libvirtd systemctl enable libvirtd # 查看是否开启成功 systemctl is-enabled libvirtd enabled

进入图形化界面操作,并启动一台虚拟机#

Copy
virt-manager # 打开图形化界面

查看运行的虚拟机#

Copy
virsh list Id 名称 状态 ---------------------------------------------------- 5 centos7.0 running

实战二: 配置 KVM 网络桥接功能#

什么是桥接#

  • **网桥介绍****: 我们经常所说的 Bridge 设备其实就是网桥设备,也就相当亍现在的二层交换机,用亍连接#

  • 同一网段内的所有机器,所以我们的目的就是将网络设备 eth0 添加到 br0,此时 br0 就成为了所谓的交换机设备,我们物理机的 eth0 也是连接在上面的。#

  • 添加桥接设备 br0:相当亍一个二层交换机#

安装桥设备工具:#

Copy
yum -y install bridge-utils-1.5-9.el7.x86_64

eth0绑到br0桥设备上:#

Copy
cd /etc/sysconfig/network-scripts/ cp ifcfg-eth0 /opt/ # 备份 eth0 network-scripts]# vim ifcfg-eth0 #编辑配置文件为以下内容 …… # 删除 IPADDR=10.0.0.6 PREFIX=24 GATEWAY=10.0.0.2 DNS1=114.114.114.114 …… BRIDGE="br0" #在文件最后插入这一行
生成桥设备的配置文件:
Copy
network-scripts]# vim ifcfg-br0 #创建 ifcfg-br0 文件,并写入以下内容 DEVICE="br0" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Bridge" BOOTPROTO=none IPADDR=10.0.0.6 PREFIX=24 GATEWAY=10.0.0.2 DNS1=114.114.114.114
注:TYPE="Bridge" , B要大写

重启服务#

Copy
systemctl restart network

测试 br0:#

Copy
ifconfig ping baidu.com

查看桥接信息#

Copy
network-scripts]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c2948cbaf no eth0 vnet1 virbr0 8000.5254000d84e6 yes virbr0-nic
posted @   Docker-沫老师  阅读(618)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
目录
点击右上角即可分享
微信分享提示