前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >统信服务器操作系统V20 1060e【KVM 虚拟化】

统信服务器操作系统V20 1060e【KVM 虚拟化】

作者头像
Kevin song
发布2024-04-28 13:01:45
1540
发布2024-04-28 13:01:45
举报

KVM(Kernel-based Virtual Machine)是一个基于Linux内核的开源虚拟化解决方案,它允许在单个物理服务器上运行多个虚拟机。每个虚拟机都可以运行自己的操作系统和应用程序。KVM利用了Linux内核的虚拟化功能,通过将物理主机的资源(如CPU、内存和网络接口)动态分配给虚拟机,实现了对虚拟机的隔离和资源管理。

操作系统版本信息

查看服务器是否支持虚拟化

代码语言:javascript
复制
grep -E -o 'vmx|svm' /proc/cpuinfo
vmx
vmx
vmx
vmx

BIOS开启虚拟化功能,查看kvm模块

代码语言:javascript
复制
lsmod |grep kvm
kvm_intel             372736  5
kvm                   970752  1 kvm_intel
irqbypass              16384  4 kvm

加载kvm模块

代码语言:javascript
复制
modprobe kvm
modprobe kvm-intel

内核模块/dev/kvm设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间

代码语言:javascript
复制
ll -ls  /dev/kvm
0 crw-rw---- 1 root kvm 10, 232 Apr 22 06:35 /dev/kvm

安装kvm软件包

代码语言:javascript
复制
dnf install libvirt qemu-kvm qemu-img  virt-install bridge-utils  libguestfs-tools

启动libvirtd服务

代码语言:javascript
复制
systemctl  start libvirtd && systemctl  enable libvirtd

虚拟机列表

代码语言:javascript
复制
virsh -c qemu:///system list
 Id   Name           State
------------------------------

virsh版本

代码语言:javascript
复制
virsh --version
6.2.0

virt-install工具版本

代码语言:javascript
复制
virt-install --version
2.1.0

qemu-kvm程序

代码语言:javascript
复制
ls -ll /usr/bin/qemu-kvm
lrwxrwxrwx 1 root root 21 Mar 14  2023 /usr/bin/qemu-kvm -> /usr/libexec/qemu-kvm

qemu-kvm版本信息

代码语言:javascript
复制
qemu-kvm --version
QEMU emulator version 4.1.0 (qemu-4.1.0-76.up2.uel20)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

创建虚拟网桥

网卡ens192

代码语言:javascript
复制
cat /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=static
NAME=ens192
DEVICE=ens192
ONBOOT=yes
BRIDGE=br192

网桥br192

代码语言:javascript
复制
cat /etc/sysconfig/network-scripts/ifcfg-br192
TYPE=Bridge
BOOTPROTO=static
NAME=br192
DEVICE=br192
ONBOOT=yes
IPADDR=192.168.100.235
PREFIX=24
GATEWAY=192.168.100.1
DNS1=223.5.5.5

重启网络

代码语言:javascript
复制
nmcli  connection reload
nmcli  connection up ens192
nmcli  connection up br192

查看网络

代码语言:javascript
复制
ip add show

查看网桥

代码语言:javascript
复制
brctl  show

添加网卡到网桥

代码语言:javascript
复制
brctl  addif br0 vnet0

创建虚拟磁盘

代码语言:javascript
复制
qemu-img create -f qcow2 /var/lib/libvirt/images/uosv20-1060a.qcow2 50G

查看虚拟磁盘信息

代码语言:javascript
复制
qemu-img info /var/lib/libvirt/images/uosv20-1060a.qcow2

虚拟机开机查看磁盘信息

代码语言:javascript
复制
qemu-img info /var/lib/libvirt/images/uosv20-1060a.qcow2  --force-share
qemu-img info /var/lib/libvirt/images/uosv20-1060a.qcow2  -U

virt-install 创建虚拟机

virt-install --name=uosv20-1060a --memory=4096 --vcpus=2 --disk path=/var/lib/libvir/images/uosv20-1060a.qcow2,format=qcow2,bus=virtio --cdrom /mnt/cdrom/uos-server-20-1060a-amd64.iso --network bridge=br192,model=virtio --noautoconsole --accelerate --graphics vnc,listen=0.0.0.0,port=5910

创建虚拟机参数介绍

代码语言:javascript
复制
--virt-type kvm      指定虚拟化类型(qemu/kvm) 
--os-type=linux     系统类型 
--os-variant rhel8  系统版本 
--name   虚拟机的名字 
--memory             内存大小 
--vcpus 2            处理器数量
硬盘类型(qcow2,raw),存放位置,以及大小(G) 
--disk /var/lib/libvir/images/uosv20-1060a.qcow2,format=raw,size=6   
--disk path=/var/lib/libvir/images/uosv20-1060a.qcow2,format=qcow2,bus=virtio 
 指定光驱文件
--cdrom /mnt/cdrom/uos-server-20-1060a-amd64.iso
指定网络类型,默认是nat模式
--network bridge=br192,model=virtio 
--graphics vnc,listen=0.0.0.0,port5910  指定终端输出设备vnc端口
--noautoconsole  不自动尝试连接到客户端控制台
--accelerate    内核加速器,选项默认参数
--video   cirrus     指定video类型,默认qxl

VNC控制台登录虚拟机

代码语言:javascript
复制
virsh  vncdisplay  uosv20-1060a
:10

Windows VNC Viewer 工具连接5910端口安装操作系统

virsh qemu-img qemu-kvm 命令不补全

代码语言:javascript
复制
dnf  install bash-completion
重启系统生效

virt-manager

virt-manager是一个基于KVM的虚拟机管理工具,它提供了一个图形用户界面(GUI),用户更加直观和方便地管理虚拟机。virt-manager 提供了直观的图形界面,用户可以通过它来创建、配置、启动、停止和监控虚拟机。实现对虚拟机的整个生命周期管理,包括创建、修改、删除虚拟机,以及对虚拟机进行快照和迁移等操作。存储管理允许用户配置虚拟机的存储和网络设置,包括添加虚拟硬盘、配置网络接口和网络源等。远程管理,通过SSH连接到远程服务器上的libvirt守护进程,从而实现远程虚拟机管理。

安装virt-manager

代码语言:javascript
复制
dnf  install virt-manager

启动virt-manager

代码语言:javascript
复制
virt-manager

虚拟机操作

virsh console

当操作系统内核崩溃时会报出内核系统crash出错信息,通常启动的时候一闪而过, 而此时系统还没有起来,不能通过远程工具(比如ssh)进入系统查看,通过配置grub,把日志重定向到Serial Console中,通过Serial console来访问错误信息。

方法1

grubby --update-kernel 命令不会更新`/etc/default/grub`文件

代码语言:javascript
复制
grubby --update-kernel=ALL --args="console=tty0 console=ttyS0,115200n8"

重启系统生效 rebbot

方法2

编辑/etc/default/grub文件

代码语言:javascript
复制
GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8"

执行grub2-mkconfig 加载生效grub配置

代码语言:javascript
复制
grub2-mkconfig -o /boot/grub2/grub.cfg
  • Legacy模式 grub2-mkconfig -o /boot/grub2/grub.cfg
  • UEFI模式 grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

重启系统生效

console控制台登录虚拟机

代码语言:javascript
复制
virsh console  uosv20-1060a

acpid 部署

acpid是一个用户空间的服务进程, 用来处理电源相关事件,比如将kernel中的电源事件转发给应用程序,告诉应用程序安全的退出,防止应用程序异常退出导致数据损坏。

安装acpid软件包,并设置开机启动服务

代码语言:javascript
复制
dnf  install -y acpid 
systemctl start acpid && systemctl enable acpid

虚拟机克隆

虚拟机克隆是在KVM虚拟化环境中复制一个虚拟机到另一个新虚拟机的过程,通常包括停止源虚拟机、复制其磁盘文件、修改配置文件以区分新旧虚拟机,然后将新虚拟机注册到虚拟化平台并启动。

克隆设备必须暂停或关闭虚拟机

virt-clone 命令克隆生成磁盘文件和xml文件

代码语言:javascript
复制
virsh destroy uosv20-1060a 
virt-clone --auto-clone -o uosv20-1060a  -n  uosv20-1060a_clone
  • -o 被克隆虚拟机
  • -n 克隆后新的虚拟机
  • -f 克隆后新虚拟机的磁盘
代码语言:javascript
复制
[root@uosv20-1060e ~]# virsh  list --all
 Id   Name                 State
-------------------------------------
 -    uosv20-1060a         shut off
 -    uosv20-1060a_clone   shut off

虚拟机快照备份恢复

虚拟机快照是虚拟化技术中的一项功能,它允许用户在虚拟机的当前状态创建一个完整的、静态的副本。这个状态包括了操作系统、应用程序、配置以及数据等所有信息。

(1) uosv20-1060a虚拟机创建快照

代码语言:javascript
复制
[root@uosv20-1060e ~]# virsh snapshot-create uosv20-1060a
Domain snapshot 1713750569 created

默认快照的名称为随机指定分配,可使用snapshot-create-as命令指定快照名称

代码语言:javascript
复制
virsh snapshot-create-as 【虚拟机名】 【快照名】
virsh snapshot-create-as  uosv20-1060a uosv20-1060a_202404

(2)查看虚拟机快照的版本

代码语言:javascript
复制
[root@uosv20-1060e ~]# virsh snapshot-list  uosv20-1060a
Name         Creation Time               State
---------------------------------------------------
 1713750569   2024-04-22 09:49:29 +0800   running

(3)查看当前虚拟机镜像快照的版本

代码语言:javascript
复制
[root@uosv20-1060e ~]# virsh snapshot-current uosv20-1060a

(4)查看当前虚拟机镜像文件

代码语言:javascript
复制
[root@uosv20-1060e ~]# ll /var/lib/libvirt/qemu/snapshot/uosv20-1060a/
total 12
-rw------- 1 root root 8883 Apr 22 09:50 1713750569.xml

(5)恢复虚拟机快照

确认恢复快照的时间恢复到1713750569

代码语言:javascript
复制
[root@uosv20-1060e ~]# virsh snapshot-list uosv20-1060a
Name         Creation Time               State
---------------------------------------------------
 1713750569   2024-04-22 09:49:29 +0800   running

(6)执行恢复,并确认恢复版本

代码语言:javascript
复制
[root@uosv20-1060e ~]# virsh snapshot-revert  uosv20-1060a 1713750569

(7)删除虚拟机快照,查看虚拟机快照

代码语言:javascript
复制
[root@uosv20-1060e ~]# qemu-img info /var/lib/libvirt/images/uosv20-1060a.qcow2 --force-share
image: /var/lib/libvirt/images/uosv20-1060a.qcow2
file format: qcow2
virtual size: 50 GiB (53687091200 bytes)
disk size: 4.64 GiB
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1713750569          936 MiB 2024-04-22 09:49:29   03:14:18.744
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false

(8)删除快照

代码语言:javascript
复制
[root@uosv20-1060e ~]# virsh snapshot-delete uosv20-1060a 1713750569
Domain snapshot 1713750569 deleted

[root@uosv20-1060e ~]# qemu-img info /var/lib/libvirt/images/uosv20-1060a.qcow2 --force-share
image: /var/lib/libvirt/images/uosv20-1060a.qcow2
file format: qcow2
virtual size: 50 GiB (53687091200 bytes)
disk size: 3.72 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false

虚拟机管理命令

代码语言:javascript
复制
virsh list --all                   # 查看所有的虚拟机
virsh start uosv20-1060a           # 启动虚拟机
virsh shutdown uosv20-1060a        # 正常关机虚拟机
virsh destroy uosv20-1060a         # 强制关机(相当于拔电源)
virsh reboot uosv20-1060a          # 重启虚拟机
virsh undefine uosv20-1060a        # 删除虚拟机
virsh domrename uosv20-1060a  uosv20-1060a-server
# 虚拟机重命名(注意:必须关机重命名,开机状态下重命名会失败)
virsh suspend uosv20-1060a   # 挂起虚拟机
virsh resume uosv20-1060a    # 从挂起状态恢复
virsh autostart uosv20-1060a # 设置kvm虚拟机开机自启动(.xml文件创建软连接 /etc/libvirt/qemu/autostart/)
virsh autostart --disable uosv20-1060a   
# 取消虚拟机开机自启动(删除创建的软连接)

虚拟机配置文件管理命令

导出虚拟机配置文件

代码语言:javascript
复制
virsh dumpxml uosv20-1060a  >/data/uosv20-1060a-server.xml

注册虚拟机

代码语言:javascript
复制
virsh define /data/uosv20-1060a-server.xml

注意:拷贝xml配置文件和磁盘文件来克隆,删除uuid,修改name,网卡mac,硬盘source file,vnc端口号等,避免与被克隆虚拟机冲突。

修改虚拟机的配置文件(虚拟磁盘文件路径)

代码语言:javascript
复制
virsh edit uosv20-1060a-server

启动虚拟机

代码语言:javascript
复制
virsh start uosv20-1060a-server
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-22,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com