免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8799 | 回复: 6
打印 上一主题 下一主题

[Lustre] Lustre with the IP-SAN [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-22 09:34 |只看该作者 |倒序浏览
环境:本文仅讨论实现,并不涉及性能和安全
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
yum install 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的一道题吧
make -j 8 rpm

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、重启
reboot

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
fdisk -l

看下挂载上没。我的环境里都出现了一个/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 编辑 ]

gif_1.gif (31.09 KB, 下载次数: 256)

gif_1.gif

评分

参与人数 1信誉积分 +15 收起 理由
kns1024wh + 15

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2008-12-22 10:03 |只看该作者

回复 #1 loveKDE 的帖子

LZ的实践是很好的

论坛徽章:
0
3 [报告]
发表于 2008-12-22 12:30 |只看该作者
支持一下。

论坛徽章:
0
4 [报告]
发表于 2008-12-22 12:56 |只看该作者
我喜欢这个,哈哈!

论坛徽章:
0
5 [报告]
发表于 2008-12-23 10:55 |只看该作者
支持

论坛徽章:
0
6 [报告]
发表于 2009-01-09 17:27 |只看该作者
支持, 最好把failover的测试结果也发出来

论坛徽章:
0
7 [报告]
发表于 2013-01-07 16:48 |只看该作者
回复 1# loveKDE


    哥们儿,请教一下,在Lustre with the IP-SAN中MDT你是怎么同时在两台机器上挂载的。我挂的时候报错啊:ldiskfs_multi_mount_protect: Device is already active on another node
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP