KVM虚拟机的基础操作

本文详细介绍了KVM虚拟化技术在云计算中的应用,涉及创建虚拟机、Linux虚拟化平台的安装、网桥配置、虚拟机原理以及公有云、私有云和混合云的区别。
摘要由CSDN通过智能技术生成

KVM

虚拟化与云计算
  • 虚拟化
    • 虚拟化是一种技术 ,将不可拆分的实体资源编程可以自由划分的逻辑资源;从而实现资源的整合 , 隔离 , 再分配 , 云计算就是利用了虚拟化技术的特点.
  • 云计算
    • 云计算是一种 服务模式(IAAS) ,
    • 其思想就是把各种资源整合起来 , 然后租给有需求的用户 , 其中的资源包括处理器(CPU) , 内存 , 存储 , 网络和其他基本的计算资源
    • 通常我们通过虚拟化手段把这些资源分割打包提供给用户使用
    • 核心技术是KVM
常见的虚拟化系列

请添加图片描述

创建一台虚拟机

1、创建虚拟机 2cpu,4G内存(默认用户名: root 密码: a)
使用 windows 的同学,请使用 vmware 链接克隆一台新的虚拟机

[root@真机 ~]# vm clone ecs
Domain ecs started                                         [  OK  ]
[root@真机 ~]# vm setip ecs 192.168.100.254
#------连接到 ecs 主机,设置主机名
[root@localhost ~]# hostnamectl set-hostname ecs
[root@localhost ~]# exit

2、验证 ecs 是否支持虚拟化

[root@ecs ~]# grep -Po "vmx|svm" /proc/cpuinfo
vmx
... ...
[root@ecs ~]# lsmod |grep kvm
kvm_intel             174841  6 
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm

Linux虚拟化平台安装

安装服务

KVM/QEMU/LIBVIRTD
1. `KVM` : 是Linux内核模块 , 需要CPU指令集的(`Intel-VT/AMD-V`)支持 ,是一种硬件辅助虚拟化技术
2. `QEMU` : 是一个虚拟化的仿真工具 , 通过`ioctl`与内核模块交互完成对硬件的虚拟化技术
3. `Libvirt` : 是一个对虚拟化管理的接口和工具 , 提供客户端程序 , 例如`virsh` , `virt-manager` 
构建虚拟化平台工具软件包
1. `qemu-kvm`          虚拟化仿真程序
2. `libvirt-daemon`         核心守护进程
3. `libvirt-client`         客户端程序
4. `libvirt-daemon-driver-qemu`         QEMU管理模块
5. `libvirt-daemon-driver-network`         网络管理模块
6. `dnsmasq`         DHCP , DNS服务
Linux qemu-kvm 虚拟化平台安装
  • 虚拟化平台软件包

    • qemu-kvm
    • libvirt-daemon
    • libvirt-client
    • libvirt-daemon-driver-qemu
    • libvirt-daemon-driver-network
    • dnsmasq
  • 使用yum安装

   dnf install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu libvirt-daemon-driver-network dnsmasq
  • 设置开机自动启动并现在启动 systemctl enable --now libvirtd

  • 查看版本 virsh version

[root@ecs ~]# virsh version
setlocale: No such file or directory
Compiled against library: libvirt 8.0.0
Using library: libvirt 8.0.0
Using API: QEMU 8.0.0
Running hypervisor: QEMU 6.2.0

创建网桥

virsh
  • 提供管理各虚拟机的命令接口
  • 支持交互/非交互模式 , 查看/创建/停止/关闭
  • 格式 : virsh 控制指令 [资源名称] [参数]
    • virsh net-list [--all] 列出虚拟网络
    • virsh net-start 启动虚拟交换机
    • virsh net-destroy 强制停止虚拟交换机
    • virsh net-define 根据xml文件创建虚拟网络
    • virsh net-undefine 删除一个虚拟网络设备
    • virsh net-edit 修改虚拟交换机的配置,有检错功能
    • virsh net-autostart 设置开机自启动

请添加图片描述

创建网桥配置
  • 官网手册 https://libvirt.org/docs.html
  • 虚拟机和真机不能在同一网段 , 不方便路由访问 ,虚拟机和真机需要在不同的网段,主要是为了避免IP地址冲突和实现网络隔离。在同一局域网内,每个设备都需要唯一的IP地址,否则会出现IP地址冲突,导致网络连接问题。将虚拟机和真机设置在不同的网段,可以确保它们拥有各自的IP地址空间,互不干扰。此外,将虚拟机和真机进行网络隔离,可以提高网络安全。
  • 写配置文件 , 一个用于配置libvirt的XML文件,定义了一个名为"vbr"的网络。这个网络使用了NAT模式进行转发,并且通过一个名为"vbr"的桥接器进行连接。 默认路径 /etc/libvirt/qemu/network/vbr.xml
[root@ecs ~]# vim /etc/libvirt/qemu/networks/vbr.xml
<network>
  <name>vbr</name>        #定义了这个网络的名称,为"vbr" , 使用`ifconfig`查看
  
  <forward mode='nat'/>   # 定义了网络转发模式为NAT ,NAT模式允许虚拟机访问外部网络,同时隐藏了虚拟机的真实IP地址。
  
  <bridge name='vbr' stp='on' delay='0'/>    #这里定义了一个桥接器,名称为"vbr"。STP(Spanning Tree Protocol)被启用,用于防止网络环路。delay='0'表示STP的转发延迟被设置为0,意味着STP功能被禁用。使用`virsh net-list`查看vbr
  
  <ip address='192.168.100.254' netmask='255.255.255.0'>    #定义了网络使用的IP地址和子网掩码。IP地址是192.168.100.254,子网掩码是255.255.255.0。
  
    <dhcp>   #这个标签内定义了DHCP服务的相关设置。
    
      <range start='192.168.100.128' end='192.168.100.200'/>    #定义了DHCP服务的地址范围。在这个例子中,范围从192.168.100.128到192.168.100.200。这意味着在这个范围内的IP地址可以被分配给连接到这个网络的客户端。
      
    </dhcp>
  </ip>
</network>
  • 创建网桥 virsh net-define /etc/libvirt/qemu/networks/vbr.xml

  • 设置开机自启动 virsh net-autostart vbr

  • 启动网桥 virsh net-start vbr

  • 验证状态 virsh net-list --all ifconfig vbr

虚拟机原理

虚拟机的构成
  • 虚拟配置文件 *.xml
    • 文件默认路径 : /etc/libvirt/qemu/
    • 用途 : 定义了虚拟机的设备 , 例如CPU , 内存 , 网卡等
  • 存储文件 *.img
    • 文件默认路径 : /var/lib/libvirt/images/
    • 用途 : 仿真虚拟机磁盘 , 存储所有数据信息

请添加图片描述

虚拟机磁盘
  • 虚拟机磁盘可以使用块设备 , 逻辑卷设备 , 文件仿真等.

  • 其中文件仿真模式具有易迁移,易扩展,支持多钟磁盘格式 , 配置方便等特点 , 在云平台上被广泛使用

  • 在文件仿真中被广泛采用的Cow格式具有 :

    1. 支持弹性空间
    2. 支持后端盘复用
    3. 支持快照
    4. 支持压缩
  • Cow : Copy On Write 写时拷贝技术

    • 使用指针指向原始盘所有块
    • 若一个块要被改写 , 首先把数据从原始盘拷贝到前端盘 , 然后在前端盘进行改写 , 最后把数据指针指向改写过的数据
    • 原始盘始终是只读

请添加图片描述

虚拟机配置管理

虚拟机磁盘管理
  • qemu-img是虚拟机的磁盘管理命令 ,支持非常多的磁盘格式 , 例如raw,qcow2,vdi,vmdk
  • qemu-img命令格式
    • qemu-img 子命令 子命令参数 块文件名称 大小
      • 常用子命令有
      • create 创建 ;
        • -F : 指定要创建的镜像文件的格式
          • 用于指定目标镜像文件的格式。这意味着在创建新镜像文件时,您需要使用 -F 参数来明确您希望创建的镜像格式。
        • -f : 指定源文件的格式
          • 指定源文件的格式。这个参数通常用在将一个镜像文件转换为另一种格式时,例如使用 qemu-img convert 命令。
        • -b : 指定一个基础镜像文件 , 新的镜像文件将基于此文件创建(后端盘)
      • info查看磁盘信息;
[root@ecs ~]# qemu-img create -f raw disk1.img 20G
Formatting 'disk1.img', fmt=raw size=21474836480
# create创建 -f指定 raw格式 disk1.img文件  大小20G

[root@ecs ~]# qemu-img info disk1.img
# 查看磁盘disk1.img的信息

创建虚拟磁盘

  • 创建虚拟机vhost的磁盘文件

    • 后端数据盘 : cirros.qcow2
    • 创建前端盘 : /var/lib/libvirt/images/vmhost.img
    • 前端盘大小是 : 20G
  1. 把数据盘拷贝到对应目录
[root@ecs ~]# cp cirros.qcow2 /var/lib/libvirt/images/
[root@ecs ~]# cd /var/lib/libvirt/images/
  1. 克隆磁盘
[root@ecs ~]# qemu-img info cirros.qcow2
# 查看磁盘cirros.qcow2的信息 ,确认磁盘格式
[root@ecs ~]# qemu-img create -F qcow2 -f qcow2 -b cirros.qcow2 vmhost.img 20G
[root@ecs ~]# qemu-img info vmhost.img   #查看信息
虚拟机配置文件
  • 虚拟配置文件 (*.xml)
    • 文件 : /etc/libvirt/qemu/{虚拟机名称}.xml
    • 模板文件 : node_base.xml
    • 模板文件来源 , 官方网站 : https://libvirt.org/format.html
  • 拷贝模板文件到对应文件中 , 方便修改
cp node_base.xml /etc/libvirt/qemu/vmhost.xml
  • 修改配置文件
    • 虚拟机名称 : vmhost
    • 虚拟机配置 : CPU(2核)内存(1G)
    • 虚拟机网络 : vbr桥接
[root@ecs ~]# vim /etc/libvirt/qemu/vmhost.xml

<domain type='kvm'>        #虚拟机
  <name>vmhost</name>       #名字 , 唯一
  <memory unit='KB'>1024000</memory>  #预留内存
  <currentMemory unit='KB'>1024000</currentMemory>  #虚拟机当前内存 , 一般情况,预留内存=当前内存
  <vcpu placement='static'>2</vcpu>    #虚拟CPU的数量
  <os>
    <type arch='x86_64' machine='pc'>hvm</type>
    <boot dev='hd'/>     
    <bootmenu enable='yes'/>
    <bios useserial='yes'/>
  </os>    #虚拟机的基础设置
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-passthrough'></cpu>
  <clock offset='localtime'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <source file='/var/lib/libvirt/images/vmhost.img'/>
      <target dev='vda' bus='virtio'/>
  </disk>
  <interface type='bridge'>
  <source bridge='vbr'/>
创建虚拟机
  • 操作命令汇总
    • virsh list [--all] 列出虚拟机
    • virsh start/shutdown 启动/关闭虚拟机
    • virsh destroy 强制停止虚拟机
    • virsh define/undefine 创建/删除虚拟机
    • virsh console 连接虚拟机的 console
[root@ecs ~]# virsh define /etc/libvirt/qemu/vmhost.xml
		# 创建虚拟机

[root@ecs ~]# virsh list --all      #查看所有虚拟机
 Id    Name                           State
----------------------------------------------------
 -     vmhost                         shut off
		#vmhost未启动
[root@ecs ~]# virsh start vmhost      #启动虚拟机
[root@ecs ~]# virsh console vmhost # 两次回车
  #连接虚拟机
退出使用 ctrl + ]
  • 管理命令汇总
    • virsh edit 修改虚拟机的配置
    • virsh autostart 设置虚拟机自启动
    • virsh dominfo 查看虚拟机摘要信息
    • virsh domiflist 查看虚拟机网卡信息
    • virsh domblklist 查看虚拟机硬盘信息

公有云

云服务三大类型
  • laaS : 基础设施服务
  • PaaS : 平台服务
  • SaaS : 软件服务
云计算是什么
  • 云计算是一种服务模式(IAAS) , 其思想就是把各种资源整合起来 , 然后租给有需要的用户 , 其中的资源包括处理器 , 内存 , 存储, 网络和其他基本的计算资源

  • 云计算是一种服务模式(PAAS), 除基础设施外还提供如 : 编程语言 , 运行环境 , 技术支持 , 甚至针对平台而机型的应用系用开发 , 优化等服务 , 也就是中间件服务

  • 云计算是一种服务模式(SAAS) , 是一种通过Internet提供软件的模式 , 客户可以根据自己实际需求 , 通过互联网向厂商订购所需的应用软件服务

公有云 , 私有云 , 混合云
  • 公有云
    • 公有云是第三方的云供应商 , 通过互联网为广大用户提供的一种按需使用的服务器资源 , 是一种云基础设施
  • 私有云
    • 私有云是一个企业或组织的专用云环境 , 一般在企业内部使用 , 不对外提供服务 , 因此也被视为一种企业云
  • 混合云
    • 混合云实在私有云的基础上 , 组合一个或多个公有云资源 ,从而允许在不同云环境之间共享应用和数据的使用方式.
  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值