wiki:Xen_Lustre_centos

Integrate Xen and Lustre on CentOS 5.1

1. 簡介

  • 目標 :
    編譯具有 lustre 與 Xen 功能的 CentOS 5.1 核心。
  • 方法 :
    無論是 lustre 或是 Xen,之前我們安裝的作法大都是使用 rpm 或是 yum 的存藏庫中所提供編譯好的套件安裝,目前並沒有同時編譯好兩者的 rpm 檔可供直接安裝,因此我們的作法是採用 lustre 跟 Xen 的 tar ball source code,再互相 patch,進而編譯成同時具有 lustre 與 Xen 功能的核心。

2. 編譯步驟

2.1 使用 yum 安裝所需要的套件 :

  • 2.1.1 gcc
  • 2.1.2 openssl-devel
  • 2.1.3 zlib-devel
  • 2.1.4 python-devel
  • 2.1.5 libX11-devel
  • 2.1.6 ncurses-devel
  • 2.1.7 diffstat
  • 2.1.8 rpm-build
    [root@lustre_xen ~]# yum install gcc openssl-devel zlib-devel python-devel libX11-devel bridge-utils ncurses-devel diffstat rpm-build
    

2.2 下載所需要的檔案 :

  • 2.2.1 lustre-1.6.5
    Lustre 自從被 Sun 公司所併購之後,目前最新的套件必須先至 Sun 的網站免費註冊之後才可下載,前往下載。以 lustre-1.6.5 為例,檔案名稱為 lustre-1.6.5.tar.gz。
    [root@lustre_xen ~] tar -zxvf lustre-1.6.5.tar.gz
    
  • 2.2.2 xen-3.2.1
    [root@lustre_xen ~] wget http://bits.xensource.com/oss-xen/release/3.2.1/xen-3.2.1.tar.gz
    [root@lustre_xen ~] tar -zxvf xen-3.2.1.tar.gz -C /usr/src/
    
  • 2.2.3 mercurial
    [root@lustre_xen ~] wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/mercurial-1.0-2.el5.kb.i386.rpm
    [root@lustre_xen ~] rpm -ivh mercurial-1.0-2.el5.kb.i386.rpm
    
  • 2.2.4 quilt
    [root@lustre_xen ~] wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/i386/quilt-0.46-1.el5.i386.rpm
    [root@lustre_xen ~] rpm -ivh quilt-0.46-1.el5.i386.rpm
    

2.3 使用 lustre 提供的 patch 檔來 patch Xen 的原始碼並且編譯 Xen 的模組

  • 2.3.1 下載最新的 Xen kernel 原始檔
    [root@lustre-xen ~]# cd /usr/src/
    [root@lustre-xen src] hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg
    
  • 2.3.2 使用 lustre patch Xen 的 kernel files
    [root@lustre-xen src]# cd linux-2.6.18-xen.hg/
    [root@lustre-xen linux-2.6.18-xen.hg]# ln -s ~/lustre-1.6.5/lustre/kernel_patches/patches/ .
    [root@lustre-xen linux-2.6.18-xen.hg]# ln -s ~/lustre-1.6.5/lustre/kernel_patches/series/2.6.18-vanilla.series series
    [root@lustre-xen linux-2.6.18-xen.hg]# quilt push -va
    
  • 2.3.3 編譯 Xen 的 kernel
    [root@lustre-xen linux-2.6.18-xen.hg]# cd ../xen-3.2.1/
    [root@lustre-xen xen-3.2.1]# make world
    [root@lustre-xen xen-3.2.1]# make install
    [root@lustre-xen xen-3.2.1]# mkinitrd /boot/initrd-2.6.18.8-xen.img 2.6.18.8-xen
    
  • 2.3.4 修改開機 grub 檔案如下
    # 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/sda2
    #          initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18.8-xen)
            root (hd0,0)
            kernel /xen-3.2.1.gz
            module /vmlinuz-2.6.18.8-xen ro root=LABEL=/1 rhgb quiet
            module /initrd-2.6.18.8-xen.img
    title CentOS (2.6.18-53.el5)
            root (hd0,0)
            kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/1 rhgb quiet
            initrd /initrd-2.6.18-53.el5.img
    
  • 2.3.5 重新開機,並且預設使用新的 xen kernel 開機
    [root@lustre-xen xen-3.2.1]# reboot
    
  • 2.3.6 編譯新的 module 供 lustre 使用
    [root@lustre-xen ~]# cd /usr/src/linux-2.6.18-xen.hg/
    [root@lustre-xen linux-2.6.18-xen.hg]# make
    [root@lustre-xen linux-2.6.18-xen.hg]# make install
    [root@lustre-xen linux-2.6.18-xen.hg]# make modules_install
    [root@lustre-xen linux-2.6.18-xen.hg]# cp -rf /lib/modules/2.6.18.8-xen /lib/modules/2.6.18.8
    [root@lustre-xen linux-2.6.18-xen.hg]# mkinitrd /boot/initrd-2.6.18.8.img 2.6.18.8
    
  • 2.3.7 再次修改開機 grub 檔案如下
    [root@lustre-xen linux-2.6.18-xen.hg]# cat /boot/grub/menu.lst
    # 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/sda2
    #          initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18.8)
            root (hd0,0)
            kernel /xen-3.2.1.gz
            module /vmlinuz-2.6.18.8 ro root=LABEL=/1 rhgb quiet
            module /initrd-2.6.18.8.img
    title CentOS (2.6.18.8-xen)
            root (hd0,0)
            kernel /xen-3.2.1.gz
            module /vmlinuz-2.6.18.8-xen ro root=LABEL=/1 rhgb quiet
            module /initrd-2.6.18.8-xen.img
    title CentOS (2.6.18-53.el5)
            root (hd0,0)
            kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/1 rhgb quiet
            initrd /initrd-2.6.18-53.el5.img
    
  • 2.3.8 再次重新開機,並且預設使用新的 xen kernel 開機
    [root@lustre-xen linux-2.6.18-xen.hg]# reboot
    

==3. 編譯並安裝 lustre ==

[root@lustre-xen ~]# cd lustre-1.6.5
[root@lustre-xen lustre-1.6.5]# ./configure --with-linux=/usr/src/linux-2.6.18-xen.hg/
[root@lustre-xen lustre-1.6.5]# make
[root@lustre-xen lustre-1.6.5]# make isntall
[root@lustre-xen lustre-1.6.5]# depmod -a

4. 完成

4.1 簡單測試

檢查有無 mkfs.lustre 這個命令,並且執行 modprobe ldiskfs 以確認模組 ldiskfs 已經正確安裝完成。

Last modified 17 years ago Last modified on Jun 24, 2008, 5:03:56 PM