热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS6.5系统如何安装KVM虚拟机

在2010年4月发布的RHEL6.0版本中,去掉了XEN,这也许是第一个不包含XenHypervisor的知名linux发行版。KVM是指基于Linux内核的虚拟机(Kernel-baseVirtualMachine),增加到Linux内核是Linux发展的一个重要里程碑,这也是第一个整合到Linux主线内核的虚拟化技

在2010年4月发布的RHEL6.0版本中,去掉了XEN,这也许是第一个不包含Xen Hypervisor的知名linux发行版。KVM是指基于Linux内核的虚拟机(Kernel-base Virtual Machine),增加到Linux内核是Linux发展的一个重要里程碑,这也是第一个整合到Linux主线内核的虚拟化技术。在KVM模型中,每一个虚拟机都是一个由Linux调度程序管理的标准进程,你可以在用户空间启动客户机操作系统,一个普通的Linux进程有两种运行模式:内核和用户,KVM增加了第三种模式:客户模式(有自己的内核和用户模式)。

1 KVM虚拟机的管理工具
准确的来说,KVM仅仅是Linux内核的一个模块,管理和创建完整的KVM虚拟机,需要更多的辅助工具。
QEMU-KVM:在Linux系统中,首先我们可以用modprobe命令加载KVM模块,如果用RPM安装KVM软件包,系统会在启动时自动加载模块,QEMU是一个强大的虚拟软件,它可以虚拟不同的构架。
Virt-manager:尽管QEMU-KVM工具可以创建和管理KVM虚拟机,RedHat为KVM开发了更多的辅助工具,比如 libvirt libguestfs等,原因是QEMU工具效率不高,不易于使用。

2 安装配置KVM相关软件
2.1系统要求:
处理器需求:需要一台可以运行最新linux内核的Intel处理器(含VT虚拟化技术)或AMD处理器(含SVM安全虚拟机技术的AMD处理器,也叫AMD-V)
[root@vfeelit ~]# cat /etc/redhat-release
CentOS release 6.4 (Final)
2.2检查CPU:
[root@vfeelit ~]# egrep ‘vmx|svm’ /proc/cpuinfo
如果输出的结果包含VMX,它是Intel处理器虚拟机技术标志:如果包含SVM,它是AMD处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用KVM,另处linux发行版本必须在64bit环境中才能使用KVM。

3 更新系统
yum update
yum upgrade

4 安装KVM

[root@vfeelit ~]#yum -y install kvm python-virtinst libvirt  bridge-utils virt-manager qemu-kvm-tools  virt-viewer  virt-v2v
[root@vfeelit ~]#vi /etc/sysconfig/selinux
SELINUX=disabled
[root@vfeelit ~]#reboot

5 重启后确认libvirtd是否正常启动

[root@vfeelit ~]# /etc/init.d/libvirtd restart
正在关闭 libvirtd 守护进程:                               [确定]
启动 libvirtd 守护进程:2013-05-19 03:12:52.694+0000: 3070: info : libvirt version: 0.10.2, package: 18.el6_4.5 (CentOS BuildSystem , 2013-05-16-14:53:18, c6b7.bsys.dev.centos.org)
2013-05-19 03:12:52.694+0000: 3070: warning : virGetHostname:2265 : getaddrinfo failed for 'vfeelit': 未知的名称或服务
                                                        [确定]

6 检查KVM是否加载成功
显示结果如下表示kvm模块已经加载,如果没有输出信息,则表示没有加载成功:

[root@vfeelit ~]#  lsmod | grep kvm
kvm_intel              53484  0
kvm                   316506  1 kvm_intel

7 检查KVM是否成功安装

[root@vfeelit ~]# virsh list --all  ##--all关闭的也会显示
 Id    名称                         状态
----------------------------------------------------

8 各版本查询

[root@vfeelit ~]# kvm --version
bash: kvm: command not found
[root@vfeelit ~]# virt-install --version
0.600.0
[root@vfeelit ~]# virsh --version
0.10.2

9 修改qemu.conf配置

[root@vfeelit ~]# vi /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"修改vnc监听端口

二 配置网络桥接
参考:http://www.techotopia.com/index.php/Creating_an_RHEL_6_KVM_Networked_Bridge_Interface

1 安装tunctl:

yum install -y tunctl

2 禁用网络管理器:

chkconfig NetworkManager off  ##和桥接有冲突,要关闭
service NetworkManager stop

3 修改eth0为物理网口,br0为桥接网口配置文件:

[root@vfeelit network-scripts]# cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPV6INIT=no
OnBOOT=yes
IPADDR=192.168.1.66
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DELAY=0
[root@vfeelit network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BRIDGE=br0
BOOTPROTO=none
IPV6INIT=no
OnBOOT=yes

附加说明:这里配置成桥接方式,实际上本机的数据包发送是通过br0发送的,br0的TYPE是Bridge,其它的信息跟配置一个物理网卡一样,本机的eth0通过桥接到br0(通过BRIDGE指定)进行通信,它根本不需要配置IP信息,实际上数据发送还是通过本机的物理网卡。

4 最后重启网络

[root@vfeelit network-scripts]# service network restart

5 查看桥接网络

[root@vfeelit ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.0021cc6b6f2c       no              eth0
virbr0          8000.525400ac7ebe       yes             virbr0-nic

接口eth0通过br0进行桥接。birbr0-nic通过virbr0进行桥接,这个是默认的设置,当使用NAT时使用。

三 使用virt-install 工具安装guest 系统

[root@vfeelit /]# virt-install --name=centos64 --ram 1024 --vcpus=2 --disk path=/var/lib/libvirt/images/centos64.img,size=10 --accelerate --cdrom /mnt/CentOS64.iso --graphics vnc,password=123456,port=5920 --network bridge=br0 --force --autostart

使用virt-install 工具,工具自动创建磁盘,默认是raw格式。

[root@vfeelit]# qemu-img info centos.img
image: centos.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.4G

1 可以通过virt-viewer查看安装状态:

[root@vfeelit virtual]# virt-viewer name

2 使用virt-install 工具安装虚拟机后,在目录/etc/libvirt/qemu/下生成xml 配置文件。

[root@vfeelit ~]# cd /etc/libvirt/qemu
[root@vfeelit ~]# cat centos64.xml
                                        虚拟机类型
    centos                                    虚拟机名称
    54da30ed-150d-514e-9803-4dc01bd50488      uuid唯一标示
    1048576                    指定虚拟机内存大小,给出了单位
    2                      虚拟机占用虚拟cpu个数,这里指物理cpu的核心数量
    
      hvm   指定虚拟系统架构
                                           启动类型,从硬盘启动
    

    
      /usr/libexec/qemu-kvm           驱动程序,同上,使用的是qemu-kvm
                           指定磁盘类型
              指定磁盘格式,这里是raw,也支持qcow2.
                      img文件路径
                              磁盘文件标示,驱动类型
      
      
                         自动生成,可以手动指定。
                                     桥接到哪一个接口
      
    


3 使用virsh工具管理生成的虚拟机

[root@vfeelit ~]# virsh start centos64            启动虚拟机 reboot  start  shutdown
[root@vfeelit ~]# virsh list                      列出当前运行的虚拟机
Id    Name                           State
----------------------------------------------------
1     centos64                       running
[root@vfeelit ~]# ll  /var/lib/libvirt/qemu
total 12
srwxr-xr-x 1 root root    0 Aug 22 09:53 centos.monitor  ##这里的文件,是libvirtd在重启后,虚拟机也随着自动重启。
动态查询kvm资源占用情况,每一台VM,对应一个qemu-kvm进程
[root@vfeelit ~]# top -d 1 | grep kvm

4 截取的kvm进程信息
[root@vfeelit ~]# ps -aux | grep kvm

其他问题
1、图形化配置:从菜单中启动,或者运行virt-manager进入图形管理界面,比较简单,不过img的位置需要注意一下,kvm安装后会有一个默认位置,不注意的话容易占满空间。或者直接硬盘分区时单独给/var分一个区。
2、虚拟机重新配置:
虚拟机的配置文件保存在/etc/libvirt/qemu目录下,扩展名是xml。修改相应的文件即可重新配置虚拟机。
3、虚拟机备份及恢复:
备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。
恢复:进入virsh,执行define 目录下的xml文件路径
virsh # define /etc/libvirt/qemu/winxp.xml
4、开机自动启动虚拟机:
[root@vfeelit qemu]# virsh autostart Winxp
5、克隆KVM虚拟机:
[root@vfeelit ~]# virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/images/winxpclong.img
(-o 原始客体的名称,-n新客户端的名称,-f作为新客户端磁盘映像的新文件)
6、虚拟机意外关机报下述错误:
[root@vfeelit qemu]# virsh start winxp
错误:开始域 winxp 失败
错误:Unable to read from monitor: Connection reset by peer
解决方法:virsh managedsave-remove winxp

Virsh语法参考:

Autostart                         自动开始一个域
Create                            从一个 XML 文件创建一个域
Define                            从一个 XML 文件定义(但不开始)一个域
edit                              编辑某个域的 XML 配置
shutdown                          关闭一个域
start                             开始一个(以前定义的)非活跃的域
reboot                            重新启动一个域
suspend                           挂起一个域
resume                            重新恢复一个域
vncdisplay                        vnc 显示

使用save来备份当前虚拟机的状态:
[root@vfeelit images]# virsh save ?bypass-cache RedHat /var/lib/libvirt/images/test.img ?running
上面这个命令将RedHat的当前状态保存到/opt/vm2_save文件中。?running参数表示下次restore回来的时候能够自动启动RedHat。
这个命令会导致RedHat被关闭。

现在还原:必须先关闭虚拟机
[root@vfeelit images]# virsh shutdown RedHat
[root@vfeelit images]# virsh restore /var/lib/libvirt/images/test.img ?bypass-cache ?running (还原时不要指定虚拟机名称)



推荐阅读
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
  • 构建个人多节点Linux环境(CodeSheep)
    本文介绍如何通过虚拟机搭建一个多节点的Linux环境,这对于学习、实验和项目部署都具有重要意义。文章详细讲解了网络IP设置、节点间通信等关键步骤。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 本文介绍如何在阿里云环境中利用 Docker 容器化技术部署一个简单的 Flask Web 应用,并确保其可通过互联网访问。内容涵盖 Python 代码编写、Dockerfile 配置、镜像构建及容器运行等步骤。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 随着技术的发展,Python因其高效性和灵活性,在多个领域得到了广泛应用,特别是在大数据处理和网络爬虫开发方面。本文将探讨学习Python是否能够胜任大数据和网络爬虫工程师的工作,并分析其职业前景。 ... [详细]
author-avatar
Yuki_沐1824355667
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有