xen实现pv模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xen实现pv模式相关的知识,希望对你有一定的参考价值。

首先了解centos对Xen的支持:
RHEL5.7以前默认的虚拟化技术为Xen,kernel version : 2.6.18
RHEL 6 以后只支持KVM ,Dom0不再支持 ,但支持DomU

如何在centos 6.5上使用Xen:
(1). 编译3.0以上版本的内核,启动Dom0的支持;
(2). 编译Xen程序

制作好的相关程序包的项目有:
    xen4centos
    xen make easy

一、配置yum源,安装xen,kernel
我这里用的是aliyun的镜像源

vim  /etc/yum.repos.d/CentOS-Xen.repo

[xen4centos]
name=Xen4 for CentOS 6
baseurl=https://mirrors.aliyun.com/centos/6.9/virt/x86_64/xen-44/
gpgcheck=0

保存退出,执行

yum install -y xen

二、编辑配置GRUB

vim /etc/grub.conf

原配置文件:

#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.9.75-30.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-4.9.75-30.el6.x86_64 ro root=UUID=11e50789-3089-4d97-8d21-e5322908194b rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
        initrd /initramfs-4.9.75-30.el6.x86_64.img
title CentOS (2.6.32-696.23.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-696.23.1.el6.x86_64 ro root=UUID=11e50789-3089-4d97-8d21-e5322908194b rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-696.23.1.el6.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=11e50789-3089-4d97-8d21-e5322908194b rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-431.el6.x86_64.img

更改第一段title内容如下:

title CentOS (4.9.75-30.el6.x86_64)
        root (hd0,0)
        kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin
        module /vmlinuz-4.9.75-30.el6.x86_64 ro root=UUID=11e50789-3089-4d97-8d21-e5322908194b rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
        module /initramfs-4.9.75-30.el6.x86_64.img

保存退出,重启系统

shutdown -r now

这里为大家提供一份官方的man手册:
http://xenbits.xen.org/docs/unstable/misc/xen-command-line.html

三、
在配置Xen PV模式前,讲一下,相关的配置知识

我们重启系统后

[[email protected] ~]# uname -r
4.9.75-30.el6.x86_64
可以查看当前系统的内核版本

[[email protected] ~]# xl list
Name                                        ID   Mem VCPUs  State   Time(s)
Domain-0                                     0  1024     1     r-----     547.3

#xl list 可以查看显示Domain的相关信息

关于xen虚拟机的状态
    r: running
    b: 阻塞
    p: 暂停
    s: 停止
    c: 崩溃
    d: dying,正在关闭中的过程中

    xm与xl启动DomU使用的配置文件略有不同; 
    对于xl而言,其创建DomU使用的配置指令可通过man xl.cfg获取    
        常用指令:       
            1.name : 域名称,必须是唯一的         
            2.builder: 指明虚拟机的类型,generic表示pv,hvm表示hvm            
            3.vcpus: 虚拟CPU个数
                maxvcpus: 最大虚拟cpu个数
                cpus: vcpu可运行于其上物理CPU列表             
            4.memory=MBYTES: 内存大小
                maxmem=MBYTES: 可以使用的最大内存空间              
            5.on_poweroff: 指明关机时采取的action
                destroy ,restart,preserve               
            6.on_reboot="ACTION" : 指明重启时采取的action               
            7.on_crash="ACTION": 虚拟机崩溃时采取的action            
            8.disk=[ "DISK_SPEC_STRING", "DISK_SPEC_STRING", ...]:  指明磁盘设备,列表
            9.vif=[ "NET_SPEC_STRING", "NET_SPEC_STRING", ...]: 指明网络接口,列表           
            10.vfb=[ "VFB_SPEC_STRING", "VFB_SPEC_STRING", ...]: 指明virtual frame buffer 显示图形界面,列表;
            11.pci=[ "PCI_SPEC_STRING", "PCI_SPEC_STRING", ... ]: 指明pci设备接口

        PV模式专用指令:           
            kernel="PATHNAME": 内核文件路径;          
            ramdisk="PATHNAME":为kernel指定内核提供的ramdisk文件路径            
            root="STRING": 指明根文件系统          
            extra="STRING" :额外传递给内核引导时使用的参数 
            bootloader="PROGRAM":如果DomU使用自己的kernel及ramdisk,此时需要一个Dom0中的应用程序来实现bootloader功能;

        磁盘参数指定方式:           
            [<target>,[<format>,[vdev],[<access>]]]]

                tartet表示磁盘映像文件或设备文件路径
                format表示磁盘格式,如果映像文件,有多种 格式,如raw,qcow2
                vdev 此设备在DomU被识别为硬件设备类型,支持hd,sd[x],xvd[x]
                access访问权限 
                    ro,r : 只读
                    rw,w :读写                
            disk=["/images/xen/linux.img,raw,xvda,rw",]

    使用qemu-img管理磁盘映像
        create [-f fmt] [-o options] filename [size]        
        可创建sparse稀疏格式的磁盘映像文件

四、
示例:创建一个PV模式的VM:

(1) 准备磁盘映像文件
        qemu-img create -f raw -o size=2G  /images/xen/busybox.img
        mke2fs -t ext2 busybox.img
        mount -o /images/xen/busybox.img /mnt/

(2) 提供根文件系统
        编译busybox,并复制到busybox.img映像中
            yum groupinstall -y "Development Tools" "Server Platfrom Development"
            yum install -y glibc-static    #为了方便移值,安装glibc-static,不让它依赖其它库
            wget https://busybox.net/downloads/busybox-1.22.1.tar.bz2
            tar xf busybox-1.22.1.tar.bz2
            cd busybox-1.22.1
            make menuconfig
                #   Busybox Settings  --->   Build Options  --->  [*] Build BusyBox as a static binary (no shared libs)
            make && make install

        cp -a _install/* /mnt/
        mkdir proc sys dev etc var boot home

        到这里可以试一下

        cd
        chroot /mnt /bin/sh

(3) 提供DomU配置文件
        cd /boot/
        ln -s vmlinuz-2.6.32-431.el6.x86_64 vmlinuz
        ln -s initramfs-2.6.32-431.el6.x86_64.img initramfs.img
        cd /etc/xen
        cp xlexample.pvlinux busybox
        vim busybox
        更改如下项:
                name = "busybox-001"
                kernel = "/boot/vmlinuz"
                ramdisk = "/boot/initramfs.img"
                extra = "selinux=0 init=/bin/sh"
                memory = 256
                vcpus = 1
                disk = [ ‘/images/xen/busybox.img,raw,xvda,rw‘ ]
                root = "/dev/xvda ro"

(4) 启动实例:
                xl -v create busybox -n
                xl list
                xl -v create busybox
                xl console busybox-001
                退出ctrl+]

以上是关于xen实现pv模式的主要内容,如果未能解决你的问题,请参考以下文章

Paravirtualization (半虚拟化PV) - Xen

虚拟化技术比较 PV HVM

给xen虚拟机添加硬盘分区格式化

XenOpenVZKVMHyper-VVMWare虚拟化技术

在Centos6.5上安装xen的两种方式

大型网站架构之百万PV