# 1 准备工作
### 1.1 添加以太网址
添加以太网地址,使得gio017可以访问到需要安装的节点。
修改gio017上的/etc/hosts,将需要批量操作的节点名以如下方式添加。
```
[gio017:/etc/hosts]
......
20.0.2.15 gio015
20.0.2.16 gio016
......
```
### 1.2 配置c3
配置c3使得可以在gio017上进行批量操作。
修改gio017上的/etc/c3.conf,将需要批量操作的节点名以如下方式添加。
```
[gio017:/etc/c3.conf]
cluster giotest {
        gio017
        gio00[1-9]
        gio01[0-6]
        gmds00[1-2]
}
```
### 1.3 配置信任关系
配置信任关系使得从gio017上访问需要安装的节点时,无需输入密码。
将gio017:/root/.ssh/ 拷贝到所有节点的/root/.ssh/覆盖。
```
for i in `seq -w 1 16`;scp /root/.ssh gio0[$i]:/root/;done
scp /root/.ssh/ gmds001:/root
scp /root/.ssh/ gmds002:/root
```
# 2 软件安装
### 2.1安装Lustre核心,查看当前的核心版本
```
uname -r
```
如果使用uname  -r 查看核心版本显示为2.6.32-431.29.2.lustre.el6.x86_64,则不需要继续安装。
### 2.2安装核心
将/home/rpms  拷贝到将配置的节点的/home/rpms覆盖,并安装kernel,安装目录为/home/rpms/kernel。
确认安装完成。
安装完了,即可重启。
```
cexec giotest: ‘cd /home/rpms/kernel; rpm -ivh *.rpm –force’
```
### 2.3 e2fs安装
安装e2fsprogs,安装目录为/home/rpms/e2fs。
```
cexec giotest: ‘cd /home/rpms/e2fs; rpm -Uvh *.rpm’
```
### 2.4 安装IBA
#### 2.4.1 安装IBA驱动
在gio017上找到IBA的安装包,安装包路径为/root/wup/MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-ext.tgz,然后拷贝到需要安装的节点进行解压
```
gio017:/root/wup/MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-ext.tgz
tar -zxvf MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-ext.tgz
```
进入到解压目录 /root/MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-ext/, 然后执行以下命令行进行IBA的安装
```
 ./mlnxofedinstall --force --hypervisor --enable-sriov
 ```
安装后重启IB服务
 ```
service openibd restart
 ```
重启ib服务查看HCA状态 并根据此命令是否报错来确定驱动是否安装成功,使用ibstat
 ```
ibstat
 ```
#### 2.4.2 配IPoIB
首先使用service NetworkManage将NetworkManager服务关掉
```
service NetworkManager stop
```
然后进行IP的配置,配置IP的脚本在gio017的/root/目录下 名字是ibaddr.sh(配ib0) 和ib1addr.sh(配ib1) 文件,将这两个脚本拷贝到需要配置IP的节点并执行脚本。
```
[gmds]
scp gio017:/root/ibaddr.sh ./
sh ./ibaddr.sh
[gio]
scp gio017:/root/ibaddr.sh ./
sh ./ibaddr.sh
scp gio017:/root/ib1addr.sh ./
sh ./ib1addr.sh
```
最后再重启IB服务
```
service openibd restart
```
重启完IB服务之后,使用ifconfig确定IPoIB地址配置正确
```
ifconfig
```
#3  安装盘阵
### 3.1 安装盘阵多路径软件rdac ###
盘阵多路径软件rdac的压缩包在gio017的/root/目录下,压缩包名称为rdac-LINUX-09.03.0C00.0662-source.tar.gz,将rdac*.tar.gz拷贝到需要安装的节点先解压再安装。
```
tar -zxvf rdac-LINUX-09.03.0C00.0662-source.tar.gz
```
进入rdac目录,执行安装。
```
cexec giotest: 'make clean;make;make install'
```
安装完成之后将mpp的img覆盖init的img,之后重启节点。
```
cexec giotest: 'cp /boot/mpp-2.6.32-431.29.2.lustre.el6.x86_64.img /boot/initramfs-2.6.32-431.29.2.lustre.el6.x86_64.img'
```
确认rdac安装成功,有/opt/mpp目录即可。
 #3  配置盘阵
参阅wiki上的盘阵配置流程,网站地址为http://20.0.1.4/dokuwiki/doku.php?id=hardware:diskarray_management。
配置完成后,mds可见。
  ```     
[root@gmds001 ~]# /opt/mpp/lsvdev
        Array Name      Lun    sd device
        -------------------------------------
        gdsk01          0     -> /dev/sdb
        gdsk01          1     -> /dev/sdc
[root@gmds002 ~]# /opt/mpp/lsvdev
        Array Name      Lun    sd device
        -------------------------------------
        gdsk01          0     -> /dev/sdb
        gdsk01          1     -> /dev/sdc
  ```     
gio节点上ost可见(以gio001/002为例)。
```
[root@gio001 rpms]# /opt/mpp/lsvdev
        Array Name      Lun    sd device
        -------------------------------------
        gdsk001         0     -> /dev/sdb
        gdsk001         1     -> /dev/sdc
        gdsk001         2     -> /dev/sdd
        gdsk001         3     -> /dev/sde
        gdsk001         4     -> /dev/sdf
        gdsk001         5     -> /dev/sdg
[root@gio002 rpms]# /opt/mpp/lsvdev
        Array Name      Lun    sd device
        -------------------------------------
        gdsk001         0     -> /dev/sdb
        gdsk001         1     -> /dev/sdc
        gdsk001         2     -> /dev/sdd
        gdsk001         3     -> /dev/sde
        gdsk001         4     -> /dev/sdf
        gdsk001         5     -> /dev/sdg
   ```    
# 4 Lustre文件系统
### 4.1 安装lustre文件系统
安装目录为/home/rpms/lustre_x86_64_g0fb79fb ,注意需要安装的最新Lustre RPM包都是*lustre_x86_64_g0fb79fb.rpm
```
cd /home/rpms/lustre_x86_64_g0fb79fb
rpm -ivh *.rpm
```
如何确认安装正确?
### 4.2 格式化分区
### 4.2.1 mds的格式化
执行mkfsgiotest.mds,mkfsgiotest.mds在gio017的/root/目录下。
ssh gmds001 mkfs.lustre --fsname=giotest --mgs --mdt --index=0  --failnode=17.0.1.2@o2ib --reformat /dev/sdb
ssh gmds001 mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --mdt --index=1  --failnode=17.0.1.1@o2ib --reformat /dev/sdc
### 4.2.2 ost的格式化
将mkfsgiotest.ost拷贝到对应的io节点上,cexec执行,mkfsgiotest.ost在gio017的/root/目录下,使用vi编辑器查看格式化脚本是否正确,注意格式化ost的时候需要在单节点上执行。
cexec giotest :' sh mkfsgiotest.ost'
<code>
base=`hostname|cut -c 5-6`
basenum=`echo $(($base))`
if [ $basenum -gt 16 ]
then
        echo "this is for gio[001-016]\n"
        exit 1
fi
((base2=$base+1))
((idx=$base*3-3))
failnode01=17.0.2.$base@o2ib
failnode02=17.0.2.$base2@o2ib
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode02 --reformat /dev/sdb
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode02 --reformat /dev/sdc
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode02 --reformat /dev/sdd
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode01 --reformat /dev/sde
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode01 --reformat /dev/sdf
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode01 --reformat /dev/sdg
</code>
###4.2.3 格式化正确性的简单验证
格式化完成后,可以简单检查,确认底层文件系统(ldiskfs)的正确性,如果可以挂载,说明盘阵格式化成功。
```
[root@gio001 ~]# mkdir -p /mnt/lustre/local/giotest-OST0000
[root@gio001 ~]# mount -t ldiskfs /dev/sdb /mnt/lustre/local/giotest-OST0000
[root@gio001 ~]# umount /mnt/lustre/local/giotest-OST0000
```
###4.3 修改网络配置
格式化完成之后,需要修改网络配置,使Lustre默认使用IBA网络。
使用cpush命令,将gio017上的/etc/modprobe.d/lustre.conf /etc/modprobe.d复制到每个节点上即可。
使用vim 编辑器查看/etc/modprode.d/lustre.conf配置文件的内容,如果没有请添加网络配置为options lnet networks=o2ib(ib0)
```
[/etc/modprobe.d/lustre.conf]
options lnet networks=o2ib(ib0)
```
如果不修改,会有以下报错(因为Lustre默认使用TCP):
```
mount.lustre: mount /dev/sdb at /mnt/lustre/local/giotest-OST0000 failed: No such file or directory
Is the MGS specification correct?
Is the filesystem name correct?
If upgrading, is the copied client log valid? (see upgrade docs)
[/var/log/messages]
Sep  6 15:49:32 gio001 kernel: LNet: Added LNI 20.0.2.1@tcp [8/256/0/180]
Sep  6 15:49:32 gio001 kernel: LNet: Accept secure, port 988
Sep  6 15:49:33 gio001 kernel: LDISKFS-fs (sdb): mounted filesystem with ordered data mode. quota=on. Opts:
Sep  6 15:49:33 gio001 kernel: LustreError: 5145:0:(ldlm_lib.c:433:client_obd_setup()) can't add initial connection
Sep  6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_config.c:572:class_setup()) setup MGC17.0.1.1@o2ib failed (-2)
Sep  6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount.c:200:lustre_start_simple()) MGC17.0.1.1@o2ib setup error -2
Sep  6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount_server.c:851:lustre_disconnect_lwp()) giotest-MDT0000-lwp-OST0000: Can't end config log giotest-client.
Sep  6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount_server.c:1426:server_put_super()) giotest-OST0000: failed to disconnect lwp. (rc=-2)
Sep  6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount_server.c:1456:server_put_super()) no obd giotest-OST0000
Sep  6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount_server.c:135:server_deregister_mount()) giotest-OST0000 not registered
Sep  6 15:49:33 gio001 kernel: Lustre: server umount giotest-OST0000 complete
Sep  6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount.c:1324:lustre_fill_super()) Unable to mount  (-2)
Sep  6 15:50:09 gio001 kernel: LNet: Removed LNI 20.0.2.1@tcp
```
# 5 启动服务 #
###5.1mds启动###
```
[root@gmds001 ~]# mount -t lustre /dev/sdb /mnt/lustre/local/giotest-MDT0000/
```
确认是否挂载成功
```
[root@gmds001 ~]# mount | grep lustre
/dev/sdb on /mnt/lustre/local/giotest-MDT0000 type lustre (rw)
```
###5.2ost启动###
手动启动方式:
[root@gio001 ~]# mount -t lustre /dev/sdb /mnt/lustre/local/giotest-OST0000
mount.lustre: set /sys/block/sdb/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sdc /mnt/lustre/local/giotest-OST0001
mount.lustre: set /sys/block/sdc/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sdd /mnt/lustre/local/giotest-OST0002
mount.lustre: set /sys/block/sdd/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sde /mnt/lustre/local/giotest-OST0003
mount.lustre: set /sys/block/sdb/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sdf /mnt/lustre/local/giotest-OST0004
mount.lustre: set /sys/block/sdc/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sdg /mnt/lustre/local/giotest-OST0005
mount.lustre: set /sys/block/sdd/queue/max_sectors_kb to 32767
使用ldev.conf配置文件启动:
首先查看ldev配置文件,在/etc/ldev.conf中添加节点名称与对应的OST序号,使用blkid可以查看每个节点的OST的序号
例:
.......
gio017 gio018 gswgfs-OST0030
gio017 gio018 gswgfs-OST0031
gio017 gio018 gswgfs-OST0032
gio018 gio017 gswgfs-OST0033
gio018 gio017 gswgfs-OST0034
gio018 gio017 gswgfs-OST0035
gio019 gio020 gswgfs-OST0036
gio019 gio020 gswgfs-OST0037
gio019 gio020 gswgfs-OST0038
gio020 gio019 gswgfs-OST0039
gio020 gio019 gswgfs-OST003a
gio020 gio019 gswgfs-OST003b
.......
使用ldev -l 查看对应节点的OST序号是否正确,然后使用service lustre start启动服务。
###6 FAQ###
IBA线缆插错了怎么办?
如何检查?
使用ibstat查看状态,第一块网卡的SM lid为1,第二块网卡的SM lid为41985则属于正常情况,如若相反,机房交换重插。
如何处理?
重启IBD服务,service openibd restart  卸载模块lustre_rmmod 再重启IBD服务, service openibd restart

lustre文件系统部署流程的更多相关文章

  1. Lustre文件系统部署和应用探索

    1. Lustre文件系统概述 2. Lustre文件系统部署 2.1 基本环境 本篇博客将在KVM虚拟机中部署Lustre文件系统. 操作系统版本为CentOS6.5_x86_64.Lustre软件 ...

  2. OpenStack Swift集群部署流程与简单使用

    之前介绍了<OpenStack Swift All In One安装部署流程与简单使用>,那么接下来就说一说Swift集群部署吧. 1. 简介 本文档详细描述了使用两台PC部署一个小型Sw ...

  3. Azure DevOps 中 Dapr项目自动部署流程实践

    注:本文中主要讨论 .NET6.0项目在 k8s 中运行的 Dapr 的持续集成流程, 但实际上不是Dapr的项目部署到K8s也是相同流程,只是k8s的yaml配置文件有所不同 流程选择 基于 Dap ...

  4. Liferay7 BPM门户开发之45: 集成Activiti文件上传部署流程BPMN模型

    开发文件上传,部署流程模板. 首先,开发jsp页面,deploy.jsp <%@ include file="/init.jsp" %> <h3>${RET ...

  5. Jenkins环境拓扑及部署流程

    环境拓扑图: 部署流程:

  6. Activiti 部署流程定义及相关的表(classpath部署、zip部署)

    package com.mycom.processDefinition; import org.activiti.engine.ProcessEngine; import org.activiti.e ...

  7. OpenStack Keystone安装部署流程

    之前介绍了OpenStack Swift的安装部署,采用的都是tempauth认证模式,今天就来介绍一个新的组件,名为Keystone. 1. 简介 本文将详细描述Keystone的安装部署流程,并给 ...

  8. activiti自定义流程之整合(四):整合自定义表单部署流程定义

    综合前几篇博文内容,我想在整合这一部分中应该会有很多模块会跳过不讲,就如自定义表单的表单列表那一块,因为这些模块在整合的过程中都几乎没有什么改动,再多讲也是重复无用功. 正因为如此,在创建了流程模型之 ...

  9. activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义

    注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建        (2)创建流程模型:activiti自定义流程之Spring ...

随机推荐

  1. 分布式ID生成器

    最近会写一篇分布式的ID生成器的文章,先占位.借鉴Mongodb的ObjectId的生成: 4byte时间戳 + 3byte机器标识 + 2byte PID + 3byte自增id 简单代码: imp ...

  2. 提高SQL的查询效率

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引.   2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使 ...

  3. HDU 5908 Abelian Period(暴力+想法题)

    传送门 Description Let S be a number string, and occ(S,x) means the times that number x occurs in S. i. ...

  4. OpenGLES入门笔记四

    原文参考地址:http://www.cnblogs.com/zilongshanren/archive/2011/08/08/2131019.html 一.编译Vertex Shaders和Fragm ...

  5. CF724C: Ray Tracing

    传送门 CF的题质量真心不低,这道题的标准解法(应该)是exgcd,打比赛的时候想到了具体的推导公式了,也意识到了需要用exgcd,但是因为寝室要锁门了(其实就是太弱,就放弃了. 首先很显然,这条线所 ...

  6. POJ3468A Simple Problem with Integers(区间加数求和 + 线段树)

    题目链接 题意:两种操作:一是指定区间的数全都加上一个数,二是统计指定区间的和 参考斌神的代码 #include <iostream> #include <cstring> # ...

  7. python 基于windows环境的ftp功能

    描述: 1.基于备份服务器部署的py程序,将需要备份主机目录下的内容下载至备份服务器(服务端和远端都是windows server 2008) 2.py程序部署在windows服务器,后台运行,基于b ...

  8. 在Nginx中部署基于IP的虚拟主机

    一.虚拟主机概念 虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点.应用组件等,提供必要的站点功能.数据存放和传输功能.所谓虚拟主机,也叫"网站空间", 就是把一台运行在 ...

  9. nginx主备配置

    添加配置: proxy_next_upstream error timeout invalid_header http_500 http_503 http_502; upstream http.wea ...

  10. js020-JSON

    js020-JSON 20.1 语法 JSON的语法可以表示为一下三种类型的值. 简单值 使用与JS相同的语法,可以在JSON中表示字符串.数值.布尔值和null,但是JSON不支持JS中的特殊性Un ...