部署KVM虚拟化平台

简介: 部署KVM虚拟化平台

       KVM是Kernel Virtual Machine的简写,目前Linux发行版必须在64位的系统环境才能运行KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,2008年被Red Hat公司收购并获得一项hypervisor技术,不过Red Hat的KVM被认为将成为未来linux hypervisor的主流。准确来说,KVM仅仅是linux内核的一个模块。管理和创建完整的KVM虚拟机,需要更多的辅助工具。本次将结束部署虚拟化环境,常见虚拟机实例,以虚拟机的基本管理。

部署KVM

安装方式

       开启vmware虚拟机前需要调整内存、打开虚拟化,内存根据根据实际情况来调整。

       在Centos的系统光盘镜像中,已经提供了安装KVM所需软件。通过部署基于光盘镜像的本地yum源,直接使用yum安装所需软件即可。

  • 配置yum仓库
1. [root@localhost ~]# rm -rf /etc/yum.repos.d/*
2. [root@localhost ~]# vim /etc/yum.repos.d/yum.repo
3. [yum]
4. name=a
5. baseurl=file:///media
6. gpgcheck=0
7. [root@localhost ~]# mount /dev/cdrom /media
8. mount: /dev/sr0 写保护,将以只读方式挂载
  • 安装KVM所需文件
[root@localhost ~]# yum -y install qemu-kvm qemu-kvm-tools virt-install qemu-img bridge-utils libvirt virt-manager

软件包含义如下:

qemu-kvm //KVM模块

qemu-kvm-tools //KVM调试工具,可以不安装

virt-install //构建虚拟机的命令行工具

qemu-img //qemu组件,创建磁盘、启动虚拟机等

bridge-utils //网络支持工具

libvirt //虚拟机管理工具

virt-manager //图形界面管理虚拟机

  • 验证

       重启虚拟机,查看CPU是否支持虚拟化,对于intel的服务器可以通过以下命令查看,只要有输出就说明CPU支持虚拟化;

1. [root@localhost ~]# cat /proc/cpuinfo | grep vmx
2.  flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt

       AMD服务器可以用cat /proc/cpuinfo | grep smv命令查看。

  • 检查KVM模块是否安装
1.  [root@localhost ~]# lsmod | grep kvm
2.  kvm_intel             170181  0
3.  kvm                   554609  1 kvm_intel
4.  irqbypass              13503  1 kvm
  • 开启服务
1. [root@localhost ~]# systemctl start libvirtd
2. [root@localhost ~]# systemctl enable libvirtd

设置KVM网络

KVM的两种网络模式

       用户模式(NAT):这是默认模式,kvm中的虚拟机能访问外部主机,但是外部主机不能访问kvm中的虚拟机。

       桥接模式(Bridge):kvm中的虚拟机和外部主机能相互访问。

这里以Bridge为例。

  • 配置网络
1.  [root@localhost]# cd /etc/sysconfig/network-scripts/
2.  [root@localhost network-scripts]# vim ifcfg-ens33
3.  TYPE=Ethernet
4.  BOOTPROTO=none                          //模式改为none
5.  DEFROUTE=yes
6.  PEERDNS=yes
7.  PEERROUTES=yes
8.  IPV4_FAILURE_FATAL=no
9.  IPV6INIT=yes
10.  IPV6_AUTOCONF=yes
11.  IPV6_DEFROUTE=yes
12.  IPV6_PEERDNS=yes
13.  IPV6_PEERROUTES=yes
14.  IPV6_FAILURE_FATAL=no
15.  IPV6_ADDR_GEN_MODE=stable-privacy
16.  NAME=ens33
17.  DEVICE=ens33
18.  ONBOOT=yes                              //no改为yes
19.  BRIDGE=br0                              //加入此行配置
20.  [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0      //复制网卡信息
21.  [root@localhost network-scripts]# vim ifcfg-br0                 //修改ifcfg-br0网卡信息
22.  TYPE=Bridge                                                     //类型改为Bridge
23.  BOOTPROTO=static                                                //模式改为静态
24.  DEFROUTE=yes
25.  PEERDNS=yes
26.  PEERROUTES=yes
27.  IPV4_FAILURE_FATAL=no
28.  IPV6INIT=yes
29.  IPV6_AUTOCONF=yes
30.  IPV6_DEFROUTE=yes
31.  IPV6_PEERDNS=yes
32.  IPV6_PEERROUTES=yes
33.  IPV6_FAILURE_FATAL=no
34.  IPV6_ADDR_GEN_MODE=stable-privacy
35.  NAME=br0                                        //网卡ens33改为br0
36.  DEVICE=br0                                      //网卡ens33改为br0
37.  ONBOOT=yes
38.  IPADDR=192.168.10.1                             //添加网络信息                    
39.  NETMASK=255.255.255.0                           //添加网络信息
40.  GATEWAY=192.168.10.254                          //添加网络信息
41.  BRIDGE=bro                                      //删掉此行配置
  • 重启网络服务
[root@localhost ~]# systemctl restart network
  • 确认IP地址信息
1.  [root@localhost ~]# ifconfig
2.  br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
3.          inet 192.168.10.1  netmask 255.255.255.0  broadcast 192.168.10.255
4.          inet6 fe80::8e68:5d16:b97c:b837  prefixlen 64  scopeid 0x20<link>
5.          ether 00:0c:29:bc:c7:b8  txqueuelen 1000  (Ethernet)
6.          RX packets 1  bytes 328 (328.0 B)
7.          RX errors 0  dropped 0  overruns 0  frame 0
8.          TX packets 26  bytes 3922 (3.8 KiB)
9.          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
10.  ...... //省略部分信息

KVM管理

       virt-manager是基于libvirt的图形化虚拟机管理软件。不同的发行版本上virt-manager的版本不同,图形界面和操作方法也可能不同。

[root@localhost ~]# virt-manager

 

虚拟化管理

       创建存储池先准备存储池和镜像位置

1.  [root@localhost ~]# mkdir -p /data_kvm/store
2.  [root@localhost ~]# mkdir -p /data_kvm/iso
  • 创建存储池,双击“QEMU/KVM”,选择“存储”选项卡,单击左下角“+”按钮新建存储池。单击“前进”按钮,根据提示输入或浏览用以设置存储目录,如/data_kvm/store,最后点击完成按钮。

 

  • 同样操作创建一个镜像存储池,名称为aaa_iso,目录为/data_kvm/iso即可。安装操作系统的时,还需要把镜像上传到服务器目录/data_kvm/iso。
1.  [root@localhost ~]# mount /dev/cdrom /media
2.  mount: /dev/sr0 写保护,将以只读方式挂载
3.  [root@localhost ~]# cp /dev/cdrom /data_kvm/iso/centos7.iso

 

  • 创建存储卷,单击刚创建好的“aaa“,单击窗口中”卷“右边的”+“按钮建立一个存储卷,并设置最大容量

 

  • 单击“完成”按钮,回到“虚拟机系统管理器”。右击“QEMU/KVM”,选择“新建"选项,再弹出对话框后,选择“本地安装介质”,单击”前进“按钮。

选择iso镜像文件(没有的话刷新一下)

识别出操作系统后下一步即可。选择创建好的存储卷后点击”前进“。

 

安装前自定义配置,应用自动启动引导后开始安装。

后面的配置就和正常的安装系统相同了,推荐最小化安装,图形界面安装时间较久。

 

使用KVM命令集管理虚拟机

以下命令在Xshell远程控制或者VMware上操作

  • 查看帮助信息
[root@localhost ~]# virsh -h
  • 查看KVM的配置文件存放目录
1.  [root@localhost ~]# ls /etc/libvirt/qemu
2.  autostart  centos7.0.xml  networks          //centos7.0.xml是虚拟机系统的配置文件
  • 查看虚拟机状态
1.  [root@localhost ~]# virsh list --all
2.   Id    名称                         状态
3.  ----------------------------------------------------
4.   2     centos7.0                      running           //centos7.0为虚拟机名称
  • 虚拟机关机与开机

首先需要确定acpid服务安装并运行。

1.  [root@localhost ~]# virsh shutdown centos7.0        //关机
2.  域 centos7.0 被关闭
3.  
4.  [root@localhost ~]# virsh start centos7.0           //开机
5.  域 centos7.0 已开始
  • 强制系统关闭电源
1.  [root@localhost ~]# virsh destroy centos7.0
2.  域 centos7.0 被删除             //已经被强制关闭电源
  • 通过配置文件启动虚拟机
1.  [root@localhost ~]# virsh create /etc/libvirt/qemu/centos7.0.xml                //上面已经强制关机,通过配置文件启动虚拟机
2.  域 centos7.0 被创建(从 /etc/libvirt/qemu/centos7.0.xml)
3.  
4.  [root@localhost ~]# virsh list --all                //查看状态
5.   Id    名称                         状态
6.  ----------------------------------------------------
7.   4     centos7.0                      running
  • 挂起虚拟机
1.  [root@localhost ~]# virsh suspend centos7.0
2.  域 centos7.0 被挂起
3.  
4.  [root@localhost ~]# virsh list --all
5.   Id    名称                         状态
6.  ----------------------------------------------------
7.   4     centos7.0                      暂停
  • 恢复虚拟机
1.  [root@localhost ~]# virsh resume centos7.0
2.  域 centos7.0 被重新恢复
3.  
4.  [root@localhost ~]# virsh list --all
5.   Id    名称                         状态
6.  ----------------------------------------------------
7.   4     centos7.0                      running
  • 配置虚拟机伴随宿主机自动启动
1.  [root@localhost ~]# virsh autostart centos7.0
2.  域 centos7.0标记为自动开始

上述命令将创建/etc/libvirt/qemu/autostart/目录,目录内容为开机自动启动的系统。

  • 导出虚拟机配置

复制centos7.0配置命名为test01.xml

[root@localhost ~]# virsh dumpxml centos7.0 > /etc/libvirt/qemu/test01.xml
  • 虚拟机的删除与添加

作了上面导出配置在作这项,否则虚拟机删除了将需要从新安装,比较耗时间。

删除虚拟机:

1.  [root@localhost ~]# virsh shutdown centos7.0            //关机
2.  域 centos7.0 被关闭
3.  
4.  [root@localhost ~]# virsh undefine centos7.0            //删除虚拟机
5.  域 centos7.0 已经被取消定义
6.  
7.  [root@localhost ~]# ls /etc/libvirt/qemu                //查看文件,配置文件被删除,但是磁盘文件不会被删除。
8.  autostart  networks  test01.xml
9.  [root@localhost ~]# virsh list --all                    //查看虚拟机
10.   Id    名称                         状态
11.  ----------------------------------------------------

通过备份的配置文件恢复虚拟机:

1.  [root@localhost ~]# cd /etc/libvirt/qemu
2.  [root@localhost qemu]# mv test01.xml centos7.0.xml
3.  [root@localhost qemu]# virsh define centos7.0.xml               //重新定义虚拟机
4.  定义域 centos7.0(从 centos7.0.xml)
5.  
6.  [root@localhost qemu]# virsh list --all
7.   Id    名称                         状态
8.  ----------------------------------------------------
9.   -     centos7.0                      关闭
  • 修改虚拟机而配置信息

用来修改系统内存大小、磁盘文件等信息。

1.  通过vim命令修改
2.  [root@localhost ~]# vim /etc/libvirt/qemu/centos7.0.xml 
3.  或
4.  通过virsh命令修改
5.  [root@localhost ~]# virsh edit centos7.0

KVM文件管理

       通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件有raw、qcow2与qed格式,KVM虚拟机默认使用qcow2格式。这里介绍本地YUM安装libguestfs-tools后产生的命令行工具,这个工具可以直接读取qcow2格式的磁盘文件。

提前配置YUM安装libguestfs-tools工具

1.  [root@localhost ~]# rm -rf /etc/yum.repos.d/*
2.  [root@localhost ~]# vim /etc/yum.repos.d/a.repo
3.  [yum]
4.  name=a
5.  baseurl=file:///media
6.  gpgcheck=0
7.  [root@localhost ~]# eject
8.  [root@localhost ~]# mount /dev/cdrom /media             //挂载系统盘(YUM)
9.  mount: /dev/sr0 写保护,将以只读方式挂载
10.  [root@localhost ~]# yum -y install libguestfs-tools
  • 查看当前磁盘格式
1.  [root@localhost ~]# qemu-img info /data_kvm/store/aaa_kvm.qcow2
2.  image: /data_kvm/store/aaa_kvm.qcow2
3.  file format: qcow2
4.  virtual size: 20G (21474836480 bytes)
5.  disk size: 1.3G
6.  cluster_size: 65536
7.  Format specific information:
8.      compat: 1.1
9.      lazy refcounts: true

       如果不是qcow2格式,可以通过"qemu-img"命令转换磁盘文件格式,执行以下操作可以将centos7.0虚拟机raw格式磁盘转换为qcow2格式。

1.  [root@localhost ~]# virsh shutdown centos7.0
2.  [root@localhost ~]# qemu-img convert -f raw -o qcow2 /data_kvm/store/centos7.0.img /data_kvm/store/centos7.0.qcow2

       执行转换磁盘格式的命令后还需要修改centos7.0的xml配置文件中磁盘的类型与磁盘文件名。

1.  [root@localhost ~]# virsh edit centos7.0
2.  ......//省略部分
3.  <driver name='qemu' type='qcow2'/>                  //raw改为qcow2
4.  <source file='/data_kvm/store/aaa_kvm.qcow2'/>      //raw改为qcow2
5.  ......//省略部分
  • virt-cat命令,类似cat命令
1.  [root@localhost ~]# virt-cat -a /data_kvm/store/aaa_kvm.qcow2 /etc/sysconfig/grub 
2.  GRUB_TIMEOUT=5
3.  GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
4.  GRUB_DEFAULT=saved
5.  GRUB_DISABLE_SUBMENU=true
6.  GRUB_TERMINAL_OUTPUT="console"
7.  GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
8.  GRUB_DISABLE_RECOVERY="true"
  • virt-edit命令,用于编辑文件,用法和vim基本一致
1.  [root@localhost ~]# virt-edit -a /data_kvm/store/aaa_kvm.qcow2 /etc/resolv.conf 
2.  666666
  • virt-df命令用于查看虚拟机磁盘信息
1.  [root@localhost ~]# virt-df -h centos7.0
2.  文件系统                            大小 已用空间 可用空间 使用百分比%
3.  centos7.0:/dev/sda1                      1014M       106M       908M   11%
4.  centos7.0:/dev/cl/root                     17G       918M        16G    6%

克隆虚拟机

  • 查看虚拟机状态
1.  [root@localhost ~]# virsh list --all
2.   Id    名称                         状态
3.  ----------------------------------------------------
4.   -     centos7.0                      关闭
  • 从centos7.0克隆为test01
1.  [root@localhost ~]# virt-clone -o centos7.0 -n test01 -f /data_kvm/store/test01.qcow2
2.  正在分配 'test01.qcow2'                                                                               |  20 GB  00:00:04    
3.  
4.  成功克隆 'test01'。

注:centos7.0为原虚拟机,test01为新虚拟机,test01.qcow2为新虚拟机文件名称。

  • 查看虚拟机状态并启动
1.  [root@localhost ~]# virsh list --all
2.   Id    名称                         状态
3.  ----------------------------------------------------
4.   -     centos7.0                      关闭
5.   -     test01                         关闭
6.  
7.  [root@localhost ~]# virsh start test01
8.  域 test01 已开始

虚拟机快照

       KVM虚拟机要使用镜像功能,磁盘格式必须为qcow2

  • 对test01创建快照
1.  [root@localhost ~]# virsh snapshot-create test01
2.  已生成域快照 1656648933
  • 查看虚拟机快照版本信息
1.  [root@localhost ~]# virsh snapshot-current test01
2.  <domainsnapshot>
3.    <name>1656648933</name>           //快照版本号
4.    <state>running</state>
5.  ......//省略部分信息
  • 查看快照信息
1.  [root@localhost ~]# virsh snapshot-list test01
2.   名称               生成时间              状态
3.  ------------------------------------------------------------
4.   1656648933           2022-07-01 12:15:33 +0800 running
  • 创建新快照
1.  [root@localhost ~]# virsh snapshot-create test01
2.  已生成域快照 1656649136
  • 查看快照信息
1.  [root@localhost ~]# virsh snapshot-list test01
2.   名称               生成时间              状态
3.  ------------------------------------------------------------
4.   1656648933           2022-07-01 12:15:33 +0800 running
5.   1656649136           2022-07-01 12:18:56 +0800 running
  • 恢复虚拟机状态至1656648933
[root@localhost ~]# virsh snapshot-revert test01 1656648933
  • 删除快照
1.  [root@localhost ~]# virsh snapshot-delete test01 1656648933
2.  已删除域快照 1656648933


相关文章
|
18天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
28 0
|
6月前
|
Go 虚拟化 云计算
Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率
Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率
182 0
|
3月前
|
存储 边缘计算 监控
探索未来科技趋势:虚拟化技术与云计算平台OpenStack的概念与实践
在迅猛发展的信息技术时代,企业和组织对于高效、可扩展的计算资源需求日益增长。虚拟化技术和云计算平台OpenStack应运而生,为企业提供了一种灵活、可靠的解决方案。本文将深入探讨虚拟化技术与OpenStack的概念和实践,展示它们在现代科技领域中的重要性和应用前景。
69 3
|
3月前
|
存储 监控 搜索推荐
构建无边界的数字未来:虚拟化技术与云计算平台OpenStack的概念与实践
在当今数字化时代,虚拟化技术和云计算平台已经成为企业和组织实现数字化转型的关键驱动力。本文将介绍虚拟化技术的概念和作用,并重点探讨了开源云计算平台OpenStack在实践中的应用和优势。通过深入了解虚拟化技术和OpenStack平台,读者将能够更好地理解如何利用这些技术构建无边界的数字化未来。
|
3月前
|
存储 人工智能 调度
虚拟化技术与云计算平台 OpenStack:解锁数字化时代的无限潜能
在数字化时代,虚拟化技术和云计算平台已经成为企业和组织加速创新、提高效率的关键工具。本文将介绍虚拟化技术和OpenStack云计算平台的基本概念,探讨其在实践中的应用,以及它们如何协同作用,为企业带来无限的潜能与机会。
|
7月前
|
负载均衡 安全 虚拟化
另一种虚拟化平台-NSX DC如何实现Openstack网络与安全
最近这两个月,工作强度陡然提升。前不久为了归纳和总结NSX DC分别与HOST-VM容器和裸金属容器的最佳实践和“特殊部署”,已经起早贪黑了两个多礼拜。因此,公众号的更新频率有所下降。好在功夫不负有心人,届时我也会推出专门的篇幅来介绍云原生场景的技术实现。 在今天的分享中,我将继续上一篇的内容,向大家展示管理员通过Openstack Horizon或者命令行执行配置的时候,NSX DC后端究竟发生了什么变化。
另一种虚拟化平台-NSX DC如何实现Openstack网络与安全
|
7月前
|
存储 安全 SDN
另一种虚拟化平台:Openstack与NSX DC的结合
经过之前的两篇连载(一步步实现SDDC、变形金刚外传),我向各位演示了NSX DC两大产品(NSX-V、NSX-T)如何实现数据中心的网络与安全设施的。
另一种虚拟化平台:Openstack与NSX DC的结合
|
10月前
|
存储 监控 网络安全
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
849 0
|
10月前
|
KVM 虚拟化 Windows
【KVM虚拟化】· KVM中的网络
【KVM虚拟化】· KVM中的网络
196 0
|
10月前
|
存储 KVM 文件存储
【KVM虚拟化】· 存储池、存储卷
【KVM虚拟化】· 存储池、存储卷
377 0