Linux环境下的云计算虚拟化技术与实践指南
本文全面介绍了云计算虚拟化技术的基础概念和实践应用。首先,文章解释了虚拟化技术如何将实体资源转化为可灵活分配的逻辑资源,为云计算提供资源整合与隔离的能力。接着,深入探讨了Linux虚拟化平台的构建,包括KVM、QEMU和Libvirt等关键组件的安装与配置。文章还详细演示了如何创建和管理虚拟网络、磁盘、虚拟机,以及如何使用virsh等命令行工具进行虚拟机的生命周期管理。
目录
虚拟化概述
虚拟化与云计算的关系
虚拟化是什么?
-
虚拟化是一种技术,顾名思义,就是将不可拆分的实体资源变成可以自由划分的逻辑资源,从而实现资源的整合、隔离、再分配,云计算就是利用了虚拟化技术的这个特点。
云计算是什么?
-
云计算是一种服务模式(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地址 | 配置 |
ecs | 192.168.88.125 | 2 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 | 查看虚拟机硬盘信息 |
更多推荐
所有评论(0)