linux学习

linux 虚拟化技术

1.虚拟化与云计算的关系

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

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

2.Linux虚拟化平台安装

  • KVM/QEMU/LIBVIRT简介

    • KVM 是Linux内核模块,它需要CPU指令集(Intel-VT/AMD-V)的支持,是一种硬件辅助虚拟化技术
    • QEMU 是一个虚拟化的仿真工具,通过ioctl与内核模块交互完成对硬件的虚拟化支持
    • Libvirt 是一个对虚拟化管理的接口和工具,提供客户端程序,例如: virsh ,virt-manager
  • 构建虚拟化平台工具软件包

    服务 软件包文件
    虚拟化仿真程序 qemukvm
    核心守护进程 libvirtdaemon
    客户端程序 libvirtclient
    QEMU管理模块 libvirtdaemondriverqemu
    网络管理模块 libvirtdaemondrivernetwork
    DHCP 、DNS服务 dnsmasq
  • Linux qemu-kvm 虚拟化平台安装

虚拟化平台的软件包已经默认整合在系统安装光盘中,配置本地yum源后,安装虚拟化平台的命令如下。

[root@ecs ~]# dnf install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu libvirt-daemon-driver-network dnsmasq 
# 设置开机自启并且启动服务
[root@ecs ~]# systemctl enable --now libvirtd
  • 查看 virsh 版本号

    [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

3.配置虚拟化网络

  • 创建网桥,网桥文件的模板来自官方网站,其默认路径:/etc/libvirt/qemu/networks/default.xml
<network>
  <name>vbr</name>
  <forward mode='nat'/>
  <bridge name='vbr' stp='on' delay='0'/>
  <ip address='192.168.100.254' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.100.100' end='192.168.100.200'/>
    </dhcp>
  </ip>
</network>
  • 虚拟网络管理命令如下:

    命令 描述
    virsh net-list [–all] 列出虚拟网络
    virsh net-start 启动虚拟交换机
    virsh net-destroy 强制停止虚拟交换机
    virsh net-define 根据 xml 文件创建虚拟网络
    virsh net-undefine 删除一个虚拟网络设备
    virsh net-edit 修改虚拟交换机的配置
    virsh net-autostart 设置开机自启动
  • 配置网桥

# 通过配置文件定义网桥
[root@ecs ~]# cp /etc/libvirt/qemu/networks/default.xml /etc/libvirt/qemu/networks/vbr.xml

# 创建虚拟网络
[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-start vbr
Network vbr started

# 设置开机自启动
[root@ecs ~]# virsh net-autostart vbr
Network vbr marked as autostarted

# 查看设备状态
[root@ecs ~]# virsh net-list --all
Name                 State      Autostart     Persistent
----------------------------------------------------------
vbr                     active         yes               yes

4.虚拟机磁盘管理

  • 虚拟机磁盘管理

    qemu-img 是虚拟机的磁盘管理命令,支持非常多的磁盘格式,例如 raw、qcow2、vdi、vmdk 等。

    qemu-img 命令格式如下:

qemu-img 子命令 子命令参数 块文件名称 大小
常用的子命令有:
create   创建一个磁盘info     查看磁盘信息

1、创建磁盘

# 创建普通格式磁盘
[root@ecs ~]# qemu-img create -f raw disk1.img 20GFormatting 'disk1.img', fmt=raw size=21474836480 
# 创建 CoW 格式磁盘
[root@ecs ~]# qemu-img create -f qcow2 disk2.img 20GFormatting 'disk2.img', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off 
# 验证
[root@ecs ~]# ls -lh
-rw-r--r-- 1   root root   20G   Nov   28 14:20   disk1.img-rw-r--r-- 1   root root   193K  Nov   28 14:20   disk2.img

2、创建带后端盘的文件

# 网上下载并上传镜像,例如: cirros.qcow2 到 /var/lib/libvirt/images/
[root@ecs images]# cd /var/lib/libvirt/images
[root@ecs images]#cp /root/cirros.qcow2  /var/lib/libvirt/images/
[root@ecs images]# qemu-img create -b cirros.qcow2 -F qcow2 -f qcow2 vmhost.img 20G
[root@ecs images]# qemu-img info vmhost.img image: vmhost.imgfile format: qcow2virtual size: 20G (21474836480 bytes)disk size: 196Kcluster_size: 65536backing file: cirros.qcow2Format specific information:... ...

5.虚拟机配置文件

虚拟机配置文件/etc/libvirt/qemu/{虚拟机名称}.xml,其模板文件路径:public/node_base.xml,模板文件来源于官方网站https://libvirt.org/format.html

虚拟机配置文件内容如下:

<domain type='kvm'>  # 虚拟机类型
  <name>#####</name> # 虚拟机名称
  <memory unit='KB'>1048576</memory> # 最大内存
  <currentMemory unit='KB'>1048576</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> # 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'>           # 文件/磁盘仿真
      <driver name='qemu' type='qcow2'/>       # 文件格式
      # 磁盘文件路径
      <source file='/var/lib/libvirt/images/#####.img'/>
      <target dev='vda' bus='virtio'/> 
    </disk>
    <interface type='bridge'>     # 网卡仿真
      <source bridge='vbr'/>      # 连接网桥名称
      <model type='virtio'/> 
    </interface>
    <channel type='unix'>         # agent客户端
      <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
    <serial type='pty'></serial>  # 终端类型
    <console type='pty'> 
      <target type='serial'/> 
    </console> 
    <memballoon model='virtio'></memballoon> 
  </devices>
</domain>

6.创建虚拟机

虚拟机管理命令如下所示:

命令 说明
virsh list [–all] 列出虚拟机
virsh start / shutdown 启动/关闭虚拟机
virsh destroy 强制停止虚拟机
virsh define/undefine 创建/删除虚拟机
virsh console 连接虚拟机的 console
virsh edit 修改虚拟机的配置
virsh autostart 设置虚拟机自启动
virsh dominfo 查看虚拟机摘要信息
virsh domiflist 查看虚拟机网卡信息
virsh domblklist 查看虚拟机硬盘信息

创建 vmhost 虚拟机:

[root@ecs ~]# virsh define /etc/libvirt/qemu/vmhost.xml 
Domain vmhost defined from /etc/libvirt/qemu/vmhost.xml
[root@ecs ~]# virsh list --all 
Id    Name                           State
---------------------------------------------------- 
-     vmhost                         shut off
[root@ecs ~]# virsh start vmhost
Domain vmhost started
[root@ecs ~]# virsh console vmhost 
#两次回车退出使用 ctrl + ]

留言

您的电子邮箱地址不会被公开。 必填项已用 * 标注