未登录

信蚁社区 通行证

搜索
热搜: 统信UOS 麒麟
查看: 105|回复: 0

[关于麒麟] Kylin麒麟操作系统服务部署 | KVM虚拟化

[复制链接]

103

主题

4

回帖

339

积分

实习版主

Rank: 7Rank: 7Rank: 7Rank: 7

积分
339

最佳新人灌水之王优秀版主

发表于 2025-4-19 13:23:54 | 显示全部楼层 |阅读模式
以下所使用的环境为:
虚拟化软件:VMware Workstation 17 Pro
麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64
一、虚拟化介绍

虚拟化是指创建虚拟资源,例如:服务器、桌面、操作系统、文件、存储或网络。虚拟化的主要目标是通过从根本上改变传统计算来管理工作负载,从而使其具有可扩展性。目前企业应用比较多的就是虚拟化,包括:服务器虚拟化、桌面虚拟化、应用虚拟化,而虚拟化技术实现资源的逻辑抽象和统一表示。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
1. 主机虚拟化


    应用程序运行环境强隔离 虚拟机操作系统和底层操作系统无关化 虚拟机内部操作不会影响到物理机 拥有操作系统会占用部署资源及存储 网络传输效率低 当应用程序需要调用硬件响应用户访问时间延迟大
2. 容器虚拟化


    可以实现应用程序的隔离 直接使用物理机的操作系统可以快速响应用户请求 不占用部署时间 占用少量磁盘空间 学习成本增加、操作控制麻烦、网络控制和主机虚拟化有区别
二、VMware虚拟化

VMware虚拟机与其它虚拟化一样是一个逻辑的计算机,可以运行受支持的客户端操作系统和应用程序的虚拟硬件集。从本质上来说或从存储的角度来看,是一组离散的文件。
虚拟机的文件包括

    **.vmx:**虚拟机配置文件(文本文件) **.nvram:**虚拟机BIOS文件(二进制文件) **.vmdk:**虚拟磁盘描述文件(仅描述信息) **-flat.vmdk:**虚拟磁盘数据文件(实际数据) **-rdm.vmdk:**裸设备映射虚拟磁盘文件 **.vswp/vmx-*.vswp:**vmkernel swap文件,也叫虚拟机交换文件 **.vmtx:**模板的配置文件(文本文件) **.vmsd/.vmsn/-delta.vmdk:**虚拟机快照文件及磁盘delta数据文件 **.log:**虚拟机日志文件 **.vmss:**挂起状态文件
三、KVM概述

KVM是基于内核的虚拟机,是基于虚拟化扩展的X86硬件的开源Linux原生的全虚拟化方案(要求CPU支持 Intel-VT-x 或 AMD-V)。KVM内嵌于内核模块中,模拟处理器和内存以支持虚拟机运行。虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度虚拟机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KVM 能够使用 Linux 内核的已有功能,但 KVM 本身不执行任何模拟。需要客户空间程序(虚拟机)通过/dev/kvm(此虚拟设备需要开起硬件辅助虚拟化才能看到)接口设置一个客户机虚拟服务器的地址空间,并且由 Qemu 模拟 I/O(ioctl)进行调度资源和维护管理。
KVM虚拟化架构的三种模式

    客户模式(guestOS)

      VM中的操作系统为GuestOS,客户机在操作系统中运行的模式,客户机分为内核模式和用户模式
    用户模式

      为用户提供虚拟机管理的用户空间工具以及代表用户执行I/O,Qemu工作在此模式下(Qemu的主要功能)
    Linux内核模式

      模拟CPU、内存,实现客户模式切换,处理从客户模式的退出,KVM运行在此模式下

四、KVM安装

1. 检查本机CPU是否支持虚拟化


    intel:最新Linux内核的Intel处理器(含VT虚拟化技术)vmx nx lm AMD:含SVM安全虚拟机技术的AMD处理器,也叫 AMD-V svm nx lm
查看本机CPU是否支持虚拟化,在输出的内容中包含“svm”是AMD处理器虚拟机技术标志;“vmx”是Intel处理器虚拟机技术标志
  1. egrep"(vmx|svm)" /proc/cpuinfo
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-1.png


如果是在VMware虚拟环境下,可以查看是否勾选【虚拟化 Intel VT-x/EPT 或 AMD-V/RVI(V)】
Kylin麒麟操作系统服务部署 | KVM虚拟化-2.png


2. 安装虚拟化组软件包

列出本机所有的软件包组
  1. yum grouplist
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-3.png


安装【Virtualization Host】虚拟化主机软件包组
  1. yum groupinstall -y"Virtualization Host"
复制代码
3. 安装虚拟化管理工具

virsh是用于管理虚拟化环境中客户机和Hypervisor的命令工具,是libvirt-client软件包提供的。virsh使用起来virt-manager命令十分类似,都是系统管理员通过脚本程序实现虚拟化自动部署和管理工具。
  1. yum provides virsh
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-4.png


virt-manager是一个类似于VMware的一个图形界面的虚拟机管理器,在安装软件包组的时候默认不安装,需要额外安装
  1. yum install-y virt-manager
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-5.png


4. 安装Web控制台cockpit

Web控制台旨在管理和监视本地系统以及位于网络环境中的Linux服务器。Web控制台可以执行多种管理任务,包括:

    管理服务、用户账户 管理和监视系统服务 配置网络接口和防火墙 查看系统日志 管理虚拟机 创建诊断报告、设置内核转储设置 配置SELinux、更新软件和管理系统订阅
查看Web控制台是否安装
  1. yum info cockpit
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-6.png


cockpit的每个功能可以理解为是一个组件
  1. yum search cockpit
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-7.png


安装cockpit-machines
  1. yum install-y cockpit-machines
复制代码
启动cockpit服务,然后访问Web控制台
  1. systemctl status cockpit.service
  2. http://localhost.com
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-8.png


Kylin麒麟操作系统服务部署 | KVM虚拟化-9.png


五、新建虚拟机

安装虚拟化客户操作系统的UI界面
  1. yum install-y virt-viewer
复制代码
1. 通过虚拟机管理器(Virtu-manager)新建虚拟机

[Step1]: 启动Virtual Machine Manager有两种方式打开
Kylin麒麟操作系统服务部署 | KVM虚拟化-10.png


[Step2]: 新建虚拟机:选择如何安装操作系统
Kylin麒麟操作系统服务部署 | KVM虚拟化-11.png


[Step3]: 新建虚拟机:设置虚拟机的安装光盘和安装系统类型
Kylin麒麟操作系统服务部署 | KVM虚拟化-12.png


[Step4]: 新建虚拟机:设置虚拟机的内存和CPU
Kylin麒麟操作系统服务部署 | KVM虚拟化-13.png


[Ste5]: 新建虚拟机:设置虚拟机的磁盘
Kylin麒麟操作系统服务部署 | KVM虚拟化-14.png


[Ste6]: 新建虚拟机:设置虚拟机的名称及网络
Kylin麒麟操作系统服务部署 | KVM虚拟化-15.png


[Ste7]: 新建虚拟机:等待虚拟机的创建
Kylin麒麟操作系统服务部署 | KVM虚拟化-16.png


5.2 通过cockpit新建虚拟机

[Step1]: 安装virt-install软件包
  1. yum install-y virt-install
复制代码
[Step2]: 登录cockpit
Kylin麒麟操作系统服务部署 | KVM虚拟化-17.png


[Step3]: 创建虚拟机
Kylin麒麟操作系统服务部署 | KVM虚拟化-18.png


[Step4]: 填写相关参数
Kylin麒麟操作系统服务部署 | KVM虚拟化-19.png


[Step5]: 稍等片刻后,会出现VNC控制台,然后按照提示继续下一步安装即可
Kylin麒麟操作系统服务部署 | KVM虚拟化-20.png


3. 通过virt-install命令创建虚拟机

[Step1]: 创建虚拟机使用 virt-install 命令
  1. virt-install --name server03 --memory2048--vcpus2--disksize=20 --os-variant kylin10.0 --cdrom /dev/sr0 --graphics vnc,port=5980,password=Kylin2024 --networknetwork=default
复制代码


    **–name server03:**指定创建的虚拟机名称 **–memory 2048:**内存容量,默认单位是MB **–vcpus 2:**虚拟机CPU的数量,不可能超过主机的核心数 **–disk size:**虚拟机的磁盘容量,默认单位GB **–os-variant Kylin10.0:**虚拟机系统版本 **–cdrom:**指定光驱中的光盘 **–graphics vnc,port=5980,password=Kylin2024:**VNC设置 **–network network=default:**网络设置
六、KVM管理工具(virsh命令)

获取服务器主机的内存信息
  1. virsh nodememstats
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-21.png


获取客户端虚拟机监控程序的CPU信息
  1. virsh nodecpustats
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-22.png


获取客户端虚拟机的数量信息
Kylin麒麟操作系统服务部署 | KVM虚拟化-23.png


获取可用于客户端的所有网络信息
Kylin麒麟操作系统服务部署 | KVM虚拟化-24.png


虚拟机的启停
  1. virsh start server01                        # 开启虚拟机virshreboot server01                        # 重启虚拟机,前提是虚拟机必须是启动状态virshshutdown server01                        # 关闭虚拟机virsh destroy server01                        # 强制关闭虚拟机virshsuspend--domain server01        # 挂起虚拟机virsh resume --domain server01        # 恢复虚拟机
复制代码
七、虚拟机模板

1.模板概述和作用

模板类似于生活中的模具,可以工具模具制作出很多一模一样的产品。在KVM中,虚拟机模板同样可以批量生成虚拟机。缩短部署时间,提高工作效率。
2.生成虚拟机模板

[Step1]: 关闭虚拟机,这里以server01为例
  1. virshshutdown server01
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-25.png


[Step2]: 以server01为模板生成虚拟机server04
  1. cd /var/lib/libvirt/images/
  2. cp server01.qcow2 server04.qcow2                # 其实可以将qcow2文件理解为就是虚拟机
  3. virt-install --name server04 --memory2048--vcpus2--disk /var/lib/libvirt/images/server04.qcow2,bus=virtio,format=qcow2 --import --os-variant kylin10.0 --networknetwork=default        # 生成虚拟机
复制代码
八、虚拟机快照管理

虚拟机快照的创建方式有两种

    LVM快照 基于qcow2磁盘格式创建快照
1. 基于KVM的虚拟机快照

KVM快照是基于LVM快照来实现的,虚拟机使用的是快照盘,还原虚拟机就是基于原盘再做一次快照,继续使用快照即可。
[Step1]: 关闭虚拟机,此处以server01为例
  1. virshshutdown server01
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-26.png


[Step2]: 新建了1块硬盘50G硬盘
  1. lsblk
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-27.png


[Step3]: 创建物理卷设备,将三块硬盘加入到物理卷
  1. pvcreate /dev/sdb
复制代码
[Step4]: 创建卷组myvg,将sdb加入到卷组中
  1. vgcreate myvg /dev/
复制代码
[Step5]: 创建逻辑卷mylv,逻辑卷大小为myvg全部大小
  1. lvcreate -n mylv -L 40G myvg
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-28.png


[Step6]: 格式化硬盘,新建挂载点/kvm_snap
  1. mkdir /kvm_snap
  2. mkfs.ext4 /dev/myvg/mylv
  3. mount /dev/myvg/mylv /kvm_snap/
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-29.png


[Step7]: 对逻辑卷mylv生成快照
  1. lvcreate -n mylv_snap -L 40G -s /dev/myvg/mylv
复制代码
2. KVM自带的快照功能

创建快照的命令:snapshot-create-as
[Step1]: 为虚拟机server01新建快照 server01_bak
  1. virsh snapshot-create-as server01 server01_bak
复制代码


    **virsh snapshot-create-as:**新建快照 **server01:**虚拟机名称 **server01_bak:**虚拟机快照名
Kylin麒麟操作系统服务部署 | KVM虚拟化-30.png


[Step2]: 查看指定虚拟机的快照
  1. virsh snapshot-list server01
复制代码


    **virsh snapshot-list:**查看虚拟机的所有快照 **server01:**虚拟机名称
Kylin麒麟操作系统服务部署 | KVM虚拟化-31.png


[Step3]: 查看快照信息
  1. virsh snapshot-info --doamin server01 --snapshotname server01_bak
复制代码


    **virsh snapshot-info:**查看快照的信息 **–domain server01:**虚拟机名称 **–snapshotname server01_bak:**快照名称
Kylin麒麟操作系统服务部署 | KVM虚拟化-32.png


[Step4]: 还原快照
  1. virsh snapshot-revert --domain server01 --snapshotname server01_bak
复制代码
**virsh snapshot-revert:**还原快照信息
**–domain server01:**虚拟机名称
**–snapshotname server01_bak:**快照名称
[Step5]: 删除快照
  1. virsh snapshot-delete --domain server01 --snapshotname server01_bak
复制代码


    **virsh snapshot-delete:**删除快照 **–domain server01:**虚拟机名称 **–snapshotname server01_bak:**快照名称
九、虚拟机克隆

KVM中的虚拟机克隆和VMware中的虚拟机克隆方式差不多,均存在两种克隆方式

    完整克隆:对原始虚拟机完整拷贝,删除原始虚拟机,对克隆机器不影响,但是需要较多的空间 链接克隆:对原始虚拟机(磁盘)的链接,原始虚拟机删除,链接会失效
1. 完整克隆

完整克隆和创建模板的方式一样,直接复制磁盘文件。
2. 自动克隆

KVM提供了克隆命令–virt-clone,克隆的时候必须关闭虚拟机
[Step1]: 克隆虚拟机
  1. virt-clone --auto-clone -o server01 -n server02
复制代码


    **virt-clone:**创建克隆 **–auto-clone:**自动克隆 **-o server01:**原始虚拟机 **-n server02:**克隆后的虚拟机
Kylin麒麟操作系统服务部署 | KVM虚拟化-33.png


3. 手动克隆

[Step1]: 复制一个磁盘
  1. cd /var/lib/libvirt/images/
  2. cp server01.qcow2 server03.qcow2
复制代码
[Step2]: 导出server01的xml文件,将文件中的唯一性配置删除
  1. virsh dumpxml --domain server01 >../qemu/server03.xml
  2. vim../qemu/server03.xml

  3. # 删除下列参数<uuid>d268c29b-43d5-4d78-bfdd-edebf3cc647a</uuid><mac address='52:54:00:a2:6a:19'/># 修改下列参数<name>server03</name><source file='/var/lib/libvirt/images/server03.qcow2'/># 磁盘路径
复制代码
[Step3]: 将xml文件导入虚拟机中
  1. cd../qemu/
  2. virsh define --file server03.xml --validate
复制代码


    **virsh define:**从XML文件定义域 **–file server03.xml:**指定xml文件的路径 **–validate:**针对模式验证XML
Kylin麒麟操作系统服务部署 | KVM虚拟化-34.png


4. 链接克隆

[Step1]: 创建链接克隆磁盘,磁盘格式必须是qcow2
  1. qemu-img create -b /var/lib/libvirt/images/server01.qcow2 -f qcow2 /var/lib/libvirt/images/server04.qcow2
复制代码


    **qemu-img create:**创建新的镜像文件 **-b /var/lib/libvirt/images/server01.qcow2:**指定基础镜像的路径,这里会对server01.qcow2进行增量备份,只保存差异部分,而不是整个镜像的完整备份 **-f qcow2:**指定镜像文件的格式为qcow2 **/var/lib/libvirt/images/server04.qcow2:**新创建的镜像文件的路径和名称
Kylin麒麟操作系统服务部署 | KVM虚拟化-35.png


[Step2]: 查看磁盘的详细信息
Kylin麒麟操作系统服务部署 | KVM虚拟化-36.png


[Step3]: 生成xml文件,修改xml文件内容
  1. virsh dumpxml --domain server01 > /var/lib/libvirt/qemu/server04.xml
  2. vim /var/lib/libvirt/qemu/server04.xml

  3. # 删除下列内容<uuid>d268c29b-43d5-4d78-bfdd-edebf3cc647a</uuid><mac address='52:54:00:a2:6a:19'/># 修改下列内容<name>server04</name><source file='/var/lib/libvirt/images/server04.qcow2'/>
复制代码
[Step4]: 将xml文件导入虚拟机
  1. virsh define /var/lib/libvirt/qemu/server04.xml
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-37.png


[Step4]: 验证:启动虚拟机
  1. virsh start server04
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-38.png


[Step4]: 开启虚拟机控制台链接,默认是开启的但不是开机自启,可以设置为开机自启
  1. systemctl enable--now serial-getty@ttyS0.service
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-39.png


[Step5]: 链接到虚拟机server04,因为server01是图形界面的,所以不会显示控制台
  1. virsh console server04
复制代码
十、KVM网络管理

1. 网络类型介绍

KVM一共存在4种网络类型

    **隔离模式:**虚拟机之间组建网络,隔离模式无法和宿主机通信,无法和其它网络通信,相当于虚拟机只是连接在一台交换机上。有点类似VMware中的【LAN区段】 **路由模式:**相当于虚拟机连接到一台路由器上, 由路由器(物理网卡)统一转发,但是不会改变源地址 **NAT模式:**NAT模式将源地址转换为路由器(物理网卡)地址,这样其它主机也知道报文来自哪台主机,在docker环境中常用。NAT网络是虚拟机默认的网络,在安装好KVM后自动会添加一块网卡。 **桥接模式:**在宿主机中创建一张虚拟网卡作为宿主机的网卡,而物理网卡则作为交换机
2. NAT网络

NAT网络是虚拟机默认的网络,安装好KVM就会有一个网卡。默认使用的地址192.168.122.0/24
  1. ipadd show virbr0
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-40.png


virbr0是一个网桥,接收所有到网络192.168.122.0./24的内容
  1. brctl show
复制代码
Kylin麒麟操作系统服务部署 | KVM虚拟化-41.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表