宝塔游戏与企业虚拟化KVM

笔记本:千锋教育Linux云计算实训项目

Author: Youngfit

Email:ashiyufei@youngfit.com

QQ:908367919

微信:yxlmqq1028

更新时间:2022/9/19

安装宝塔

  1. # yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

宝塔游戏与企业虚拟化KVM - 图1

宝塔游戏与企业虚拟化KVM - 图2

宝塔游戏与企业虚拟化KVM - 图3

企业虚拟化KVM实战

宝塔游戏与企业虚拟化KVM - 图4

什么是虚拟化
  1. 虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine MonitorVMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT 成本,而且还增强了系统安全性和可靠性。

常用的虚拟化产品有哪些

  1. 1.Kvmredhat)企业级
  2. 2.Vmware:
  3. Vmware-workstation(windowslinux)桌面级
  4. Vmware-fusion(mac)
  5. Vmware-esxi(企业级别)本身就是一个操作系统。
  6. 3.hyper-v(微软)
  7. 4.Ovmoracle公司--Windows linux virtulbox
  8. 5.Xenrhel6之前所有版本默认用的虚拟化产品)

虚拟化技术的分类:

  1. 平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化//针对计算机操作系统。
  2. 资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。
  3. 应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。把硬件的东西变成了一个应用
  1. 我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为 Virtual Machine Monitor(虚拟监控器VMM) 或**Hypervisor**,隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。
平台虚拟化类型
  1. 操作系统虚拟化:有一个非常常见的操作系统叫openvz。特点是所有的虚拟机共享宿主机的内核。

全虚拟化(Full Virtualization):

  1. 全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。
  2. 现在的kvmvmware都支持全虚拟化
  3. 全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源

半虚拟化(Para Virtualization):

  1. 半虚拟化(也叫超虚拟化)是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。因为操作系统自身能够与虚拟进程进行很好的协作。
  2. 半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。

硬件辅助虚拟化

  1. 硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。

部分虚拟化

企业级虚拟化与桌面级虚拟化的区别

  1. 桌面级虚拟化:
  2. App ---在安装APP,通过App实现各种功能
  3. guestos ---客户机也叫客户操作系统
  4. vmware-workstationhypervisor(虚拟机管理程序)+图形管理工具)
  5. os操作系统
  6. 硬件
  7. 企业级虚拟化
  8. App(图形管理工具)
  9. guestos ---客户机也叫客户操作系统
  10. os+hypervisor在操作系统级别加上了虚拟机管理程序
  11. 硬件

KVM虚拟化技术简介

  1. KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。
  2. KVM 是作为内核模块实现的

KVM安装

KVM虚拟化技术简介

kvm架构图

宝塔游戏与企业虚拟化KVM - 图5

  1. rhel6开始使用 直接把kvm的模块做成了内核的一部分
  2. xen用在rhel6之前的企业版中 默认内核不支持,需要重新安装带xen功能的内核
  3. KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。
  4. 这个 hypervisor 提供 x86 虚拟化,同时拥有到 PowerPC® IA64 的通道。另外,KVM 最近还添加了对对称多处理(SMP)主机(和来宾)的支持,并且支持企业级特性,比如活动迁移(允许来宾操作系统在物理服务器之间迁移)。
  5. KVM 是作为内核模块实现的,因此 Linux 只要加载该模块就会成为一个hypervisorKVM 为支持 hypervisor 指令的硬件平台提供完整的虚拟化(比如 Intel® Virtualization Technology [Intel VT] AMD Virtualization [AMD-V] 产品)。KVM 还支持准虚拟化来宾操作系统,包括 Linux Windows®。
  6. 这种技术由两个组件实现。第一个是可加载的 KVM 模块,当在 Linux 内核安装该模块之后,它就可以管理虚拟化硬件,并通过 /proc 文件系统公开其功能。第二个组件用于 PC 平台模拟,它是由修改版 QEMU 提供的。QEMU 作为用户空间进程执行,并且在来宾操作系统请求方面与内核协调。
  7. 当新的操作系统在 KVM 上启动时(通过一个称为 kvm 的实用程序),它就成为宿主操作系统的一个进程,因此就可以像其他进程一样调度它。但与传统的 Linux 进程不一样,来宾操作系统被 hypervisor 标识为处于 "来宾" 模式(独立于内核和用户模式)。
  8. 每个来宾操作系统都是通过 /dev/kvm 设备映射的,它们拥有自己的虚拟地址空间,该空间映射到主机内核的物理地址空间。如前所述,KVM 使用底层硬件的虚拟化支持来提供完整的(原生)虚拟化。I/O 请求通过主机内核映射到在主机上(hypervisor)执行的 QEMU 进程。
  9. KVM Linux 环境中以主机的方式运行,不过只要底层硬件虚拟化支持,它就能够支持大量的来宾操作系统.

Day1

KVM安装

  1. kvm虚拟化平台软件一般装在操作系统为Centos图形化操作系统上面
  1. 大家不想把电脑装为Centos的操作系统,可以用VMware workstations装一台配置较高的虚拟机(cpu、内存、磁盘)给的尽可能最大,然后需要在开启之前做如下操作

宝塔游戏与企业虚拟化KVM - 图6

宝塔游戏与企业虚拟化KVM - 图7

宝塔游戏与企业虚拟化KVM - 图8

然后打开虚拟机,安装kvm即可

  1. 一般企业如果使用kvm虚拟机平台,都会把物理服务器装成Centos的操作系统,然后装上kvm,创建虚拟机
  2. 需求内核(rhel6以上):
  3. [root@youngfit ~]# uname -r
  4. 2.6.32-358.el6.x86_64
  5. 升级系统:(在安装虚拟机出错的情况下,一般是操作系统的版本问题)
  6. [root@youngfit ~]# yum upgrade
  7. 安装软件:
  8. [root@youngfit ~]# yum install *qemu* *virt* librbd1-devel -y #记不住软件包名的情况下这样输入
  9. 其实下载的是下面几款软件
  10. [root@youngfit ~]# yum install qemu-kvm libvirt virt-manager librbd1-devel -y
  11. qemu-kvm libvirt virt-manager
  12. 在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvm
  13. kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
  14. qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
  15. 因为用到了上面两个东西,所以一般都称之为qemu-kvm
  16. libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。
  17. 启动服务:
  18. centos7:
  19. [root@youngfit ~]# systemctl start libvirtd
  20. [root@youngfit ~]# systemctl enable libvirtd
  21. 查看kvm模块加载:
  22. [root@youngfit ~]# lsmod | grep kvm
  23. kvm_intel 53484 3
  24. kvm 316506 1 kvm_intel
  25. 如果看到有这两行,说明支持kvm模块

1.KVM gustos图形方式部署安装虚拟机

  1. 图形模式安装虚拟机(guest os)
  2. [root@youngfit ~]# virt-manager
  3. ====================
  4. 下面就是点点点
  5. 安装完成一台虚拟机之后,网络模式也是有桥接和NAT
  6. 想让kvmNAT模式的虚拟机连通外网
  7. 需要在宿主机打开路由转发功能,然后重启libvirtd即可

2.完全文本方式安装虚拟机

  • 按照顺序操作,否则报错,系统安装报错
  • 宿主机网卡先设置为NAT模式
  1. [root@youngfit ~]# yum -y install vsftpd
  2. 上传镜像到虚拟机
  3. [root@youngfit ~]# mkdir /var/ftp/centos7u4
  4. [root@youngfit ~]# mount 镜像 /var/ftp/centos7u4
  5. [root@youngfit ~]# systemctl start vsftpd
  6. [root@youngfit ~]# systemctl stop firewalld && setenforce 0 #否则无法读取ftp服务的介质
  7. [root@youngfit ~]# virt-install --connect qemu:///system -n vm10 -r 2050 --disk path=/var/lib/libvirt/images/vm10.qcow2,size=5 --os-type=linux --os-variant=centos7.0 --vcpus=1 --location=ftp://192.168.14.60/centos7u4 -x console=ttyS0 --nographics
  8. [root@youngfit ~]# virt-install --connect qemu:///system -n test1 -r 2050 --disk path=/var/lib/libvirt/images/test1.qcow2,size=3 --os-type=linux --os-variant=centos7.0 --vcpus=1 --location=ftp://192.168.153.13/centos7u4 -x console=ttyS0 --nographics
  9. qemu:///system 系统如果在裸露的金属内核上运行为根(需要KVM安装)
  10. -n name
  11. -r M为单位指定分配给虚拟机的内存大小
  12. --disk 指定作为客户机存储的媒介 sizeG为单位的存储
  13. --os-type 针对一类操作系统优化虚拟机配置
  14. --os-variant 针对特定操作系统变体进一步优化虚拟机配置
  15. --vcpus 指定核数
  16. --location 客户虚拟机kernel+initrd 安装源,必须为镜像挂载在ftp目录下
  17. -x console=ttyS0 执行终端
  18. --nographics 无图形,文本模式
  19. 缺点:纯文本安装的输入时大小写莫名的变换,远程ssh没问题
  20. 内存必须大于2048
  21. 排错:
  22. 安装过程中:
  23. 手动配置IP地址
  24. url位置找不到路径,要返回去手动选择url,重新配置urlftp://192.168.14.60/rhel6u4,这里的ip不要写127.0.0.1

注意:命令敲下去,不要误操作退出安装

宝塔游戏与企业虚拟化KVM - 图9

输入2,回车,进入文本模式安装

宝塔游戏与企业虚拟化KVM - 图10

宝塔游戏与企业虚拟化KVM - 图11

显示!的选项,都未设置,不要漏设置

下面的按照提示安装即可

如果安装出来的kvm虚拟机不能ping通百度,需要把宿主机的防火墙开启,因为需要nat地址转换才行,nat转发规则在宿主机的firewalld防火墙配置规则中。

3.模板镜像+配置文件 方式安装虚拟机

  1. define方式创建好,不会启动
  2. create方式创建好,会启动
  3. 记住两个目录:
  4. /etc/libvirt/qemu 虚拟机配置文件存放目录
  5. /var/lib/libvirt/images/ 虚拟机磁盘镜像(磁盘文件)存放目录
  6. 1.拷贝模板镜像和配置文件
  7. [root@youngfit ~]# cp /var/lib/libvirt/images/test1.qcow2 /var/lib/libvirt/images/test2.qcow2
  8. [root@youngfit ~]# cp /etc/libvirt/qemu/test1.xml /etc/libvirt/qemu/test2.xml
  9. 2.修改配置文件
  10. # vim /etc/libvirt/qemu/test2.xml
  11. <domain type='kvm'>
  12. <name>test2</name> #此处应修改,名字不能相同
  13. <uuid>a2f62549-c6b7-4b8f-a8e2-c14edda35a78</uuid> #uuid不能相同
  14. <memory unit='KiB'>2099200</memory> #内存,可选
  15. <currentMemory unit='KiB'>2099200</currentMemory> #内存,可选
  16. <vcpu placement='static'>2</vcpu> #cpu核数可选
  17. <os>
  18. <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
  19. <boot dev='hd'/>
  20. </os>
  21. <features>
  22. <acpi/>
  23. <apic/>
  24. </features>
  25. <cpu mode='custom' match='exact' check='partial'>
  26. <model fallback='allow'>Haswell-noTSX</model>
  27. </cpu>
  28. <clock offset='utc'>
  29. <timer name='rtc' tickpolicy='catchup'/>
  30. <timer name='pit' tickpolicy='delay'/>
  31. <timer name='hpet' present='no'/>
  32. </clock>
  33. <on_poweroff>destroy</on_poweroff>
  34. <on_reboot>restart</on_reboot>
  35. <on_crash>destroy</on_crash>
  36. <pm>
  37. <suspend-to-mem enabled='no'/>
  38. <suspend-to-disk enabled='no'/>
  39. </pm>
  40. <devices>
  41. <emulator>/usr/libexec/qemu-kvm</emulator>
  42. <disk type='file' device='disk'>
  43. <driver name='qemu' type='qcow2'/>
  44. <source file='/var/lib/libvirt/images/test2.qcow2'/> #磁盘名称
  45. <target dev='vda' bus='virtio'/>
  46. <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
  47. </disk>
  48. <controller type='usb' index='0' model='ich9-ehci1'>
  49. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
  50. </controller>
  51. <controller type='usb' index='0' model='ich9-uhci1'>
  52. <master startport='0'/>
  53. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
  54. </controller>
  55. <controller type='usb' index='0' model='ich9-uhci2'>
  56. <master startport='2'/>
  57. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
  58. </controller>
  59. <controller type='usb' index='0' model='ich9-uhci3'>
  60. <master startport='4'/>
  61. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
  62. </controller>
  63. <controller type='pci' index='0' model='pci-root'/>
  64. <controller type='virtio-serial' index='0'>
  65. <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
  66. </controller>
  67. <interface type='network'>
  68. <mac address='52:54:00:f2:28:6f'/> #mac地址不能相同
  69. <source network='default'/>
  70. <model type='virtio'/>
  71. <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  72. </interface>
  73. <serial type='pty'>
  74. <target type='isa-serial' port='0'>
  75. <model name='isa-serial'/>
  76. </target>
  77. </serial>
  78. <console type='pty'>
  79. <target type='serial' port='0'/>
  80. </console>
  81. <channel type='unix'>
  82. <target type='virtio' name='org.qemu.guest_agent.0'/>
  83. <address type='virtio-serial' controller='0' bus='0' port='1'/>
  84. </channel>
  85. <input type='mouse' bus='ps2'/>
  86. <input type='keyboard' bus='ps2'/>
  87. <memballoon model='virtio'>
  88. <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
  89. </memballoon>
  90. </devices>
  91. </domain>
  92. 必须修改nameuuid,mac地址,其余可选
  93. vim修改完之后需要define一下配置文件
  94. [root@youngfit ~]# virsh define /etc/libvirt/qemu/test2.xml

Day2

KVM虚拟机管理

  1. =================================================================
  2. 虚拟机的组成部分
  3. 1.虚拟机配置文件
  4. [root@localhost qemu]# ls /etc/libvirt/qemu
  5. networks vm1.xml
  6. 2.储存虚拟机的介质
  7. [root@localhost qemu]# ls /var/lib/libvirt/images/
  8. vm1.img
  9. ========================================================
  10. 虚拟机的基本管理命令:
  11. 查看
  12. 启动
  13. 关闭
  14. 重启
  15. 重置
  16. 查看:
  17. 查看虚拟机:
  18. [root@youngfit ~]# virsh list #只包括开机状态的虚拟机
  19. Id Name State
  20. ----------------------------------------------------
  21. 2 vm1 running
  22. [root@youngfit ~]# virsh list --all #包括非开机状态的虚拟机
  23. Id Name State
  24. ----------------------------------------------------
  25. 2 vm1 running
  26. 查看kvm虚拟机配置文件:
  27. [root@youngfit ~]# virsh dumpxml name # name为虚拟机名称
  28. node4虚拟机的配置文件保存至node6.xml
  29. [root@youngfit ~]# virsh dumpxml node4 > /etc/libvirt/qemu/node6.xml
  30. 修改node6的配置文件:
  31. [root@youngfit ~]# virsh edit node6
  32. 如果直接用vim编辑器修改配置文件的话,需要重启libvirtd服务或者重新define配置文件,用edit修改则不需要。
  33. 启动:
  34. [root@youngfit ~]# virsh start vm1
  35. Domain vm1 started
  36. 暂停(挂起)虚拟机:
  37. [root@youngfit ~]# virsh suspend vm_name
  38. 恢复虚拟机:
  39. [root@youngfit ~]# virsh resume vm_name
  40. 关闭:
  41. 方法1
  42. [root@youngfit ~]# virsh shutdown vm1 //正常关闭
  43. Domain vm1 is being shutdown
  44. 方法2
  45. [root@youngfit ~]# virsh destroy vm1 //强制关闭
  46. Domain vm1 destroyed
  47. 重启:
  48. [root@youngfit ~]# virsh reboot vm1
  49. Domain vm1 is being reboote
  50. 重置:
  51. [root@youngfit ~]# virsh reset vm1
  52. Domain vm1 was reset
  53. 删除虚拟机:
  54. [root@youngfit ~]# virsh undefine vm2 #s首先要先关闭
  55. Domain vm2 has been undefined
  56. 注意:虚拟机在开启的情况下undefine是无法删除的,但是如果再destroy会直接被删除掉
  57. ======================
  58. 虚拟机开机自动启动:
  59. #如果虚拟机开机自启,里面的服务应该设置的有开机自启,不然没有意义
  60. [root@youngfit ~]# virsh autostart vm1
  61. vm1标记为自动开始
  62. [root@youngfit ~]# ls /etc/libvirt/qemu/autostart/ //此目录默认不存在,在有开机启动的虚拟机时自动创建
  63. vm1.xml
  64. [root@youngfit ~]# virsh autostart --disable vm1
  65. vm1取消标记为自动开始
  66. [root@youngfit ~]# ls /etc/libvirt/qemu/autostart/
  67. 如何查看已启动的虚拟机ip地址
  68. 假如vm2虚拟机已启动
  69. 方法1
  70. [root@youngfit ~]# virsh dumpxml vm2|grep mac
  71. <partition>/machine</partition>
  72. <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
  73. <mac address='52:54:00:cc:3e:79'/>
  74. [root@youngfit ~]# arp -a |grep "52:54:00:cc:3e:79"
  75. ? (192.168.122.227) at 52:54:00:cc:3e:79 [ether] on virbr0
  76. 方法2
  77. [root@youngfit ~]# virsh domifaddr vm2
  78. Name MAC address Protocol Address
  79. -------------------------------------------------------------------------------
  80. vnet1 52:54:00:d3:37:16 ipv4 192.168.122.178/24

虚拟机添加设备

  1. 1.图形方式:
  2. 首先,关闭要添加硬件的虚拟机
  3. 双击虚拟机,在打开的对话框点击上方的View,点击Details,点击Add Hardware可以选择要添加的虚拟硬件
  1. 2.修改配置文件方式:
  2. 我们给虚拟机vm9添加磁盘为例:
  3. 首先需要创建出要添加的磁盘
  1. [root@youngfit qemu]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm9-1.qcow2 5G
  2. 创建空的磁盘文件:这里我们创建一个5G的磁盘,不过创建出来,通过ll -h查看大小,看不出它是5G,添加上之后才能看到
  1. [root@youngfit qemu]# virsh edit vm9
  2. 如果用vim进去。记得重新define

宝塔游戏与企业虚拟化KVM - 图12

  1. 加好之后,启动虚拟机
  2. [root@youngfit qemu]# virsh start vm9
  3. 远程连接到vm9虚拟机
  4. [root@vm9 ~]# lsblk
  5. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  6. vda 252:0 0 5G 0 disk
  7. ├─vda1 252:1 0 1G 0 part /boot
  8. └─vda2 252:2 0 4G 0 part
  9. ├─centos-root 253:0 0 3.5G 0 lvm /
  10. └─centos-swap 253:1 0 512M 0 lvm [SWAP]
  11. vdb 252:16 0 5G 0 disk
  12. 可以看到我们新添加的磁盘vdb
  13. 然后可以正常分区,制作文件系统,进行挂载
  14. 作业,自己做
  1. 网卡: 和添加磁盘相同
  2. <interface type='network'>
  3. <mac address='52:54:00:fc:c6:0b'/>
  4. <source network='default'/>
  5. <model type='virtio'/>
  6. <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  7. </interface>

宝塔游戏与企业虚拟化KVM - 图13

  1. 可选部分:
  2. 注意:添加磁盘是这种方式,对于加大内存和增多cpu核心数,直接在配置文件里面修改即可!
  3. 内存:
  4. <memory unit='KiB'>2048000</memory>
  5. <currentMemory unit='KiB'>2048000</currentMemory>
  6. cpu个数:
  7. <vcpu placement='static'>2</vcpu>
  1. 1.使用配置文件方式生成一个新虚机
  2. 2.修改配置文件给新生成的虚机添加一块硬盘,添加一块网卡
  3. 3.使修改的配置文件生效
  4. 方法1:重启libvirtd
  5. 方法2:# virsh define 配置文件

虚拟机克隆

  1. 1.图形界面:Applications (左上角)-----> System Tools ------>Virtual Machine Manager
  2. 关闭要克隆的虚拟机,右键点击虚拟机选择Clone
  1. 2.字符终端,命令克隆
  2. [root@youngfit ~]# virt-clone -o vm1 --auto-clone
  3. WARNING 设置图形设备端口为自动端口,以避免相互冲突。
  4. 正在分配 'vm1-clone.qcow2' | 6.0 GB 00:00:05
  5. 成功克隆 'vm1-clone'
  6. -o origin
  7. [root@youngfit ~]# virt-clone -o vm1 -n vm2 --auto-clone
  8. WARNING 设置图形设备端口为自动端口,以避免相互冲突。
  9. 正在分配 'vm2.qcow2' | 6.0 GB 00:00:06
  10. 成功克隆 'vm2'
  11. [root@youngfit ~]# virt-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.img
  12. 正在克隆
  13. vm1.img | 8.0 GB 01:03
  14. Clone 'vm2' created successfully.
  15. 这条命令在克隆的同时,可以指定镜像文件的位置和名称。

kvm高级命令

  1. 建立虚拟机磁盘镜像文件:
  2. 磁盘镜像文件格式:
  3. raw 原始格式,性能最好 直接占用你一开始给多少 系统就占多少 不支持快照
  4. qcow 先去网上了解一下cow(写时拷贝copy on write) ,性能远不能和raw相比,所以很快夭折了,所以出现了qcow2(性能低下 早就被抛弃)
  5. qcow2 性能上还是不如raw,但是raw不支持快照,qcow2支持快照。
  6. 现在默认安装好的用的是qcow2格式
  7. 什么叫写时拷贝?
  8. raw立刻分配空间,不管你有没有用到那么多空间
  9. qcow2只是承诺给你分配空间,但是只有当你需要用空间的时候,才会给你空间。最多只给你承诺空间的大小,避免空间浪费
  10. 工作当中用哪个?看你用不用快照。
  11. 工作当中虚拟机如果有多个备份,一个坏了,再起一个就行了,所有没必要用快照。当然也不一定。
  12. 数据绝对不会存储到本地。
  13. qemu-kvm qemu是早先的一个模拟器,kvm是基于qemu发展出来的。
  14. 建立qcow2格式磁盘文件:
  15. [root@youngfit ~]# qemu-img create -f qcow2 test.qcow2 20G
  16. 建立raw格式磁盘文件:
  17. [root@youngfit ~]# qemu-img create -f raw test.raw 20G
  18. 查看已经创建的虚拟磁盘文件:
  19. [root@youngfit ~]# qemu-img info test.qcow2
磁盘镜像raw格式转换为qcow2
  1. 建立raw格式磁盘文件:
  2. [root@youngfit ~]# qemu-img create -f raw /var/lib/libvirt/images/qf.raw 4G
  3. [root@youngfit ~]# qemu-img info /var/lib/libvirt/images/qf.raw
  4. image: qf.raw
  5. file format: raw //格式为raw格式
  6. virtual size: 5.0G (5368709120 bytes)
  7. disk size: 0
  8. qf.raw磁盘添加到某台虚拟机上(这里的虚拟机名称为"test3")
  9. [root@youngfit ~]# virsh edit test3

宝塔游戏与企业虚拟化KVM - 图14

  1. [root@youngfit ~]# virsh define /etc/libvirt/qemu/test3.xml

点击进入test3虚拟机的操作界面,发现

宝塔游戏与企业虚拟化KVM - 图15

宝塔游戏与企业虚拟化KVM - 图16

宝塔游戏与企业虚拟化KVM - 图17

磁盘格式的转换:

  1. [root@youngfit images]# qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/qf.raw /var/lib/libvirt/images/qf.qcow2
  2. 转换之后会发现生成了我们指定的文件qf.qcow2
  3. [root@youngfit images]# ll -h
  4. total 11G
  5. -rw-r--r-- 1 root root 193K Jul 12 10:31 centos7.0-1.qcow2
  6. -rw-------. 1 root root 9.1G Jul 12 11:48 centos7.0.qcow2
  7. -rw-r--r-- 1 root root 193K Jul 12 13:23 qf.qcow2
  8. -rw-r--r-- 1 root root 5.0G Jul 12 12:09 qf.raw
  9. -rw------- 1 root root 1.3G Jul 12 13:08 test3.qcow2
  10. 查看磁盘镜像格式,发现已转换为qcow2格式
  11. [root@youngfit images]# qemu-img info qf.qcow2
  12. image: qf.qcow2
  13. file format: qcow2
  14. virtual size: 5.0G (5368709120 bytes)
  15. disk size: 196K
  16. cluster_size: 65536
  17. Format specific information:
  18. compat: 1.1
  19. lazy refcounts: false
  20. 重新添加上去
  21. [root@youngfit images]# virsh edit test3

宝塔游戏与企业虚拟化KVM - 图18

  1. [root@youngfit images]# virsh define /etc/libvirt/qemu/test3.xml
  2. Domain test3 defined from /etc/libvirt/qemu/test3.xml

宝塔游戏与企业虚拟化KVM - 图19

宝塔游戏与企业虚拟化KVM - 图20

  1. 挂载磁盘
  2. vm2虚拟机先关闭
  3. 查看vm2的磁盘镜像分区信息:
  4. [root@kvm-server images]# virt-df -h -d vm2
  5. 文件系统 大小 已用空间 可用空间 使用百分比%
  6. vm2:/dev/sda1 1014M 92M 922M 10%
  7. vm2:/dev/centos/root 3.5G 863M 2.6G 25%
  8. 1.创建一个挂载目录
  9. [root@kvm-server images]# mkdir /test
  10. 2.挂载虚拟机的跟分区到test目录
  11. [root@kvm-server images]# guestmount -d vm2 -m /dev/centos/root --rw /test/
  12. [root@kvm-server images]# cd /test/
  13. [root@kvm-server test]# ls
  14. bin dev home lib64 mnt proc run srv tmp var
  15. boot etc lib media opt root sbin sys usr
  16. [root@kvm-server test]# cat etc/passwd
  17. root:x:0:0:root:/root:/bin/bash
  18. bin:x:1:1:bin:/bin:/sbin/nologin
  19. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  20. adm:x:3:4:adm:/var/adm:/sbin/nologin
  21. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  22. sync:x:5:0:sync:/sbin:/bin/sync
  23. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  24. halt:x:7:0:halt:/sbin:/sbin/halt
  25. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  26. operator:x:11:0:operator:/root:/sbin/nologin
  27. games:x:12:100:games:/usr/games:/sbin/nologin
  28. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  29. nobody:x:99:99:Nobody:/:/sbin/nologin
  30. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
  31. dbus:x:81:81:System message bus:/:/sbin/nologin
  32. polkitd:x:999:997:User for polkitd:/:/sbin/nologin
  33. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  34. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  35. 取消挂载
  36. [root@kvm-server ~]# guestunmount /test

Day-3

KVM网络配置

桥接网络

宝塔游戏与企业虚拟化KVM - 图21

NAT网络

宝塔游戏与企业虚拟化KVM - 图22

隔离网络
  1. 可以通过查看mac地址是否一致来确定是不是一根线上的两个接口
  2. [root@youngfit ~]# brctl show
  3. bridge name bridge id STP enabled interfaces
  4. virbr0 8000.5254003c2ba7 yes virbr0-nic
  5. vnet2
  6. vnet3
  7. 注意:这里vnet网卡,是每台启动的虚拟机正在使用的网卡设备,每台虚拟机使用的不同
  8. 从交换机上把vnet网卡删除(相当于拔网线的操作):
  9. [root@youngfit ~]# brctl delif virbr0 vnet0
  10. 来到vm9的虚拟机,ping百度不通,ping宿主机也不通
  11. [root@vm9 ~]# ping www.baidu.com
  12. [root@vm9 ~]# ping 192.168.153.132
  13. 添加vnet网卡添加到交换机上:
  14. [root@youngfit ~]# brctl addif virbr0 vnet0
  15. 来到vm9的虚拟机,恢复正常
  16. [root@vm9 ~]# ping www.baidu.com
  17. [root@vm9 ~]# ping 192.168.153.132

配置文件方式创建isolated网络

  1. 配置文件方式创建isolated网络(host-only):host-only模式我从来没用过,我们不再操作,有兴趣可以操作一下 [root@youngfit networks]# cp default.xml isolated200.xml
  2. [root@youngfit networks]# vim isolated200.xml
  3. <network>
  4. <name>isolated200</name>
  5. <uuid>6341d3a6-7330-4e45-a8fe-164a6a68929a</uuid>
  6. <bridge name='virbr2' stp='on' delay='0'/>
  7. <mac address='52:54:00:6b:39:0c'/>
  8. <domain name='isolate1'/>
  9. <ip address='192.168.101.1' netmask='255.255.255.0'>
  10. <dhcp>
  11. <range start='192.168.101.128' end='192.168.101.254'/>
  12. </dhcp>
  13. </ip>
  14. </network>
  15. [root@youngfit networks]# systemctl restart libvirtd

添加网卡,查看是否生效

宝塔游戏与企业虚拟化KVM - 图23

宝塔游戏与企业虚拟化KVM - 图24

  1. 查看所有的网络:
  2. # virsh net-list
  3. 启动网络:
  4. # virsh net-start isolated200
  5. 开机自启动:
  6. # virsh net-autostart isolated200
桥接网络

配置文件方式配置桥接:在宿主机上

  1. 配置文件方式配置桥接:在宿主机上
  2. [root@youngfit test]# ip a #先找出宿主机用的哪个网卡设备,我的是enp0s25
  3. [root@youngfit test]# cd /etc/sysconfig/network-scripts/
  4. 1.修改配置文件
  5. [root@youngfit network-scripts]# vim ifcfg-br0 #没有此文件就新建
  6. [root@youngfit network-scripts]# cat ifcfg-br0
  7. TYPE=Bridge
  8. NAME=br0
  9. DEVICE=br0
  10. ONBOOT="yes"
  11. BOOTPROTO=static
  12. IPADDR=192.168.14.60 #宿主机ip地址
  13. GATEWAY=192.168.14.1 #宿主机的网关
  14. NETMASK=255.255.255.0
  15. DNS1=114.114.114.114
  16. DNS2=8.8.8.8
  17. 然后看清楚宿主机正在使用的网卡,修改配置文件
  18. [root@youngfit network-scripts]# cp ifcfg-enp0s25 ifcfg-enp0s25.bak
  19. [root@youngfit network-scripts]# vim ifcfg-enp0s25
  20. [root@youngfit network-scripts]# cat ifcfg-enp0s25
  21. TYPE="Ethernet"
  22. NAME="enp0s25" #定义网卡设备名称
  23. DEVICE="enp0s25" #宿主机正在使用的网卡设备
  24. ONBOOT="yes"
  25. BRIDGE=br0 #和ifcfg-br0文件里面的设备对应
  26. 2.重启libvirtd服务
  27. [root@youngfit network-scripts]# systemctl restart libvirtd
  28. 3.重启network服务
  29. [root@youngfit network-scripts]# systemctl restart network

然后去查看有没有新设备生成

宝塔游戏与企业虚拟化KVM - 图25

宝塔游戏与企业虚拟化KVM - 图26

宝塔游戏与企业虚拟化KVM - 图27

宝塔游戏与企业虚拟化KVM - 图28

宝塔游戏与企业虚拟化KVM - 图29

添加上之后,启动

宝塔游戏与企业虚拟化KVM - 图30

可以看到,我们先添加的网卡设备

宝塔游戏与企业虚拟化KVM - 图31

测试网络是否可用

  1. 宿主机测试
  2. [root@youngfit network-scripts]# ping www.baidu.com
  3. 如果ping不同,请打开/etc/resolv.conf重新设置DNS114.114.114.114

宝塔游戏与企业虚拟化KVM - 图32

  1. kvm虚拟机guestos测试
  2. [root@localhost ~]# ping www.baidu.com
  3. 如果ping不同,请打开/etc/resolv.conf重新设置DNS192.168.91.2(也就是你的网关地址)
  4. 宿主机要开启路由转发
  5. [youngfit network-scripts]# tail -1 /etc/sysctl.conf
  6. net.ipv4.ip_forward=1
  7. [youngfit network-scripts]# sysctl -p

宝塔游戏与企业虚拟化KVM - 图33

移除操作

将kvm虚拟机先关闭

宝塔游戏与企业虚拟化KVM - 图34

宝塔游戏与企业虚拟化KVM - 图35

宝塔游戏与企业虚拟化KVM - 图36

  1. 删除桥接网卡步骤:
  2. 1.删除br0的配置文件
  3. 2.修改正常网卡的配置文件
  4. 3.重启系统
  5. [root@youngfit network-scripts]# mv ifcfg-br0 ifcfg-br0.bak2
  6. [root@youngfit network-scripts]# mv ifcfg-enp0s25 ifcfg-enp0s25.bak2
  7. [root@youngfit network-scripts]# mv ifcfg-enp0s25.bak ifcfg-enp0s25
  8. [root@youngfit network-scripts]# systemctl restart libvirtd
  9. [root@youngfit network-scripts]# systemctl restart network
  10. [root@youngfit network-scripts]# ping www.baidu.com
  11. PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
  12. 64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=52 time=13.3 ms

宝塔游戏与企业虚拟化KVM - 图37

nat网络

配置文件方式创建nat网络

  1. 配置文件方式创建nat网络:
  2. [root@youngfit networks]# cd /etc/libvirt/qemu/networks
  3. [root@youngfit networks]# cp default.xml nat1.xml
  4. [root@youngfit networks]# vim nat1.xml

宝塔游戏与企业虚拟化KVM - 图38

  1. 重启服务:
  2. # systemctl restart libvirtd

在某个(比如vm9)虚拟机去添加此设备测试

宝塔游戏与企业虚拟化KVM - 图39

宝塔游戏与企业虚拟化KVM - 图40

测试网络是否可用

  1. [root@localhost ~]# ping www.baidu.com

宝塔游戏与企业虚拟化KVM - 图41

删除,要先取消激活状态;

KVM存储配置

  1. 存储池
  2. 概念:
  3. kvm必须要配置一个目录当作他存储磁盘镜像(存储卷)的目录,我们称这个目录为存储池
  4. kvm默认存储池的位置:
  5. /var/lib/libvirt/images/
  6. 1.创建基于文件夹的存储池(目录,可自定义)
  7. [root@youngfit ~]# mkdir -p /data/vmfs
  8. 2.定义存储池
  9. [root@youngfit ~]# virsh pool-define-as vmdisk --type dir --target /data/vmfs
  10. Pool vmdisk defined
  11. 解释:vmdisk是新建的存储池的名称。可自定义
  12. 3.创建已定义的存储池
  13. (1)创建已定义的存储池
  14. [root@youngfit ~]# virsh pool-build vmdisk
  15. Pool vmdisk built
  16. (2)查看已定义的存储池,存储池不激活无法使用。
  17. [root@youngfit ~]# virsh pool-list --all
  18. Name State Autostart
  19. -------------------------------------------
  20. default active yes
  21. root active yes
  22. vmdisk inactive no
  23. 4.激活并自动启动已定义的存储池
  24. [root@youngfit ~]# virsh pool-start vmdisk
  25. Pool vmdisk started
  26. [root@youngfit ~]# virsh pool-autostart vmdisk
  27. Pool vmdisk marked as autostarted
  28. [root@youngfit ~]# virsh pool-list --all
  29. Name State Autostart
  30. -------------------------------------------
  31. default active yes
  32. root active yes
  33. vmdisk active yes
  34. 这里vmdisk存储池就已经创建好了,可以直接在这个存储池中创建虚拟磁盘文件了。
  35. 5.在存储池中创建虚拟机存储卷
  36. [root@youngfit ~]# cd /data/vmfs/
  37. [root@youngfit network]# virsh vol-create-as vmdisk vm99.qcow2 5G --format qcow2
  38. Vol vm99.qcow2 created
  39. [root@youngfit ~]# ll /data/vmfs/ -h
  40. total 196K
  41. -rw------- 1 root root 193K Oct 20 02:32 vm99.qcow2
  42. 1:KVM存储池主要是体现一种管理方式,可以通过挂载存储目录,lvm逻辑卷的方式创建存储池,虚拟机存储卷创建完成后,剩下的操作与无存储卷的方式无任何区别了。
  43. 2:KVM存储池也要用于虚拟机迁移任务。
  44. 6.存储池相关管理命令
  45. (1)在存储池中删除虚拟机存储卷
  46. [root@youngfit ~]# virsh vol-delete --pool vmdisk vm99.qcow2
  47. Vol vm99.qcow2 deleted
  48. (2)取消激活存储池
  49. [root@youngfit ~]# virsh pool-destroy vmdisk
  50. Pool vmdisk destroyed
  51. (3)删除存储池定义的目录/data/vmfs
  52. [root@youngfit ~]# virsh pool-delete vmdisk
  53. Pool vmdisk deleted
  54. (4)取消定义存储池
  55. [root@youngfit ~]# virsh pool-undefine vmdisk
  56. Pool vmdisk has been undefined
  57. 到此kvm存储池配置与管理操作完毕.

图形操作方式

宝塔游戏与企业虚拟化KVM - 图42

宝塔游戏与企业虚拟化KVM - 图43

宝塔游戏与企业虚拟化KVM - 图44

宝塔游戏与企业虚拟化KVM - 图45

宝塔游戏与企业虚拟化KVM - 图46

宝塔游戏与企业虚拟化KVM - 图47

宝塔游戏与企业虚拟化KVM - 图48

如想删除,必须先停用,再删除

宝塔游戏与企业虚拟化KVM - 图49

kvm快照

  1. 为虚拟机rhel5u8-1创建一个快照(磁盘格式必须为qcow2
  2. # virsh snapshot-create-as vm9 vm9.snap1
  3. error: unsupported configuration: internal snapshot for disk vda unsupported for storage type raw
  4. raw
  5. 使用文件来模拟实际的硬盘(当然也可以使用一块真实的硬盘或一个分区)。由于原生的裸格式,不支持snapshot也是很正常的。但如果你使用LVM的裸设备,那就另当别论。说到LVM还是十分的犀利的目前来LVMsnapshot、性能、可扩展性方面都还是有相当的效果的。目前来看的话,备份的话也问题不大。就是在虚拟机迁移方面还是有很大的限制。但目前虚拟化的现状来看,真正需要热迁移的情况目前需求还不是是否的强烈。虽然使用LVM做虚拟机镜像的相关公开资料比较少,但目前来看牺牲一点灵活性,换取性能和便于管理还是不错的选择。
  6. qcow2
  7. 现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前qcow2的性能上接近raw裸格式的性能,这个也算是redhat的官方渠道了
  8. 对于qcow2的格式,几点还是比较突出的,qcow2snapshot,可以在镜像上做N多个快照:
  9. •更小的存储空间
  10. Copy-on-write support
  11. •支持多个snapshot,对历史snapshot进行管理
  12. •支持zlib的磁盘压缩
  13. •支持AES的加密
  1. 我做之前vm9虚拟机是关闭的状态,因为开启的状态,文本模式加磁盘总失败(没搞清楚原因,不过可以图形添加)
  2. 查看磁盘文件格式
  3. [root@youngfit ~]# qemu-img info /var/lib/libvirt/images/vm9.qcow2
  4. image: /var/lib/libvirt/images/vm9.qcow2
  5. file format: qcow2
  6. virtual size: 5.0G (5368709120 bytes)
  7. disk size: 1.5G
  8. cluster_size: 65536
  9. Format specific information:
  10. compat: 1.1
  11. lazy refcounts: true
  12. [root@youngfit ~]# virsh snapshot-list vm9 #查看某台虚拟机设备的快照
  13. Name Creation Time State
  14. ------------------------------------------------------------
  15. 创建一块磁盘
  16. [root@youngfit ~]# qemu-img create -f raw /var/lib/libvirt/images/vm9-2.raw 5G
  17. Formatting '/var/lib/libvirt/images/vm9-2.raw', fmt=raw size=5368709120
  18. [root@youngfit ~]# ll -h /var/lib/libvirt/images/vm9-2.raw
  19. -rw-r--r-- 1 root root 5.0G Oct 20 03:19 /var/lib/libvirt/images/vm9-2.raw
  20. 将其添加到vm9虚拟机上面
  21. [root@youngfit ~]# virsh edit vm9

宝塔游戏与企业虚拟化KVM - 图50

  1. [root@youngfit images]# qemu-img info /var/lib/libvirt/images/vm9-2.raw
  2. image: /var/lib/libvirt/images/vm9-2.raw
  3. file format: raw
  4. virtual size: 5.0G (5368709120 bytes)
  5. disk size: 0
  6. 磁盘格式的转换
  7. 由于raw的磁盘格式,不支持快照功能,我们需要将其转换为qcow2的格式
  8. [root@youngfit images]# qemu-img convert -O qcow2 /var/lib/libvirt/images/vm9-2.raw /var/lib/libvirt/images/vm9-2.qcow2
  9. [root@youngfit images]# ll -h
  10. total 14G
  11. -rw-r--r-- 1 root root 193K Oct 20 03:40 vm9-2.qcow2
  12. -rw-r--r-- 1 root root 5.0G Oct 20 03:19 vm9-2.raw
  13. -rw-------. 1 root root 5.1G Oct 20 03:34 vm9.qcow2
  14. [root@youngfit images]# qemu-img info /var/lib/libvirt/images/vm9-2.qcow2
  15. image: /var/lib/libvirt/images/vm9-2.qcow2
  16. file format: qcow2
  17. virtual size: 5.0G (5368709120 bytes)
  18. disk size: 196K
  19. cluster_size: 65536
  20. Format specific information:
  21. compat: 1.1
  22. lazy refcounts: false
  23. 然后去修改vm9虚拟机的磁盘格式和名称
  24. [root@youngfit images]# virsh edit vm9

宝塔游戏与企业虚拟化KVM - 图51

宝塔游戏与企业虚拟化KVM - 图52

然后我们开始做快照,图形化方式不再介绍

  1. [root@youngfit images]# virsh snapshot-create-as vm9 vm9.snap1
  2. Domain snapshot vm9.snap1 created
  3. [root@youngfit images]# virsh snapshot-list vm9
  4. Name Creation Time State
  5. ------------------------------------------------------------
  6. vm9.snap1 2019-10-20 03:48:21 +0800 shutoff
  7. [root@localhost ~]# mkdir /opt/snap
  8. [root@youngfit images]# virsh snapshot-create-as vm9 vm9.snap2
  9. Domain snapshot vm9.snap2 created
  10. [root@localhost ~]# touch /opt/snap/qf.txt
  11. [root@youngfit images]# virsh snapshot-create-as vm9 vm9.snap3
  12. Domain snapshot vm9.snap3 created
  13. [root@youngfit images]# virsh snapshot-list vm9
  14. Name Creation Time State
  15. ------------------------------------------------------------
  16. vm9.snap1 2019-10-20 03:48:21 +0800 shutoff
  17. vm9.snap2 2019-10-20 03:50:45 +0800 shutoff
  18. vm9.snap3 2019-10-20 03:51:02 +0800 shutoff
  19. 然后将vm9关闭,恢复到快照vm9.snap1
  20. [root@youngfit images]# virsh shutdown vm9
  21. [root@youngfit images]# virsh snapshot-revert vm9 vm9.snap1 #恢复快照到vm9.snap1
  22. [root@youngfit images]# virsh start vm9
  23. Domain vm9 started
  24. vm9虚拟机上查看
  25. [root@vm9 ~]# ls /opt/
  26. [root@vm9 ~]#
  27. 可以再恢复到vm9.snap2测试一下
  28. 删除虚拟机快照操作:
  29. [root@youngfit images]# virsh snapshot-list vm9
  30. Name Creation Time State
  31. ------------------------------------------------------------
  32. vm9.snap1 2019-10-20 03:48:21 +0800 shutoff
  33. vm9.snap2 2019-10-20 03:50:45 +0800 shutoff
  34. vm9.snap3 2019-10-20 03:51:02 +0800 shutoff
  35. [root@youngfit images]# virsh snapshot-delete --snapshotname vm9.snap2 vm9
  36. Domain snapshot vm9.snap2 deleted
  37. [root@youngfit images]# virsh snapshot-list vm9
  38. Name Creation Time State
  39. ------------------------------------------------------------
  40. vm9.snap1 2019-10-20 03:48:21 +0800 shutoff
  41. vm9.snap3 2019-10-20 03:51:02 +0800 shutoff

kvm迁移

  1. 最简单的方法:
  2. 拷贝配置文件,磁盘
  1. 10.18.42.202
  2. 10.18.42.46
  3. 热迁移
  4. 192.168.1.1/24 192.168.1.2/24
  5. ++++++++++++ ++++++++++++
  6. + + + +
  7. + KVM-A + =======> + KVM-B +
  8. + + + +
  9. ++++++++++++ ++++++++++++
  10. images images
  11. /var/lib/libvirt/images /var/lib/libvirt/images
  12. nfs
  13. 系统环境:rhel6.4 x86_64 iptables and selinux off
  14. 注意:
  15. 1.两台机器要做互相解析
  16. 2.同一个大版本的系统,从高版本系统上不可以往低版本系统上迁移,反过来可以比如从6.5不能迁移到6.4,但是从6.4可以迁移到6.5
  17. 3.两台机器的selinux全部开机关闭
  18. KVM-A 上的虚拟机镜像文件所在的目录共享出来
  19. [root@localhost1 ~]# getenforce
  20. Permissive
  21. [root@localhost1 ~]# iptables -F
  22. [root@localhost1 ~]# cat /etc/hosts
  23. 192.168.1.1 fw-01
  24. 192.168.1.2 fw-02
  25. [root@localhost1 ~]# yum -y install nfs-tools rpcbind
  26. [root@localhost1 ~]# vim /etc/exports
  27. /var/lib/libvirt/images 192.168.1.2(rw,sync,no_root_squash)
  28. [root@localhost1 ~]# service nfs start
  29. KVM-BKVM-A上共享出来的目录挂载在到KVM-B的/var/lib/libvirt/images
  30. [root@localhost2 ~]# mount -t nfs 192.168.1.1:/var/lib/libvirt/images /var/lib/libvirt/images
  31. KVM-B配置/etc/libvirt/qemu.conf
  32. [root@localhost2 ~]# vim /etc/libvirt/qemu.conf #取消下面选项的注释
  33. user = "root" 198
  34. group = "root" 202
  35. [root@localhost2 ~]# serivice libvirtd restart

宝塔游戏与企业虚拟化KVM - 图53

宝塔游戏与企业虚拟化KVM - 图54

宝塔游戏与企业虚拟化KVM - 图55

自动化脚本管理kvm(留时间给大家写)

  1. #!/bin/bash
  2. #kvm batch create vm tool
  3. #version:0.1
  4. #author:name
  5. #需要事先准备模板镜像和配置文件模板
  6. echo "1.创建自定义配置单个虚拟机
  7. 2.批量创建自定义配置虚拟机
  8. 3.批量创建默认配置虚拟机
  9. 4.删除虚拟机"
  10. read -p "选取你的操作(1/2/3):" op
  11. batch_self_define() {
  12. kvmname=`openssl rand -hex 5`
  13. sourceimage=/var/lib/libvirt/images/vmmodel.img
  14. sourcexml=/etc/libvirt/qemu/vmmodel.xml
  15. newimg=/var/lib/libvirt/images/${kvmname}.img
  16. newxml=/etc/libvirt/qemu/${kvmname}.xml
  17. cp $sourceimage $newimg
  18. cp $sourcexml $newxml
  19. kvmuuid=`uuidgen`
  20. kvmmem=${1}000000
  21. kvmcpu=$2
  22. kvmimg=$newimg
  23. kvmmac=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
  24. sed -i "s@kvmname@$kvmname@;s@kvmuuid@$kvmuuid@;s@kvmmem@$kvmmem@;s@kvmcpu@$kvmcpu@;s@kvmimg@$kvmimg@;s@kvmmac@$kvmmac@" $newxml
  25. virsh define $newxml
  26. virsh list --all
  27. }
  28. self_define() {
  29. read -p "请输入新虚机名称:" newname
  30. read -p "请输入新虚机内存大小(G):" newmem
  31. read -p "请输入新虚机cpu个数:" newcpu
  32. sourceimage=/var/lib/libvirt/images/vmmodel.img
  33. sourcexml=/etc/libvirt/qemu/vmmodel.xml
  34. newimg=/var/lib/libvirt/images/${newname}.img
  35. newxml=/etc/libvirt/qemu/${newname}.xml
  36. cp $sourceimage $newimg
  37. cp $sourcexml $newxml
  38. kvmname=$newname
  39. kvmuuid=`uuidgen`
  40. kvmmem=${newmem}000000
  41. kvmcpu=$newcpu
  42. kvmimg=$newimg
  43. kvmmac=`openssl rand -hex 3 | sed -r 's/..\B/&:/g'`
  44. sed -i "s@kvmname@$kvmname@;s@kvmuuid@$kvmuuid@;s@kvmmem@$kvmmem@;s@kvmcpu@$kvmcpu@;s@kvmimg@$kvmimg@;s@kvmmac@$kvmmac@" $newxml
  45. virsh define $newxml
  46. virsh list --all
  47. }
  48. case $op in
  49. 1)self_define;;
  50. 2)
  51. read -p "请输入要创建的虚拟机的个数:" num
  52. read -p "请输入新虚机内存大小(G):" newmem
  53. read -p "请输入新虚机cpu个数:" newcpu
  54. for((i=1;i<=$num;i++))
  55. do
  56. batch_self_define $newmem $newcpu
  57. done;;
  58. 3)
  59. read -p "请输入要创建的虚拟机的个数:" num
  60. for((i=1;i<=$num;i++))
  61. do
  62. batch_self_define 1 1
  63. done;;
  64. *)echo "输入错误,请重新执行脚本"
  65. exit;;
  66. esac

Centos设置输入法

宝塔游戏与企业虚拟化KVM - 图56

宝塔游戏与企业虚拟化KVM - 图57

宝塔游戏与企业虚拟化KVM - 图58

宝塔游戏与企业虚拟化KVM - 图59

宝塔游戏与企业虚拟化KVM - 图60

宝塔游戏与企业虚拟化KVM - 图61