KVM安装配置手册.docx

上传人:b****8 文档编号:9148763 上传时间:2023-02-03 格式:DOCX 页数:20 大小:248.34KB
下载 相关 举报
KVM安装配置手册.docx_第1页
第1页 / 共20页
KVM安装配置手册.docx_第2页
第2页 / 共20页
KVM安装配置手册.docx_第3页
第3页 / 共20页
KVM安装配置手册.docx_第4页
第4页 / 共20页
KVM安装配置手册.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

KVM安装配置手册.docx

《KVM安装配置手册.docx》由会员分享,可在线阅读,更多相关《KVM安装配置手册.docx(20页珍藏版)》请在冰豆网上搜索。

KVM安装配置手册.docx

KVM安装配置手册

KVM安装配置手册

1.安装过程介绍

KVM是作为Linux2.6.20以上版本的一个内核模块提供的。

因此,安装KVM最直接的办法就是安装Linux2.6.20以上版本或编译新的Linux内核,这样可以避免版本不一致问题。

此外,KVM的运行需要qemu的支持,所以要安装qemu以及qemu加速器kqemu。

为了方便管理虚拟机,最后还需要安装一个图形化管理界面,目前装的是virt-manager。

安装linux5时,输入下列序列号就可以自动安装KVM和XEN

+RedHatEnterpriseLinuxVirtualizationPlatform:

49af89414d147589

2.编译Linux内核

Linux内核编译的详细介绍请参见《Linux内核编译操作手册.doc》。

下面简要介绍安装步骤:

1.从http:

//www.kernel.org下载新的内核版本(本次实验用的是linux-2.6.32.36,其他版本编译有新的细节,本手册不保证可行)。

2.解压缩核心源码:

tar-zxvflinux-2.6.32.36.tar.gz.tar.gz

如果你所下载的是.bz2文件,例如linux-2.6.32.36.tar.bz2,请使用下面的命令

#bzip2-dlinux-2.6.32.36.tar.bz2

#tar-xvflinux-2.6.32.36.tar

3.进入源码目录:

cd/home/zhk/linux-2.6.32.36./

4.makemrproper

5.配置makefile

makemenuconfig是菜单方式编辑(需要安装一个rpm请看提示)

makexconfig是图形方式编译(需要安装QT,如果Linux上没有建议不用考虑了,qt依赖很多,用rpm根本装不上)

上面另个命令中的一个配置完后,会在源码根目录生成.config文件

6.编译时修改.config文件中的“CONFIG_SYSFS_DEPRECATED_V2”,默认该选项为notset,被注释掉的,将其改为y。

即修改为“CONFIG_SYSFS_DEPRECATED_V2=y”,修改后再次编译(一定要改,否则起不来)。

7.makedep

8.makeclean

9.makebzImage

10.makemodules

11.makemodules_install

12.depmod–a

13.cp{源码目录}/System.map/boot/System.map-2.6.32.36

14.cp{源码目录}/arch/i386/bzImage/boot/vmlinuz-2.6.32.36

注:

如果是64位的i386会是x86_64目录

15.生成initrd文件

mkinitrd/boot/initrd-2.6.39-rc1.img2.6.39-rc1

如果在执行mkinitrd命令时,提示“Nomoduledm-mem-cachefoundforkernel2.6.29.1,aborting.”时,表明该版本的mkinitrd有bug。

解决方法,1是当使用mkinitrd时,使用”–without-dmraid”这个参数。

2是在使用mkinitrd之前,先创建一个noraid文件。

创建方法如下:

#echo"DMRAID=no">/etc/sysconfig/mkinitrd/noraid

#chmod755/etc/sysconfig/mkinitrd/noraid

16.修改启动管理器

✧如果用LILO

修改/etc/lilo.conf,添加以下项:

image=/boot/vmlinuz-2.4.18

label=linux240

read-only

root=/dev/hda2

其中root=/dev/hda2一行要根据需要自行加以修改。

运行:

#/sbin/lilo-v

确认对/etc/lilo.conf的编辑无误,现在重新启动系统:

#shutdown-rnow

✧如果是用Grub启动管理器

titleRedHatLinux(2.6.32)

root(hd0,0)

kernel/vmlinuz-2.6.32.36roroot=/dev/hda2

Grub不需再次调用命令,自动生效。

重启以后就可以用新内核了。

注:

root后面跟的参数是挂载根目录的设备

查看方法是df-lh

17.修改内核头文件

新的内核有新的头文件,当在新内核上编译安装其他程序时,头文件非常重要,所以要把旧内核的头文件备份,连接换成新的。

只有下面几个头文件目录需要处理:

#ln-s/usr/src/linux/arch/x86/include/asmasm

#ln-s/usr/src/linux/include/asm-genericasm-generic

#ln-s/usr/src/linux/include/linuxlinux

#ln-s/usr/src/linux/include/scsiscsi注:

这个如果有问题需要换回去

18.都配置好了就可以重启了,启动时会让选要进入的内核版本

19.如果启动时报错如下错误,按下面方法修改:

解决内核编译dm-region-hashFileExists错误:

编译2.6.33内核后重启出现

insmod:

errorinserting'/lib/dm-region-hash.ko':

-1Fileexists

解决方法:

1,解压initrd文件

[root@bogon~]#cp/boot/initrd-2.6.32.36.img/tmp

[root@bogon~]#cd/tmp/

[root@bogontmp]#ls

initrd-2.6.30.4.img

[root@bogontmp]#mkdirnewinitrd

[root@bogontmp]#cdnewinitrd/

[root@bogonnewinitrd]#zcat../initrd-2.6.32.36.img|cpio-i

11537blocks

释放之后看到如下内容

[root@bogonnewinitrd]#ls

bindevetcinitlibprocsbinsyssysroot

2,ok,下边就是编辑init,删掉其中重复的四行中的两行

echo"Loadingdm-region-hash.komodule"

insmod/lib/dm-region-hash.ko

echo"Loadingdm-region-hash.komodule"

insmod/lib/dm-region-hash.ko

3,重新打包initrd

[root@bogonnewinitrd]#find.|cpio-c-o>../initrd

11538blocks

[root@bogonnewinitrd]#cd..

[root@bogontmp]#gzip-9initrd.img

[root@bogontmp]#ls

initrd-2.6.32.36.img     initrd      initrd.img           newinitrd

3.安装QEMU和KQEMU

如果新内核编译启动没有问题,就在新内核上安装QEMU和KQEMU。

编译安装方法一致:

1.解压源码包

2.到源码包根目

3.做make的配置:

./configure

Configure时要注意输出中提示是否支持KVM。

如果上面的头文件没有问题,一般是yes

4.make

5.makeinstall

4.配置网桥

由于虚拟机和主机要共用网络设备,最稳定的方法是在操作系统上建立网桥,然后,虚拟机和主机都通过网桥访问网络。

建立网桥的办法如下:

1.网络管理器不支持桥接。

必须禁用网络管理器才可使用旧的网络脚本联网。

#chkconfigNetworkManageroff

#chkconfignetworkon

#serviceNetworkManagerstop

#servicenetworkstart

执行完上面命令可以看看network是不是起来了

#servicenetworkstatus

2.修改网络脚本,禁止网络设备启动时使用

cd/etc/sysconfig/network-scripts

viifcfg-eth0注:

修改这个脚本是为了启动时,不直接用以太网设备而是用网桥。

文件最后内容如下:

DEVICE=eth0

#changethehardwareaddresstomatchthehardwareaddressyourNICuses

HWADDR=00:

16:

76:

D6:

C9:

45

ONBOOT=yes

BRIDGE=br0

Tip您可以在配置文件最后附加MTU变量配置设备的最大传输单位(MTU)。

MTU=9000

3.添加网桥设备配置

在/etc/sysconfig/network-scripts目录中创类似的新网络脚本ifcfg-br0。

br0是桥接名称,它可以是任何名称,只要该文件名称与DEVICE参数一致即可。

DEVICE=br0

TYPE=Bridge

-----------------------------------------------------------------------

BOOTPROTO=dhcp注:

这是用dhcp的配法,如果固定ip请参见下面

BROADCAST=192.9.100.255

HWADDR={mac地址(不要和网络设备重就可以)}

IPADDR=192.9.100.12

IPV6INIT=yes

IPV6_AUTOCNF=yes

NETMASK=255.255.255.0

NETWORK=192.9.100.0

----------------------------------------------------------------------

ONBOOT=yes

DELAY=0

4.配置后请重启联网或者重新引导

#servicenetworkrestart

#sysctl-p/etc/sysctl.conf

#servicelibvirtdreload

#brctlshow注:

如果有网桥了,会看到类似下面的东西

bridgenamebridgeidSTPenabledinterfacesbr08000.842b2b42f942noeth0virbr08000.000000000000yes

请注意:

该桥接完全独立于virbr0桥接。

不要试图将物理设备附加到virbr0。

virbr0桥接只用于网络地址转换(NAT)连接性。

5.安装virt-manager

从安装盘的server目录里找rpm包装就行了,会有些依赖,按照提示找相关的rpm包一个一个装就可以,费点事但半小时内应该可以都装上。

装完了会在菜单中发现应用程序->系统工具->虚拟系统管理。

如果qemu安装的位置不对,virt-manager会找不到qemu的执行文件。

通过报错可以知道它要找的文件位置,在那个地方建立一个连向执行文件的连接就可以了。

Virt-manager操作很简单,创建虚拟机都是图形化向导,按步骤做就可以。

这里不详述了。

6.关闭防火墙和SELinux

由于防火墙和SELinux会阻止libvirt为虚拟机创建虚拟的网络设备,所以要禁用掉。

禁用办法如下:

用setup命令可以进入配置界面,在防火墙配置里面,修改安全级别为禁用,SELinux为禁用。

7.通过命令管理虚拟机

1.创建虚拟机命令

#virt-install-ncloud-r256-fcloud.img-s4-cjeos.iso--accelerate--connect=qemu:

///system--vnc--noautoconsole

●-n:

本例中的新虚拟机的名字将是cloud。

●-r256:

指定虚拟机将使用的内存大小。

●-fcloud.img:

indicatesthepathtothevirtualdiskwhichcanbeafile,partition,orlogicalvolume.Inthisexampleafilenamedcloud.img.

●-s4:

虚拟磁盘的大小。

●-cjeos.iso:

文件将被当作虚拟的CDROM。

此文件可以是一个ISO文件或是通往主机的CDROM设备。

●--accelerate:

应用内核加速技术。

●--vnc:

用VNC输出客机的虚拟控制台。

●--noautoconsole:

将不会自动连接到虚拟机的控制台。

当启动virt-install后,你可以通过使用GUI进行本地或者使用virt-viewer工具来连接到虚拟机。

2.虚拟机克隆(virt-clone程序可从一个虚拟机复制成另一个)

sudovirt-clone-ocloud-ndatabase_devel-f/path/to/database_devel.img--connect=qemu:

///system

●-o:

原始虚拟机。

●-n:

新的虚拟机的名字。

●-f:

文件、逻辑卷或新虚拟机使用的分区的路径。

●--connect:

指定要连接的管理程序。

还有,用-d或—debug选项来为virt-clone寻找故障。

3.命令行的虚拟机管理方式virsh

有几个工具可以用来管理虚拟机和libvirt。

virsh工具要顺命令行下使用。

一些例子:

●列出正运行的虚拟机:

virsh-cqemu:

///systemlist

●启动一个虚拟机:

virsh-cqemu:

///systemstartcloud

●类似地,在启动时开始一个虚拟机:

virsh-cqemu:

///systemautostartcloud

●重启一个虚拟机:

virsh-cqemu:

///systemrebootcloud

●虚拟机的状态可被保存到一个文件中以方便稍后恢复。

如下命令会将虚拟机的状态保存到一个以日期命名的文件中:

virsh-cqemu:

///systemsavecloudcloud-022708.state

一旦保存,虚拟机将不再运行。

●一个经保存后的虚拟机可以用如下命令唤醒:

virsh-cqemu:

///systemrestorecloud-022708.state

●要关闭一个虚拟机,输入:

virsh-cqemu:

///systemshutdowncloud

●CDROM设备可以通过如下命令挂载到虚拟机上:

virsh-cqemu:

///systemattach-diskcloud/dev/cdrom/media/cdrom

8.查看虚拟机

virt-viewer程序使您能够连接到虚拟机。

运行virt-viewer需要您的虚拟机具备图形(GUI)支持。

要从命令行安装virt-viewer,输入:

sudoapt-getinstallvirt-viewer

当虚拟机安装并运行后,你可以通过如下命令连接到虚拟机的控制台:

virt-viewerqemu:

///systemcloud

和virt-manager相似,virt-viewer也可以通过键授权的SSH连接到远方主机:

virt-viewer-cqemu+ssh:

//cloud

要用相应的虚拟机名字替换cloud。

9.virt-manager做KVM动态迁移

●什么是动态迁移

动态迁移(LiveMigration):

也叫在线迁移(OnlineMigration)。

就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程。

该过程不会对最终用户造成明显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级。

与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。

迁移的前面阶段,服务在源主机的虚拟机上运行,当迁移进行到一定阶段,目的主机已经具备了运行虚拟机系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,虚拟机系统在目的主机上继续运行。

对于虚拟机服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。

动态迁移适用于对虚拟机服务可用性要求很高的场合。

●在集中式共享外部存储的环境下,基于共享存储的动态迁移技术会实现更高效的迁移效果,因此kvm动态迁移只研究基于共享存储的实现。

共享存储的配置方式如下:

⏹利用virt-manager建立共享存储池。

双击一台物理节点,可以配置其存储。

见下图:

⏹注意类型要设置为网络的。

见下图:

⏹设置具体位置信息。

主机名是nfs主机的ip。

目标路径是程序自己定义的。

源路径是nfs上共享文件夹路径。

因为建立的是nfs服务器,所以格式选nfs。

●用共享存储实现虚拟机动态迁移,虚拟机的磁盘镜像文件必须在共享存储池中。

如果没有镜像文件可以利用“新建卷”建立一个镜像文件,然后在建立虚拟机选择磁盘时选择该文件。

●基于virt-manager图形界面的迁移操作。

右键要迁移的虚拟机,可以看到迁移菜单。

选择该菜单可以进行迁移配置。

新主机是迁移的目标主机,可选的主机包括virt-manager接入的所有主机。

一定要配置高级选项,地址为新主机ip地址,端口可以默认,带宽是网络可用带宽。

设置好后选择“迁移”,就可以等待管理平台进行迁移操作了。

迁移后会发现目标主机下将多出一个和迁移虚拟机同名的虚拟机,并且是运行状态,这证明迁移成功。

10.

配置网络桥

禁用Xen网络脚本

如果您的系统使用Xen桥接,则建议您编辑/etc/xen/xend-config.sxp文件并更改以下行禁用默认Xen网络桥接:

(network-scriptnetwork-bridge)

To:

(network-script/bin/true)

禁用网络管理器(NetworkManager)

网络管理器不支持桥接。

必须禁用网络管理器才可使用旧的网络脚本联网。

#chkconfigNetworkManageroff

#chkconfignetworkon

#serviceNetworkManagerstop

#servicenetworkstart

Note

InsteadofturningoffNetworkManager,youcanadd"NM_CONTROLLED=no"totheifcfg-*scripts

usedintheexamples.

生成网络初始化脚本

创建或者编辑以下两个网络配置文件。

可重复这一步(使用不同名称)添加额外网络桥接。

改为/etc/sysconfig/network-scripts目录:

#cd/etc/sysconfig/network-scripts

为您添加到桥接中的设备打开网络脚本。

在这个示例中,ifcfg-eth0定义已被设定为桥接一部分的物理网

络接口:

DEVICE=eth0

#changethehardwareaddresstomatchthehardwareaddressyourNICuses

HWADDR=00:

16:

76:

D6:

C9:

45

ONBOOT=yes

BRIDGE=br0

Tip您可以在配置文件最后附加MTU变量配置设备的最大传输单位(MTU)。

MTU=9000

在/etc/sysconfig/network-scripts目录中创建名为ifcfg-br0和类似的新网络脚本。

br0是桥接名称,它可

以是任何名称,只要该文件名称与DEVICE参数一致即可。

DEVICE=br0

TYPE=Bridge

BOOTPROTO=dhcp

ONBOOT=yes

DELAY=0

Warning

Theline,TYPE=Bridge,iscase-sensitive.Itmusthaveuppercase'B'andlowercase'ridge'.

配置后请重启联网或者重新引导。

#servicenetworkrestart

Configureiptablestoallowalltraffictobeforwardedacrossthebridge.

#iptables-IFORWARD-mphysdev--physdev-is-bridged-jACCEPT

#serviceiptablessave

#serviceiptablesrestart

Disableiptablesonbridges

Alternatively,preventbridgedtrafficfrombeingprocessedbyiptablesrules.In/etc/sysctl.conf

appendthefollowinglines:

net.bridge.bridge-nf-call-ip6tables=0

net.bridge.bridge-nf-call-iptables=0

net.bridge.bridge-nf-call-arptables=0

Reloadthekernelparametersconfiguredwithsysctl

#sysctl-p/etc/sysctl.conf

Restartthelibvirtdaemon.

#servicelibvirtdreload

Youshouldnowhavea"sharedphysicaldevice",whichguestscanbeattachedandhavefullLANaccess.

Verifyyournewbridge:

#brctlshow

bridgenamebridgeidSTPenabledinterfaces

br08000.842b2b42f942noeth0

virbr08000.000000000000yes

 

请注意:

该桥接完全独立于virbr0桥接。

不要试图将物理设备附加到virbr0。

virbr0桥接只用于网络地址转换(NAT)连

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1