精华内容
下载资源
问答
  • Xen

    2021-01-22 17:17:11
    Xen是虚拟机,是由剑桥大学计算机实验室开发的一个开源项目 在虚拟机领域,Xen 具有非常高的知名度,其名字经常在各类文章中出现。同时 Xen 也具有非常高的难度,别说玩转,就算仅仅只是理解它,都不是那么容易。...

    Xen是虚拟机,是由剑桥大学计算机实验室开发的一个开源项目

     

    在虚拟机领域,Xen 具有非常高的知名度,其名字经常在各类文章中出现。同时 Xen 也具有非常高的难度,别说玩转,就算仅仅只是理解它,都不是那么容易。之所以如此,那是因为 Xen 采用了和我前面介绍的那几个虚拟机完全不同的架构。在这里,我称之为令人脑洞大开的奇异架构。

     

     

    https://www.cnblogs.com/youxia/p/linux022.html#_label0

    展开全文
  • xen

    2017-11-14 18:12:00
    xen 一、安装相关软件 rpm -ivh kernel-xen-* rpm -ivh xen-libs-3.0.3-80.el5.i386.rpm rpm -ivh gnome-python2-gnomekeyring-2.16.0-2.el5.i386.rpm gnome-python2-desktop-2.16.0-2.el5.i386.rpm...
    xen
    一、安装相关软件
    rpm -ivh kernel-xen-*
    rpm -ivh xen-libs-3.0.3-80.el5.i386.rpm 
    rpm -ivh gnome-python2-gnomekeyring-2.16.0-2.el5.i386.rpm  gnome-python2-desktop-2.16.0-2.el5.i386.rpm 
    rpm -ivh gnome-desktop-2.16.0-1.el5.centos.1.i386.rpm
    rpm -ivh gnome-menus-2.16.0-2.fc6.i386.rpm 
    rpm -ivh gnome-applet-vm-0.1.2-1.el5.i386.rpm libvirt-0.3.3-14.el5.i386.rpm virt-manager-0.5.3-10.el5.i386.rpm xen-3.0.3-80.el5.i386.rpm bridge-utils-1.1-2.i386.rpm gtk-vnc-python-0.3.2-3.el5.i386.rpm python-virtinst-0.300.2-12.el5.noarch.rpm bridge-utils-1.1-2.i386.rpm python-virtinst-0.300.2-12.el5.noarch.rpm libvirt-python-0.3.3-14.el5.i386.rpm libvirt-python-0.3.3-14.el5.i386.rpm gtk-vnc-0.3.2-3.el5.i386.rpm 
    rpm -ivh Virtualization-en-US-5.2-11.el5.centos.noarch.rpm Virtualization-zh-CN-5.2-11.el5.centos.noarch.rpm
    rpm -ivh xen-devel-3.0.3-80.el5.i386.rpm
    安装时最好使用yum省事,软件也是最新少bug
    二、更改grup文件
    [root@Centos CentOS]# vi /etc/grub.conf
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-128.el5xen)
            root (hd0,0)
            kernel /xen.gz-2.6.18-128.el5
            module /vmlinuz-2.6.18-128.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
            module /initrd-2.6.18-128.el5xen.img
    title CentOS (2.6.18-128.el5)
            root (hd0,0)
            kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
            initrd /initrd-2.6.18-128.el5.img
    更改完配置文件后重启机器
    三、虚拟机安装操作系统
    virt-install -n VMRHEL2 -r 400 --vcpus=1 -f /vmserver/VMRHEL2 -s 80 -p -l /mnt/RedhatASV4.0 --nographics
    -n名称 -r内存大小单位为M -vcpus cpu个数 -f 虚拟机文件存放的位置可以是分区,我这是一个文件 -s 虚拟机的硬盘空间单位为G -l 后面是本地文件已解压开的ISO文件在安装过程中得有一个HTTP 或NFS之类的ISO文件位置
    ------------------------------------------相关知识------------------------------------------------------------------
    挂载NFS是第一行为IP 第二行为目录如下
    192.168.6.219
    /qeedoodb
    nfs配置
    主配置该文件
    /etc/exports
    /qeedoodb *(ro,sync)#sync当服务端资料有变时会通知客户端
    权限没有设置权限时默认权限为ro,sync
    chown -R nfsnobody /qeedoodb/  允许匿名帐户写入
    /qeedoodb *.exmple.com(ro,sync) server1.redhat.com(rw,sync)
    /data1 192.168.0.0/255.255.255.0(sync)
    exportfs -r 重新加载配置文件
    在客户端机器使用showmount -e NFSserverip查看NFS的共享
    mount NFSserverIP:/tmp /mnt/nfs
    NFS使用RPC 管理,通知rpcinfo 查看NFS使用的相关服务及端口
    [root@a211-155-229-83 ~]# rpcinfo -p localhost
       program vers proto   port
        100000    2   tcp    111  portmapper
        100000    2   udp    111  portmapper
        100024    1   udp    904  status
        100024    1   tcp    907  status
        100003    2   udp   2049  nfs
        100003    3   udp   2049  nfs
        100003    4   udp   2049  nfs
        100021    1   udp  56226  nlockmgr
        100021    3   udp  56226  nlockmgr
        100021    4   udp  56226  nlockmgr
        100003    2   tcp   2049  nfs
        100003    3   tcp   2049  nfs
        100003    4   tcp   2049  nfs
        100021    1   tcp  51857  nlockmgr
        100021    3   tcp  51857  nlockmgr
        100021    4   tcp  51857  nlockmgr
        100005    1   udp   1011  mountd
        100005    1   tcp   1011  mountd
        100005    2   udp   1011  mountd
        100005    2   tcp   1011  mountd
        100005    3   udp   1011  mountd
        100005    3   tcp   1011  mountd
    在防火墙上开放111:tcp 111:udp 1011:tcp 1011:udp 2049:tcp 2049:udp端口即可远程访问NFS
    参考文档http://linux.vbird.org/linux_server/0330nfs.php
    mount 211.155.229.83:/qeedoodb/439920/mcdb /mnt
    chown -R nfsnobody /qeedoodb/ 
    挂载windows的共享目录至linux
    [root@localhost ~]# mount -o --username=administrator //192.168.6.176/Redhat /mnt
    Password: 
    挂载一个ISO至文件夹
    mount -o loop /qeedoodb/RHEL4.8-i386-ES-DVD.iso /mnt
    --------------------------------------------------------------------------------------------------------------------------
    四、xen 内存及CPU调整
    vi /etc/xen/xen_vm2 编辑xen配置文件把内存及cpu个数调至和物理的差不多,之后通过如下命令动态调整CPU个数及内存
    xm mem-set xen_vm2 1000 
    xm vcpu-set  xen_vm2 5
    name = "xen_vm2"
    uuid = "65ed1ddf-8f29-c024-dae8-ce7432c1e366"
    maxmem = 10000
    memory = 10000
    vcpus = 7
    bootloader = "/usr/bin/pygrub"
    on_poweroff = "destroy"
    on_reboot = "restart"
    on_crash = "restart"
    vfb = [  ]
    disk = [ "tap:aio:/xen/xen_vm2,xvda,w" ]
    vif = [ "mac=00:16:3e:5e:eb:72,bridge=xenbr0" ]

    五、虚拟机克隆
    virt-clone -o VM_3 -n VM_4 -f /vmserver/VM_4 
    -o原虚拟机 -n克隆的虚拟机 -f存放位置 克隆完之后需要更改下主机名为避免管理混乱(克隆机器前需要把被克隆的主机关闭掉才能克隆)
    六、部分命令操作
    xm list 查看正在运行的虚拟机
    xm create VM_3开启VM_3机器
    xm console VM_3 在实体机上进入虚拟机的控制
    xm shutdown VM_3 关闭虚拟机,也可能过ssh进入虚拟机IP后 执行相关的关闭等操作
    关于虚拟机的时间问题 如果实体机的时间不正确,此时更正虚拟机的时间也是白操作
    七、硬盘空间的扩充
    新建一块6G的设备作为XEN的磁盘
    dd if=/dev/zero of=/vmserver/disk_1.img bs=1M count=6000 
    查看相关权限并设置相同权限
    ll /vmserver/
    chmod 755 disk_1.img
    更改下面配置前需先关闭虚拟机,试验时,有一虚拟机未关闭加入下面选项导致不能开启
    [root@Centos ~]#vi /etc/xen/VM_3
    disk = [ "tap:aio:/vmserver/VM_3,xvda,w","tap:aio:/vmserver/disk_1.img,xvdb,w" ]
    启动虚拟机后,fdisk -l查看新加入的虚拟机的硬盘
     
     
    xen突然停止服务,机器连接不上
    xen开机后的日志与dmesg日志的错误,此错误导致xen机器间隔性的突然死机问题。。
    Feb  9 12:51:43 a211-155-229-83 kernel: PCI: BIOS Bug: MCFG area at e0000000 is not E820-reserved
    Feb  9 12:51:43 a211-155-229-83 kernel: PCI: Not using MMCONFIG.
    [root@a211-155-229-83 ~]# dmesg |grep BIOS
    BIOS-provided physical RAM map:
    PCI: BIOS Bug: MCFG area at e0000000 is not E820-reserved
     
    方法更改/etc/grub.conf 在 module /vmlinuz-2.6.18-128.el5xen ro root=LABEL=/ 加入 pci=nommconf不让其检测
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-128.el5xen)
            root (hd0,0)
            kernel /xen.gz-2.6.18-128.el5
            module /vmlinuz-2.6.18-128.el5xen pci=nommconf ro root=LABEL=/
            module /initrd-2.6.18-128.el5xen.img
    title CentOS (2.6.18-128.el5PAE)
            root (hd0,0)
            kernel /vmlinuz-2.6.18-128.el5PAE ro root=LABEL=/
            initrd /initrd-2.6.18-128.el5PAE.img
     
    使用此方法目前已有一段没有出现问题了,现象描述为xen跟主系统争用pci资源导致系统突然访问不了,此前是周期性比较强的出现机器歇菜,有朋友说他们装xen从来就没有出现过这个问题,可能硬件不太好也有关系吧,配置是xeon 5506两颗4核的CPU 内存16G 硬盘120G  啥牌子的就不知道了,说是DELL的正牌机
     
     
    [root@a211-155-229-83 ~]# xm console xen_vm1
    xenconsole: Could not open tty `/dev/pts/0': No such file or directory
    ps -ef|grep xenconsole查看下这个进程是否存在
    /usr/sbin/xenconsoled运行下就可以了 当然如果虚拟机上没有运行什么东西可以service xend restart一把
     
     
    考虑换xen为KVM了目前redhat打算在RHEL 6不再内置xen而使用KVM取而代之

    参考资料
    http://linux.chinaunix.net/bbs/viewthread.php?tid=1002876
    基于Redhat Enterprise Linux AS 5 的XEN安装与配置
    xen用户手册 Xen v3.0 

    本文转自 qwjhq 51CTO博客,原文链接:http://blog.51cto.com/bingdian/270338
    展开全文
  • XEN

    2012-10-26 20:44:26
    XEN 的发展与现状 XEN 最初是作为剑桥大学的一个项目,目前 XEN.ORG 社区在负责它的开发及维护,它已经在开源社区中得到了极大的发展。XEN 是一种直接运行在硬件上一层软件,它可以让电脑硬件上同时跑多个用户的...

    XEN 的发展与现状

    XEN 最初是作为剑桥大学的一个项目,目前 XEN.ORG 社区在负责它的开发及维护,它已经在开源社区中得到了极大的发展。XEN 是一种直接运行在硬件上一层软件,它可以让电脑硬件上同时跑多个用户的操作系统。由于对 x86, x86-64, Itanium, Power PC, 和 ARM 这些处理器的支持,所以 XEN 管理工具可以支持的操作系统有 Linux, NetBSD,FreeBSD,Solaris, Windows 和其他一些运行在 XEN 上的正常的操作系统。如图 1 所示 XEN 在系统中的位置:


    图 1. XEN 在系统的位置 
    图 1. XEN 在系统的位置 

    Xen 目前具有以下几种产品:

    • Xen Hypervisor —— 后面会详细讲解,在此不作赘述。会导致转换有问题;
    • XCI —— 种嵌入式管理工具,基于 Xen Hypervisor 的基础之上修改而来,相对于标准的 Xen Hypervisor,它使用的库更小,目前主要用在笔记本以及一些移动设备上,可以使用 Intel 或者 AMD 的架构;
    • Xen Cloud Platform —— 目前它为 ISVs 和服务提供商提供了一套基于强大的管理栈的云架构平台,这个栈是基于开放的标准 API;
    • 还有一些 Xen.org 上的项目,再此就不一一列举了。

    XEN 的安装与使用

    在本例中我们安装的是 Fedora13,其中主要步骤内容都是按照 Xen 官网中的安装步骤翻译来得,也是我实际安装过程中使用的步骤。需要注意的是,在进行的分区的时候,给 /boot 目录分配至少 2GB 大小,选择类型为 ext3。然后再创建一个 LVM PV( 物理卷 ),并且在其上创建 LVM Volume 组,之后在 LVM Volume Group 上创建根目录 /root,分配大小至少 40G,选择类型为 ext4,再创建一个 swap 分区。对于 LVM volume group 安装需要注意的是必须预留足够多的空余空间来安装客户的虚拟机。下面是一个 F13 安装过程中分区的一个截屏。


    图 2. F13 安装过程中分区截屏 
    图 2. F13 安装过程中分区截屏 

    安装完成后我们需要进行一些相关的配置,当我们以 root 用户登陆的时候,我们可以通过以下命令让网络在系统启动的时候被自动 enable。


    清单 1. 配置系统自动启动网络服务 
    				
     # chkconfig network on 
     # /etc/init.d/network start 

    当你的网络已经启动好了,你就可以用 ssh 来远程设置网络环境,例如通过使用 ifconfig 来设置相关 ip 地址等等。网络配置完成后,我们就可以在线安装一些常用的工具。


    清单 2. 安装常用工具 
    				
     # yum install screen vim wget tcpdump ntp ntpdate man smartmontools ethtool 

    编辑“/boot/grub/grub.conf”和修改“timeout=10”,注释掉 hiddenmenu 这一行,修改后大概就如下所示:


    清单 3. 修改后的 grub.conf 信息 
    				
     # grub.conf generated by anaconda 
     # 
     # Note that you do not have to rerun grub after making changes to this file 
     # NOTICE:  You have a /boot partition.  This means that 
     #          all kernel and initrd paths are relative to /boot/, eg. 
     #          root (hd0,0) 
     #          kernel /vmlinuz-version ro root=/dev/mapper/vg_f13-lvroot 
     #          initrd /initrd-[generic-]version.img 
     #boot=/dev/sda 
     default=0 
     timeout=10 
     splashimage=(hd0,0)/grub/splash.xpm.gz 
     #hiddenmenu 
     title Fedora (2.6.33.3-85.fc13.x86_64) 
            root (hd0,0) 
            kernel /vmlinuz-2.6.33.3-85.fc13.x86_64 ro 
            root=/dev/mapper/vg_f13-lvroot rd_LVM_
            LV=vg_f13/lvroot rd_LVM_LV=vg_f13/lvswap rd_NO_LUKS rd_NO_MD rd_NO_DM 
            LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=fi rhgb quiet 
            initrd /initramfs-2.6.33.3-85.fc13.x86_64.img 

    修改过后,我们就可以选择相关内核进行启动了,再这之前我们先把 selinux 关掉,因为这个过于严格了。编辑“/etc/selinux/config” disable 掉这个选项。


    清单 4. 修改过的 selinux 配置文件 
    				
     # This file controls the state of SELinux on the system. 
     # SELINUX= can take one of these three values: 
     #     enforcing - SELinux security policy is enforced. 
     #     permissive - SELinux prints warnings instead of enforcing. 
     #     disabled - No SELinux policy is loaded. 
     SELINUX=disabled 
     # SELINUXTYPE= can take one of these two values: 
     #     targeted - Targeted processes are protected, 
     #     mls - Multi Level Security protection. 
     SELINUXTYPE=targeted 

    安装 xorg-x11-xauth,这样我们就可以在 ssh 中使用 x11.


    清单 5. 安装 xorg-11-xauth 
    				
     # yum install xorg-x11-xauth 

    所有的设置以及配置完成后,重启系统进行 Xen4.0 的安装。先安装一些相关的开发工具及相关的 Libraries。


    清单 6. 安装相关开发工具及 Libraries 
    				
     # yum groupinstall "Development Libraries"
     # yum groupinstall "Development Tools"

    接着安装一些额外的包,主要是用于 build Xen 和运行时需要用到的。


    清单 7. 安装 build Xen 用到的额外包 
    				
     # yum install transfig wget texi2html libaio-devel \
     dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel \
     bzip2-devel pciutils-libs pciutils-devel SDL-devel \
     libX11-devel gtk2-devel bridge-utils PyXML qemu-common qemu-img mercurial 

    再安装一些 32bit 版本的 glibc-devel。


    清单 8. 安装 glibc-devel 
    				
     # yum install glibc-devel.i686 

    完成这些相关的包安装过后我们就可以接着进行。从 src.rpm 源码包 build 出 Xen 4.0.1 rpm 二进制安装包。你可以从 Fedora koji 或者任意的 Fedora14 FTP 镜像点 ftp://ftp.funet.fi/pub/mirrors/fedora.redhat.com/pub/fedora/linux/updates/testing/14/SRPMS/xen-4.0.1-6.fc14.src.rpm), or from: http://pasik.reaktio.net/fedora/xen-4.0.1-6.fc14.src.rpm . 获得 xen src.rpm 的源码包。


    清单 9. 下载和安装 Xen 源码包 
    				
     # wget http://pasik.reaktio.net/fedora/xen-4.0.1-6.fc14.src.rpm 
     # rpm -i xen-4.0.1-6.fc14.src.rpm 

    接着重新 build 源码包获得二进制包。


    清单 10. build 源码包获得二进制安装包 
    				
     # cd /root/rpmbuild/SPECS 
     # rpmbuild -bb xen.spec 

    在 build 完成之后你就会看到如下信息:


    清单 11. build 完成后的显示信息 
    				
     Wrote: /root/rpmbuild/RPMS/x86_64/xen-4.0.1-6.fc13.x86_64.rpm 
     Wrote: /root/rpmbuild/RPMS/x86_64/xen-libs-4.0.1-6.fc13.x86_64.rpm 
     Wrote: /root/rpmbuild/RPMS/x86_64/xen-runtime-4.0.1-6.fc13.x86_64.rpm 
     Wrote: /root/rpmbuild/RPMS/x86_64/xen-hypervisor-4.0.1-6.fc13.x86_64.rpm 
     Wrote: /root/rpmbuild/RPMS/x86_64/xen-doc-4.0.1-6.fc13.x86_64.rpm 
     Wrote: /root/rpmbuild/RPMS/x86_64/xen-devel-4.0.1-6.fc13.x86_64.rpm 
     Wrote: /root/rpmbuild/RPMS/x86_64/xen-licenses-4.0.1-6.fc13.x86_64.rpm 
     Wrote: /root/rpmbuild/RPMS/x86_64/xen-debuginfo-4.0.1-6.fc13.x86_64.rpm 

    安装新 build 出来的 rpm 包:


    清单 12. 安装新 build 出来的 rpm 包 
    				
     # cd /root/rpmbuild/RPMS/x86_64/ 
     # rpm -Uvh *4.0.1-6*.rpm 
     Preparing...                ########################################### [100%] 
       1:xen-licenses           ########################################### [ 13%] 
       2:xen-libs               ########################################### [ 25%] 
       3:xen-hypervisor         ########################################### [ 38%] 
       4:xen-runtime            ########################################### [ 50%] 
       5:xen                    ########################################### [ 63%] 
       6:xen-devel              ########################################### [ 75%] 
       7:xen-doc                ########################################### [ 88%] 
       8:xen-debuginfo          ########################################### [100%] 

    下载或者编译 Linux 2.6.32.x 的 Xen dom0 kernel,从 xen.git 下载内核并且 checkout 下来 2.6.32.x 整个分支:


    清单 13. 下载编译 Linux2.6.32.x 的 Xen-dom0-kernel 
    				
     # git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen 
     # cd linux-2.6-xen 
     # git checkout -b xen/stable-2.6.32.x origin/xen/stable-2.6.32.x 

    接着可以用以下命令来 check 一下最新的分支更新:


    清单 14. check 最新的分支更新 
    				
     # git log | less 

    下载 2.6.32.x 内核的相关配置文件,也可以运行老的”oldconfig”来使配置文件与当前的内核版本兼容:


    清单 15. 下载配置文件并运行配置命令 
    				
     # wget -O .config http://pasik.reaktio.net/xen/pv_ops-dom0-debug/ \
     config-2.6.32.25-pvops-dom0-xen-stable-x86_64 
     # make oldconfig 

    接下来就可以 build 内核了,将以下命令中的“-j4”中的 4 替换成你当前机器中的物理 cpu 个数,以此来加快速度。


    清单 16. build 内核 
    				
     # make clean 
     # make -j4 bzImage && make -j4 modules 

    成功编译后,我们就可以安装内核模块和内核了,在这个例子中我们假设内核的版本是 2.6.32.25。


    清单 17. 安装内核模块及内核 
    				
     # make modules_install 
     # depmod -a 2.6.32.25 
     # cp -a arch/x86/boot/bzImage /boot/vmlinuz-2.6.32.25 
     # cp -a System.map /boot/System.map-2.6.32.25 
     # cp -a .config /boot/config-2.6.32.25 
     # cd /boot 
     # dracut initramfs-2.6.32.25.img 2.6.32.25 

    在用 dracut 的时候,可能有一些警告信息,dracut 也需要运行一小段时间,不过这无所谓。下例显示 dracut 的执行。


    清单 18. dracut 运行显示 
    				
     [root@f13 boot]# dracut initramfs-2.6.32.25.img 2.6.32.25 
     grep: /usr/share/plymouth/themes/.plymouth/.plymouth.plymouth: No such file or directory 
     The default plymouth plugin () doesn't exist 
     [root@f13 boot]# 

    准备重启进入 Xen。重新设置一个新的 grub 入口来用 dom0 kernel 启动 Xen hypervisor,编辑“/boot/grub/grub.conf”,编译后内容大概如下所示:


    清单 19. 重新编辑后的 grub.conf 
    				
     # grub.conf generated by anaconda 
     # 
     # Note that you do not have to rerun grub after making changes to this file 
     # NOTICE:  You have a /boot partition.  This means that 
     #          all kernel and initrd paths are relative to /boot/, eg. 
     #          root (hd0,0) 
     #          kernel /vmlinuz-version ro root=/dev/mapper/vg_f13-lvroot 
     #          initrd /initrd-[generic-]version.img 
     #boot=/dev/sda 
     default=0 
     timeout=10 
     splashimage=(hd0,0)/grub/splash.xpm.gz 
     #hiddenmenu 
     title Fedora (2.6.33.6-147.2.4.fc13.x86_64) 
            root (hd0,0) 
            kernel /vmlinuz-2.6.33.6-147.2.4.fc13.x86_64 ro 
            root=/dev/mapper/vg_f13-lvroot rd_LVM_LV=vg_f13/lvroot 
            rd_LVM_LV=vg_f13/lvswap rd_NO_LUKS rd_NO_MD rd_NO_DM 
            LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=fi rhgb quiet 
            initrd /initramfs-2.6.33.6-147.2.4.fc13.x86_64.img 
     title Fedora (2.6.33.3-85.fc13.x86_64) 
            root (hd0,0) 
            kernel /vmlinuz-2.6.33.3-85.fc13.x86_64 ro root=
            /dev/mapper/vg_f13-lvroot rd_LVM_LV=vg_f13/lvroot 
            rd_LVM_LV=vg_f13/lvswap rd_NO_LUKS rd_NO_MD rd_NO_DM 
            LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=fi rhgb quiet 
            initrd /initramfs-2.6.33.3-85.fc13.x86_64.img 
     title Fedora Xen 4.0 with Linux 2.6.32.25 pvops dom0 
            root (hd0,0) 
            kernel /xen.gz dom0_mem=1024M loglvl=all guest_loglvl=all 
            module /vmlinuz-2.6.32.25 ro root=/dev/mapper/vg_f13-lvroot nomodeset 
            module /initramfs-2.6.32.25.img 

    需要注意的是其中参数 root=/dev/mapper/vg_f13 要与你实际的入口目录相一致。通过以下命令查看一些 Xen services/daemons 是否已经配置成自动启动。


    清单 20. 查看 Xen services/daemons 是否启动 
    				
     # chkconfig --list | grep xen 
     xenconsoled     0:off   1:off   2:off   3:on    4:on    5:on    6:off 
     xend            0:off   1:off   2:off   3:on    4:on    5:on    6:off 
     xendomains      0:off   1:off   2:off   3:on    4:on    5:on    6:off 
     xenstored       0:off   1:off   2:off   3:on    4:on    5:on    6:off 

    完成后,你就可以启动进入 Xen 了,进入 Xen 后,我们就可以查看一下各方面是否工作正常。


    清单 21. 查看进入 Xen 后相关信息 
    				
     [root@f13 ~]# xm info 
     host              : f13.localdomain 
     release                : 2.6.32.25 
     version                : #3 SMP Sat Oct 30 15:24:53 EEST 2010 
     machine                : x86_64 
     nr_cpus                : 4 
     nr_nodes               : 1 
     cores_per_socket       : 4 
     threads_per_core       : 1 
     cpu_mhz                : 2826 
     hw_caps  : bfebfbff:20100800:00000000:00000940:0408e3fd:00000000:00000001:00000000 
     virt_caps              : hvm 
     total_memory           : 8190 
     free_memory            : 7076 
     node_to_cpu            : node0:0-3 
     node_to_memory         : node0:7076 
     node_to_dma32_mem      : node0:3259 
     max_node_id            : 0 
     xen_major              : 4 
     xen_minor              : 0 
     xen_extra              : .1 
     xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64 
     xen_scheduler          : credit 
     xen_pagesize           : 4096 
     platform_params        : virt_start=0xffff800000000000 
     xen_changeset          : unavailable 
     xen_commandline        : dom0_mem=1024M loglvl=all guest_loglvl=all 
     cc_compiler            : gcc version 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC) 
     cc_compile_by          : root 
     cc_compile_domain      : 
     cc_compile_date        : Sat Oct 16 00:13:54 EEST 2010 
     xend_config_format     : 4 
    
     Xen domain(vm) list 
     # xm list 
     Name                                        ID   Mem VCPUs      State   Time(s) 
     Domain-0                                     0  1017     4     r-----     23.1 

    上面的命令可以查看一下 Mem 是不是跟我们在 grub 中设置的值一样。再查看一下 Dom0 Linux kernel 的版本:


    清单 22. 查看 Dom0 Linux kernel 的版本 
    				
     # uname -a 
     Linux f13.localdomain 2.6.32.25 #3 SMP Sat Oct 30 15:24:53 EEST 2010 
     x86_64 x86_64 x86_64 GNU/Linux 

    接下来我们就可以通过命令行 virt-install 来安装新的 Xen guests。首先使用一下命令来查看一下剩余的空间:


    清单 23. 查看 LVM 中剩余空间 
    				
     [root@f13 ~]# vgdisplay 
      --- Volume group --- 
      VG Name               vg_f13 
      System ID 
      Format                lvm2 
      Metadata Areas        1 
      Metadata Sequence No  4 
      VG Access             read/write 
      VG Status             resizable 
      MAX LV                0 
      Cur LV                3 
      Open LV               2 
      Max PV                0 
      Cur PV                1 
      Act PV                1 
      VG Size               463.75 GiB 
      PE Size               32.00 MiB 
      Total PE              14840 
      Alloc PE / Size       2944 / 92.00 GiB 
      Free  PE / Size       11896 / 371.75 GiB 
      VG UUID               5dsak7-VN89-zMFT-9ZiU-XGhY-s5is-u1vCUw 

    接着使用如下命令来创建新的 LVM volume 来座位虚拟机的盘符,本例中我们创建的客户机使用的操作系统也用 f13。


    清单 24. 创建客户机 
    				
     [root@f13 ~]# lvcreate -nf13 -L40G /dev/vg_f13 
      Logical volume "f13" created 

    接下来我们就可以安装客户机了:


    清单 25. 安装客户机 
    				
     [root@f13 ~]# virt-install -n f13 -r 768 --vcpus=1 -f /dev/vg_f13/f13 
     --vnc -p -l 
     "http://ftp.funet.fi/pub/mirrors/fedora.redhat.com/pub/
     fedora/linux/releases/13/Fedora/i386/os"
     Starting install... 
     Retrieving file .treeinfo...          | 2.8 kB     00:00 ... 
     Retrieving file vmlinuz-PAE...              | 6.7 MB     00:02 ... 
     Retrieving file initrd-PAE.img...       |  74 MB     00:01 ... 
     Creating domain...                    |    0 B     00:01 

    弹出安装界面后,安装步骤与平时我们安装 Linux 系统相似。

    XEN 与其他虚拟化工具的比较

    XEN 与 VMware ESXi,Hyper-V 以及 KVM 特点比较:

      1. XEN 有简化虚拟模式,不需要设备驱动,能够保证每个虚拟用户系统相互独立,依赖于 service domains 来完成一些功能;
      2. Vmware ESXI 与 XEN 比较类似,包含设备驱动以及管理栈等基本要素,硬件支持依赖于 VMware 创建的驱动;
      3. Hyper-V 是基于 XEN 管理栈的修改;
      4. KVM 与 XEN 方式不同,KVM 是以 Linux 内核作为管理工具得。

    虚拟机的体系结构

    1. XEN 体系结构

    图 3. XEN 体系结构图 
    图 3. XEN 体系结构图 

    一个 XEN 虚拟机环境主要由以下几部分组成:

    • XEN Hypervisor;
    • Domain 0 —— Domain Management and Control(XEN DM&C);
    • Domain U Guest(Dom U)
      1. PV Guest
      2. HVM Guest

    下图 4 显示除了各部分之间的关系:


    图 4. Xen 三部分组成之间关系图 
    图 4. Xen 三部分组成之间关系图 

    XEN Hypervisor :

    XEN Hypervisor 是介于操作系统和硬件之间的一个软件描述层。它负责在各个虚拟机之间进行 CPU 调度和内存分配。XEN Hypervisor 不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。XEN Hypervisor 不会处理网络、存储设备、视频以及其他 I/O.

    Domain 0:

    Domain 0 是一个修改过的 Linux kernel,是唯一运行在 Xen Hypervisor 之上的虚拟机,它拥有访问物理 I/O 资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain 0 需要在其它 Domain 启动之前启动。

    Domain U:

    运行在 Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如 Linux、Solaris、FreeBSD 等其它 UNIX 操作系统。所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如 Windows 等。

    2.Hyper-V 体系结构


    图 5. Hyper-V 体系结构图 
    图 5. Hyper-V 体系结构图 

    Hyper-V 是微软提出的一种系统管理程序虚拟化技术,采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V 底层的 Hypervisor 运行在最高的特权级别下,微软将其称为 ring -1(而 Intel 则将其称为 root mode),而虚机的 OS 内核和驱动运行在 ring 0,应用程序运行在 ring 3 下,这种架构就不需要采用复杂的 BT(二进制特权指令翻译)技术,可以进一步提高安全性。从架构上讲 Hyper-V 只有“硬件-Hyper-V-虚拟机”三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机 系统性能更接近真实系统性能。

    Hyper-V 支持分区层面的隔离。分区是逻辑隔离单位,受虚拟机监控程序支持,并且操作系统在其中执行。Microsoft 虚拟机监控程序必须至少有一个父 / 根分区,用于运行 64 位版本的 Windows Server 2008 操作系统。虚拟化堆栈在父分区中运行,并且可以直接访问硬件设备。随后,根分区会创建子分区用于承载来宾操作系统。根分区使用虚拟化调用应用程序编程接口 (API) 来创建子分区。

    分区对物理处理器没有访问权限,也不能处理处理器中断。相反,它们具有处理器的虚拟视图,并运行于每个来宾分区专用的虚拟内存地址区域。虚拟 机监控程序负责处理处理器中断,并将其重定向到相应的分区。Hyper-V 还可以通过输入输出内存管理单元 (IOMMU) 利用硬件加速来加快各个来宾虚拟地址空间相互之间的地址转换。IOMMU 独立于 CPU 使用的内存管理硬件运行,并用于将物理内存地址重新映射到子分区使用的地址。从系统的结构图,我们可以看出来 Hyper-V 与 Xen 的架构很相似。

      1. Vmware ESXI 体系结构

    图 6. Vmware ESXI 体系结构图 
    图 6. Vmware ESXI 体系结构图 

    由上图我们可以看出来管理工具也是直接嵌入到了 ESXi vmKernel 中,没有再分化出单独的管理工具,这一点与 Xen 是相区别的。

      1. KVM 体系结构

    图 7. KVM 体系结构图 
    图 7. KVM 体系结构图 

    KVM 是一个独特的管理程序,通过将 KVM 作为一个内核模块实现,在虚拟环境下 Linux 内核集成管理程序将其作为一个可加载的模块可以简化管理和提升性能。在这种模式下,每个虚拟机都是一个常规的 Linux 进程,通过 Linux 调度程序进行调度。

    通过以上四种虚拟机的体系结构图,我们可以看出他们在整个系统中的位置,以及相互之间的区别。

    XEN 工作原理

    上面我们针对 Xen 的体系结构进行了简单的描述,我们知道 Xen 主要由 Xen Hypervisor,Domain0,DomainU 三部分组成。下面通过 Domain 0 与 Domain U 的通信以及这三部分的交互来探讨一下 Xen 的工作原理。

    • 之前我们已经提到过 Domain U 分为 PV 客户系统和 HVM 客户系统两种,我们首先讨论一下 PV 客户系统,也就是半虚拟化操作系统工作原理。

    首先我们需要知道在 Domain 0 中有两个驱动 Network Backend Driver 和 Block Backend Driver,它们分别用来处理来自 Domain U 的网络和本地磁盘请求。由于 Xen Hypervisor 不会支持网络和磁盘请求的,因此一个 PV(半虚拟化)客户系统必须通过和 Xen Hypervisor、Domain 0 通信,从而来实现网络和磁盘请求。由于 Xen 文档中已经探讨过 PV 客户系统如何将一个数据写到本地硬盘,下面我们就来讨论一下 PV 客户系统如何将一个数据发送到网络中去。在这之前我们首先要了解到一点,那就是 Domain U PV Guest 中也包括两个驱动“PV Network Driver”和“PV Block Driver”,它们分别也是用来处理发送网络和本地磁盘请求用的,这与 Domain 0 中的两个驱动是相对应的。

    当一个 PV 客户系统的网络设备驱动程序接收到一个发送数据请求的时候,并且通过 Xen Hypervisor 发送数据到本地网络设备(网卡之类的设备)中,这个网络设备是和 Domain 0 共享的。在 Domain 0 和 Domain U 之间存在一个事件通道(event channel),通过该通道二者进行异步的域间中断通信。Domain 0 会接收到一个来自 Xen Hypervisor 的中断,触发 PV Network Backend Driver 访问上述网络设备,读取来自 PV 客户系统的数据,然后将这些数据发送出去。

    下图中事件通道表示为连接 Domain 0 与 Domain U 的一个区域,这是系统工作流的一个简化。事实上事件通道运行在 Xen Hypervisor 中,通过 Xenstored(Xenstored 维护一个信息档案,包括内存和建立在 Domain 0 与 Domain U 之间的事件通道。Domain 0 通过改变这个档案来设置和其他虚拟机的设备通道)中的特定中断实现,提供 Domain 0 与 Domain U 之间的快速共享网络设备,见图 8。


    图 8. Domain 0 与 Domain U PV Guest 通信示意图 
    图 8. Domain 0 与 Domain U PV Guest 通信示意图 
    • 上面我们已经分析了 PV 客户系统的工作原理,下面我们再简要的介绍一下 HVM 客户系统的工作原理。

    由于一个 HVM Guests 虚拟机中没有上面提到得 PV driver,所以 Xen 在 Domain 0 中为每一个 HVM Guest 都启动一个守护进程 Qemu-dm 处理来自客户系统的网络和磁盘请求,所以当一个 HVM Guest 有相应的网络和 I/O 请求的时候,它就会直接与 Domain0 中和它相对应的 Qemu-dm 来进行交互,通过 Domain 0 最终达到访问网络设备或者磁盘的目的。见下图 9:


    图 9. Domain 0 与 Domain U HVM Guest 通信示意图 

    图 9. Domain 0 与 Domain U HVM Guest 通信示意图

    结束语

    通过这一部分的介绍,我们了解了 Xen 目前的发展及现状,另外我们详细的说明了如何在 Fedora13 下安装 Xen,以及 Xen 下一些基本操作,再这之后我们又讨论了一下 Xen 与 VMware ESXi,Hyper-V 以及 KVM 异同点,最后我们通过示例来讲解了一下 Xen 的工作原理。本系列的第二部分我们将阐述如何搭建 Xen 的开发环境、Xen 下开发需要具备的相关技术以及 Xen 下的如何利用 XenAPI 做开发,最后通过一个例子来演示。

    展开全文
  • 本书为读者提供了虚拟化基本方法的理解以及有关使用Xen技术部署虚拟化的详细信息。
  • xen man xen man

    2008-04-27 14:47:49
    xen man xen man
  • xen-tools:xen-tools是一组简单的perl脚本的集合,可让您轻松地在Xen主机服务器上创建新的Xen来宾域。
  • Using Xen

    2020-11-27 02:17:44
    d like to try out Harvey-OS as a Xen virtual machine, is it possible to build as a Xen image? <p>I am running Xen 4.3 on Debian Wheezy (with ZFSonLinux for my images as zvols). <p>I'd like to try ...
  • xen center 7.1.0

    2018-10-22 20:34:33
    xen center 7.1.0客户xen center 7.1.0客

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,167
精华内容 3,666
关键字:

Xen