Linux安装KVM

news2024/12/23 12:16:13

一、虚拟化技术

1、全虚拟化和半虚拟化技术

如果给KVM、XEN简单归类的话,KVM是完全虚拟化技术又叫硬件辅助虚拟化技术(Full Virtualization)。相反,XEN是半虚拟化技术(paravirtualization),也叫做准虚拟化技术。

全虚拟化技术:

半虚拟化技术:

KVM是在虚拟机和硬件之间加了一个软件层--Hypervisor,或者叫做虚拟机管理程序(VMM),KVM的hypervisor是直接运行在物理硬件之上的。

XEN是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,使客户操作系统集成了虚拟化方面的代码,该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。 

2、KVM和XEM架构

也有人将KVM架构分解为两部分:KVM驱动,即linux kernel的一个模块和Qemu,Qemu用于模拟虚拟机的用户空间组件,提供I/O设备模型,访问外设的途径。

其最大的优势在于KVM使用Linux内核集成的,所以速度较快。同时,KVM是完全虚拟的,所以不需要区分pv和hvm,可以安装各种Linux发行版和Windows发行版,可以运行在支持虚拟化扩展的X86和X86-64硬件架构上。

XEN实际上出现的时间要早于KVM,它是由剑桥大学开发的,一个开源的虚拟机监视器。半虚拟化架构决定了它注定不是真正的虚拟机,只是自己运行了一个内核的例子,同时区分Xen+pv+和Xen+hvm,其中pv只支持Linux,而hvm则支持Windows系统。

除此之外,XEN还拥有更好的可用资源、平台支持、可管理性、实施、支持动态迁移和性能基准等优势。

3、虚拟化技术对比

KVM、Xen、VMware的对比如下:

KVM 是基于 Linux 内核的虚拟机(Kernel-based VirtualMachine),是第一个整合到 Linux内核的虚拟化技术。

在 KVM 模型中,每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可 以在用户空间启劢客户机操作系统。一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己 的内核和用户模式)

XEN 需要升级内核,只能支持和物理机系统一样的操作系统。

KVM支持 linux 以外的其它系统,比如:windows。

从性能和成熟度上而言,XEN要优于KVM,但是红帽等公司在KVM上的投入也越来越多,但诸如AWS、阿里云等云服务提供商仍然使用的XEN半虚拟化技术,XEN也积累了很多优秀的解决方案,稳定性更优,而KVM最大的好处就在于它是与Linux内核集成的,可以说KVM与ESX拥有相同的架构,这也让KVM得到大批用户的支持。

VMware与KVM和XEN最大的不同是VMware是闭源的,而KVM和XEN则是开源的。

VMWare (Virtual Machine ware)是一个“虚拟PC”软件公司,它的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。

与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器,VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就像标准Windows应用程序那样切换。

每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。

二、虚拟化服务平台

KVM这样的Hypervisor软件,实际上是提供了一种虚拟化能力,模拟CPU的运行,更为底层。但是它的用户交互并不良好,不方便使用。

于是,为了更好地管理虚拟机,就需要OpenStack这样的云管理平台。云管理平台有点像个商店,负责管理商品(计算资源、存储资源、网络资源等),卖给用户,但它本身不制造商品(不具备虚拟化能力),它的商品,来自于KVM。

当然,如果不用KVM,也可以用Xen等其它hypervisor。

1、虚拟机的组成

虚拟机组成:  

  • 内核虚拟化模块(KVM)
  • 系统设备仿真(QEMU)
  • 虚拟机管理程序(LIBVIRT)
  • 虚拟机配置声明文件(一个XML,位置: /etc/libvirt/qemu)
  • 虚拟机硬盘(一个磁盘镜像文件,位置: /var/lib/libvirt/images)

KVM虚拟机组成:

KVM作为内核的一个模块,来提供虚拟化功能。如果系统需要虚拟化功能,则KVM模块可以被linux内核按需动态加载到内存运行。如果不需要的KVM功能,可以动态卸载该模块。

QEMU是一套模拟CPU的开源软件。KVM作为内核的一个模块,可以通过QEMU提供的模拟方式,来使用处理器。这样,KVM就提供了一个模拟的(虚拟的)硬件层,虚拟机就运行在这个模拟的硬件层之上。

2、Libvirt

Libvirt是用于管理虚拟化平台的开源的API,后台程序和管理工具。

用一句话概括libvirt就是:为了安全高效的管理节点上的各个域,而提供一个公共的稳定的软件层。当然,这里的管理,既包括本地的管理,也包含远程的管理。

它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术,这些API在云计算的解决方案中广泛使用。

libvirt是提供了一个方便的方式来管理虚拟机和其他虚拟化功能的软件的集合,如存储和网络接口管理。这些软件包括一个API库,一个守护进程(Libvirtd),和一个命令行实用程序(virsh)。

libvirt的首要目标是能够管理多个不同的虚拟化供应商/虚拟机管理程序提供一个单一的方式。例如,命令“virsh列表等等都可以用于任何支持现有的虚拟机管理程序列表(KVM、Xen、VMware ESX,等)不需要学习管理程序特定的工具!

支持的虚拟化平台:

  • LXC : lightweight Linux container system;
  • OpenVZ :lightweight Linux container system;
  • Kernel-based Virtual Machine/QEMU (KVM) : open-source hypervisor for Linux and SmartOS;
  • Xen : Bare-Metal hypervisor;
  • User-mode Linux (UML) :paravirtualized kernel;
  • VirtualBox : hypervisor by Oracle (formerly by Sun) for Windows, Linux, Mac OS X, and Solaris;
  • VMware ESX and GSX : hypervisors for Intel hardware;
  • VMware Workstation and Player : hypervisors for Windows and Linux;
  • Hyper-V : hypervisor for Windows by Microsoft;
  • PowerVM : hypervisor by IBM for AIX, Linux and IBM i;
  • Parallels Workstation : hypervisor for Mac by Parallels IP Holdings GmbH;
  • Bhyve : hypervisor for FreeBSD 10+;

libvirt中涉及到几个重要的概念:

  • 节点(Node):一个物理机器,上面可能运行着多个虚拟客户机。Hypervisor和Domain都运行在Node之上。
  • Hypervisor:也称虚拟机监控器(VMM),如KVM、Xen、VMware、Hyper-V等,是虚拟化中的一个底层软件层,它可以虚拟化一个节点让其运行多个虚拟客户机(不同客户机可能有不同的配置和操作系统)。
  • 域(Domain):是在Hypervisor上运行的一个客户机操作系统实例。域也被称为实例(instance,如亚马逊的AWS云计算服务中客户机就被称为实例)、客户机操作系统(guest OS)、虚拟机(virtual machine),它们都是指同一个概念。

关于节点、Hypervisor和域的关系,可以简单地用下图来表示。

libvirt的管理功能主要包含如下五个部分: 

(1)域的管理:包括对节点上的域的各个生命周期的管理,如:启动、停止、暂停、保存、恢复和动态迁移。也包括对多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU,当然不同的Hypervisor上对这些热插拔的支持程度有所不同。

(2)远程节点的管理:只要物理节点上运行了libvirtd这个守护进程,远程的管理程序就可以连接到该节点进程管理操作,经过认证和授权之后,所有的libvirt功能都可以被访问和使用。libvirt支持多种网络远程传输类型,如SSH、TCP套接字、Unix domain socket、支持TLS的加密传输等。假设使用最简单的SSH,则不需要额外配置工作,比如:example.com节点上运行了libvirtd,而且允许SSH访问,在远程的某台管理机器上就可以用如下的命令行来连接到example.com上,从而管理其上的域。

virsh -c qemu+ssh://root@example.com/system

(3)存储的管理:任何运行了libvirtd守护进程的主机,都可以通过libvirt来管理不同类型的存储,如:创建不同格式的客户机镜像(qcow2、raw、qde、vmdk等)、挂载NFS共享存储系统、查看现有的LVM卷组、创建新的LVM卷组和逻辑卷、对磁盘设备分区、挂载iSCSI共享存储,等等。当然libvirt中,对存储的管理也是支持远程管理的。

(4)网络的管理:任何运行了libvirtd守护进程的主机,都可以通过libvirt来管理物理的和逻辑的网络接口。包括:列出现有的网络接口卡,配置网络接口,创建虚拟网络接口,网络接口的桥接,VLAN管理,NAT网络设置,为客户机分配虚拟网络接口,等等。

(5)提供一个稳定、可靠、高效的应用程序接口(API)以便可以完成前面的4个管理功能。

libvirt主要由三个部分组成,它们分别是:应用程序编程接口(API)库、一个守护进程(libvirtd)和一个默认命令行管理工具(virsh)。

应用程序接口(API)是为了其他虚拟机管理工具(如virsh、virt-manager等)提供虚拟机管理的程序库支持。libvirtd守护进程负责执行对节点上的域的管理工作,在用各种工具对虚拟机进行管理之时,这个守护进程一定要处于运行状态中,而且这个守护进程可以分为两种:一种是root权限的libvirtd,其权限较大,可以做所有支持的管理工作;一种是普通用户权限的libvirtd,只能做比较受限的管理工作。virsh是libvirt项目中默认的对虚拟机管理的一个命令行工具。

virsh提供管理各虚拟机的命令接口:支持交互模式:

virsh <控制指令> [虚拟机名称] [参数]

virsh list --all								# 列出所有虚拟机
virsh nodeindo									# 查看KVM节点(真机)服务器信息
virsh net-list									# 列出虚拟网络
virsh dominfo <虚拟机名称>						# 查看指定虚拟机信息
virsh autostart <虚拟机名称>						# 设置虚拟机为开机自启
virsh autostart --disable <虚拟机名称>			# 关闭虚拟机开机自启
virsh start|reboot|shutdown <虚拟机名称>			# 运行/重启/关闭
virsh destroy <虚拟机名称>						# 强制关闭虚拟机

3、KVM相关安装包

KVM有如下安装包:

  • qemu-kvm 主要的KVM程序包;
  • python-virtinst 创建虚拟机所需要的命令行工具和程序库;
  • virt-manager GUI虚拟机管理工具;
  • virt-top 虚拟机统计命令;
  • virt-viewer GUI连接程序,连接到已配置好的虚拟机;
  • libvirt C语言工具包,提供libvirt服务;
  • libvirt-client 虚拟客户机提供的C语言工具包;
  • virt-install 基于libvirt服务的虚拟机创建命令;
  • bridge-utils 创建和管理桥接设备的工具;

必备软件:

  • qemu-kvm: 为kvm提供底层仿真支持;
  • libvirt-daemon: libvirtd守护进程,管理虚拟机;
  • libvirt-client: libvirt客户端软件,提供客户端管理命令(virsh命令);
  • libvirt-daemon-driver-qemu: libvirtd连接qemu的驱动程序;

可选::

  • virt-install: 系统安装工具;
  • virt-manager: 图形管理工具;
  • virt-v2v: 虚拟机迁移工具;
  • vrit-p2v: 物理机迁移工具;

三、KVM 图形方式安装

检查CPU是否支持虚拟化:

[root@localhost ~]#grep vmx /proc/cpuinfo

查看是否加载了KVM模块:

[root@localhost ~]#lsmod | grep kvm

如果没有加载,运行以下命令:

[root@localhost ~]# modprobe kvm
[root@localhost ~]# modprobe kvm-intel
[root@localhost ~]# lsmod | grep kvm

此时,内核模块导出了一个名为/dev/kvm的设备,这个设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间。

[root@localhost ~]#ll /dev/kvm

crw-rw-rw-. 1 root kvm 10, 232 Jul 24 23:25 /dev/kvm

桥接网络:

安装brctl命令,用于管理网桥的工具:

[root@localhost ~]# yum -y install bridge-utils

重启网络服务:

[root@localhost ~]# systemctl restart network

配置KVM的网桥模式

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@localhost network-scripts]# vi ifcfg-br0
TYPE="Bridge" //类型修改为Bridge
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="br0" //网卡名修改为br0
#UUID="11b3aae9-6e3b-42ac-a232-d30499756c40" //注释UUID
DEVICE="br0" //设备名称修改为br0
ONBOOT="yes"
IPADDR="192.168.150.131"
PREFIX="24"
GATEWAY="192.168.150.1"
DNS1="8.8.8.8"
[root@localhost network-scripts]# vi ifcfg-ens33
TYPE="Ethernet"
BRIDGE="br0" //添加配置为br0
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="11b3aae9-6e3b-42ac-a232-d30499756c40"
DEVICE="ens33"
ONBOOT="yes"
#IPADDR="192.168.150.131" //注释掉以下几行
#PREFIX="24"
#GATEWAY="192.168.150.1"
#DNS1="8.8.8.8"

重启网卡服务:

[root@localhost ~]# systemctl restart network

查看网卡:

[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29866991 no ens33
vnet0
virbr0 8000.525400a69cd1 yes virbr0-nic

查看ip信息:

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:0c:29:86:69:91 brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fe86:6991/64 scope link
valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_P> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:86:69:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.150.131/24 brd 192.168.150.255 scope global dynamic br0
valid_lft 1063sec preferred_lft 1063sec
inet6 fe80::20c:29ff:fe86:6991/64 scope link
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:a6:9c:d1 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:a6:9c:d1 brd ff:ff:ff:ff:ff:ff
8: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:f2:fe:6f brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fef2:fe6f/64 scope link
valid_lft forever preferred_lft forever

安装libvirt及kvm:

[root@localhost ~]# yum -y install libcanberra-gtk2 qemu-kvm.x86_64 qemu-kvm-tools.x86_64 libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch libvirt-python.x86_64 libiscsi-1.7.0-5.el6.x86_64 dbus-devel virt-clone tunctl virt-manager libvirt libvirt-python python-virtinst

简化安装kvm虚拟化套件方法:

[root@localhost ~]# yum -y install virt*

由于要用virt-manager图形化安装虚拟机,所以还需要安装X-window:

[root@localhost ~]# yum groupinstall "X Window System"

安装中文字符,解决界面乱码问题:

[root@localhost ~]# yum install -y dejavu-lgc-sans-fonts

[root@localhost ~]# yum groupinstall -y "Fonts"

启用libvirt:

[root@localhost ~]# systemctl enable libvirtd

[root@localhost ~]# systemctl start libvirtd

使用virt-manager管理虚拟机,通过xmanager工具连接。

xshell ssh 到服务器,执行virt-manager,自动打开已安装的xmanager 虚拟机管理窗口。

创建虚拟机:

选择采用本地光盘镜像安装: 

安装方式支持本地安装、远程安装、PXE安装、vmdk磁盘镜像导入安装。

选择安装Red Hat8:

 

root家目录不能被Libvirt访问:

把光盘放到/tmp下即可。 

网卡类型选择:

选择NAT网络。

安装操作系统: 

KVM进程:

虚拟化网络配置:

kvm中的virbr0是一个虚拟网桥,也可以当做虚拟交换机用,和vmware创建的虚拟交换机vmnet最大的不同在于,virbr0虚拟交换机是有地址的。 

选择NAT模式网络, 自动连到虚拟交换机,virbr0默认自带DHCP功能。

四、KVM命令行方式安装

关闭防火墙和selinux:

[root@localhost ~]# getenforce
Disabled

[root@localhost ~]# systemctl stop firewalld

查看cpu是否开启虚拟化:

[root@localhost ~]# egrep -o ‘(vmx|svm)’ /proc/cpuinfo
vmx
vmx
[root@localhost ~]# dmesg | grep kvm

如果什么也不出来就对了,出来kvm:disabled by blos,就是cpu没有开启虚拟化。

安装KVM套件:

[root@localhost ~]# yum -y install qemu-kvm qemu-kvm-tools libvirt

启动libvirtd之后我们可以使用ifconfig来查看,libvirtd已经为我们安装了一个桥接网卡。

[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# systemctl enable libvirtd
[root@localhost ~]# systemctl status libvirtd

[root@localhost ~]# ifconfig
virbr0: flags=4099 mtu 1500
        inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
        ether 52:54:00:9a:0e:e3 txqueuelen 1000 (Ethernet)
        RX packets 0 bytes 0 (0.0 B)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 0 bytes 0 (0.0 B)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

准备虚拟机硬盘:

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 27G 2.2G 25G 8% /
/dev/sda1 1014M 137M 878M 14% /boot
tmpfs 394M 0 394M 0% /run/user/0

[root@localhost ~]# cd /opt/
[root@localhost ~]# ls
CentOS-7-x86_64-Minimal-1810.iso

[root@localhost ~]# dd if=/dev/cdrom of=/opt/CentOS-7-x86_64-Minimal-1810.iso
9109504+0 records in
9109504+0 records out
4664066048 bytes (4.7 GB) copied, 227.7 s, 20.5 MB/s

[root@localhost ~]# qemu-img create -f qcow2 /opt/yyds.qcow2 6G
[root@localhost ~]# ll
total 4555144
-rw-r–r-- 1 root root 197120 May 13 14:31 yyds.qcow2
-rw-r–r-- 1 root root 4664066048 May 13 14:28 CentOS-7-x86_64-Minimal-1810.iso

解释说明:

  • -f制定虚拟机格式;
  • /opt/Centos 存放路径;
  • 6G代表镜像大小的;

命令行安装KVM虚拟机: 

[root@localhost ~]# yum -y install virt-install

[root@localhost ~]# virt-install --virt-type=kvm --name=yyds --vcpus=1 -r 1024 --cdrom=/opt/CentOS-7-x86_64-Minimal-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/opt/yyds.qcow2,size=6,format=qcow2

[root@localhost ~]# virsh list --all
Id Name State
1  yyds running

kvm有几种安装方式 

--disk 指定虚拟机磁盘镜像创建的位置,创建一个img镜像文件--disk path=/opt/yyds.img,size=6。

默认连接端口是从5900开始的:

[root@localhost ~]# netstat -lntup | grep 5900
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 3032/qemu-kvm

VNC连接虚拟机:

如果查看5900端口开启,但是vnc无法连接虚拟机时,看下防火墙是否开启,创建虚机用vnc连接是从默认端口5900开始。 

虚拟机安装完成之后是关闭了,我们需要启动;

[root@localhost ~]# virsh start yyds
[root@localhost ~]# virsh list --all
Id Name State
2  yyds running

查看虚拟机的虚拟网卡:

[root@localhost ~]# bridge link
[root@localhost ~]# ip link

virbr0网桥上接入了两个vnet0和vnet1虚拟网卡,vnet0连接到vmnet2虚拟机,vnet1连接到vmnet8虚拟机,连接到同一个virbr0上的vmnet可以互相访问。

可以自己添加一个虚拟交换机:

可以指定网段: 

选择虚拟网络模式,原来的virbr0是NAT模式的,NAT模式会自动做SNAT,如果物理机能访问Inelnet创建的虚拟机也可以访问Inelnet。

 

virbr1就是新建的虚拟交换机:

也可以自己手动创建一个虚拟交换机:

[root@localhost ~]# nmcli add con-name br-test ifname br-test type bridge ipv4.addresses 10.0.2.1/24 ipv4.method manual
[root@localhost ~]# nmcli device status

 

在虚拟机中添加一个网卡,连接到br-test虚拟交换机上。

br-test不是kvm提供的原生虚拟机,需要关机添加的网卡才会出现。 

想让虚拟机网卡间能够互相通信,只要两个虚拟机的虚拟网卡使用同一个虚拟交换机(虚拟网桥)就可以了。 

virsh命令行操作虚拟机:

查看运行的虚拟机列表:

virsh list

调出虚拟机:

virt-viewer rhel8-2

 查看所有虚拟机,包括运行和停止的:

virsh list --all

自动启动虚拟机:

virsh autostart +虚拟机名称

连接虚拟机:

virsh console +虚拟机名称

退出虚拟机:

ctrl+]

开启虚拟机:

virsh start +虚拟机名称

关闭虚拟机:

virsh shutdown +虚拟机名称

如果无法关机,需要安装:

yum install -y acpid

删除关闭虚拟机:

virsh destroy +域名

挂起虚拟机:

virsh resume +域名

取消自动启动:

virsh auotstart --disable +域名

彻底删除虚拟机:

virsh destroy +域名

解除标记:

virsh undefine +域名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线上环境内存溢出-OutOfMemoryError

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 线上环境内存溢出-OutofMemoryError前言一、OutOfMemoryError是什么&#xff1f;二、实际情况&#xff08;参考&#xff09;解决方案1.实战总结前言 公司线上环境&#xff0…

getBoundingClientRect属性研究

getBoundingClientRect属性研究 概念 getBoundingClientRect 返回 width、height和下图中的6个属性 实测总结&#xff1a; 抓住一个核心点&#xff0c;就是height、width的值&#xff1a; box-sizing 是 content-box时&#xff0c;width和height 内容borderpaddingbox-siz…

国家级专新特精“小巨人”「皖仪科技」携手企企通,打造采购数字化平台成功上线

近日&#xff0c;安徽皖仪科技股份有限公司&#xff08;以下简称“皖仪科技”&#xff09;携手企企通共同打造的数字化采购管理系统成功上线。基于皖仪科技的采购业务流程和规则&#xff0c;形成全新的数字化采购体系&#xff0c;在推动企业降本增效的同时&#xff0c;实现企业…

单商户商城系统功能拆解42—应用中心—商城公告

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…

冠状病毒疾病优化算法 (COVIDOA)附matlab代码

​✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法…

npp各个平台npp数据比较

文章目录1GEE中的npp数据2 与其他数据的比较1GEE中的npp数据 在GEE上查阅npp&#xff0c;可以看到有连个数据集&#xff0c;一个是Terra的&#xff0c;另一个是Aqua的。 我比较了两个的不同&#xff0c;发现Terra是2000-目前的&#xff0c;而Aqua是2002-目前的&#xff0c;都是…

2022吴恩达机器学习课程——第一课

注&#xff1a;参考B站视频教程 视频链接&#xff1a;【(强推|双字)2022吴恩达机器学习Deeplearning.ai课程】 文章目录第一周一、监督学习与无监督学习二、线性回归三、梯度下降第二周一、向量化二、特征缩放第三周一、逻辑回归二、训练逻辑回归模型三、逻辑回归中的梯度下降四…

[运维]如何快速压缩一个数据库的硬盘占用大小(简单粗暴但有效)

文章目录前言一、数据库文件为什么会那么大&#xff1f;1.数据空间2.日志空间3.索引空间4.其他二、我的解决方案总结前言 在维护网站时我们经常会遇到数据库占用服务器磁盘空间的问题。高端的食材往往只需要采用最朴素的烹饪方式。本文我讲一个简单粗暴但有效的方法。本文以Sq…

RabbitMQ快速上手以及RabbitMQ交换机的四种模式

Win10安装&#xff1a; ​win10下安装 RabbitMQ​_柚几哥哥的博客-CSDN博客 Linux安装&#xff1a; Linux下载安装 RabbitMQ​_柚几哥哥的博客-CSDN博客 一、基础使用 1、导入依赖 <!--RabbitMQ--><dependency><groupId>org.springframework.boot</g…

JAVA12_06学习总结(JDBC,工具类优化)

今日内容 1. PreparedStatement PreparedStatement--预编译步骤1)注册驱动2)获取数据库连接对象3)准备sql语句--不需要拼接--需要的参数全部使用 ? 占位符4)通过数据库连接对象,获取预编译对象,同时将sql语句房费数据库,将参数和参数类型都存储在预编译中Connection中的方法…

均匀传输线的串扰和饱和长度

下图为串扰的电路模型&#xff0c;动态线与静态线之间通过互容与互感联系&#xff0c;这样也说明了动态线的信号耦合到静态线上的条件是存在di/dt或者dv/dt时&#xff0c;也就是说只在信号边沿上产生串扰&#xff0c;当电压或者电流为常数的时候静态线上就不会有串扰的信号。 信…

扩散模型:Diffusion models as plug-and-play priors作为即插即用先验的扩散模型

扩散模型&#xff1a;Diffusion models as plug-and-play priors作为即插即用先验的扩散模型0.摘要1.概述2.方法2.1.问题设置2.2.将去噪扩散概率模型作为先验3.实验&#xff1a;图像生成3.1.MNIST的简单说明3.2.使用现成组件条件生成脸部图像4.实验&#xff1a;语义分割附录B&a…

Ubuntu 20.04 系统最快安装WRF软件手册

前言 天气研究和预报&#xff08;WRF&#xff09;模型是一种中尺度数值天气预报系统&#xff0c;在全球范围内用于业务预报和研究目的。 这是在基于Intel的i7&#xff08;12核&#xff09;Linux Ubuntu 20.04 LTS系统上安装WRF 4.2.1的版本。这将有助于初学者在普通台式机上实现…

树莓派4b+mcp2515实现CAN总线通讯和系统编程(一.配置树莓派CAN总线接口)

文章目录前言硬件连线树莓派环境准备启用树莓派ssh启用mcp2515驱动下载can-utils工具测试CAN通讯开启CAN网卡测试发送和接收前言 树莓派本身是没有CAN通讯能力的&#xff0c;但他有mcp2515模块的驱动&#xff0c;可以通过SPI来控制mcp2515进行CAN的通讯。 本章主要讲,如何使能…

基于卡尔曼滤波的二维目标跟踪(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

双十二选哪个品牌led灯好一点?国产led灯这些品牌护眼好

现在绝大部分人造灯光都是使用led灯珠作为发光源了&#xff0c;所以led灯普遍的质量都比较好&#xff0c;也能护眼&#xff0c;特别是习惯晚上熬夜工作、学习、看书的人群&#xff0c;也都会选择led台灯来辅助照明&#xff0c;因为相比传统的家用室内顶灯&#xff0c;led护眼灯…

【小游戏】Unity游戏愤怒的足球(小鸟)

目录 1.弹弓逻辑 2.鸟的逻辑 3.GameManager主逻辑 文末有源工程地址 难度系数: ★★★★☆ 游戏玩法: 愤怒的足球,其实就是经典的愤怒的小鸟换图 项目简介: 功能完善,主要代码逻辑完整 本文内容: 记录一下这个工程,对内部代码逻辑没有深入了解有待以后发掘 1.弹弓逻…

workerman 聊天demo

1.demo下载 链接: https://pan.baidu.com/s/1MOqcDwvrZGgaYpZUBxxZiA 提取码: 2yqf 2.安装workerman 我这里使用的是tp5框架 下载官方压缩包解压到根目录 3.workerman 数据发送相关类 将worker目录放到项目extend文件夹中 4.启用workerman 登录服务器 linux启动方式&…

安卓APP源码和设计报告——购物APP的设计与实现

2021—2022学年第二学期期末考试 《Android手机软件开发》实践考核 项目设计说明书 项目名称&#xff1a; 购物APP的设计与实现 专 业&#xff1a; 计算机科学与技术 学 号&#xff1a; 姓 名&#xff1a; 任课教师&#xff1a; 2022年6月12日 目 录 1.项目概述11 2…

阿里云搭建博客之如何设置网页为中文

今天&#xff0c;在阿里云上参照“我的教程”–“搭建云上博客”中的指导&#xff0c;基于ApachemysqlWordPress搭建个人博客&#xff0c;参照上面的教程完成博客的搭建。但证登录博客后&#xff0c;发现业务展示为英文。在setting—>site language 设置中只有英文&#xff…