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

Ubuntu系统中安装配置KVM虚拟化环境

这个KVM跟控制台切换器之类的东西一点关系没有,KVM全称Kernel-basedVirtualMachine,是基于Linux核心的虚拟机。之前曾经写过基于XEN的虚拟化,最终linux世界还是没有选择XEN。KVM被正式导入Linux是在2007年的2.6.20核心上,以替代XEN,不过相对XEN来说,KV

这个KVM跟控制台切换器之类的东西一点关系没有,KVM全称Kernel-based Virtual Machine,是基于Linux核心的虚拟机。之前曾经写过基于XEN的虚拟化,最终linux世界还是没有选择XEN。KVM被正式导入Linux是在2007年的2.6.20核心上,以替代XEN,不过相对XEN来说,KVM要求CPU硬件上支持虚拟化技术,即Intel-vt或者AMD-v的支持。这对于2008年之后的机器来说几乎是标配的。对于这一个时期的CPU都一个劲的堆核心,内存也空前的便宜,硬盘也逐步到了320G起板的水平,可以大胆的玩虚拟机了!

再此之前,还是先确认系统的CPU是否支持虚拟化:
#egrep ‘(vmx|svm)’ /proc/cpuinfo

应该有返回,如果没有返回,且确认您的CPU支持虚拟化的话,建议去看看BIOS设置,大多数的主板都支持关闭此技术的。

还是以最常用的Ubuntu Server 做例子,desktop的可以直接apt-get install ubuntu-server之后,用server的核心启动。如果你全程参考本文,个人建议还是通过后一种方式来做,因为本文的过程需要X环境。

首先,设置好桥接,由于我使用的机器在远程,操作全部通过ssh,桥接的过程断开过网络。让机房重起数次之后,找到了最稳妥的方法,虽然也要断网,但好在会自己恢复。

#sudo apt-get install bridge-utils uml-utilities

#vi /etc/network/intefaces

auto lo
iface lo inet loopback

auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user root

auto br0
iface br0 inet static
bridge_ports eth0 tap0
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254

注意这个br0,我通过前端防火墙做的DMZ通道,所以设置了内网地址。主机通过这个ip访问。所有的虚拟主机也直接设置到192.168.1.0/24网段。

#/etc/init.d/network restart

断网了,等待几分钟后网络恢复,直接ifconfig

br0       Link encap:Ethernet  HWaddr 02:0b:b1:f7:79:01
inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::b:b1ff:fef7:7901/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:506941 errors:0 dropped:0 overruns:0 frame:0
TX packets:733910 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:45469237 (45.4 MB)  TX bytes:654152049 (654.1 MB)

eth0      Link encap:Ethernet  HWaddr e4:1f:13:95:82:cf
inet6 addr: fe80::e61f:13ff:fe95:82cf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:1367878 errors:0 dropped:0 overruns:0 frame:0
TX packets:1541493 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:689206805 (689.2 MB)  TX bytes:1062795975 (1.0 GB)
Memory:81a80000-81aa0000

eth0:0    Link encap:Ethernet  HWaddr e4:1f:13:95:82:cf
inet addr:192.168.1.2  Bcast:0.0.0.0  Mask:0.0.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Memory:81a80000-81aa0000

桥接成功!

相对来说,我还是比较喜欢图形化的管理工具,命令行实在太痛苦

#apt-get install virt-manager libvirtd kvm libvirt-bin

看看是否安装成功

# ls /dev | grep kvm

直接用ssh通道执行gnome-session就可以连到远程桌面,执行系统工具里的“虚拟系统管理器”。添加连接中选择本地,QEMU/KVM。



然后建立新的虚拟主机,个人觉得这块跟用VM之类的工具没有什么区别了,直接跳过了。不过在第五步的时候,请将网卡设置为桥接设备,除非仅仅用于NAT方式联网。

需要注意的是,如果你跟我一样通过远程连接,直接打开主机的控制台的时候,键盘会不听使唤。这不是切换键盘设置可以搞定的问题,我尝试过不同的X客户端和操作系统,涵盖了windows mac linux,全都如此。只能认为是一个bug。我的最终解决方法是通过ssh通道,将远程主机的5900 VNC端口转接回本地,然后再通过vnc客户端连接本地才得以通过,键盘的问题得以解决。很傻,如果你有更好的方式,敬请赐教了!

照旧建立一个虚拟主机,我还是选择了Ubuntu Server 1110 64bit,也没有什么好说的。安装好之后,配置好了ssh。从此就可以直接抛弃vnc和宿主主机的X访问了。

在虚拟主机上安装定制的内核:

#apt-get install kernel-virtual

重起的速度那是嗖嗖的!直接lsmod发觉真的是定制内核,和标准的server内核比起来一点多余的没有:

root@www:~# lsmod
Module                  Size  Used by
psmouse                73882  0
serio_raw              13166  0
lp                     17799  0
parport                46562  1 lp
8139too                32177  0
8139cp                 27412  0

对比一下性能吧,还是那道题目的python原版,稍作优化:

虚拟机:

root@www:/home/litrin# python TimeCost.py
10240
Cost: 0.508388996124
root@www:/home/litrin# python TimeCost.py
10240
Cost: 0.507208108902
root@www:/home/litrin#

宿主机:

root@vserver:~# python TimeCost.py
10240
Cost: 4.35039806366
root@vserver:~# python TimeCost.py
10240
Cost: 4.35194683075

我开始真的不知道该如何解释。虚拟机的性能竟然强于宿主机。后来检查了python的版本才明白,宿主是py2.6而客户机是2.7,版本不同,性能有差距,但可以肯定的是,从这一点上来说虚拟化的性能损失不大。

最后一步,去掉虚拟机上不需要的东西,精简主义者!

这次就直接用宿主的命令行操作吧:

#virsh

virsh # list
Id Name                 State
———————————-
30 www.server110.com       running //我的虚拟主机名为www.server110.com,请注意!

virsh # edit www.server110.com

删掉vnc, pty, mouse, graphic

virsh # destroy www.server110.com

virsh # start www.server110.com

这里有一个问题也凸现,就是无法使用宿主机的reboot和halt命令,只能强行的destroy。

你同时还可以配合DHCP和主机克隆,大规模快速甚至自动化的架设多个虚拟机,本文不再探讨。

尽管现在“云”已经被用滥了,搞个虚拟机就敢号称云托管的大有人在。个人觉得其实对于少数几台主机的虚拟化来说,更多的是节约机房的托管费用和主机成本,这对于稍微大一点的项目并没有什么太多的优势。如果配合上open stack之类的故障平滑迁移技术才是虚拟化方案的终极利器。


推荐阅读
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文详细介绍了 Python 中的条件语句和循环结构。主要内容包括:1. 分支语句(if...elif...else);2. 循环语句(for, while 及嵌套循环);3. 控制循环的语句(break, continue, else)。通过具体示例,帮助读者更好地理解和应用这些语句。 ... [详细]
  • 2012年7月30日,语言岛团队宣布其智能记单词软件V0.3.4.554版本正式开源。该版本不仅支持跨平台使用,还引入了多项创新功能,旨在帮助用户更高效地记忆单词。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • Python notes
    6.1.1.执行模块当你用下面的方式运行一个Python模块pythonfibo.py模块中的代码将会被执行,就像导入它一样,不过此时__name__被设置为__main__。 ... [详细]
  • Shell脚本中变量操作详解
    本文基于《鸟哥的Linux私房菜》一书,详细介绍了Shell脚本中变量的使用方法,包括变量的赋值规则、字符串处理技巧以及环境变量的管理等,旨在帮助读者更好地理解和使用Shell中的变量。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • CentOS 7.2 配置防火墙端口开放
    本文介绍如何在 CentOS 7.2 系统上配置防火墙以开放特定的服务端口,包括 FTP 服务的临时与永久开放方法,以及如何验证配置是否生效。 ... [详细]
  • 本文详细介绍如何在 Windows 环境下安装 Ubuntu 12.04 版本的 Linux 操作系统,包括必要的软件下载、配置步骤以及注意事项。 ... [详细]
  • 随着技术社区的发展,越来越多的技术爱好者选择通过撰写博客来分享自己的学习经验和项目进展。本文将介绍一个具体案例,即将一套原本运行于Windows平台的代码成功移植到Linux(Redhat)环境下的过程与挑战。 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
  • 利用SSH隧道实现外网对局域网机器的安全访问
    本文探讨了一种常见的网络配置问题及其解决方案,即如何在外网环境下安全地访问位于局域网内的计算机。特别介绍了使用SSH反向隧道技术来实现这一目标的具体步骤和注意事项。 ... [详细]
author-avatar
灵11135_748_744_769
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有