河曲智叟 发表于 2024-8-21 04:40:17

03--KVM假造化

前言:这里开始涉及到云计算内容,假造化使云计算发展,云计算推动假造化进步,两者相辅相成,这一章总结一下kvm假造化的解决方案。
1、底子概念

1.1、云计算

从前要完成信息处理, 是需要在一个客观存在的计算机上完成的, 它看得见摸得到。厥后随着计算机硬件、网络技术、存储技术的飞速发展, 计算机硬件性能过剩, 因为足够高的性能在大部分时间是被浪费掉的, 并没有到场客观运算; 那假如将资源集中起来, 计算任务去共享、复用集中起来的资源, 将是对资源的极大节省和服从的极大提升; 这就是云计算产生的背景, 它就是将巨大的计算资源集中在某个地方或是某些地方, 而不再是放在身边的计算机了, 用户的每一次计算, 都发生在远端的云计算机房内。
云计算的服务类型:


[*]SaaS(软件即服务):通过云端提供完备的应用程序,用户通过网页欣赏器等方式访问,如微信客户端。
[*]PaaS(平台即服务):云服务提供商提供给客户开辟、运维应用程序的运行环境, 用户负责维护本身的应用程序, 但并不掌控操纵系统、硬件以及运作的网络底子架构。如aliyun的RDS-MySQL、RDS-Redis等。
[*]IaaS(底子设施即服务):提供底子的计算资源,如假造机、存储空间等,用户可以自由配置和管理,如aliyun的ECS、腾讯的CMS。
1.2、假造化

假造化是一种资源管理技术, 它将计算机的各种实体资源予以抽象和转化, 并提供分割、重新组合, 以达到最大化利用物理资源的目的; 广义上来说, 我们一直以来对物理硬盘所做的逻辑分区、以及厥后的LVM, 都可以纳入假造化的范畴; 在没有假造化之前, 一个物理主机上面只能运行一个操纵系统及其之上的一系列运行环境和应用程序, 有了假造化技术, 一个物理主机可以被抽象、分割成多个假造的逻辑意义上的主机, 向上支持多个操纵系统及其之上的运行环境和应用程序, 则其资源就可以被最大化的利用
半假造化:
  纯软件的假造化可以做到第一个目标, 但性能不是很好, 而且软件设计的复杂度大大增长。
  那么假如放弃第一个目标呢?让客户机意识到本身是运行在假造化环境里, 并做相应修改以配合VMM, 这就是半假造化(Para-Virtualization)。一方面, 可以提升性能和简化VMM软件复杂度;另一方面, 也不需要太依靠硬件假造化的支持, 从而使得其软件设计(至少是VMM这一侧)可以跨平台且是优雅的。“本质上, 准假造化弱化了对假造机特别指令的被动截获要求, 将其转化成客户机操纵系统的主动关照。但是, 准假造化需要修改客户机操纵系统的源代码来实现主动关照。”典范的半假造化技术就是virtio, 使用virtio需要在宿主机/VMM和客户机里都相应地装上驱动。
全假造化:
  与半假造化相反的, 全假造化(Full Virtualization)对峙第一个理想化目标:客户机的操纵系统完全不需要改动。敏感指令在操纵系统和硬件之间被VMM捕捉处理, 客户操纵系统无须修改, 所有软件都能在假造机中运行。因此, 全假造化需要模仿出完备的、和物理平台一模一样的平台给客户机, 这在达到了第一个目标的同时也增长了假造化层(VMM)的复杂度。
  性能上, 2005年硬件假造化鼓起之前, 软件实现的全假造化完败于VMM和客户机操纵系统协同运作的半假造化, 这种情况一直连续到2006年。之后以Intel VT-x、VT-d为代表的硬件假造化技术的鼓起, 让由硬件假造化辅助的全假造化全面超过了半假造化。但是, 以virtio为代表的半假造化技术也一直在演进发展, 性能上只是略逊于全假造化, 加之其较少的平台依靠性, 依然受到广泛的欢迎。
1.3、kvm

KVM全称为Kernel-based Virtual Machine,是一种基于内核的假造机解决方案,利用硬件假造化技术实现全假造化。
每个KVM客户机对应于宿主机上的一个Linux进程,其中每个假造CPU(vCPU)是该进程的一个线程,并有一个专门处理IO的线程,它们组成一个线程组。因此,宿主机像调度普通进程一样调度这些客户机,可以通过Linux的进程调度机制实现不同客户机的权限限制和优先级设置。
客户机看到的硬件装备是由QEMU模仿的(不包括透传的VT-d装备)。当客户机操纵模仿装备时,QEMU会截获并将其转换为对实际物理装备(即使这些装备可能不存在或者只是假造化的实体)的驱动操纵。
2、KVM假造机创建

由于KVM已经是kernel源代码的一部分, 以是不需要别的安装, 主要是安装QEMU 假造化工具,底子环境配置如下
https://i-blog.csdnimg.cn/direct/2fa6c3d2a6594405906a0a5c384af333.png

将安装所需要的库克隆到安装主机
$ git clone https://gitee.com/mirschao/kvmvirtual.git
$ bash kvmvirtual/installer/deploy.sh KVM中支持三种网络模式, 分别为NAT模式、bridge桥接模式、host-only仅主机模式; NAT模式通常用来在个人假造化桌面中应用广泛, 桥接模式在服务器端假造化使用广泛, host-only一般在超等大的服务厂商内部网络使用
2.1、NAT模式

查看主机中是否有假造机
# virsh list --all
Id    名称                         状态
----------------------------------------------------

#
创建假造磁盘
假造磁盘格式有raw(雷同ssd,一次性占用设定大小,速率较快数据库服务应用较多)和qcow2(雷同呆板硬盘,根据需要逐渐扩大,支持假造机克隆,假造机磁盘快照。扩容)
# qemu-img create -f raw /kvm/vdisks/test-nat-network.raw 20G
Formatting '/kvm/vdisks/test-nat-network.raw', fmt=raw size=21474836480 创建假造机
提前将iso文件上传到文件夹/kvm/isos下
https://i-blog.csdnimg.cn/direct/4f6af5a3afa14175a5eb67e1edec5b76.png

# virt-install --name=test-nat-network \
> --vcpus=2 --memory=2048 --disk=/kvm/vdisks/test-nat-network.raw \
> --cdrom=/kvm/isos/CentOS-7.6-x86_64-DVD-1810.iso --os-variant=rhel7 \
> --noautoconsole --autostart \
> --graphics vnc,listen=0.0.0.0,port=5901

开始安装......
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
#




###以下为注释


    virt-install:
      这是用于创建和安装虚拟机的命令行工具。

    --name=test-nat-network:
      指定虚拟机的名称为 test-nat-network。

    --vcpus=2:
      指定虚拟机的虚拟CPU数量为 2 个。

    --memory=2048:
      指定虚拟机的内存大小为 2048 MB(即 2 GB)。

    --disk=/kvm/vdisks/test-nat-network.raw:
      指定虚拟机的磁盘配置,/kvm/vdisks/test-nat-network.raw 表示虚拟机的磁盘镜像文件路径和名称。

    --cdrom=/kvm/isos/CentOS-7.6-x86_64-DVD-1810.iso:
      指定虚拟机的光盘镜像(ISO文件),用于安装操作系统。在这里使用的是 CentOS 7.6 的 ISO 文件路径。

    --os-variant=rhel7:
      指定操作系统类型

    --noautoconsole:
      不自动连接到虚拟机的控制台。这意味着虚拟机创建后,不会自动打开控制台窗口。

    --autostart:
      设置虚拟机在宿主机启动时自动启动。

    --graphics vnc,listen=0.0.0.0,port=5901:
      配置虚拟机的图形显示方式为 VNC,并指定以下参数:
            listen=0.0.0.0: 允许从任意地址连接 VNC。
            port=5901: VNC 监听的端口号为 5901。这意味着你可以通过 VNC 客户端连接到宿主机的 5901 端口来访问虚拟机的图形界面。
此时使用vnc毗连宿主机5901端口
https://i-blog.csdnimg.cn/direct/ddff51ac0e8b4e7ba4d6bd9540673496.png
正常安装系统,根据实际情况需求(是否订阅redhat)把kdump关掉或者开启,这个设置很占内存。然后进入网络设置,开启网卡,查看自动获取的ip与宿主机的nat网卡virbr0是否符合
https://i-blog.csdnimg.cn/direct/b226367ba5d34ad38e1ba618b5ef329f.png
https://i-blog.csdnimg.cn/direct/9d7ddc4536b047c5a325d482540cd5c0.png 后续开始正常安装系统
2.2、桥接模式

首先需要在宿主机创建一个桥接网卡
# vim /etc/sysconfig/network-scripts/ifcfg-br0
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
NAME="br0"
BOOTPROTO="static"
ONBOOT="yes"
TYPE="Bridge"
IPADDR="192.168.188.188"
GATEWAY="192.168.188.2"
NETMASK="255.255.255.0"
DNS1="114.114.114.114"
DEFROUTE="yes" 将宿主机原先网卡ens33也桥接到br0上,br0透过ens33上网
# cp /etc/sysconfig/network-scripts/{ifcfg-ens33,ifcfg-ens33.bak}
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE="ens33"
NAME="ens33"
BOOTPROTO="none"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
BRIDGE="br0"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes" 重启网络
# systemctl restart network
https://i-blog.csdnimg.cn/direct/f7e1c80be9284ef78cf00ab4caed832f.png
创建假造机
#qemu-img create -f raw /kvm/vdisks/template.raw 20G
Formatting '/kvm/vdisks/template.raw', fmt=raw size=21474836480
# virt-install --name=template \
> --vcpus=2 --memory=2048 --disk=/kvm/vdisks/template.raw \
> --cdrom=/kvm/isos/CentOS-7.6-x86_64-DVD-1810.iso --os-variant=rhel7 \
> --noautoconsole --autostart \
> --network bridge=br0 \
> --graphics vnc,listen=0.0.0.0,port=5900

开始安装......
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
这里配置一下静态ip(方便后续实行)
https://i-blog.csdnimg.cn/direct/969a8a396b86489fbed4a001ffd61869.png
 后续操纵同上
2.3、KVM假造机快速创建

#    查看虚拟机状态
# virsh list --all
Id    名称                         状态
----------------------------------------------------
1   test-nat-network               running
2   template                     running

#查看虚拟磁盘文件
# ll /kvm/vdisks/
总用量 2784244
-rw-r--r-- 1 qemu qemu 21474836480 7月23 14:11 template.qcow2
-rw-r--r-- 1 qemu qemu 21474836480 7月23 14:11 test-nat-network.raw

#查看虚拟机硬件配置文件
# ll /etc/libvirt/qemu
总用量 16
drwxr-xr-x 2 root root   54 7月23 00:07 autostart
drwx------ 3 root root   42 7月22 22:11 networks
-rw------- 1 root root 4228 7月23 00:07 template.xml
-rw------- 1 root root 4258 7月22 22:57 test-nat-network.xml
根据下面步骤将演示nat假造机删除,删除方式如下
# virsh list --all
Id    名称                         状态
----------------------------------------------------
1   test-nat-network               running
2   template                     running

# virsh shutdown test-nat-network
域 test-nat-network 被关闭
# virsh undefine test-nat-network
域 test-nat-network 已经被取消定义
# rm -rf /kvm/vdisks/test-nat-network.raw

# virsh list --all
Id    名称                         状态
----------------------------------------------------
2   template                     running

# ll /kvm/vdisks/
总用量 1394064
-rw-r--r-- 1 qemu qemu 21474836480 7月23 14:32 template.raw
# ll /etc/libvirt/qemu
总用量 8
drwxr-xr-x 2 root root   26 7月23 14:29 autostart
drwx------ 3 root root   42 7月22 22:11 networks
-rw------- 1 root root 4228 7月23 00:07 template.xml 一台主机对应假造硬件配置和假造磁盘两个文件,想要快速创建一台假造机就是拷贝这两个文件到对应主机位置实现,但是由于系统内唯一标识符存在无法直接使用常规本领拷贝,需要借助qemu实现,具体操纵如下
# qemu-img create -f qcow2 -b /kvm/vdisks/template.raw /kvm/vdisks/test-quickly.qcow2
Formatting '/kvm/vdisks/test-quickly.qcow2', fmt=qcow2 size=21474836480 backing_file='/kvm/vdisks/template.raw' encryption=off cluster_size=65536 lazy_refcounts=off 磁盘创建成功后如何修改假造磁盘文件,以ip举例把假造磁盘挂载到中心目录上,然后进入中心目录修改(这里修改前面配置的静态ip作为示例,uuid具有唯一性且会自动生成,直接删除即可),操纵如下
# guestmount -a /kvm/vdisks/test-quickly.qcow2 -m /dev/centos/root /kvm/modify/
# cd /kvm/modify/
# ll
总用量 12
lrwxrwxrwx.1 root root    7 7月24 12:40 bin -> usr/bin
drwxr-xr-x.2 root root    6 7月24 12:39 boot
drwxr-xr-x.2 root root    6 7月24 12:39 dev
drwxr-xr-x. 75 root root 8192 7月24 12:42 etc
drwxr-xr-x.2 root root    6 4月11 2018 home
lrwxrwxrwx.1 root root    7 7月24 12:40 lib -> usr/lib
lrwxrwxrwx.1 root root    9 7月24 12:40 lib64 -> usr/lib64
drwxr-xr-x.2 root root    6 4月11 2018 media
drwxr-xr-x.2 root root    6 4月11 2018 mnt
drwxr-xr-x.2 root root    6 4月11 2018 opt
drwxr-xr-x.2 root root    6 7月24 12:39 proc
dr-xr-x---.2 root root114 7月24 12:43 root
drwxr-xr-x.2 root root    6 7月24 12:39 run
lrwxrwxrwx.1 root root    8 7月24 12:40 sbin -> usr/sbin
drwxr-xr-x.2 root root    6 4月11 2018 srv
drwxr-xr-x.2 root root    6 7月24 12:39 sys
drwxrwxrwt.7 root root132 7月24 12:43 tmp
drwxr-xr-x. 13 root root155 7月24 12:40 usr
drwxr-xr-x. 19 root root251 7月24 12:41 var
# vim ./etc/sysconfig/network-scripts/ifcfg-eth0
# cat ./etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="192.168.188.138"
PREFIX="24"
GATEWAY="192.168.188.2"
DNS1="8.8.8.8"
IPV6_PRIVACY="no"
# cd
# guestunmount /kvm/modify/
# ll /kvm/modify/
总用量 0
修改对应的配置文件方便kvm识别并为之对应
root@localhost ~]# cp /etc/libvirt/qemu/{template.xml,test-quickly.xml}
# vim /etc/libvirt/qemu/test-quickly.xml
改主机名:
    <name>test-quickly</name>
删除uuid
改磁盘:
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/kvm/vdisks/test-quickly.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
改vnc端口(避免端口冲突):
    <graphics type='vnc' port='6901' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
删除网卡mac地址(删除后如下):
    <interface type='bridge'>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
开始定义假造机
# virsh list --all
Id    名称                         状态
----------------------------------------------------
-   template                     关闭

# virsh define /etc/libvirt/qemu/test-quickly.xml
定义域 test-quickly(从 /etc/libvirt/qemu/test-quickly.xml)

# virsh list --all
Id    名称                         状态
----------------------------------------------------
-   template                     关闭
-   test-quickly                   关闭

# virsh start test-quickly
域 test-quickly 已开始

# virsh list --all
Id    名称                         状态
----------------------------------------------------
3   test-quickly                   running
-   template                     关闭

#
使用vnc访问查看假造机状态(查看ip是否被修改)
https://i-blog.csdnimg.cn/direct/72c3f082d531444d926fba17daedea64.png
快速创建完成
2.3.1、快速创建脚本和模板 

上述这个过程中许多内容可以通过修改模板文件后使用脚本代替我们完成,我们只需要提供一些底子参数(ip,主机名,假造机名)使用脚本调用对应参数实现脚本位于最开始clone下的项目中,操纵如下
# cp kvmvirtual/virtual_create/createvm.sh /usr/local/bin/createvm
# chmod a+x /usr/local/bin/createvm
# createvm --help
用法: createvm ...
Create a virtual machine and create a fixed
IP address, vnc port, virtual machine name
       -h, --help 获取帮助信息
       -a, --address 设置IP地址
       -p, --port 设置vnc端口
       -n, --name 设置虚拟机名称
退出状态:
       0 正常
       1404 一般问题 (例如:没有对应的选项)
       x403 严重问题 (例如:设置参数不正确)

制作模板文件
# vim /etc/libvirt/qemu/template.xml
修改虚拟机名和删除uuid
    <domain type='kvm'>
      <name>NAME</name>
      <memory unit='KiB'>2097152</memory>

修改磁盘配置
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/kvm/vdisks/NAME.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
删除网卡mac
修改vnc端口
    <graphics type='vnc' port='VNCPORT' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
使用脚本制作假造机
# createvm -a 192.168.188.139 -p 6902 -n test-createvm-commands-01  使用vnc登录查看
https://i-blog.csdnimg.cn/direct/76903edf6dce474392d49f6379cc1e4a.png
实际操纵中通常会通过将jumpserver的认证脚本,zabbix-agent自启动配置在模板中,快速创建后第一次开机即可自动进行认证。
3、KVM假造机生命周期管理

# virsh list
#查看运行中的虚拟机

# virsh list --all
#查看所有虚拟机

# virsh start test-quickly
#启动虚拟机test-quickly

# virsh reboot test-quickly
#重启虚拟机test-quickly

# virsh reboot test-quickly
#重启虚拟机test-quickly

# virsh destroy test-quickly
#虚拟机test-quickly断电

# virsh shutdown test-quickly
#虚拟机test-quickl关机

# virsh console test-quickly
#连接到虚拟机test-quickly 使用 virsh console毗连时间可能会遇到如下错误导致无法退出
https://i-blog.csdnimg.cn/direct/9873036ba51f4f40a54505acb52a4e59.png
 这时使用ctrl+](ctrl和右中括号)退出当前毗连
假如console毗连卡住不动, 则通过vnc进入到对应的假造机中在以下文件中添加内容
# cat /etc/securetty | tail -n 1
ttyS0
# cat /etc/grub2.cfg | grep ttyS0
linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet console=ttyS0

#此处如果有两个linux16开头的行则需要都添加console=ttyS0 https://i-blog.csdnimg.cn/direct/6764fc95a2d04040bd63dbd61856490d.png
4、假造机资源管理

 假造机cpu,内存,磁盘调整
#> cpu及memory的调整(须关机调整)
$ virsh edit VIRTUAL_MACHINES_NAME
<domain type='kvm'>
<name>VIRTUAL_MACHINES_NAME</name>
<uuid>752b7fc7-3446-40d3-9868-d46acf9a8b78</uuid>
<memory unit='KiB'>16777216</memory>
<currentMemory unit='KiB'>16777216</currentMemory>
<vcpu placement='static'>4</vcpu>
<os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='hd'/>
</os>
......
......
......
#> disk磁盘增加
$ qemu-img create -f /kvm/vdisks/VMACHINE_NAME_DATA_NUMBER. size
$ virsh attach-disk VMACHINE_NAME /kvm/vdisks/VMACHINE_NAME_DATA_NUMBER. vdx
    #    挂载位置
$ virsh edit VMACHINE_NAME
......
<devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/ROOT/kvm/images/k8s-master-01.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw/qcow2'/>
      <source file='/kvm/vdisks/VMACHINE_NAME.raw/qcow2'/>
      <target dev='vdx' bus='virtio'/>
    </disk>
......
#> disk磁盘移除
$ virsh detach-disk VMACHINE_NAME vdx 生产中对假造机进行配置以及相关重大变更的时间, 通常需要对假造机进行快照的创建; 以及在业务扩容的过程中, 将已存在的且符合生产要求的假造机进行克隆, 可以最快速的增长服务负载;
#> 快照的创建 -> 恢复 -> 删除
$ virsh snapshot-create-as VMACHINE_NAME VMACHINE_NAME-snapshot-$(date +%Y%m%d%H%M%S)
$ vrish snapshot-revert VMACHINE_NAME VMACHINE_NAME-snapshot-xxxxxxxxxxxxxx
$ virsh snapshot-delete VMACHINE_NAME VMACHINE_NAME-snapshot-xxxxxxxxxxxxxx
#> 克隆(需要对OLD_VMACHINE_NAME机器关机)
$ virt-clone -o OLD_VMACHINE_NAME -n NEW_VMACHINE_NAME -f /kvm/vdisks/NEW_VMACHINE_NAME.qcow2 通常情况下, 当宿主机需要生产维护or宕机劫难时, 需要我们快速的对其上的假造机进行迁徙, 考虑到这种情况, 就需要在KVM环境实施之前将假造磁盘存储目录变更为NFS/GFS的集群文件系统, 让多台KVM宿主机均可访问同一个地方的假造磁盘, 这也方便了我们进行迁徙操纵; 当然宿主机与宿主机之间也要包管网络等底子环境资源的一致性, 相互之间也肯定要做好免密认证;
$ virsh migrate --live hiops_test_migrate qemu+ssh://root@192.168.121.12/system --verbose --unsafe 5、图形化界面操纵

以上环境均为无图形化操纵手册,用于理解配置文件位置及操纵原理,实际工作中,大部分操纵均可使用webvirtualcloud和virt-manager两种假造机管理工具进行操纵,操纵方式与vmware十分相似,网上也有许多雷同教程,这里展示一下webvirtualcloud的手动部署( 假如工作环境可以使用外国网络环境可以直接使用github上提供的一键安装)
$ cat /etc/redhat-release
CentOS Stream release 8

    #    至少是centos8

$ sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
$ systemctl disable --now firewalld
$ yum -y install epel-release
$ yum -y install python3-virtualenv python3-devel libvirt-devel glibc gcc \
    nginx supervisor python3-lxml git python3-libguestfs iproute-tc \
    cyrus-sasl-md5 python3-libguestfs
$ cd /srv/
$ git clone https://github.com/retspen/webvirtcloud && cd webvirtcloud
Cloning into 'webvirtcloud'...
remote: Enumerating objects: 8955, done.
remote: Counting objects: 100% (927/927), done.
remote: Compressing objects: 100% (457/457), done.
remote: Total 8955 (delta 474), reused 864 (delta 451), pack-reused 8028
Receiving objects: 100% (8955/8955), 8.25 MiB | 649.00 KiB/s, done.
Resolving deltas: 100% (5965/5965), done.


$ pip3 install -i https://mirrors.ustc.edu.cn/pypi/web/simple pip -U
$ pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
$ pip install -U setuptools virtualenv
$ cp webvirtcloud/settings.py.template webvirtcloud/settings.py
$ virtualenv -p $(which python3) /srv/envs/webvirtcloud

    #   这条命令的目的是在 /srv/envs/ 目录下创建一个使用 Python 3 解释器的虚拟环境,用于隔离和管理 webvirtcloud 应用程序所需的 Python 环境和依赖。

$ source /srv/envs/webvirtcloud/bin/activate
(webvirtcloud) $ python /srv/webvirtcloud/conf/runit/secret_generator.py
X^*tIo&S|GhwygIp3}X)qs{wkcAy=vay~.%4^kU#,iKZs*\`&V
$ vim /srv/webvirtcloud/webvirtcloud/settings.py
SECRET_KEY = "X^*tIo&S|GhwygIp3}X)qs{wkcAy=vay~.%4^kU#,iKZs*\`&V"
$ cd /srv/webvirtcloud/
$ pip install -r conf/requirements.txt
$ python manage.py makemigrations
$ python manage.py migrate
$ vim /etc/supervisord.d/webvirtcloud.ini

command=/srv/envs/webvirtcloud/bin/gunicorn webvirtcloud.wsgi:application -c /srv/webvirtcloud/gunicorn.conf.py
directory=/srv/webvirtcloud
user=root
autostart=true
autorestart=true
redirect_stderr=true

command=/srv/envs/webvirtcloud/bin/python /srv/webvirtcloud/console/novncd
directory=/srv/webvirtcloud
user=root
autostart=true
autorestart=true
redirect_stderr=true
$ systemctl enable --now supervisord
$ supervisorctl reload
$ supervisorctl update
$ supervisorctl restart all
$ supervisorctl status
novncd                           RUNNING   pid 15774, uptime 0:00:06
webvirtcloud                     RUNNING   pid 15775, uptime 0:00:06
$ cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d/

    #    这里需要把nginx自带的虚拟主机注释掉

$ systemctl enable --now nginx 遇到usb不支持的情况,解决办法如下
$ vim /srv/webvirtcloud/vrtManager/create.py
   if "usb" in dom_caps["disk_bus"]:
         xml += """<input type='mouse' bus='{}'/>""".format("virtio" if virtio else "usb")
         xml += """<input type='keyboard' bus='{}'/>""".format("virtio" if virtio else "usb")
         xml += """<input type='tablet' bus='{}'/>""".format("virtio" if virtio else "usb")
   else:
         xml += """<input type='mouse'/>"""
         xml += """<input type='keyboard'/>"""
         xml += """<input type='tablet'/>"""
    #    修改为以下配置
      if "usb" in dom_caps["disk_bus"]:
          pass
      else:
          pass  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 03--KVM假造化