`
houzhaowei
  • 浏览: 492500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux 虚拟化实战 --kvm (基于内核的虚拟机)

阅读更多

 

环境:

 

CentOS5.5  桌面环境:CentOS5.5(可以为Ubuntu桌面)

2安装 KVM

CentOS 5.2 KVM主机:

运行

system-config-securitylevel

并且开启SELinux(如果你的SELinux被禁用,virt-install将不会正常工作)。

然后检查CPU是否支持硬件虚拟化-运行命令

egrep ‘(vmx|svm)’ –color=always /proc/cpuinfo

应该会显示如下信息:

[root@server1 ~]# egrep ’(vmx|svm)’ –color=always /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall
nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
[root@server1 ~]#

如果什么也没有显示的话,就说明你的处理器不支持硬件虚拟化技术,下面的内容就不适合你了。

下面我们为软件包导入GPG key

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY*

然后安装KVM和virtinst(一个创建虚拟机的工具),我们运行

yum install kvm kmod-kvm qemu libvirt python-virtinst

然后重新启动系统:

reboot

启动过后, KVM的内核模块将会被加载:

lsmod | grep kvm

[root@server1 ~]# lsmod | grep kvm
kvm_amd                50452  0
kvm                   109264  1 kvm_amd
[root@server1 ~]#

(这个输出结果是一台拥有AMD-V处理器的系统,如果你的电脑使用的是Intel VT的CPU,将会显示类似kvm_intel字符)

使用下列命令检查KVM是否成功安装

virsh -c qemu:///system list

将会显示如下结果:

[root@server1 ~]# virsh -c qemu:///system list
Id Name                 State
———————————-

[root@server1 ~]#

 

如果在这里显示的是一个错误的信息,说明有些东西出现了问题。

下面我们需要在我们的服务器上设置一个网桥,就可以使我们的虚拟机从其他主机中读取数据。

要做到这一点,我们安装bridge-utils工具。。。。。。

yum install bridge-utils

… 并且配置一个网桥从/etc/sysconfig/network-scripts/ifcfg-eth0参考BOOTPROTO, BROADCAST, IPADDR, NETMASK和NETWORK等值来创建文件/etc/sysconfig/network-scripts/ifcfg-br0 :

vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0

TYPE=Bridge

BOOTPROTO=static

BROADCAST=192.168.0.255

IPADDR=192.168.0.100

NETMASK=255.255.255.0

NETWORK=192.168.0.0

ONBOOT=yes

修改/etc/sysconfig/network-scripts/ifcfg-eth0 as follows (取消注释BOOTPROTOBROADCASTIPADDRNETMASK, 和NETWORK 最后添加 BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+

DEVICE=eth0

#BOOTPROTO=static

#BROADCAST=192.168.0.255

HWADDR=00:10:A7:05:AF:EB

#IPADDR=192.168.0.100

#NETMASK=255.255.255.0

#NETWORK=192.168.0.0

ONBOOT=yes

BRIDGE=br0

重新启动网络…

/etc/init.d/network restart

… 运行

ifconfig

现在应该显示网桥(br0):

[root@server1 ~]# ifconfig
br0       Link encap:Ethernet  HWaddr 00:10:A7:05:AF:EB
inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:17 errors:0 dropped:0 overruns:0 frame:0
TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1160 (1.1 KiB)  TX bytes:14875 (14.5 KiB)

eth0      Link encap:Ethernet  HWaddr 00:10:A7:05:AF:EB
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:13662 errors:7 dropped:160 overruns:4 frame:0
TX packets:11646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15144608 (14.4 MiB)  TX bytes:1379942 (1.3 MiB)
Interrupt:74 Base address:0xcc00

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4308 (4.2 KiB)  TX bytes:4308 (4.2 KiB)

virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b)  TX bytes:9987 (9.7 KiB)

[root@server1 ~]#

 

3 创建虚拟机:(kvm ,img based)

 

首先wget 下载你想要安装的镜像

下载下来后,执行安装,利用virt-install 指令:

 

virt-install qemu:///system --name CentOS --ram 512 --cpuset=1,3,5 and 7 --accelerate 
--disk path=/docin/VirtualCentOS/CentOS.img,size=50 
--network bridge:br0 
--cdrom /home/houzhaowei/centosISO/CentOS-5.5-x86_64-bin-DVD-1of2.iso --vnc
 

 

其中都有哪些指令 输入man virt-install 可查看,说的非常清楚。

如果用光盘安装, 把 --cdrom 指向cdrom 即可。

 

输出结果如下所示:

[root@server1 ~]# virt-install –connect qemu:///system -n vm10 -r 512 –vcpus=2 -f ~/vm10.qcow2 -s 12 -c ~/debian-500-amd64-netinst.iso –vnc –noautoconsole –os-type linux –os-variant generic26 –accelerate –network=bridge:br0 –hvm

Starting install…
Creating storage file…  100% |=========================|  50 GB    00:00
Creating domain…                                                 0 B 00:00
Domain installation still in progress.  You can reconnect to
the console to complete the installation process.
[root@server1 ~]#

表示镜像和域创建完毕,可以准备安装。

此时问题就出来了:本机linux 没有图形界面,该怎么进行安装?解决方案是:用另一台图形化机器的virt-manager 来连接客户机的kvm。

 

4 在你的CentOS Desktop上安装virt-manager

 

如果你安装了qemu 和libvirt 则执行:

virt-manager

会出现

选择文件->新建连接

选择qemu 并在主机名上输入你想连接主机的ip。

连接上后会发现有一个主机在running 然后在上面点右键选择“打开”

 

会看到控制台:

会出现安装界面(由于我的已经安装完了,所以进去的直接是系统界面。)

从概况  和 硬件  选项中可以看到当前虚拟机的信息。

okay 图形出来了 ,接着就按照安装CentOS的图形界面提示进行安装吧(和真实机安装一样。)

 

5 管理KVM客户机

CentOS 5.5 KVM 主机:

可以通过 virsh命令管理KVM客户机,”virtual shell”。连接到virtual shell,运行

virsh –connect qemu:///system

下面就是virtual shell的显示界面:

[root@server1 ~]# virsh –connect qemu:///system
Welcome to virsh, the virtualization interactive terminal.

Type:  ’help’ for help with commands
‘quit’ to quit

virsh #

现在你可以在virtual shell中输入命令来管理你的客户机,运行:

help

获得更多的命令:

virsh # help

 

会出现命令列表,很通俗易懂。

virsh #

list

显示所有正在运行的客户机;

list –all

显示所有客户机,正在运行的和没有运行的:

virsh # list –all
Id Name                 State
———————————-
2 CentOS               running

virsh #

如果你修改了一个客户机的xml文件(位于/etc/libvirt/qemu/ 目录),你必须重新定义客户机:

define /etc/libvirt/qemu/vm10.xml

请注意,无论你何时在/etc/libvirt/qemu/ 中修改了客户机的XML文件,你必须重新运行define 命令!

启动和停止客户机,运行:

start CentOS

停止一个客户机,运行

shutdown CentOS

立即中断一个客户机(类似直接关电源),运行

destroy CentOS

挂起一个客户机:

suspend CentOS

恢复客户机:

resume CentOS

 

编辑客户机:

edit CentOS  会出席那关于该虚拟机配置的xml 文件,在里面可以修改所有属性,cpu,内存等。。。 保存后重启虚拟机即可。

 

这些都是最重要的命令.

输入

quit

退出virtual shell.

 

 

 

6 复制虚拟机

 

此时产生了个新需求,需要在多台服务器上搭建虚拟的Centos 怎么办?都重新安装一遍?

答案是:不用。

 

把本机器已经安装好的CentOS.img copy 到另一台服务器,当然这台机器上必须已经安装好了kvm  qemu和libvirt。

 

然后在新服务器上执行:

 

 

virt-install qemu:///system --name CentOS1 --ram 4096 --cpuset=1,3,5 and 7 --accelerate 
--disk path=/docin/VirtualCentOS/CentOS.img --import 
--network bridge:br0 
 

注意 ,这里使用了 --import 

具体描述 可以用 virt-install -h 来查看 --import 的作用。

 

ps: 有一个virt-clone 指令,貌似只能本机clone。没详细研究过。

分享到:
评论
2 楼 baiyejianxin 2010-11-18  
BT
1 楼 instance 2010-11-18  

相关推荐

    Linux 内核虚拟机 ---KVM

    但是最近,随着内核虚拟机(KVM)的出现,Linux 虚拟化的前景发生了变化。KVM 是构成主流 Linux 内核(V2.6.20)一部分的第一个虚拟化解决方案。KVM 支持 Linux 客户操作系统的虚拟化 —— 甚至支持其硬件对虚拟化...

    kvm虚拟机安装介绍,KVM

    kvm虚拟机安装介绍 ...KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具 QEMU-KVM。所以 Linux 发行版中分为 kernel 部分的 KVM 内核模块和 QEMU-KVM 工具。

    KVM虚拟化技术 实战与原理解析 高清完整版

    KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor

    详解虚拟化技术QEMU-KVM入门

    KVM是linux内核提供的虚拟化,可以用来进行vCPU的创建与运行,虚拟内存的地址空间分配,指令执行效率较高,但缺少IO设备的虚拟化。QEMU-KVM就是KVM与QEMU的结合,KVM负责CPU虚拟化+内存虚拟化,QEMU模拟其它IO设备。...

    开源虚拟化技术KVM

    KVM (Kernel-based Virtual Machine,基于内核的虚拟机) 是Linux下 x86硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko提供和虚拟化核心架构和处理器规范模块。使用KVM可允许多个包括Linux和...

    KVM虚拟化(一)——KVM虚拟机的介绍与简单使用

    它依托于CPU虚拟化指令集,性能、安全性、兼容性、稳定性表现很好,每个虚拟化操作系统表现为单个系统进程,与Linux安全模块selinux安全模块很好结合; 官方网站为http://www.linux-kvm.org/page/Main_Page 二、KVM...

    内核虚拟机KVM分析资料文档

    这个文件用于KVM虚拟机的分析,包含了基本的源代码分析过程,主要是内核加载模块

    kvm虚拟机分析 提高 I/0效率

    KVM(Kemel-based Virtual Machine,基于内核的虚拟机)是一个新兴的基于Linux内核的虚拟机管理软件。 目前其研究资料非常匮乏。 分析KVM虚拟机的内部结构,其内部基于Intel vt-x的硬件虚拟化技术,从处理器管理、内存...

    KVM虚拟化技术 实战与原理解析

    KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor: 它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。

    KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法

    KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Linux 2.6.20核心中,以可加载...

    KVM虚拟机的创建、管理与迁移介绍

    尽管商业的虚拟软件功能比较强大,但是开源虚拟机如 Linux 内核虚拟机 KVM 和 XEN 发展迅速,迁移技术日趋完善。  一、安装guest虚拟机 1、直接通过virt-manager安装、管理虚拟机(略) 2、通过命令行安装guest...

    在 KVM 中按需分配内存和虚拟 CPU-研究论文

    KVM 使用 Linux 内核的所有功能来处理虚拟机。 KVM 使用来自 Intel 和 AMD 的硬件辅助虚拟化。 KVM 使用 QUME 模块来模拟输入/输出设备。 虚拟机在用户地址空间中运行。 KVM 将虚拟机视为正常的 Linux 进程。 我们...

    KVM与QEMU基本知识

    kvm是开源软件,全称是kernel-based virtual machine(内核级虚拟机)。是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的linux 全虚拟化 解决方案。它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm....

    嵌入式系统/ARM技术中的迁移Xen虚拟机到KVM的六大步骤

    因为基于内核的虚拟机(KVM:Kernel-Based Virtual Machine)已经逐渐成为Linux上面虚拟化的主流,用户也有可能会希望把基于Linux的虚拟化工作环境从Xen转换到KVM。本篇文章给出了把基于Xen的虚拟机迁移到KVM上的六步...

    kvm安装和删除虚拟机的方法

    增加 KVM 到 Linux 内核是 Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。 KVM 在标准的 Linux 内核中增加了虚拟技术,从而我们可以通过优化的内核来使用虚拟技术。在 KVM 模型中,...

    VSIP服务器虚拟化解决方案.pptx

    VSIP服务器虚拟化技术 VSIP系统提供基于Linux内核的KVM(Kernel-based Virtual Machine)虚拟机,通过软硬件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,把一台X86物理服务器虚拟成...

    在CentOS7搭建KVM虚拟化平台(三种方式)

    KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux的一个内核模块,该内核模块使得 Linux变成了一个Hypervisor:它由 Quramnet开发,该公司于 2008年被 Red Hat 收购  KVM的整体结构...

    kvm virtual 克隆脚本踩坑

    kvm == kerner based virtual machine 基于内核的虚拟化技术 {虚拟化代码以模块的形式加载到linux内核中} 内核有关的默认centos6以上就装好的,只要安装管理软件就行 需要cpu去支持虚拟化技术 虚拟化技术: kvm/...

    服务器虚拟化方案.pptx

    1、单纯的KVM平台一定是存在稳定性风险的,但是深信服基于KVM平台进行了大量的内核稳定性代码修改,我们投入大量的人力物力解决了平台缺陷,确保产品的稳定运行。 2、在深信服aSV产品的平台底层,我们融入了服务器...

    CentOS 7中搭建KVM虚拟化平台的方法步骤

    什么是虚拟化 虚拟化就是把硬件资源从物理方式转变为逻辑方式,打破原有物理结构,使用户可以灵活管理这些资源,并且允许1台...KVM自linux2.6.20版本后就直接整合到linux内核中,它依托CPU虚拟化指令集(如Intel-VT、AM

Global site tag (gtag.js) - Google Analytics