21232asa 发表于 2016-5-30 09:48:56

Centos6.7_KVM安装配置使用

当前的虚拟化产品有 vmware vsphere ,Hyper-v,xen,kvm。vmware的虚拟化所占的市场有目共睹,Hyper-V是windows平台下的虚拟化,而Xen就属于一个半虚拟化产品。kvm就是我们今天所介绍的对象。(kvm是kernel virtual module的简写)kvm是红帽公司5.4版本后所推出的最新虚拟化技术产品。它和vpc,virtualbox都属于完全虚拟化产品,而Xen是属于半虚拟化产品。虽说kvm是完全虚拟化,但在关键的硬盘和网卡上支持半虚拟化virtio,在很大程度上提高了性能,kvm是轻量级虚拟化的代表,也需要硬件vt技术的支持,另外从操作界面上看,xen和kvm都是用virt-manager工具,差别不是很大,但不可以在同一台机器上同时安装且运行Xen和KVM;另外kvm在只能运行在红帽企业版64位系统上,同时需要关闭selinux。KVM是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。增加 KVM 到 Linux 内核是Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。KVM所使用的方法是通过简单地加载内核模块而将 Linux 内核转换为一个系统管理程序。这个内核模块导出了一个名为 /dev/kvm 的设备,它可以启用内核的客户模式(除了传统的内核模式和用户模式)。有了 /dev/kvm 设备,VM 使自己的地址空间独立于内核或运行着的任何其他 VM 的地址空间。设备树(/dev)中的设备对于所有用户空间进程来说都是通用的。但是每个打开 /dev/kvm 的进程看到的是不同的映射(为了支持 VM 间的隔离)。KVM安装 KVM 之后,您可以在用户空间启动客户操作系统。每个客户操作系统都是主机操作系统(或系统管理程序)的一个单个进程。1、KVM 虚拟机的管理工具准确来说,KVM仅是Linux 内核中的一个模块。管理和创建完的 KVM 虚拟机,需要更多的辅助工具。QEMU-KVM:在 Linux 系统中,首先我们可以用 modprobe 命令加载 KVM 模块,如果用 RPM 安装 KVM 软件包,系统会在启动时自动加载模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。关于用户空间的工具,KVM 的开发者选择了已经成型的开源虚拟化软件 QEMU。QEMU 是一个强大的虚拟化软件,它可以虚拟不同的 CPU 构架。比如说在 x86 的 CPU 上虚拟一个Power的CPU,并利用它编译出可运行在 Power 上的程序。KVM使用了QEMU的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具QEMU-KVM。所以 Linux 发行版中分为 内核部分的 KVM 内核模块和 QEMU-KVM 工具。这就是 KVM 和 QEMU 的关系。 Libvirt、virsh、virt-manager:尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为 KVM 开发了更多的辅助工具,比如 libvirt、libguestfs 等。原因是 QEMU 工具效率不高,不易于使用。Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令 virsh,你可以通过使用 virsh 命令来使用 libvirt 的全部功能。但最终用户更渴望的是图形用户界面,这就是 virt-manager。他是一套用 python 编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager 就是利用 libvirt 的 API 实现的。2、kvm虚拟机的安装(一)安装之前先要开启cpu的虚拟化功能,如果是物理机直接进入BIOS中就该虚拟化选项开启,如果是vmware worksation 如图:如果是vSphere 的话也是在设置中找到cpu的设置去开启虚拟化支持。 设置好之后检查虚拟化是否成功支持:#egrep "(vmx|svm)" /proc/cpuinfoflags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov patpse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc uparch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperfunfair_spinlock pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnttsc_deadline_timer xsave avx hypervisor lahf_lm arat epb pln pts dts tpr_shadowvnmi ept vpid(二)kvm软件的安装# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt -y # service libvirtd start # service libvirtd status libvirtd (pid1818) ... # chkconfig libvirtd on说明:kvm为linux内核的一个模块,模块不需要安装,只需要加载virt-manageer 为kvm的管理包libvirt 为创建虚拟机的工具包qemu:虚拟化软件,可以虚拟不同的CPU,支持异构(x86的架构可以虚拟化出不是x86架构的)
       qemu-kvm:用户态管理kvm,网卡,声卡,PCI设备等都是qemu来管理的(三)检查模块的正确安装       使用lsmod来检查模块安装# lsmod | grep kvmkvm_intel             556560 kvm                  3454601 kvm_intel(四)检查KVM是否成功安装#virsh -c qemu:///system list备注:初次安装横线下面没有属于正常。另外如果报错的话检查上面的服务是否正常启动。3、kvm的网络配置一种是default,它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。默认的网络连接是virbr0,它的配置文件在#cat /var/lib/libvirt/network/default.xml<!--OVERWRITTEN AND LOST. Changes to thisxml configurationshould be made using: virsh net-edit defaultor other application using thelibvirt API.--><network> <name>default</name> <uuid>36ec31bf-a7fa-4b61-90a8-2b46aed90518</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0' /> <mac address='52:54:00:B7:F4:66'/> <ip address='192.168.122.1' netmask='255.255.255.0'>   <dhcp>   <range start='192.168.122.2' end='192.168.122.254' />   </dhcp> </ip></network>另外一种方式是bridge方式,可以使用虚拟机成为网络中具有独立IP的主机。我这里是使用第二种网络配置:#vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=none#BROADCAST=10.0.0.255HWADDR=00:0C:29:92:B5:37#IPADDR=10.0.0.61#NETMASK=255.255.255.0#GATEWAY=10.0.0.254ONBOOT=yesBRIDGE="br0"#vi /etc/sysconfig/network-scripts/ifcfg-br0DEVICE=br0TYPE=BridgeBOOTRPOTO=staticIPADDR=10.0.0.85NETMASK=255.255.255.0GATEWAY=10.0.0.254ONBOOT=yes#service network restart说明:现在使用10.0.0.85连接宿主机#ifconfigbr0       Link encap:EthernetHWaddr 00:0C:29:92:B5:37          inet addr:10.0.0.85Bcast:10.0.0.255Mask:255.255.255.0          inet6 addr:fe80::20c:29ff:fe92:b537/64 Scope:Link          UP BROADCAST RUNNING MULTICASTMTU:1500 Metric:1          RX packets:420 errors:0 dropped:0overruns:0 frame:0          TX packets:235 errors:0 dropped:0overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:33439 (32.6 KiB)TX bytes:29623 (28.9 KiB)eth0      Link encap:EthernetHWaddr 00:0C:29:92:B5:37          inet6 addr:fe80::20c:29ff:fe92:b537/64 Scope:Link          UP BROADCAST RUNNING MULTICASTMTU:1500 Metric:1          RX packets:4299 errors:0 dropped:0overruns:0 frame:0          TX packets:2822 errors:0 dropped:0overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:384854 (375.8 KiB)TX bytes:300481 (293.4 KiB)eth1      Link encap:EthernetHWaddr 00:0C:29:92:B5:41          inet addr:192.168.3.150Bcast:192.168.3.255Mask:255.255.255.0          inet6 addr:fe80::20c:29ff:fe92:b541/64 Scope:Link          UP BROADCAST RUNNING MULTICASTMTU:1500 Metric:1          RX packets:1175 errors:0 dropped:0overruns:0 frame:0          TX packets:304 errors:0 dropped:0overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:76602 (74.8 KiB)TX bytes:22635 (22.1 KiB)          Interrupt:16 Base address:0x2000 lo      Link encap:Local Loopback          inet addr:127.0.0.1Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK RUNNINGMTU:65536 Metric:1          RX packets:618 errors:0 dropped:0overruns:0 frame:0          TX packets:618 errors:0 dropped:0overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:73375 (71.6 KiB)TX bytes:73375 (71.6 KiB)virbr0    Link encap:EthernetHWaddr 92:66:C3:69:F0:D9          inet addr:192.168.122.1Bcast:192.168.122.255Mask:255.255.255.0          inet6 addr:fe80::9066:c3ff:fe69:f0d9/64 Scope:Link          UP BROADCAST RUNNING MULTICASTMTU:1500 Metric:1          RX packets:0 errors:0 dropped:0overruns:0 frame:0          TX packets:81 errors:0 dropped:0overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:0 (0.0 b)TX bytes:12603 (12.3 KiB)   注:网桥模式需要在真机eth0配置文件中添加 BRIDGE="br0",否则真机与虚拟机无法互通.
   配置完毕后eth0口则不会显示地址信息,新配置的br0口会代替eth0口成为真机网口,装好的虚拟机eth0口将于真机br0口互通.

4、创建虚拟机(一)使用virt-manager建立一个KVM虚拟机virt-manager是基于libvirt的图像化虚拟机管理软件,请注意不同的发行版上 virt-manager的版本可能不同,图形界面和操作方法也可能不同。本文使用了红帽6企业版的virt-manager-0.9.0-31。创建KVM虚拟机最简单的方法是通过virt-manager接口。从控制台窗口启动这个工具,从root身份输入virt-manager命令,点击file菜单的"新建"选项virt-manager接口界面#virt-manager//图形化界面安装虚拟机(二)使用virt-install命令创建虚拟机//本文重点介绍virt-install命令创建虚拟机#yum groupinstall "Virtualization tools" -y//安装脱机虚拟机镜像管理工具#virt-install --helpUsage: virt-install --name NAME --ramRAM STORAGE INSTALL Options: --version             showprogram's version number and exit -h, --help            show thishelp message and exit --connect=URI         Connect tohypervisor with libvirt URI 通用选项:   -n NAME, --name=NAME                                    客户端事件名称   -r MEMORY, --ram=MEMORY                                    以 MB 为单位为客户端事件分配的内存   --vcpus=VCPUS       配置来宾账户的虚拟 CPU(vcpu) 数量,如:                        --vcpus 5                        --vcpus 5, maxcpus=10                        --vcpussocket=2,cores=4,threads=2   --cpuset=CPUSET   Set which physical CPUs domain can use.   --cpu=CPU            CPU型号及功能,如:--cpu coreduo,+x2apic   --description=DESCRIPTION                                 在生成的 XML 中保存的可读 VM 描述。   --security=SECURITY                                 设定域安全驱动器配置。   --numatune=NUMATUNE                                 为域进程调整 NUMA 策略。 安装方法选项:   -c CDROM, --cdrom=CDROM                                  光驱安装介质   -l LOCATION, --location=LOCATION                           安装源(例如:nfs:host:/path、http://host/path                        ://host/path)   --pxe               使用 PXE 协议从网络引导   --import            在磁盘映像中构建客体   --init=INIT         为容器虚拟机启动二进制的路基该您。例                        如:                        --init /path/to/app(包含应用程序)                        --init /sbin/init(用于所有 OS 容器)   --livecd         将光驱介质视为 Live CD   -x EXTRA, --extra-args=EXTRA                        附加到使用 --location 引导的内核的参数   --initrd-inject=INITRD_INJECTIONS                        使用 --location 为 initrd 的 root                        添加给定文件   --os-type=DISTRO_TYPE                        要安装的操作系统类型,例如:'linux'、'u                        nix'、'windows'   --os-variant=DISTRO_VARIANT                        The OS variant beinginstalled guests, e.g. 'fedora6',                        'rhel5', 'solaris10', 'win2k'   --boot=BOOTOPTS   自选配置后安装引导顺序、菜单、永久                        kernel 引导,等等。 存储配置:   --disk=DISKOPTS   Specifystorage with various options. Ex.                        --diskpath=/my/existing/disk                        --disk path=/my/new/disk,size=5(in gigabytes)                        --diskvol=poolname:volname,device=cdrom,bus=scsi,...   --nodisks         不要为该客户端设置任何磁盘。   --filesystem=FILESYSTEMS                            将主机目录传递给虚拟机。例如:                        --filesystem/my/source/dir,/dir/in/guest                        --filesystemtemplate_name,/,type=template 联网配置:   -w NETWORK, --network=NETWORK                        Configure a guestnetwork interface. Ex:                        --network bridge=mybr0                        --networknetwork=my_libvirt_virtual_net                        --networknetwork=mynet,model=virtio,mac=00:11...   --nonetworks      不要为该客体创建网络接口。 图形配置:   --graphics=GRAPHICS                        配置虚拟机显示设置。例如:                        --graphics vnc                        --graphicsspice,port=5901,tlsport=5902                        --graphics none                        --graphicsvnc,password=foobar,port=5910,keymap=ja   --noautoconsole   不要自动尝试连接到客户端控制台 设备选项:   --serial=SERIALS         配置虚拟机串口设备   --parallel=PARALLELS                                       配置虚拟机并口设备   --channel=CHANNELS配置虚拟机沟通频道   --console=CONSOLES配置虚拟机与主机之间的文本控制台连接   --host-device=HOSTDEVS                        Configure physical hostdevices attached to the guest   --soundhw=SOUNDHW   Configureguest sound device emulation   --watchdog=WATCHDOG                                 配置虚拟机 watchdog 设备   --video=VIDEO       配置虚拟机视频硬件。   --smartcard=SMARTCARD                        配置虚拟机智能卡设备。例如:                        --smartcardmode=passthrough   --redirdev=REDIRDEV                        Configure a guestredirection device. Ex:                        --redirdevusb,type=tcp,server=192.168.1.1:4000   --panic=PANIC       Configure a guest panic device. Ex:                        --panic default 虚拟化平台选项:   -v, --hvm            客户端应该是一个全虚拟客户端   -p, --paravirt      这个客户端一个是一个半虚拟客户端   --container         This guestshould be a container guest   --virt-type=HV_TYPE                              要使用的管理程序名称(kvm、qemu、xen等等)   --arch=ARCH   模拟的 CPU 构架   --machine=MACHINE   The machinetype to emulate   --noapic            为全虚拟客户端禁用 APIC(在 os-type/os-                        variant db 中覆盖数值)   --noacpi            为全虚拟客户端禁用 ACPI(在 os-type/os-                           variant db 中覆盖数值)   -u UUID, --uuid=UUID                            客户端 UUID。 其它选项:   --autostart         引导主机时自动启动域。   --print-xml         输出所生成域的                        XML,而不是定义虚拟机。   --print-step=XMLSTEP                        输出具体安装步骤(1,2,3,all)的                        XML。   --noreboot          完成安装后不要引导虚拟机。   --wait=WAIT       要等待的时间(以分钟为单位)   --dry-run             完成安装步骤,但不要创建设备或者定义                        虚拟机。   --force             对任意应用程序提示强制回答‘yes’,终止左右其它提示   -q, --quiet       禁止无错误输出   --prompt         要求用户为模糊情况或者需要的选项输入。   -d, --debug   输入故障排除信息# virt-install --connectqemu:///system --name kvm4 --ram 500 --disk path=/dev/sdb5 --network bridge=br0--arch x86_64 --graphics sdl --location=/tmp/CentOS-7-x86_64-Minimal-1511.iso开始安装......搜索文件.treeinfo......                        |2.2 kB   00:00 ... 搜索文件vmlinuz......                        | 9.8 MB   00:00 ... 搜索文件initrd.img......                      |73 MB   00:00 ... ERROR    No DISPLAY environment variable set.//出错,解决方法如下:# export DISPLAY=guilinuxbox:0.0# virt-install --connect qemu:///system --name kvm4 --ram 500 --diskpath=/dev/sdb5 --network bridge=br0 --arch x86_64 --graphics sdl--location=/tmp/CentOS-7-x86_64-Minimal-1511.iso
开始安装......搜索文件.treeinfo......                        |2.2 kB   00:00 ... 搜索文件vmlinuz......                        | 9.8 MB   00:00 ... 搜索文件initrd.img......                      |73 MB   00:00 ... ERROR    unsupported configuration: sdl notsupported by '/usr/libexec/qemu-kvm'Domain installation does not appearto have been successful.If it was, you can restart yourdomain by running: virsh --connect qemu:///system start kvm1otherwise, please restart yourinstallation.//出错,提示qemu-kvm没有sdl接口,因此我们换成vnc来连接虚拟机界面。解决方法如下:
# yum-y install virt-viewer
# virt-install --name CentOS-7_x86_64 --virt-type kvm --ram 1024 --disk path=/dev/sdb5 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --location=/tmp/CentOS-7-x86_64-Minimal-1511.iso --force开始安装......搜索文件.treeinfo......                        |2.2 kB   00:00 ... 搜索文件vmlinuz......                        |9.8 MB   00:04 ... 搜索文件 initrd.img......                     |73 MB    00:15 ... 创建域......                                     |    0 B    00:19   'virt-viewer --help' 域安装仍在进行。您可以重新连接到控制台以便完成安装进程。# virsh list --all    Id                               ---------------------------------------------------- 8   CentOS-7_x86_64                running# netstat -tunlp|grep kvmtcp      0   0 127.0.0.1:5900             0.0.0.0:*                  LISTEN      5149/qemu-kvm    虚拟机基本操作学习:生成kvm虚拟机:virt-install
查看在运行的虚拟机:virsh list
查看所有虚拟机:virsh list –all
查看kvm虚拟机配置文件:virsh dumpxml name
启动kvm虚拟机:virsh start name
正常关机:virsh shutdown name
非正常关机(相当于物理机直接拔掉电源):virsh destroy name
删除:virsh undefine name(彻底删除,找不回来了,如果想找回来,需要备份/etc/libvirt/qemu的xml文件)
根据配置文件定义虚拟机:virsh define file-name.xml
挂起,终止:virsh suspend name
恢复挂起状态:virsh resumed name编辑kvm的xml文件,更改虚拟机CPU配置#virsh edit CentOS-7_x86_64<vcpu placement='static'>1</vcpu>//当前为1,自动扩容,最大为4

页: [1]
查看完整版本: Centos6.7_KVM安装配置使用