年前研究lustre编译安装的是1.6.5.1,有些觉得费力气就没有全部编译安装,过年回来,研究了一下lustre  failover 功能发现 他提示我的 e2fsprogs 没有mmp功能让我安装最新版本,这次编译安装遇到很问题,因为以前那种编译安装模式有几个库文件没有安装到 /usr/lib里面所以 我在编译 e2fsprogs 的时候总是出错,在这里我要感谢 lenovo (联想)的工程师 卢亿雷先生,耐心的为我摘错,与指导~好了废话不多说了~
 
os : ubuntu 8.10  64bit
software : linux-2.6.22.tar.bz2  lustre-1.6.6.tar.gz   e2fsprogs-1.40.11.tar.gz  e2fsprogs-1.40.11-sun1-patches.tar.gz
apt-get install   :expect  gcc make quilt  libncurses5-dev  snmpd-dev  libdb4.3-dev
 
安装步骤:
1. 安装需要的一些库文件,与软件
shell $> apt-get install  expect  gcc make quilt  libncurses5-dev  snmpd-dev  libdb4.3-dev
 
2.编译内核
shell $> tar jxvf  linux-2.6.22.tar.bz2 
shell $>tar zxvf  lustre-1.6.6.tar.gz  
shell $>cd linux-2.6.22
shell $> ln -s /usr/src/lustre-1.6.6/lustre/kernel_patches/series/2.6.22-vanilla.series series
shell $> ln -s /usr/src/lustre-1.6.6/lustre/kernel_patches/patches/ patches
shell $> quilt push -av
shell $> quilt refresh                    
##上面这四步是为内核打补丁,下面开始编译内核!
shell $> make clean
shell $>make mrproper
shell $>cp /boot/config-2.6.27-7-server .config 
#这步是拷贝原有的内核配置
shell $>make menuconfig
#自己选上自己需要的,去掉不需要的~
shell $> make
shell $> make modules_install
shell $> make install
shell $> mkinitramfs -o /boot/initrd.img-2.6.22 2.6.22
#创建linux 内核启动信息, 最后边的 2.6.22 是版本号~
3.修改grub.conf
shell $> cd /boot/grub/
shell $> vim menu.lst
#添加以下信息~
title           Ubuntu 8.10, kernel 2.6.22
uuid            1183d584-d824-4cd8-9e96-c9744300de20
kernel          /boot/vmlinuz-2.6.22 root=UUID=1183d584-d824-4cd8-9e96-c9744300de20 ro quiet splash
initrd          /boot/initrd.img-2.6.22
4.从启动系统进入新编译的内核
shell $> reboot
shell $> uname -r
2.6.22
5.编译lustre-1.6.6
shell $> cd lustre-1.6.6
shell $> ./configure --with-linux=/usr/src/linux-2.6.22
shell $> make
shell $> make modules
shell $> make install
shell $> depmod -a
#加载所有模块,并写存入modules.dep列表
6.编译e2fsprogs-1.40.11
shell $> tar zxvf  e2fsprogs-1.40.11.tar.gz 
shell $> tar zxvf  e2fsprogs-1.40.11-sun1-patches.tar.gz
shell $> cd e2fsprogs-1.40.11
shell $> ln -s /usr/src/patches/series series
shell $> ln -s /usr/src/patches  patches
shell $> quilt push -av
shell $> quilt refresh
##以上4步,是为e2fsprogs-1.40.11 打lustre补丁
shell $> ./configure --with-lustre=/usr/src/lustre-1.6.6
shell $> make
shell $> make install
7.测试lustre  failover  是否含有mmp
shell $> vim /etc/hosts
127.0.1.1       mds
192.168.6.2     mds1
##192.168.6.2 是内网一个IP 没有装任何东西,这里只为了测试 failover 功能,在生产##上 mds1也应该 安装 lustre 以及 e2fsprogs的
shell $> mkfs.lustre --reformat --fsname=testfs --mdt --mgs --failnode=mds1 /dev/sdb
##在这里可以看到
##   Permanent disk data:
## Target:     testfs-MDTffff
## Index:      unassigned
## Lustre FS:  testfs
## Mount type: ldiskfs
## Flags:      0x75
##               (MDT MGS needs_index first_time update )
## Persistent mount opts: errors=remount-ro,iopen_nopriv,user_xattr
## Parameters: failover.node=192.168.6.2@tcp mdt.group_upcall=/usr/sbin/l_getgroups
## device size = 1024MB
## 2 6 22
## formatting backing filesystem ldiskfs . /dev/sdb
##        target name  testfs-MDTffff
##        4k blocks     0
##        options        -i 4096 -I 512 -q -O dir_index,uninit_groups, mmp -F
## mkfs_cmd = mkfs.ext2 -j -b 4096 -L testfs-MDTffff  -i 4096 -I 512 -q -O ##dir_index,uninit_groups, mmp -F /dev/sdb
## 清楚的可以看到 文件系统加入了mmp 功能
shell $> dumpe2fs /dev/sdb |grep features
dumpe2fs 1.40.11.sun1 (17-June-2008)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery mmp sparse_super large_file uninit_groups
好了OK 下面在做一个MDS OST 吧~~~