GPFS(General Parallel File System ,GPFS) 是 IBM 公司第一个共享文件系统,起源于 IBM SP 系统上使用的虚拟共享磁盘技术( VSD )。作为这项技术的核心, GPFS 是一个并行的磁盘文件系统,它保证在资源组内的 所有节点可以并行访问整个文件系统;而且针对此文件系统的服务操作,可以同时安全地在 使用此文件系统的多个节点上实现。 GPFS 允许客户共享文件,而这些文件可能分布在不同节点的不同硬盘上;它提供了许多标准的 UNIX 文件系统接口,允许应用不需修改或者重新编辑就可以在其上运行。——引自百度词条
需要安装GPFS文件系统的对其好处应该已经了解很多了,在这里就不再赘述。下面开始我们的安装过程
1 安装环境需求
安装GPFS文件系统需要很多安装包。笔者的环境的CentOS7,内核版本为3.10.0-693.el7.x86_64。
yum -y install make perl rsh ld-linux.so libm.so.6 libc.so.6 ksh libstdc++.so.5 rsh-server rpcbind xinetd libaio cpp gcc-c++ gcc nfs-utils kernel-headers kernel-devel compat-libstdc++ glibc-devel libXp.so.6 imake rpm-build rpm-build redhat-lsb
2 GPFS安装
2.1 准备GPFS安装包
linux版的GPFS软件可以到这个地方下载https://download.csdn.net/download/lovesteed/10325141
这个软件包里包含了GPFS软件的所有所需要的包,而且集成了linux内核版本为3.10.0-693.21.1.el7.x86_64
的编译过的安装包,如果大家的内核与其相同的话就可以跳过蛋疼的编译环节。安装完base包后,直接安装内核包就行了。当然,如果不是的话,那就和笔者一起来学习如何安装配置吧。
2.2 GPFS基础包安装
这个比较简单但是所有的服务器都要安装。所以,先把软件包上传到各个服务器吧。
我们来看一下软件包及结构
首先打开base文件夹,敲入命令
rpm -ivh gpfs.*.rpm
这个命令有可能会出错。如果出错了,那就先用命令rpm -qa|grep gpfs
查看安装了那些包了,然后使用命令rpm -e --nodeps 软件名
删除所有包。重新,老老实实的一个一个按顺序安装。
rpm -ivh gpfs.base-4.1.1-0.x86_64.rpm (必要)
rpm -ivh gpfs.docs-4.1.1-0.noarch.rpm (必要)
rpm -ivh gpfs.gpl-4.1.1-0.noarch.rpm (必要)
rpm -ivh gpfs.msg.en_US-4.1.1-0.noarch.rpm (必要)
rpm -ivh gpfs.gskit-8.0.50-40.x86_64.rpm (非必要)
rpm -ivh gpfs.ext-4.1.1-0.x86_64.rpm (非必要)
使用命令rpm -qa|grep gpfs
查看是否安装完成。
2.3 GPFS升级包安装
同样所有的服务器都要安装
如果你的linux内核版本是3.10.0-693.21.1.el7.x86_64
那么恭喜你,你就可以跳过这一步骤,直接用前面提到的软件包里的已经编译好的rpm包。
安装命令rpm -Uvh gpfs.*.rpm
。
你也可以一个一个的安装。
rpm -Uvh gpfs.base-4.1.1-11.2.x86_64.update.rpm (必要)
rpm -Uvh gpfs.docs-4.1.1-11.2.noarch.rpm (必要)
rpm -Uvh gpfs.gpl-4.1.1-11.2.noarch.rpm (必要)
rpm -Uvh gpfs.msg.en_US-4.1.1-11.2.noarch.rpm (必要)
rpm -Uvh gpfs.gskit-8.0.50-47.x86_64.rpm (非必要)
rpm -Uvh gpfs.ext-4.1.1-11.2.x86_64.update.rpm (非必要)
使用命令rpm -qa|grep gpfs
查看是否安装完成。
2.4 编译GPFS源码
这一步是笔者的噩梦,遇到了N多的问题,希望读者不会像我这么苦逼。
首先,打开GPFS的目录
cd /usr/lpp/mmfs/src/
执行命令 make LINUX_DISTRIBUTION=REDHAT_AS_LINUX Autoconfig
如果你的输出和笔者一样,不要惊慌,这不一定是问题。如果你的输出比笔者多。那么就要看看后面输出的是什么错误了。
接着执行命令
make World
这里就出错了,这种错误一般是因为内核问题。我们进入出错提示目录cd /usr/src/kernels/
发现其有两个内核
其中
3.10.0-693.el7.x86_64
为我安装系统时的内核,3.10.0-693.21.1.el7.x86_64
为我刚开始时执行yum -y install kernel-devel
命令时安装的内核,我们只需把老的内核删除掉,把新的内核重命名为老内核的名字就行。
rm -rf 3.10.0-693.el7.x86_64 #删除老内核
mv -f 3.10.0-693.21.1.el7.x86_64 3.10.0-693.el7.x86_64 重命名新内核
我们去
/usr/lpp/mmfs/src/config/
目录下的编辑env.mcr
文件 vim env.mcr
,将末尾的/build
去掉重新执行
make LINUX_DISTRIBUTION=REDHAT_AS_LINUX Autoconfig
接着执行
make World
唉!又出错了!!!
解决方案
根据错误提示,编辑文件
vim /usr/lpp/mmfs/src/gpl-linux/kdump.c
添加语句:
unsigned long page_offset_base;
重新执行
make World
, 结果完美!继续执行命令 :
make InstallImages
和 make rpm
完美生成安装包,我们进入如图所示的目录,安装该rpm包.把该安装包发给其他服务器并安装。
rpm -ivh gpfs.gplbin-3.10.0-693.21.1.el7.x86_64-4.1.1-11.2.x86_64.rpm
最后不要忘了添加PATH路径
vim /etc/profile
在结尾添加一句export PATH=$PATH:/usr/lpp/mmfs/bin
执行 source /etc/profile
3 配置ssh免秘钥访问集群
这一节,不是重点,简单说一下命令。也可以配置rsh免密钥,且gpfs默认是使用rsh密钥登陆远端主机
首先修改hosts文件,把你的节点名和IP对应起来
vi /etc/hosts
配置免秘钥
cd /root/.ssh/
ssh-keygen -t rsa #在主服务器创建秘钥
cp id_rsa.pub authorized_keys
scp -r /root/.ssh root@你的节点名或者IP地址:/root #超拷贝到其他所有服务器上
4 配置GPFS文件系统
此处建议先配置两台服务器,这样即使出错,也只用回复两台服务器就可以。其他服务器是可以后续添加进来了。笔者这里先配置两台服务器。
4.1 创建集群
在/tmp
下创建集群配置文件gpfsfile
vim /tmp/gpfsfile
node57:quorum-manager
node56:quorum-manager
创建集群
mmcrcluster -N /tmp/gpfsfile -p node57 -s node56 -C gpfs -r /usr/bin/ssh -R /usr/bin/scp
mmcrcluster 命令其中参数含义
-C bgbcrun 设定集群名称
-U bgbc 定义域名
-N /tmp/gpfs/nodefile 指定节点文件名
-p 指定主NSD服务器
-s 指定备NSD服务器
-r和-R都是通信协议
4.2 授权
mmchlicense server --accept -N node57,node56
4.3 配置NSD盘
查看当前服务器分区fdisk -l /dev/sda
笔者各个节点都是一样的分区,只看一个就行,如果有不同的,就要挨个查看,以确定挂载点。
编辑NSD配置
在
/tmp
下创建集群配置文件nsdfile
vim /tmp/nsdfile
/dev/sda2:node57::dataAndMetadata:01:
/dev/sda2:node56::dataAndMetadata:02:
生成NSD文件
执行命令mmcrnsd -F /tmp/nsdfile -v no
查看生成文件cat /tmp/nsdfile
# /dev/sda1:node57::dataAndMetadata:01:
gpfs1nsd:::dataAndMetadata:01::system
# /dev/sdb2:node56::dataAndMetadata:02:
gpfs2nsd:::dataAndMetadata:02::system
4.4 配置仲裁判
执行命令mmchconfig tiebreakerDisks="gpfs1nsd;gpfs2nsd"
Verifying GPFS is stopped on all nodes ...
mmchconfig: Command successfully completed
mmchconfig: Propagating the clusterconfiguration data to all affected nodes.
This is anasynchronous process.
4.5 启动集群
执行命令mmstartup -a
查看集群状态mmgetstate -a
4.5 创建GPFS文件系统
执行命令mmcrfs gpfs -F /tmp/nsdfile -B 256K -A yes -m 2 -r 2 -j gpfs -T /gpfs -v no
参数含义如下:
gpfs 文件系统 mount 点名
-F 指定 NSD 的文件名
-A 自动 mount 选项为 yes
-m 最大元数据副本
-r 默认的数据副本
-B 块大小为256K
-j 集群名
-T 挂载点
-v 校验建立磁盘是否已有文件系统 为否
4.5 挂载文件
执行mmmount /gpfs -a
安装配置完成~~!
5 尾声
可以设置开机自启动 mmchconfig autoload=yes
或者在/etc/rc.local
中添加:/usr/lpp/mmfs/bin/mmstartup -a
至于添加其他节点及节点上的磁盘的方法,笔者后期会补上。不过这个很简单,网上教程很多。