03--KVM假造化

打印 上一主题 下一主题

主题 526|帖子 526|积分 1578

前言:这里开始涉及到云计算内容,假造化使云计算发展,云计算推动假造化进步,两者相辅相成,这一章总结一下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 假造化工具,底子环境配置如下


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

查看主机中是否有假造机
  1. [root@localhost ~]# virsh list --all
  2. Id    名称                         状态
  3. ----------------------------------------------------
  4. [root@localhost ~]#
复制代码
创建假造磁盘
假造磁盘格式有raw(雷同ssd,一次性占用设定大小,速率较快数据库服务应用较多)和qcow2(雷同呆板硬盘,根据需要逐渐扩大,支持假造机克隆,假造机磁盘快照。扩容)
  1. [root@localhost ~]# qemu-img create -f raw /kvm/vdisks/test-nat-network.raw 20G
  2. Formatting '/kvm/vdisks/test-nat-network.raw', fmt=raw size=21474836480
复制代码
创建假造机
提前将iso文件上传到文件夹/kvm/isos下


  1. [root@localhost ~]# virt-install --name=test-nat-network \
  2. > --vcpus=2 --memory=2048 --disk=/kvm/vdisks/test-nat-network.raw \
  3. > --cdrom=/kvm/isos/CentOS-7.6-x86_64-DVD-1810.iso --os-variant=rhel7 \
  4. > --noautoconsole --autostart \
  5. > --graphics vnc,listen=0.0.0.0,port=5901
  6. 开始安装......
  7. 域安装仍在进行。您可以重新连接
  8. 到控制台以便完成安装进程。
  9. [root@localhost ~]#
  10. ###以下为注释
  11.     virt-install:
  12.         这是用于创建和安装虚拟机的命令行工具。
  13.     --name=test-nat-network:
  14.         指定虚拟机的名称为 test-nat-network。
  15.     --vcpus=2:
  16.         指定虚拟机的虚拟CPU数量为 2 个。
  17.     --memory=2048:
  18.         指定虚拟机的内存大小为 2048 MB(即 2 GB)。
  19.     --disk=/kvm/vdisks/test-nat-network.raw:
  20.         指定虚拟机的磁盘配置,/kvm/vdisks/test-nat-network.raw 表示虚拟机的磁盘镜像文件路径和名称。
  21.     --cdrom=/kvm/isos/CentOS-7.6-x86_64-DVD-1810.iso:
  22.         指定虚拟机的光盘镜像(ISO文件),用于安装操作系统。在这里使用的是 CentOS 7.6 的 ISO 文件路径。
  23.     --os-variant=rhel7:
  24.         指定操作系统类型
  25.     --noautoconsole:
  26.         不自动连接到虚拟机的控制台。这意味着虚拟机创建后,不会自动打开控制台窗口。
  27.     --autostart:
  28.         设置虚拟机在宿主机启动时自动启动。
  29.     --graphics vnc,listen=0.0.0.0,port=5901:
  30.         配置虚拟机的图形显示方式为 VNC,并指定以下参数:
  31.             listen=0.0.0.0: 允许从任意地址连接 VNC。
  32.             port=5901: VNC 监听的端口号为 5901。这意味着你可以通过 VNC 客户端连接到宿主机的 5901 端口来访问虚拟机的图形界面。
复制代码
此时使用vnc毗连宿主机5901端口

正常安装系统,根据实际情况需求(是否订阅redhat)把kdump关掉或者开启,这个设置很占内存。然后进入网络设置,开启网卡,查看自动获取的ip与宿主机的nat网卡virbr0是否符合

 后续开始正常安装系统
2.2、桥接模式

首先需要在宿主机创建一个桥接网卡
  1. [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
  2. [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
  3. DEVICE="br0"
  4. NAME="br0"
  5. BOOTPROTO="static"
  6. ONBOOT="yes"
  7. TYPE="Bridge"
  8. IPADDR="192.168.188.188"
  9. GATEWAY="192.168.188.2"
  10. NETMASK="255.255.255.0"
  11. DNS1="114.114.114.114"
  12. DEFROUTE="yes"
复制代码
将宿主机原先网卡ens33也桥接到br0上,br0透过ens33上网
  1. [root@localhost ~]# cp /etc/sysconfig/network-scripts/{ifcfg-ens33,ifcfg-ens33.bak}
  2. [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
  3. [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
  4. DEVICE="ens33"
  5. NAME="ens33"
  6. BOOTPROTO="none"
  7. NM_CONTROLLED="no"
  8. ONBOOT="yes"
  9. TYPE="Ethernet"
  10. BRIDGE="br0"
  11. DEFROUTE="yes"
  12. IPV4_FAILURE_FATAL="yes"
复制代码
重启网络
  1. [root@localhost ~]# systemctl restart network
复制代码

创建假造机
  1. [root@localhost ~]#  qemu-img create -f raw /kvm/vdisks/template.raw 20G
  2. Formatting '/kvm/vdisks/template.raw', fmt=raw size=21474836480
  3. [root@localhost ~]# virt-install --name=template \
  4. > --vcpus=2 --memory=2048 --disk=/kvm/vdisks/template.raw \
  5. > --cdrom=/kvm/isos/CentOS-7.6-x86_64-DVD-1810.iso --os-variant=rhel7 \
  6. > --noautoconsole --autostart \
  7. > --network bridge=br0 \
  8. > --graphics vnc,listen=0.0.0.0,port=5900
  9. 开始安装......
  10. 域安装仍在进行。您可以重新连接
  11. 到控制台以便完成安装进程。
复制代码
这里配置一下静态ip(方便后续实行)

 后续操纵同上
2.3、KVM假造机快速创建

  1. #    查看虚拟机状态
  2. [root@localhost ~]# virsh list --all
  3. Id    名称                         状态
  4. ----------------------------------------------------
  5. 1     test-nat-network               running
  6. 2     template                       running
  7. #查看虚拟磁盘文件
  8. [root@localhost ~]# ll /kvm/vdisks/
  9. 总用量 2784244
  10. -rw-r--r-- 1 qemu qemu 21474836480 7月  23 14:11 template.qcow2
  11. -rw-r--r-- 1 qemu qemu 21474836480 7月  23 14:11 test-nat-network.raw
  12. #查看虚拟机硬件配置文件
  13. [root@localhost ~]# ll /etc/libvirt/qemu
  14. 总用量 16
  15. drwxr-xr-x 2 root root   54 7月  23 00:07 autostart
  16. drwx------ 3 root root   42 7月  22 22:11 networks
  17. -rw------- 1 root root 4228 7月  23 00:07 template.xml
  18. -rw------- 1 root root 4258 7月  22 22:57 test-nat-network.xml
复制代码
根据下面步骤将演示nat假造机删除,删除方式如下
  1. [root@localhost ~]# virsh list --all
  2. Id    名称                         状态
  3. ----------------------------------------------------
  4. 1     test-nat-network               running
  5. 2     template                       running
  6. [root@localhost ~]# virsh shutdown test-nat-network
  7. 域 test-nat-network 被关闭
  8. [root@localhost ~]# virsh undefine test-nat-network
  9. 域 test-nat-network 已经被取消定义
  10. [root@localhost ~]# rm -rf /kvm/vdisks/test-nat-network.raw
  11. [root@localhost ~]# virsh list --all
  12. Id    名称                         状态
  13. ----------------------------------------------------
  14. 2     template                       running
  15. [root@localhost ~]# ll /kvm/vdisks/
  16. 总用量 1394064
  17. -rw-r--r-- 1 qemu qemu 21474836480 7月  23 14:32 template.raw
  18. [root@localhost ~]# ll /etc/libvirt/qemu
  19. 总用量 8
  20. drwxr-xr-x 2 root root   26 7月  23 14:29 autostart
  21. drwx------ 3 root root   42 7月  22 22:11 networks
  22. -rw------- 1 root root 4228 7月  23 00:07 template.xml
复制代码
一台主机对应假造硬件配置和假造磁盘两个文件,想要快速创建一台假造机就是拷贝这两个文件到对应主机位置实现,但是由于系统内唯一标识符存在无法直接使用常规本领拷贝,需要借助qemu实现,具体操纵如下
  1. [root@localhost ~]# qemu-img create -f qcow2 -b /kvm/vdisks/template.raw /kvm/vdisks/test-quickly.qcow2
  2. 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具有唯一性且会自动生成,直接删除即可),操纵如下
  1. [root@localhost ~]# guestmount -a /kvm/vdisks/test-quickly.qcow2 -m /dev/centos/root /kvm/modify/
  2. [root@localhost ~]# cd /kvm/modify/
  3. [root@localhost modify]# ll
  4. 总用量 12
  5. lrwxrwxrwx.  1 root root    7 7月  24 12:40 bin -> usr/bin
  6. drwxr-xr-x.  2 root root    6 7月  24 12:39 boot
  7. drwxr-xr-x.  2 root root    6 7月  24 12:39 dev
  8. drwxr-xr-x. 75 root root 8192 7月  24 12:42 etc
  9. drwxr-xr-x.  2 root root    6 4月  11 2018 home
  10. lrwxrwxrwx.  1 root root    7 7月  24 12:40 lib -> usr/lib
  11. lrwxrwxrwx.  1 root root    9 7月  24 12:40 lib64 -> usr/lib64
  12. drwxr-xr-x.  2 root root    6 4月  11 2018 media
  13. drwxr-xr-x.  2 root root    6 4月  11 2018 mnt
  14. drwxr-xr-x.  2 root root    6 4月  11 2018 opt
  15. drwxr-xr-x.  2 root root    6 7月  24 12:39 proc
  16. dr-xr-x---.  2 root root  114 7月  24 12:43 root
  17. drwxr-xr-x.  2 root root    6 7月  24 12:39 run
  18. lrwxrwxrwx.  1 root root    8 7月  24 12:40 sbin -> usr/sbin
  19. drwxr-xr-x.  2 root root    6 4月  11 2018 srv
  20. drwxr-xr-x.  2 root root    6 7月  24 12:39 sys
  21. drwxrwxrwt.  7 root root  132 7月  24 12:43 tmp
  22. drwxr-xr-x. 13 root root  155 7月  24 12:40 usr
  23. drwxr-xr-x. 19 root root  251 7月  24 12:41 var
  24. [root@localhost modify]# vim ./etc/sysconfig/network-scripts/ifcfg-eth0
  25. [root@localhost modify]# cat ./etc/sysconfig/network-scripts/ifcfg-eth0
  26. TYPE="Ethernet"
  27. PROXY_METHOD="none"
  28. BROWSER_ONLY="no"
  29. BOOTPROTO="none"
  30. DEFROUTE="yes"
  31. IPV4_FAILURE_FATAL="no"
  32. IPV6INIT="yes"
  33. IPV6_AUTOCONF="yes"
  34. IPV6_DEFROUTE="yes"
  35. IPV6_FAILURE_FATAL="no"
  36. IPV6_ADDR_GEN_MODE="stable-privacy"
  37. NAME="eth0"
  38. DEVICE="eth0"
  39. ONBOOT="yes"
  40. IPADDR="192.168.188.138"
  41. PREFIX="24"
  42. GATEWAY="192.168.188.2"
  43. DNS1="8.8.8.8"
  44. IPV6_PRIVACY="no"
  45. [root@localhost modify]# cd
  46. [root@localhost ~]# guestunmount /kvm/modify/
  47. [root@localhost ~]# ll /kvm/modify/
  48. 总用量 0
复制代码
修改对应的配置文件方便kvm识别并为之对应
  1. root@localhost ~]# cp /etc/libvirt/qemu/{template.xml,test-quickly.xml}
  2. [root@localhost ~]# vim /etc/libvirt/qemu/test-quickly.xml
  3. 改主机名:
  4.     <name>test-quickly</name>
  5. 删除uuid
  6. 改磁盘:
  7.     <disk type='file' device='disk'>
  8.       <driver name='qemu' type='qcow2'/>
  9.       <source file='/kvm/vdisks/test-quickly.qcow2'/>
  10.       <target dev='vda' bus='virtio'/>
  11.       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
  12.     </disk>
  13. 改vnc端口(避免端口冲突):
  14.     <graphics type='vnc' port='6901' autoport='no' listen='0.0.0.0'>
  15.       <listen type='address' address='0.0.0.0'/>
  16.     </graphics>
  17. 删除网卡mac地址(删除后如下):
  18.     <interface type='bridge'>
  19.       <source bridge='br0'/>
  20.       <model type='virtio'/>
  21.       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  22.     </interface>
复制代码
开始定义假造机
  1. [root@localhost ~]# virsh list --all
  2. Id    名称                         状态
  3. ----------------------------------------------------
  4. -     template                       关闭
  5. [root@localhost ~]# virsh define /etc/libvirt/qemu/test-quickly.xml
  6. 定义域 test-quickly(从 /etc/libvirt/qemu/test-quickly.xml)
  7. [root@localhost ~]# virsh list --all
  8. Id    名称                         状态
  9. ----------------------------------------------------
  10. -     template                       关闭
  11. -     test-quickly                   关闭
  12. [root@localhost ~]# virsh start test-quickly
  13. 域 test-quickly 已开始
  14. [root@localhost ~]# virsh list --all
  15. Id    名称                         状态
  16. ----------------------------------------------------
  17. 3     test-quickly                   running
  18. -     template                       关闭
  19. [root@localhost ~]#
复制代码
使用vnc访问查看假造机状态(查看ip是否被修改)

快速创建完成
2.3.1、快速创建脚本和模板 

上述这个过程中许多内容可以通过修改模板文件后使用脚本代替我们完成,我们只需要提供一些底子参数(ip,主机名,假造机名)使用脚本调用对应参数实现脚本位于最开始clone下的项目中,操纵如下
  1. [root@localhost ~]# cp kvmvirtual/virtual_create/createvm.sh /usr/local/bin/createvm
  2. [root@localhost ~]# chmod a+x /usr/local/bin/createvm
  3. [root@localhost ~]# createvm --help
  4. 用法: createvm [hapn]...
  5. Create a virtual machine and create a fixed
  6. IP address, vnc port, virtual machine name
  7.          -h, --help 获取帮助信息
  8.          -a, --address 设置IP地址
  9.          -p, --port 设置vnc端口
  10.          -n, --name 设置虚拟机名称
  11. 退出状态:
  12.          0 正常
  13.          1404 一般问题 (例如:没有对应的选项)
  14.          x403 严重问题 (例如:设置参数不正确)
复制代码
制作模板文件
  1. [root@localhost ~]# vim /etc/libvirt/qemu/template.xml
  2. 修改虚拟机名和删除uuid
  3.     <domain type='kvm'>
  4.       <name>NAME</name>
  5.       <memory unit='KiB'>2097152</memory>
  6. 修改磁盘配置
  7.     <disk type='file' device='disk'>
  8.       <driver name='qemu' type='qcow2'/>
  9.       <source file='/kvm/vdisks/NAME.qcow2'/>
  10.       <target dev='vda' bus='virtio'/>
  11.       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
  12.     </disk>
  13. 删除网卡mac
  14. 修改vnc端口
  15.     <graphics type='vnc' port='VNCPORT' autoport='no' listen='0.0.0.0'>
  16.       <listen type='address' address='0.0.0.0'/>
  17.     </graphics>
复制代码
使用脚本制作假造机
  1. [root@localhost ~]# createvm -a 192.168.188.139 -p 6902 -n test-createvm-commands-01
复制代码
 使用vnc登录查看

实际操纵中通常会通过将jumpserver的认证脚本,zabbix-agent自启动配置在模板中,快速创建后第一次开机即可自动进行认证。
3、KVM假造机生命周期管理

  1. [root@localhost ~]# virsh list
  2. #查看运行中的虚拟机
  3. [root@localhost ~]# virsh list --all
  4. #查看所有虚拟机
  5. [root@localhost ~]# virsh start test-quickly
  6. #启动虚拟机test-quickly
  7. [root@localhost ~]# virsh reboot test-quickly
  8. #重启虚拟机test-quickly
  9. [root@localhost ~]# virsh reboot test-quickly
  10. #重启虚拟机test-quickly
  11. [root@localhost ~]# virsh destroy test-quickly
  12. #虚拟机test-quickly断电
  13. [root@localhost ~]# virsh shutdown test-quickly
  14. #虚拟机test-quickl关机
  15. [root@localhost ~]# virsh console test-quickly
  16. #连接到虚拟机test-quickly
复制代码
使用 virsh console毗连时间可能会遇到如下错误导致无法退出

 这时使用ctrl+](ctrl和右中括号)退出当前毗连
假如console毗连卡住不动, 则通过vnc进入到对应的假造机中在以下文件中添加内容
  1. # cat /etc/securetty | tail -n 1
  2. ttyS0
  3. # cat /etc/grub2.cfg | grep ttyS0
  4. 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
  5. #此处如果有两个linux16开头的行则需要都添加console=ttyS0
复制代码

4、假造机资源管理

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

以上环境均为无图形化操纵手册,用于理解配置文件位置及操纵原理,实际工作中,大部分操纵均可使用webvirtualcloud和virt-manager两种假造机管理工具进行操纵,操纵方式与vmware十分相似,网上也有许多雷同教程,这里展示一下webvirtualcloud的手动部署( 假如工作环境可以使用外国网络环境可以直接使用github上提供的一键安装)
  1. $ cat /etc/redhat-release
  2. CentOS Stream release 8
  3.     #    至少是centos8
  4. $ sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  5. $ systemctl disable --now firewalld
  6. $ yum -y install epel-release
  7. $ yum -y install python3-virtualenv python3-devel libvirt-devel glibc gcc \
  8.     nginx supervisor python3-lxml git python3-libguestfs iproute-tc \
  9.     cyrus-sasl-md5 python3-libguestfs
  10. $ cd /srv/
  11. $ git clone https://github.com/retspen/webvirtcloud && cd webvirtcloud
  12. Cloning into 'webvirtcloud'...
  13. remote: Enumerating objects: 8955, done.
  14. remote: Counting objects: 100% (927/927), done.
  15. remote: Compressing objects: 100% (457/457), done.
  16. remote: Total 8955 (delta 474), reused 864 (delta 451), pack-reused 8028
  17. Receiving objects: 100% (8955/8955), 8.25 MiB | 649.00 KiB/s, done.
  18. Resolving deltas: 100% (5965/5965), done.
  19. $ pip3 install -i https://mirrors.ustc.edu.cn/pypi/web/simple pip -U
  20. $ pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
  21. $ pip install -U setuptools virtualenv
  22. $ cp webvirtcloud/settings.py.template webvirtcloud/settings.py
  23. $ virtualenv -p $(which python3) /srv/envs/webvirtcloud
  24.     #     这条命令的目的是在 /srv/envs/ 目录下创建一个使用 Python 3 解释器的虚拟环境,用于隔离和管理 webvirtcloud 应用程序所需的 Python 环境和依赖。
  25. $ source /srv/envs/webvirtcloud/bin/activate
  26. (webvirtcloud) $ python /srv/webvirtcloud/conf/runit/secret_generator.py
  27. X^*tIo&S|GhwygIp3}X)qs{wkcAy=vay~.%4^kU#,iKZs*\`&V
  28. $ vim /srv/webvirtcloud/webvirtcloud/settings.py
  29. SECRET_KEY = "X^*tIo&S|GhwygIp3}X)qs{wkcAy=vay~.%4^kU#,iKZs*\`&V"
  30. $ cd /srv/webvirtcloud/
  31. $ pip install -r conf/requirements.txt
  32. $ python manage.py makemigrations
  33. $ python manage.py migrate
  34. $ vim /etc/supervisord.d/webvirtcloud.ini
  35. [program:webvirtcloud]
  36. command=/srv/envs/webvirtcloud/bin/gunicorn webvirtcloud.wsgi:application -c /srv/webvirtcloud/gunicorn.conf.py
  37. directory=/srv/webvirtcloud
  38. user=root
  39. autostart=true
  40. autorestart=true
  41. redirect_stderr=true
  42. [program:novncd]
  43. command=/srv/envs/webvirtcloud/bin/python /srv/webvirtcloud/console/novncd
  44. directory=/srv/webvirtcloud
  45. user=root
  46. autostart=true
  47. autorestart=true
  48. redirect_stderr=true
  49. $ systemctl enable --now supervisord
  50. $ supervisorctl reload
  51. $ supervisorctl update
  52. $ supervisorctl restart all
  53. $ supervisorctl status
  54. novncd                           RUNNING   pid 15774, uptime 0:00:06
  55. webvirtcloud                     RUNNING   pid 15775, uptime 0:00:06
  56. $ cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d/
  57.     #    这里需要把nginx自带的虚拟主机注释掉
  58. $ systemctl enable --now nginx
复制代码
遇到usb不支持的情况,解决办法如下
  1. $ vim /srv/webvirtcloud/vrtManager/create.py
  2.      if "usb" in dom_caps["disk_bus"]:
  3.          xml += """<input type='mouse' bus='{}'/>""".format("virtio" if virtio else "usb")
  4.          xml += """<input type='keyboard' bus='{}'/>""".format("virtio" if virtio else "usb")
  5.          xml += """<input type='tablet' bus='{}'/>""".format("virtio" if virtio else "usb")
  6.      else:
  7.          xml += """<input type='mouse'/>"""
  8.          xml += """<input type='keyboard'/>"""
  9.          xml += """<input type='tablet'/>"""
  10.     #    修改为以下配置
  11.       if "usb" in dom_caps["disk_bus"]:
  12.           pass
  13.       else:
  14.           pass
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

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