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