- 论坛徽章:
- 0
|
环境:本文仅讨论实现,并不涉及性能和安全
IP-SAN(iscsi targets) one server
Two Metadata Servers
Four Object Storage Servers
Two clients
平台:Vmware 6.0 ACE
CentOS5 update 2 x86
网络拓扑:见附件
由于需要用到iscsi但是SUN的原始的rpm kernel里没有带有支持iscsi Initiator,
可能现在Lustre根本就看不上ISCSI这个玩意吧,所以开始我们需要做一些准备工作自己编译一次内核,让其支持ISCSI。为什么不选择用*.tar.gz的包来装的原因就是我嫌弃难得打补丁,自己习惯。愿意用哪个就哪个吧。
一、平台部署
1、安装kernel源代码
rpm -ivh kernel-lustre-source-2.6.18-92.1.10.el5_lustre.1.6.6.i686.rpm
2、安装expect
3、安装lustre的源代码
rpm -ivh lustre-source-1.6.6-2.6.18_92.1.10.el5_lustre.1.6.6smp.i686.rpm
4、准备编译kernel
cd /usr/src/linux-2.6.18-92.1.10.el5_lustre.1.6.6
这里需要注意的是下面我使用的config-2.6.18-92.1.10.el5_lustre.1.6.6smp这个文件就是SUN带的kernel里的文件,想办法把他弄出来吧。什么方式都可以可以用cpio转,也可以用7-zip直接解压缩。总之你觉得什么方便就用什么,最后把这个文件拷贝到我们需要编译的kernel source下,使用我们拷贝过来的配置文件做为我们编译的基础:
cp ~/config-2.6.18-92.1.10.el5_lustre.1.6.6smp .config
make oldconfig || make menuconfig
5、内核加入ISCSI的支持
make menuconfig
Device Driver--SCSI device support--SCSI Transport--iSCSI Transport Attributes
Device Driver--SCSI device support--SCSI low-level drivers-- iSCSI Initiator over TCP/IP
6、编译及安装内核
make dep
make clean
make -j 8 bzImage
make -j 8 modules
make -j 8 modules_install
depmod -a
make install
安装完毕,为了其他的机器好直接用我们把编译的内核生成RPM的文件,但是很郁闷的是我的生成后没有initrd-*.img这个文件。还要手动写grub.conf。不过这些都不是问题有模块就可以了。mkinitrd一个吧,我这里使用的是虚拟机克隆,所以没用到。但是我测试过。编译好后的rpm可以正常使用,只是需要自己手工去捣鼓一下。就当是做一次RHCE的上午TS的一道题吧
7、编译lustre并生成rpm包
cd lustre-1.6.6/
./configure --with-linux=/usr/src/linux-2.6.18-92.1.10.el5_lustre.1.6.6
make rpms
8、编辑grub.conf确定启动默认是Lustre的内核
9、重启
10、安装e2fsprogs(我是源代码装的)
tar zxvf e2fsprogs-1.40.11.tar.gz
./configure
make
make install
11、安装Lustre
安装lustre的包(我安装的全是我自己编译出来的包)
rpm -ivh lustre-modules-1.6.6-2.6.18_92.1.10.el5_lustre.1.6.6custom_200812171613.i386.rpm
rpm -ivh lustre-ldiskfs-3.0.6-2.6.18_92.1.10.el5_lustre.1.6.6custom_200812171615.i386.rpm
rpm -ivh lustre-1.6.6-2.6.18_92.1.10.el5_lustre.1.6.6custom_200812171613.i386.rpm
二、IP及IP-SAN规划
1、规划ISCSI
由于ISCSI inititor启动的时候顺序不一。所以在targets上一定要规划好
root@iscsi:~# grep -v "#" /etc/ietd.conf |grep -v ^$
Target iqn.2008-12.cn.test:lustre.sdb.mgt12.xyz
Lun 0 Path=/dev/sdb1,Type=fileio
Target iqn.2008-12.cn.test:lustre.sdc.ost12.xyz
Lun 0 Path=/dev/sdc1,Type=fileio
Target iqn.2008-12.cn.test:lustre.sdd.ost34.xyz
Lun 0 Path=/dev/sdd1,Type=fileio
root@iscsi:~# grep -v "#" /etc/initiators.deny |grep -v ^$
ALL ALL
root@iscsi:~# grep -v "#" /etc/initiators.allow |grep -v ^$
iqn.2008-12.cn.test:lustre.sdd.ost34.xyz 172.18.250.100, 172.18.250.105
iqn.2008-12.cn.test:lustre.sdc.ost12.xyz 172.18.250.110, 172.18.250.115
iqn.2008-12.cn.test:lustre.sdb.mgt12.xyz 172.18.250.120, 172.18.250.125
2、IP规划
我IP规划。自己在hosts文件里定义好
root@iscsi:~# grep -v "#" /etc/hosts |grep -v ^$
127.0.0.1 localhost
172.18.250.100 mds1
172.18.250.105 mds2
172.18.250.110 oss1
172.18.250.115 oss2
172.18.250.120 oss3
172.18.250.125 oss4
172.18.250.130 client1
172.18.250.135 client2
172.18.250.250 iscsi
3、安装iscsi initiator
yum install "*iscsi*"
chkconfig iscsid on
chkconfig iscsi on
4、配置Lustre的网络及模块
在/etc/modprobe.conf添加一行
options lnet networks=tcp
这个时候前期工作基本上就做完了。现在需要做的是装剩余的机器。当然我的ISCSI是单独做的。我做了一台mds1来克隆。克隆完剩余的mds2 oss1 oss2 oss3 oss4 client1 client2后需要修改的是:
第一:主机名 /etc/sysconfig/network
第二:IP地址 /etc/sysconfig/network-scripts/下面的对应文件
然后确定你的环境正确后在mds1 mds2 oss1 oss2 oss3 oss4都挂载ISCSI
iscsiadm -m discovery -t sendtargets -p iscsi
service iscsi restart
看下挂载上没。我的环境里都出现了一个/dev/sdb
三、配置Lustre及其Failover
1、MDS的配置
[root@mds1 ~]# mkfs.lustre --fsname=testfs --mdt --mgs --failnode=mds2 /dev/sdb
[root@mds1 ~]# mkdir -p /mnt/mdt
[root@mds1 ~]# mount -t lustre /dev/sdb /mnt/mdt
[root@mds2 ~]# mkdir -p /mnt/mdt
[root@mds2 ~]# mount -t lustre /dev/sdb /mnt/mdt
2、OSS的配置
[root@oss1 ~]mkfs.lustre --fsname=testfs --ost --failnode=oss2 --mgsnode=mds1 --mgsnode=mds2 /dev/sdb
[root@oss1 ~]# mkdir -p /mnt/ost
[root@oss1 ~]# mount -t lustre /dev/sdb /mnt/ost
[root@oss2 ~]# mkdir -p /mnt/ost
[root@oss2 ~]# mount -t lustre /dev/sdb /mnt/ost
[root@oss3 ~]mkfs.lustre --fsname=testfs --ost --failnode=oss4 --mgsnode=mds1 --mgsnode=mds2 /dev/sdb
[root@oss3 ~]# mkdir -p /mnt/ost
[root@oss3 ~]# mount -t lustre /dev/sdb /mnt/ost
[root@oss4 ~]# mkdir -p /mnt/ost
[root@oss4 ~]# mount -t lustre /dev/sdb /mnt/ost
3、Clients的配置[root@client1 ~]#mkdir /lustre
[root@client1 ~]#mount -t lustre mds1:mds2:/testfs /lustre
[root@client2 ~]#mkdir /lustre
[root@client2 ~]#mount -t lustre mds1:mds2:/testfs /lustre
四、测试
1.在client1的/lustre里建立任何文件或者删除任何文件在client2的/lustre去看变化
2.正常关闭mds1继续在两个client端测试文件变化情况--这个过程要等待一段时间.(很长我的虚拟机等了5分钟。官方推荐用HEARTBEAT做IPFAIL的HA)这个时候要是去动客户端的话。终端要卡死。。-9 都杀不死。观察mds2上的日志。(我直接DOWN掉电源或者网卡好象是不行的。这个需要HA的软件支持。正常关闭MDS1没问题)
[root@mds1 ~]#umount /mnt/mdt
[root@client1 ~]netstst -a |more
注意观察你的连接情况。应该没有mds2的。切换完成后再来一次。应该能看到了连接上mds2了。
3.不启动md1继续正常关闭oss1 oss3基础测试变化(切换时间照样是很长)
[root@oss1 ~]#umount /mnt/ost
[root@oss3 ~]#umount /mnt/ost
4.打完手工剩余的想怎么测试就怎么测试了,开机自动挂载就自己编辑fstab文件了。(failover还是介意最好用heartbeat一类的software来控制)
E-mail:qq174375@gmail.com
[ 本帖最后由 loveKDE 于 2008-12-22 09:39 编辑 ] |
评分
-
查看全部评分
|