热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Centos7之KVM虚拟化基础管理详解

这篇文章主要介绍了Centos7之KVM虚拟化基础管理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、安装kvm虚拟化

[root@localhost media]# yum -y groupinstall "GNOME Desktop"     #安装GNOME桌面环境
[root@localhost media]# yum -y install qemu-kvm        #KVM模块
[root@localhost media]# yum -y install qemu-kvm-tools       #KVM调试工具,可不安装
[root@localhost media]# yum -y install virt-install           #构建虚拟机的命令行工具
[root@localhost media]# yum -y install qemu-img     #qemu组件,创建磁盘、启动虚拟机等
[root@localhost media]# yum -y install bridge-utils        #网络支持工具
[root@localhost media]# yum -y install libvirt        #虚拟机管理工具
[root@localhost media]# yum -y install virt-manager       #图形界面管理虚拟机
[root@localhost media]# yum -y install libguestfs-tools       #用来管理虚拟机磁盘格式
[root@localhost ~]# ls -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
#将系统默认运行的target更改为graphical.target,若不执行该命令,重启时可能会报错。

2、安装完毕后,需重启系统,执行下面命令对系统进行检查:

[root@localhost ~]# cat /proc/cpuinfo | grep vmx        
#查看Intel的CPU是否支持虚拟化,若是AMD的CPU,需 “cat /proc/cpuinfo | grep smv”
[root@localhost ~]# lsmod | grep kvm          #检查KVM模块是否安装
kvm_intel       170181 0 
kvm          554609 1 kvm_intel
irqbypass       13503 1 kvm
[root@localhost ~]# systemctl start libvirtd      #启动libvirtd服务
[root@localhost ~]# systemctl enable libvirtd    #设置该服务为开机自启

3、在命令行模式中创建虚拟机

[root@kvm kk]# mkdir -p /kvm/{iso,disk} #创建相应的目录,一边存放镜像及虚拟机磁盘
#创建的/kvm目录最好挂载在LVS卷上,以便可以动态扩展卷空间
[root@kvm iso]# cp /media/CentOS-7.iso /kvm/iso/  #准备要安装的虚拟机操作系统文件
[root@kvm ~]# qemu-img create -f raw /kvm/disk/web01.raw 10G #创建虚拟机磁盘
[root@kvm ~]# virt-install --os-type=linxu --os-variant centos7.0 --name web01 --ram 1024 --vcpus 1 --disk /kvm/disk/web01.raw,format=raw,size=10 --location /kvm/iso/CentOS-7.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole    #创建虚拟机web01
开始安装......
搜索文件 .treeinfo......             | 354 B 00:00   
搜索文件 vmlinuz......              | 5.9 MB 00:00   
搜索文件 initrd.img......            | 50 MB 00:00   
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
#根据上面的提示打开图形化控制台
[root@kvm ~]# virt-manager   #打开控制台

输入打开控制台的命令后,便会弹出以下窗口:

单击“打开”后,会出现以下界面,和我们自己安装系统一样了(自行操作即可):

至此,命令行创建虚拟机就完成了,接下来使用手动更改配置文件的方式,克隆web01,生成新的虚拟机web02(在我博文前面的那个博文链接中有专用于克隆的命令工具的使用方法,这里只是为了来了解虚拟机的配置文件)

二、手动更改配置文件的方式,克隆web01,生成新的虚拟机web02

[root@kvm iso]# virsh list --all   #确保要克隆的虚拟机在关闭状态下
 Id  名称             状态
----------------------------------------------------
 -   test01             关闭
 -   test02             关闭
 -   web01             关闭   #就是要克隆这台
[root@kvm ~]# cd /kvm/disk/   #切换至虚拟机的虚拟磁盘存放目录
[root@kvm disk]# cp web01.raw web02.raw   #将要克隆的虚拟机磁盘复制一份,并更改名称
[root@kvm disk]# cd /etc/libvirt/qemu/   #切换至KVM虚拟机配置文件的目录
[root@kvm qemu]# ls   #查看当前目录下的文件
networks test01.xml test02.xml web01.xml
[root@kvm qemu]# virsh dumpxml web01 > ./web02.xml 
#将web01的配置文件使用dumpxml工具进行备份为当前目录下的web02.xml
[root@kvm qemu]# ls     #确认备份成功
networks test01.xml test02.xml web01.xml web02.xml
[root@kvm qemu]# vim web02.xml   #编辑备份出的文件


 web02   #将这里的名字改为web02
 2d6f2a7c-9937-4afb-b8d6-8ef01ca61434  #删除UUID这行配置,防止冲突
 1048576
      .............#省略部分内容
      #定位到该行标签
  /usr/libexec/qemu-kvm
  
   
       #将这里的路径更改为刚才使用cp命令复制的web02.raw文件
#更改完成后,保存退出
[root@kvm qemu]# virsh define web02.xml   #定义此配置文
#(可以理解为载入该虚拟机,此时,需要注意当前的工作路径)
定义域 web02(从 web02.xml)

[root@kvm qemu]# virsh list --all   #查看是否克隆成功
 Id  名称             状态
----------------------------------------------------
 -   test01             关闭
 -   test02             关闭
 -   web01             关闭
 -   web02             关闭
#OK!查看到了,可以自行运行web02,测试是否运行正常。
[root@kvm qemu]# virsh start web02   #启动web02
域 web02 已开始

[root@kvm qemu]# virsh list --all   #OK,正在运行!
 Id  名称             状态
----------------------------------------------------
 3   web02             running
     .............#省略部分内容

三、将web01加入开机自启,与web02对比有何异同

[root@kvm qemu]# virsh dominfo web01  #此命令可以查看指定虚拟机的信息
Id:       -
名称:    web01
UUID:      2d6f2a7c-9937-4afb-b8d6-8ef01ca61434
OS 类型:  hvm
状态:    关闭
CPU:     1
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久:    是
自动启动: 禁用   #默认此处为禁用状态
管理的保存: 否
安全性模式: none
安全性 DOI: 0

[root@kvm qemu]# virsh autostart web01   #设置web01为开机自启
域 web01标记为自动开始
[root@kvm qemu]# virsh dominfo web01  #查看是否设置为开机自启
Id:       -
名称:    web01
UUID:      2d6f2a7c-9937-4afb-b8d6-8ef01ca61434
OS 类型:  hvm
状态:    关闭
CPU:     1
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久:    是
自动启动: 启用       #OK!
管理的保存: 否
安全性模式: none
安全性 DOI: 0
[root@kvm qemu]# virsh dominfo web02   #查看web02是否为开机自启
Id:       3
名称:    web02
UUID:      f554ad15-1b67-4f01-b203-a9d0c3abe192
OS 类型:  hvm
状态:    running
CPU:     1
CPU 时间:  21.4s
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久:    是
自动启动: 禁用      #是禁用状态
管理的保存: 否
安全性模式: none
安全性 DOI: 0
#此时可以重启宿主机,然后查看虚拟机的状态(需要确保libvirtd服务的状态为开机自启,否则会出现问题)

[root@kvm qemu]# init 6     #重启宿主机
[root@kvm ~]# virsh list      #,待重启完成后,查看正在运行的虚拟机
 Id  名称             状态
----------------------------------------------------
 1   web01             running
#此时,只有web01处于运行状态,因为它设置了开机自启,在libvirtd服务开机自启的前提下,
#它会随着宿主机的启动而启动

四、远程连接虚拟机的两种方法

(1)使用VNC软件

VNC的安装比较简单,这里就不多写了。

[root@kvm ~]# virsh vncdisplay web02   
:0
  

打开vnc进行连接(注意防火墙相关配置):

为了方便接下来使用console进行连接,此时需要调整虚拟机(web02)的内核参数,如下:

[root@localhost ~]# grubby --update-kernel=ALL --args=”cOnsole=ttyS0”  #在虚拟机中执行此命令
[root@localhost ~]# init 6   #重启此虚拟机,以便更改生效

(2)使用console登陆web02

在KVM宿主机上执行以下命令即可登陆成功(前提是在使用vnc登陆时已经更改了web02的内核参数)

[root@kvm ~]# virsh console web02   #执行该命令
连接到域 web02
换码符为 ^]
#敲一下回车键

CentOS Linux 7 (Core)
Kernel 3.10.0-862.el7.x86_64 on an x86_64

web02 login: root   #输入web02的用户名及密码登陆即可。
密码:
Last login: Wed Oct 9 21:20:48 on tty1
[root@web02 ~]# 

五、使用默认的NAT网络类型使web02可以ping通外网

这里就进行ping百度的测试,务必保证KVM宿主机可以ping通百度。

(1)检查相关配置

[root@kvm ~]# virsh net-list --all   
 名称        状态   自动开始 持久
----------------------------------------------------------
 default       活动   是      是
[root@kvm ~]# ifconfig     
     .............
virbr0: flags=4163 mtu 1500
    inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
        
[root@kvm ~]# brctl show
bridge name bridge id    STP enabled interfaces
virbr0   8000.525400a8bf19  yes   virbr0-nic
                                   vnet0
[root@kvm ~]# route
Kernel IP routing table
Destination   Gateway     Genmask     Flags Metric Ref  Use Iface
192.168.1.0   0.0.0.0     255.255.255.0  U   100  0    0 ens33
192.168.122.0  0.0.0.0     255.255.255.0  U   0   0    0 virbr0

(2)接下来开始配置nat网络

[root@kvm ~]# virsh net-define /usr/share/libvirt/networks/default.xml 
#如果没有上面指定的文件,可以使用该命令定义一个虚拟网络
也可以修改该文件,创建自己的虚拟网络
[root@kvm ~]# virsh net-autostart default   #网络default标记为自动启动
[root@kvm ~]# virsh net-start default    #启动网络,若已启动,此处会报错
[root@kvm ~]# vim /etc/sysctl.conf  #修改此配置文件
        ............#省略部分内容
net.ipv4.ip_forward=1    #在文件末尾加入该行,以便允许IP转发
[root@kvm ~]# vim /etc/libvirt/qemu/web02.xml 
        ............#省略部分内容
  
   
   
   
   
#定位“interface”关键字,确定有上述内容 ............#省略部分内容

(3)连接到虚拟机web02,更改网卡的配置:

[root@web02~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0  #编辑网卡配置文件

更改网卡后,保存退出。

[root@web02~]# systemctl restart network     #重启web02虚拟机的网络服务

进行ping测试:

若要使用静态IP,配置文件可更改如下(更改完成后自行重启网卡,可以增加DNS配置):

六、KVM虚拟机管理命令汇总

[root@kvm ~]# virsh start 虚拟机名称  #开启虚拟机
[root@kvm ~]# virsh list  #仅查看运行的虚拟机列表
[root@kvm ~]# virsh list --all    #查看所有虚拟机列表
[root@kvm ~]# virsh shutdown 虚拟机名称  #正常的关闭虚拟机
[root@kvm ~]# virsh destroy  虚拟机名称  #强制关闭虚拟机(类似于拔电源)
[root@kvm ~]# virsh dumpxml 虚拟机名称 > /root/test01-dum.xml       #虚拟机备份
[root@kvm ~]# virsh undefine 虚拟机名称 #删除虚拟机(注意:取消定义之后,磁盘文件需要手动删除)
[root@kvm ~]# virsh define 备份的.xml虚拟机文件  #还原虚拟机
[root@kvm ~]# virsh edit 虚拟机名称 #编辑虚拟机的配置文件
[root@kvm ~]# virsh domrename 原名字 要更改的名字 
# 如:([root@kvm ~]# virsh domrename test01 test03)  更改虚拟机名称
[root@kvm qemu]# virsh dominfo test02      #查看虚拟机的详细信息
[root@kvm ~]# virsh autostart test02       #设置虚拟机为开机自启
[root@kvm ~]# virsh autostart --disable test02  #取消开机自启
[root@kvm ~]# virsh vncdisplay test02      #查看对应的VNC连接端口号;默认第一个端口号为:5900(用“:0”表示)
[root@kvm ~]# virsh suspend test02     #挂起虚拟机
[root@kvm ~]# virsh resume test02        #取消挂起虚拟机
[root@kvm ~]# virsh console test02      #console登陆虚拟机
[root@kvm ~]# qemu-img info /kvm/disk/test01.raw   #查看虚拟机的磁盘信息
[root@kvm disk]# qemu-img create test.raw 2G    #创建虚拟机使用的磁盘
[root@kvm disk]# qemu-img create -f qcow2 21.qcow2 2G   #创建qcow2格式的虚拟机磁盘
[root@kvm disk]# qemu-img convert -f raw -O qcow2 test.raw test.qcow2  #将test.raw磁盘格式raw转换为qcow2
[root@kvm qemu]# virsh snapshot-create test02    #创建虚拟机快照
[root@kvm disk]# virsh snapshot-list test02       #查看虚拟机快照
[root@kvm disk]# virsh snapshot-revert test02 1570692304   #恢复快照
[root@kvm disk]# virt-clone --auto-clone -o test01 -n 指定要克隆的名字(可选)    #自动克隆虚拟机
[root@kvm disk]# virt-clone -o test01 -n test04 -f /kvm/disk/test04.qcow2  #手动克隆
#上述都是属于完整克隆。
[root@kvm disk]# qemu-img create -f qcow2 -b test01.qcow2 lktest01.qcow2
# -f:指定要克隆为的磁盘格式;
# -b:指定要转换的源文件及目标文件
#上述命令是在克隆虚拟机的磁盘文件
  • RAW:裸格式。占用空间较大,性能比较好,但不支持快照功能。
  • qcow:copy on write(写时复制机制)。
  • qcow2:占用空间较小,性能相比较RAW稍差,,但它支持快照功能。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 1.tarzxfapache-activemq-5.12.0-bin.tar.gztarzxfapache-activemq-5.12.0-bin.tar.gz2.cdapac ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • Linux入门教程第七课:基础命令与操作详解
    在本课程中,我们将深入探讨 Linux 系统中的基础命令与操作,重点讲解网络配置的相关知识。首先,我们会介绍 IP 地址的概念及其在网络协议中的作用,特别是 IPv4(Internet Protocol Version 4)的具体应用和配置方法。通过实际操作和示例,帮助初学者更好地理解和掌握这些基本技能。 ... [详细]
  • 在CentOS上部署并使用FFmpeg多媒体处理工具
    最近在进行音频处理时需要用到FFmpeg,本文将详细介绍如何在CentOS系统上部署并使用这一强大的多媒体处理工具。首先,从官方网站下载FFmpeg的最新版本,然后通过Xftp工具将下载的压缩包(如ffmpeg-4.3.1.tar.xz)传输到服务器上。接下来,解压文件并按照官方文档进行编译安装。安装完成后,可以通过命令行工具验证FFmpeg是否成功安装,并开始进行多媒体文件的转换和处理。此外,文章还将介绍一些常用的FFmpeg命令和参数,帮助用户快速上手。 ... [详细]
  • 本文旨在探讨信息安全专业的职业规划路径,结合个人经历和专家建议,为即将毕业的学生提供实用的指导。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
author-avatar
电信学院团总支沈天宇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有