= Integrate Xen and Lustre on CentOS 5.1 (another way)= == 1. 簡介 == * 目標 : [[BR]] 編譯具有 lustre 與 Xen 功能的 CentOS 5.1 核心。 * 方法 : [[BR]] CentOS 5.1 在安裝時, 便會提示是否要直接安裝具有'''虛擬化'''功能的核心, 我們可以藉由這個核心開機, 然後再掛載 lustre + xen 的核心模組即可達到目的.[[BR]]這個方式較先前要編譯兩次的方式來得簡單也快速許多。同樣的,在其它的 Linux dist上,也可先使用 apt-get 安裝 xen 的核心,[[BR]]然後再使用本頁所描述的方式編譯及安裝 lustre + xen 的核心模組,最後再掛載入 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 ncurses-devel diffstat rpm-build }}} === 2.2 下載所需要的檔案 : === * 2.2.1 '''lustre-1.6.5'''[[BR]] Lustre 自從被 Sun 公司所併購之後,目前最新的套件必須先至 Sun 的網站免費註冊之後才可下載,[http://www.sun.com/software/products/lustre/get.jsp 前往下載]。以 lustre-1.6.5 為例,檔案名稱為 lustre-1.6.5.tar.gz。 {{{ [root@lustre_xen ~] tar -zxvf lustre-1.6.5.tar.gz }}} * 2.2.2 '''linux-2.6.18-53.1.14.el5.tar.bz2'''[[BR]] Lustre 自從被 Sun 公司所併購之後,目前最新的套件必須先至 Sun 的網站免費註冊之後才可下載,[http://www.sun.com/software/products/lustre/get.jsp 前往下載]。以 lustre-1.6.5 為例,檔案名稱為 linux-2.6.18-53.1.14.el5.tar.bz2 {{{ [root@lustre_xen ~] tar -jxvf linux-2.6.18-53.1.14.el5.tar.bz2 -C /usr/src/ }}} * 2.2.3 '''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 編譯 Sun 所提供的 lustre + xen 的 核心模組 (kernel modules) === * 2.3.1 '''說明[[BR]]''' 接著就可以開始編譯剛剛解壓縮到 /usr/src 的核心檔案,此完整的核心檔案是由 Sun 的官方網站所提供,它除了具有 xen 相關的程式檔案,[[BR]] 同時也提供了可編譯出具有 xen + lustre 功能模組的設定檔(config/kernel-2.6.18-i686-xen.config),要做的事情就是將此目錄編譯成 kernel modules(initrd, vmlinuz),[[BR]]然後在開機時讀入這兩個新編譯好的模組,以取代原本只具有 xen 功能的 kernel modules,如此一來,原本的核心 (也許是 xen.gz),便可以成為一個具有 lustre + xen 功能的核心。[[BR]][[BR]] * 2.3.2 '''patch linux-2.6.18-53.1.14''' [[BR]] 首先,由於 linux-2.6.18-53.1.14 是一個尚未 patch 過 lustre 的核心(Sun網站在下載此檔的地方有附註),因此在編譯之前,我們必須先 patch 這個核心 {{{ [root@luxen ~]# cd /usr/src/linux-2.6.18-53.1.14/ [root@luxen linux-2.6.18-53.1.14]# ln -s /root/lustre-1.6.5/lustre/kernel_patches/patches/ . [root@luxen linux-2.6.18-53.1.14]# ln -s /root/lustre-1.6.5/lustre/kernel_patches/series/2.6-rhel5.series series [root@luxen linux-2.6.18-53.1.14]# quilt push -va }}} * 2.3.3 '''編譯與安裝''' [[BR]] 成功 patch 之後,開始進行編譯並且安裝核心模組 {{{ [root@luxen linux-2.6.18-53.1.14]# make && make install && make moduels_install [root@luxen linux-2.6.18-53.1.14]# mkinitrd /boot/initrd-2.6.18-prep.img 2.6.18-prep }}} * 2.3.4 '''更改開機檔'''[[BR]] 修改 /boot/grub/menu.lst 如下 {{{ [root@luxen linux-2.6.18-53.1.14]# 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/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-prep) root (hd0,0) kernel /xen.gz-2.6.18-53.el5 module /vmlinuz-2.6.18-prep ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-prep.img title CentOS (2.6.18-53.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-53.el5 module /vmlinuz-2.6.18-53.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-53.el5xen.img }}} * 2.3.5 '''重新開機'''[[BR]] 載入具有 lustre + xen 功能的 kernel modules {{{ [root@luxen linux-2.6.18-53.1.14]# 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-53.1.14/ [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 已經正確安裝完成。