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

CentOS系统下试用KVM虚拟机

最近整理公司的几台服务器,由于机器少应用多,就总是觉得服务器资源紧张,所以痛下决心使用虚拟机。考察了一番决定使用KVM,因为机器配置不是很高,使用KVM性能会比较好。基础系统选用CentOS5.4,下面列出具体的安装配置过程安装CentOS操作系统下载CentO

最近整理公司的几台服务器,由于机器少应用多,就总是觉得服务器资源紧张,所以痛下决心使用虚拟机。考察了一番决定使用KVM,因为机器配置不是很高,使用KVM性能会比较好。

基础系统选用CentOS5.4,下面列出具体的安装配置过程
安装CentOS操作系统

下载CentOS5.4,安装是使用Server模式,不安装任何桌面,毕竟图形桌面太占资源,在选择软件时启用下面的几项:

   开发工具

   开发库

   虚拟化--KVM

    虚拟化--KVM 起初我没有启用KVM,因为我想自己编译安装KVM,结果在装载内核kvm-amd模块时总是不成功!

安装完成后首先启用内核的kvm-amd模块,如果你的机器是intel的就改成kvm-intel,命令如下

[root@localhost ~]# modprobe kvm-amd

如果没有提示任何错误就成功了,可以使用lsmod | grep kvm查看是否装载成功,命令如下

[root@localhost ~]# lsmod | grep kvm kvm_amd 68648 1 kvm 223264 2 ksm,kvm_amd

看到如上类似的输出就表示启用kvm模块成功!
编译安装KVM

CentOS的yum源里提供的kvm版本太低,所以我决定自己编译安装。首先下载kvm源码包,然后解压,命令如下

[root@localhost ~]# tar zxvf qemu-kvm-0.12.3.tar.gz

接下来开始编译、安装,进入解压后的目录,命令如下:

[root@localhost /]# ./configure --prefix=/usr
[root@localhost /]# make
[root@localhost /]# make install

编译很快,基本上几秒就完成了,如果没有出现什么错误,那么恭喜你!KVM已经成功安装了!

    KVM版本 目前官方的最高版本是0.13.0,可是我使用发现无法通过vns连接虚拟机,所以只好放弃,使用0.12.3版本就一切正常。

搞定虚拟机网桥

虚拟机最重要的是保证网络能正常访问,否则就没有意义了。启用kvm网桥要安装两个软件bridge-utils和tunctl。 bridge-utils可以使用yum安装,命令如下:

yum install bridge-utils

tunctl在源里没有找到,需要下载rpm包手工安装,命令如下:

[root@localhost /]# wget -c 'ftp://194.199.20.114/linux/EPEL/5Server/x86_64/tunctl-1.5-2.el5.x86_64.rpm'
[root@localhost /]# rpm -ivh tunctl-1.5-2.el5.x86_64.rpm

接下来编辑网桥配置文件,新建一个名字为vmbridge.sh的shell文件,使用vim编辑,命令如下

[root@localhost /]# vim vmbridge.sh

然后在新建的文件中加入如下内容

#!/bin/bash modprobe tun   #加载tun模块
tunctl -t tap0 -u root  #先是新建一个名为tap0的虚拟网卡,所有者为当前用户
tunctl -t tap1 -u root
tunctl -t tap2 -u root
tunctl -t tap3 -u root
tunctl -t tap4 -u root
tunctl -t tap5 -u root
tunctl -t tap6 -u root
brctl addbr br0   #新建一个名为br0的网桥
ifconfig eth0 0.0.0.0 promisc #eth0进入promiscuous模式,不过执行此步之前最好记录原来eth0的IP,避免后面出现IP冲突
brctl addif br0 eth0    #将eth0加入br0.
ifconfig br0 up         #活br0
dhclient br0            #获取br0的IP
brctl addif br0 tap0    #将tap0加入br0
brctl addif br0 tap1
brctl addif br0 tap2
brctl addif br0 tap3
brctl addif br0 tap4
brctl addif br0 tap5
brctl addif br0 tap6
ifconfig tap0 up       #激活tap0
ifconfig tap1 up
ifconfig tap2 up
ifconfig tap3 up
ifconfig tap4 up
ifconfig tap5 up
ifconfig tap6 up
chmod a+rw /dev/net/tun

以上的9个步骤就设置了一个虚拟网卡tap0,上面的例子中我一共创建了7个虚拟网卡,如果想设置更多的网卡参考上次的内容自行添加即可。

接下来给vmbridge.sh赋予可执行权限,命令如下:

[root@localhost /]# chmod a+x vmbridge.sh

然后把它加入系统启动里,这样每次启动系统就自动创建了7个虚拟网卡。命令如下:

[root@localhost /]# echo '/kvm/vmbridge.sh' >> /etc/rc.local

OK! 虚拟网卡已经配置完毕,你可以手动执行下vmbridge.sh,或者马上重启下系统,然后使用ifconfig命令查看一下是否出现了新建的虚拟网卡。
安装VNC服务器

这步简单,两条命令搞定,命令如下:

[root@localhost /]# yum install vnc-server
[root@localhost /]# service vncserver start

现在可以查看一下VNC是否已经运行,执行下面的命令查看

[root@localhost /]# service vncserver status Xvnc 已停

虽然显示Xvnc 已停,但其实是运行的,可以正差访问
创建KVM虚拟机

所有的前期配置都OK了,下面可以创建KVM虚拟机了。 首先创建一个大小为40G的镜像文件用来安装WinXP虚拟机。命令如下

[root@localhost /]# qemu-img create -f qcow2 /kvm/vmimg/kvm-xp.img 40G

现在开始安装WinXP虚拟机,使用如下命令:

[root@localhost /]# qemu-system-x86_64 -m 1024 -drive file=/kvm/vmimg/kvm-xp.img,cache=writeback -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot d -cdrom /home/lm/iso/winxp.iso -smp 2 -soundhw es1370 -vnc 192.168.1.1:1 &

解释一下参数都是什么意思

root@localhost /]# qemu-system-x86_64 -m 1024 -drive file=/kvm/vmimg/kvm-xp.img,cache=writeback -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot d -cdrom /home/lm/iso/winxp.iso -smp 2 -soundhw es1370 -vnc 192.168.1.1:1

   -m 1024 表示安装虚拟机时使用1024MB内存

   file=/kvm/vmimg/kvm-xp.img 指向刚刚创建的虚拟机镜像文件

   ifname=tap0 指定一个虚拟网卡

   -cdrom /home/lm/iso/winxp.iso 指定WinXP的iso安装文件

   -smp 2 指定使用CPU的核数

   -soundhw es1370 启用声卡

   -vnc 192.168.1.1:1 指定VNC访问IP和端口

然后用VNC客户端连接192.168.1.1:1,就看到安装界面了。安装就不说,和以往安装XP一样的。 接下来可以访问安装好的虚拟机了。使用如下命令:

[root@localhost /]# qemu-system-x86_64 -m 1024 -drive file=/kvm/vmimg/kvm-xp.img -localtime -net nic,vlan=0,macaddr=00:00:00:00:20:02 -net tap,vlan=0,ifname=tap0,script=no -boot c -smp 2 -clock rtc -soundhw es1370 -vnc 192.168.1.1:1 &

命令格式基本和安装差不多,需要说明的是macaddr硬件地址要自己指定一个不冲突的,虚拟机可以用DHCP自动获取一个IP地址。最后用VNC客户端连接 192.168.1.1:1 就可看到XP启动界面了。如果你安装的是Linux虚拟机,可以直接用SSH访问,比较方便。

至此整个安装配置过程完毕,最后祝各位都能成功安装KVM虚拟机!


推荐阅读
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 本文详细介绍了如何在CentOS 7操作系统上搭建GitLab服务器的过程,包括环境准备、软件安装及基本配置等关键步骤。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • 利用SSH隧道实现外网对局域网机器的安全访问
    本文探讨了一种常见的网络配置问题及其解决方案,即如何在外网环境下安全地访问位于局域网内的计算机。特别介绍了使用SSH反向隧道技术来实现这一目标的具体步骤和注意事项。 ... [详细]
  • 近期,考虑到在Vim内部进行GDB调试、运行Python脚本和数据库连接等多样化需求,思考是否可以通过集成终端来简化这些操作,而非逐一编写Vim脚本来实现。通过研究发现,确实存在一种高效的方法——利用特定插件实现终端功能的整合。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • Linux网络安装指南
    本文详细介绍了如何通过网络安装Linux操作系统,包括必要的服务配置和常见问题解决方法,旨在帮助IT专业人士提高系统部署效率。 ... [详细]
  • 本文基于《Linux命令行与Shell脚本编程大全》第三版的第十一章内容,探讨了如何构建基本的Shell脚本,包括命令组合、脚本创建、消息显示、变量使用、输入输出重定向、管道、数学运算及脚本退出等方面的知识。 ... [详细]
  • 通常,ping命令用于快速检测与远程服务器之间的网络延迟,以评估连接质量。然而,在某些情况下,即使服务器可以正常访问,ping请求也可能无法成功。本文将介绍在CentOS 7系统上禁用ping命令的方法,包括临时和永久性设置。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • 本文探讨了在支付项目开发中使用SS5 Socket Server实现内部网络访问外部网络的技术方案。详细介绍了SS5的安装、配置及性能测试过程,旨在为面临相同需求的技术人员提供参考。 ... [详细]
author-avatar
会说话的鱼911
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有