目录

虚拟化概述

虚拟化与云计算的关系

虚拟化是什么?

云计算是什么?

Linux虚拟化平台

构建虚拟化平台工具软件包

虚拟化平台安装

环境准备

内核模块管理命令

安装虚拟化平台

验证指令集

安装虚拟化平台工具

创建虚拟网桥

Linux虚拟机

克隆磁盘

虚拟机配置文件

管理虚拟机

常用虚拟机管理命令

配置虚拟机

常用虚拟机配置命令


虚拟化概述

虚拟化与云计算的关系

虚拟化是什么?
  • 虚拟化是一种技术,顾名思义,就是将不可拆分的实体资源变成可以自由划分的逻辑资源,从而实现资源的整合、隔离、再分配,云计算就是利用了虚拟化技术的这个特点。

云计算是什么?
  • 云计算是一种服务模式(IAAS),其思想就是把各种资源整合起来,然后租给有需要的用户,其中的资源包括处理器(CPU)、内存、存储、网络和其它基本的计算资源。通常我们通过虚拟化手段把这些资源分割打包提供给用户使用。

Linux虚拟化平台

  • KVM 是linux内核模块,它需要CPU指令集(Intel-VT/AMD-V)的支持,是一种硬件辅助虚拟化技术。

  • QEMU 是一个虚拟化的仿真工具,通过ioctl与内核模块交互完成对硬件的虚拟化支持。

  • Libvirt 是一个对虚拟化管理的接口和工具,提供客户端程序,例如:virsh, virt-manager。

构建虚拟化平台工具软件包

服务软件包文件
虚拟化仿真程序qemu-kvm
核心守护进程libvirt-daemon
客户端程序libvirt-client
QEMU管理模块libvirt-daemon-driver-qemu
网络管理模块libvirt-daemon-driver-network
DHCP、DNS服务dnsmasq

虚拟化平台安装

环境准备

主机名称IP地址配置
ecs192.168.88.1252 CPU, 4G mem

内核模块管理命令

命令命令描述
lsmod查看已经加载的内核模块
modprobe加载一个内核模块
sysctl设置内核参数
rmmod卸载内核模块

安装虚拟化平台

验证指令集

[root@ecs ~]# grep -Po "vmx|svm" /proc/cpuinfo
vmx

安装虚拟化平台工具

[root@ecs ~]# dnf install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu libvirt-daemon-driver-network dnsmasq
[root@ecs ~]# systemctl enable libvirtd --now
[root@ecs ~]# lsmod |grep kvm
kvm_intel             339968  0
kvm                   905216  1 kvm_intel
irqbypass              16384  1 kvm
[root@ecs ~]# virsh version
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

创建虚拟网桥

//创建网桥的.xml配置文件可用AI生成
[root@ecs ~]# vim /etc/libvirt/qemu/networks/vbr.xml
<network> <!-- 定义一个网络配置 -->
  <name>vbr</name> <!-- 为网络设置一个名称,这里命名为vbr -->
  <forward mode='nat'/> <!-- 设置网络的转发模式为NAT,用于隔离虚拟网络和外部网络 -->
  <bridge name='vbr' stp='on' delay='0'/> <!-- 创建一个虚拟网桥,名称为vbr,启用STP(生成树协议)以防止网络环路,延迟设置为0 -->
  <ip address='192.168.100.254' netmask='255.255.255.0'> <!-- 为网桥设置IP地址和子网掩码 -->
    <dhcp> <!-- 定义一个DHCP服务 -->
      <range start='192.168.100.128' end='192.168.100.200'/> <!-- 指定DHCP服务分配IP地址的范围 -->
    </dhcp>
  </ip>
</network> <!-- 结束网络配置 -->
// 创建网桥
[root@ecs ~]# virsh net-define /etc/libvirt/qemu/networks/vbr.xml
Network vbr defined from /etc/libvirt/qemu/networks/vbr.xml
// 设置开机自启动
[root@ecs ~]# virsh net-autostart vbr
Network vbr marked as autostarted
// 启动网桥
[root@ecs ~]# virsh net-start vbr
Network vbr started
// 验证状态
[root@ecs ~]# virsh net-list --all
 Name   State    Autostart   Persistent
-----------------------------------------
 vbr    active   yes         yes
 
[root@ecs ~]# ifconfig vbr // 验证

Linux虚拟机

[root@ecs ~]# qemu-img create -f qcow2 disk2.img 5G
Formatting 'disk2.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=5368709120 lazy_refcounts=off refcount_bits=16
[root@ecs ~]# ls -lh
total 196K
-rw-r--r-- 1 root root 193K Nov  1 14:23 disk2.img
[root@ecs ~]# qemu-img info disk2.img
image: disk2.img
file format: qcow2
virtual size: 5 GiB (5368709120 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false
[root@ecs ~]# rm disk2.img 

克隆磁盘

  • qemu-img:这是命令行工具的名称,用于管理QEMU虚拟机的磁盘映像文件。

  • create:这是 qemu-img 的一个子命令,用于创建新的磁盘映像文件。

  • -F qcow2:这个选项指定了新创建的磁盘映像文件的格式。-F--format 的简写形式,qcow2 是指定的格式,表示创建的磁盘映像将使用 qcow2 格式。

  • -b cirros.qcow2:这个选项指定了基础磁盘映像文件,-b--Backing-File 的简写形式。在这里,cirros.qcow2 是用作新磁盘映像的基础磁盘映像文件,新创建的磁盘映像将继承这个基础映像的内容和设置。

  • -f qcow2:这个选项再次指定了新磁盘映像的格式,这次是作为创建命令的一部分。它与 -F 选项的作用相同,都是指定格式为 qcow2。

  • vmhost.img:这是新创建的磁盘映像文件的名称。

  • 20G:这是新创建的磁盘映像文件的大小,表示新磁盘映像的大小为 20GB。

[root@ecs ~]# ls
cirros.qcow2  disk2.img  vmbase.xml
[root@ecs ~]# cp cirros.qcow2 /var/lib/libvirt/images/
[root@ecs ~]# qemu-img rm disk2.img 
qemu-img: Command not found: rm
Try 'qemu-img --help' for more information
[root@ecs ~]# qemu-img create -F qcow2 -b cirros.qcow2 -f qcow2 vmhost.img 20G
Formatting 'vmhost.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 backing_file=cirros.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16
[root@ecs ~]# ls -lh 
total 17M
-rw-r--r-- 1 root root  16M Nov  1 14:33 cirros.qcow2
-rw-r--r-- 1 root root 1.2K Nov  1 14:33 vmbase.xml
-rw-r--r-- 1 root root 193K Nov  1 14:38 vmhost.img
[root@ecs ~]# qemu-img info vmhost.img 
image: vmhost.img
file format: qcow2
virtual size: 20 GiB (21474836480 bytes)
disk size: 196 KiB
cluster_size: 65536
backing file: cirros.qcow2
backing file format: qcow2
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

虚拟机配置文件

[root@ecs ~]# vim vmbase.xml
02: <name>vmhost</name>  # 必改配置
03: <memory unit="KB">1048576</memory>
04: <currentMemory unit="KB">1048576</currentMemory>
05: <vcpu placement="static">2</vcpu>
25: <source file="/var/lib/libvirt/images/vmhost.img" />  # 必改配置
29: <source bridge="vbr" />

管理虚拟机

//列出虚拟机
[root@ecs ~]# virsh list

//创建虚拟机
[root@ecs ~]# virsh define vmbase.xml 

//删除虚拟机
[root@ecs ~]# virsh undefine vmhost 

//启动虚拟机
[root@ecs ~]# virsh start vmhost

//关闭虚拟机
[root@ecs ~]# virsh shutdown vmhost

//强制关闭虚拟机
[root@ecs ~]# virsh destroy vmhost

//连接虚拟机
[root@ecs ~]# virsh console vmhost
常用虚拟机管理命令

命令命令描述
virsh list [--all]列出虚拟机
virsh start/shutdown启动/关闭虚拟机
virsh destroy强制停止虚拟机
virsh define/undefine创建/删除虚拟机
virsh console连接虚拟机的 console

配置虚拟机

//修改虚拟机配置文件!!不安全!!不推荐!!
[root@ecs ~]# virsh edit vmhost

//设置虚拟机自启
[root@ecs ~]# virsh autostart vmhost

//查看虚拟机摘要信息
[root@ecs ~]# virsh dominfo vmhost

//查看虚拟机网卡信息
[root@ecs ~]# virsh domiflist vmhost

//查看你虚拟机硬盘信息
[root@ecs ~]# virsh domblklist vmhost
常用虚拟机配置命令

命令命令描述
virsh edit修改虚拟机的配置
virsh autostart设置虚拟机自启动
virsh dominfo查看虚拟机摘要信息
virsh domiflist查看虚拟机网卡信息
virsh domblklist查看虚拟机硬盘信息

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐