简介

GPFS(General Parallel File System ,GPFS) 是 IBM 公司第一个共享文件系统,起源于 IBM SP 系统上使用的虚拟共享磁盘技术( VSD )。作为这项技术的核心, GPFS 是一个并行的磁盘文件系统,它保证在资源组内的 所有节点可以并行访问整个文件系统;而且针对此文件系统的服务操作,可以同时安全地在 使用此文件系统的多个节点上实现。 GPFS 允许客户共享文件,而这些文件可能分布在不同节点的不同硬盘上;它提供了许多标准的 UNIX 文件系统接口,允许应用不需修改或者重新编辑就可以在其上运行。

补充:

这个是收费的软件(昂贵)现在GPFS改名了Scale:http://www-03.ibm.com/systems/storage/spectrum/scale/

架构设计:

以下安装操作需要在二台机器上执行

时间同步,集群文件系统必须要时间一致

配置hosts文件

192.168.0.180 node1.gpfs.com
192.168.0.181 node2.gpfs.com

#data moniter
192.168.1.180 node1
192.168.1.181 node2

#ssh 双机互信

只需要对这个2个网卡进行互信即可(可以理解为控制网络,集群操作通过这个网卡操作)

192.168.0.180 node1.gpfs.com
192.168.0.181 node2.gpfs.com

任意一台服务器都可以无密码访问

[root@node1 ~]# ssh node1.gpfs.com date
Fri Dec 2 13:17:40 CST 2016
[root@node1 ~]# ssh node2.gpfs.com date
Fri Dec 2 13:17:43 CST 2016
[root@node1 ~]# ssh node1 date
Fri Dec 2 13:17:49 CST 2016
[root@node1 ~]# ssh node2 date
Fri Dec 2 13:17:51 CST 2016

#安装gpfs需要的软件包
yum -y install ksh net-tools m4
#安装c编译器
yum -y install cpp gcc gcc-c++ kernel-devel kernel-headers
#安装CNFS需要的软件包(不使用CNFS就不需要了) 
yum -y install nfs-utils ethtool rpcbind
#更新系统
yum -y update

安装gpfs软件(每台机器都需要安装)

查看版本

[root@node1 base]# rpm -qa | grep gpfs

gpfs.docs-4.1.1-0.noarch
gpfs.gskit-8.0.50-40.x86_64
gpfs.ext-4.1.1-0.x86_64
gpfs.msg.en_US-4.1.1-0.noarch
gpfs.base-4.1.1-0.x86_64
gpfs.gpl-4.1.1-0.noarch

更新补丁包

将GPFS可执行文件的路径添加进PATH

sed -i '/PATH=$PATH:$HOME\/bin/a\PATH=$PATH:\/usr\/lpp\/mmfs\/bin' ~/.bash_profile
cat ~/.bash_profile
立即生效
source ~/.bash_profile

欺骗gpfs,将centos认作RHEL

cp /etc/redhat-release /etc/redhat-release_bak
echo 'Red Hat Enterprise Linux Server release 7.0 (Maipo)'> /etc/redhat-release
cat /etc/redhat-release

编译gpfs

cd /usr/lpp/mmfs/src

[root@node1 src]# make Autoconfig

cd /usr/lpp/mmfs/src/config; ./configure --genenvonly; if [ $? -eq 0 ]; then /usr/bin/cpp -P def.mk.proto > ./def.mk; exit $? || exit 1; else exit $?; fi

[root@node1 src]# make Worldmake World
[root@node1 src]#make InstallImages

以下GPFS命令(以mm开头的),只在node1上执行即可

创建GPFS集群信息

[root@node1 ~]#mmcrcluster -N node1.gpfs.com:quorum-manager,node2.gpfs.com:quorum-manager -p node1.gpfs.com -s node2.gpfs.com -r /usr/bin/ssh -R /usr/bin/scp -C gpfscluster  -A

添加服务器许可

[root@node1 ~]# mmchlicense server --accept -N node1.gpfs.com,node2.gpfs.com

设置镜像接口(gpfs数据是从这个接口走的)以下步骤用红框表示出来

[root@node1 ~]# mmchcluster --ccr-disable

[root@node1 ~]# mmchnode --daemon-interface=node1 -N node1.gpfs.com

[root@node1 ~]# mmchnode --daemon-interface=node2 -N node2.gpfs.com

[root@node1 ~]# mmchcluster --ccr-enable

创建NSD磁盘定义文件(Network Shared Disk)

参数很简单都能看明白,改成自己的参数配置

简单说一下定义了2个池子一个是system一个是datapool .

system 存放源数据

datapool 存放数据的

每一个磁盘都对应一个池子

[root@node1 ~]# cat /etc/gpfsdisk_profile

%pool:pool=system blockSize=256k layoutMap=cluster allowWriteAffinity=no
%pool:pool=datapool blockSize=1M layoutMap=cluster allowWriteAffinity=yes writeAffinityDepth=1 blockGroupFactor=128
%nsd:nsd=fpo_linux1_NSD_Meta_1 device=sdb servers=node1.gpfs.com usage=metadataOnly failureGroup=101 pool=system
%nsd:nsd=fpo_linux1_NSD_Data_1 device=sdc servers=node1.gpfs.com usage=dataOnly failureGroup=101 pool=datapool
%nsd:nsd=fpo_linux2_NSD_Meta_1 device=sdb servers=node2.gpfs.com usage=metadataOnly failureGroup=201 pool=system
%nsd:nsd=fpo_linux2_NSD_Data_1 device=sdc servers=node2.gpfs.com usage=dataOnly failureGroup=201 pool=datapool

初始化nsd

[root@node1 ~]# mmcrnsd -F /etc/gpfsdisk_profile

执行下列参数(调优)

mmchconfig readReplicaPolicy=local,restripeOnDiskFailure=yes,unmountOnDiskFail=meta,dataDiskCacheProtectionMethod=2,disableInodeUpdateOnFDatasync=yes,forceLogWriteOnFdatasync=no,minMissedPingTimeout=60,leaseRecoveryWait=65,maxMBpS=800,worker1Threads=72,nsdMinWorkerThreads=48,nsdMaxWorkerThreads=360,nsdInlineWriteMax=1M,nsdSmallThreadRatio=2,nsdThreadsPerQueue=10,maxFilesToCache=100000,maxStatCache=100000,maxFilesToCache=1000,metadataDiskWaitTimeForRecovery=60,dataDiskWaitTimeForRecovery=120

echo '999' | mmchconfig prefetchAggressivenessRead=2
echo '999' | mmchconfig prefetchAggressivenessWrite=0
echo '999' | mmchconfig syncBuffsPerIteration=1
echo '999' | mmchconfig enableRepWriteStream=no

启动集群

[root@node1 ~]# mmstartup -a
Mon Oct 10 09:43:59 CST 2016: mmstartup: Starting GPFS ...

查看节点状态,这里是冲裁节点等过一段时间会显示active

[root@node1 ~]# mmgetstate -a

在此查看状态已经变成可用 active 状态,集群可以正常用了

[root@node1 ~]# mmgetstate -a

查看集群信息

[root@node1 ~]# mmlscluster

创建文件系统

[root@node1 ~]# mmcrfs fpofs0 -F /etc/gpfsdisk_profile -B 1m -n 16 -m2 -M2 -r2 -R2 -T /gpfs/fpofs0 -A yes -i 4096 -S relatime -E no

查看文件系统是否创建成功,二个节点都可以查询到

[root@node1 ~]# ls /dev/fpofs0
/dev/fpofs0

[root@node2 ~]# ls /dev/fpofs0
/dev/fpofs0

挂载设备

手动挂载指定的设备

[root@node1 ~]#mmmount /dev/fpofs0 /gpfs/fpofs0/ -a

[root@node1 ~]#    挂载所有

卸载

[root@node1 ~]#mmumount /dev/fpofs0 -a

测试文件系统

在node1上简单操作

[root@node1 fpofs0]# mkdir test
[root@node1 fpofs0]# echo "11111" >> hello.txt

在node2查询

制定策略和规划,默认的存放位置为数据池datapool,不要使用system池

[root@node1 ~]# echo "rule default SET POOL 'datapool'">/etc/gpfs_policyfile

[root@node1 ~]# mmchpolicy fpofs0 /etc/gpfs_policyfile -I yes
Validated policy `gpfs_policyfile': Parsed 1 policy rules.
Policy `gpfs_policyfile' installed and broadcast to all nodes.
[root@node1 ~]# mmlspolicy fpofs0 -L
rule default SET POOL 'datapool'

实验关闭一个节点:

[root@node1 ~]# mmshutdown

Mon Oct 10 10:29:10 CST 2016: mmshutdown: Starting force unmount of GPFS file systems

Mon Oct 10 10:29:15 CST 2016: mmshutdown: Shutting down GPFS daemons
Shutting down!
'shutdown' command about to kill process 10937
Unloading modules from /lib/modules/2.6.32-642.6.1.el6.x86_64/extra
Unloading module mmfs26
Unloading module mmfslinux
Mon Oct 10 10:29:23 CST 2016: mmshutdown: Finished

node2 的挂载点直接就掉了 ,然后检查状态

[root@node2 ~]#  mmgetstate -a

当集群只有2个节点,如果有一个挂了另一个是起不来的因为需要仲裁,此时就可以搭建冲裁磁盘来处理这个问题。

当节点一恢复故障后磁盘就可以正常使用了(不需要在此挂载了,磁盘就自动挂载完成了)

根据内存大小,修改缓存的参数。可以将内存当做gpfs存储的缓存来用 
mmchconfig pagepool=1G -i

这里单独拿了一个机器做仲裁

[root@bogon iscsi_disks]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

[root@bogon ~]# yum install -y epel-release.noarch

[root@bogon ~]# yum install -y scsi-target-utils

[root@bogon ~]# mkdir /iscsi_disks

这个太大没有用,实际中500M 600M 700M(需要三个磁盘)

[root@bogon iscsi_disks]# dd if=/dev/zero of=/iscsi_disks/disk01.img count=0 bs=1 seek=1G

[root@bogon iscsi_disks]# dd if=/dev/zero of=/iscsi_disks/disk02.img count=0 bs=1 seek=2G

[root@bogon iscsi_disks]# dd if=/dev/zero of=/iscsi_disks/disk03.img count=0 bs=1 seek=3G

这里最好一个盘一个盘添加,先过程(这里先添加<backing-store /iscsi_disks/disk01.img>)

[root@bogon iscsi_disks]# egrep -v "^#|^$" /etc/tgt/targets.conf
default-driver iscsi
<target iqn.2016-10.com.pgfs:server.target>
<backing-store /iscsi_disks/disk01.img>
lun 1
</backing-store>
write-cache off
initiator-address 192.168.0.0/24
</target>

启动服务

[root@bogon iscsi_disks]# systemctl start tgtd

查看详细信息

[root@bogon iscsi_disks]# tgtadm --mode target --op show

node1 和node2 ,现在node1上操作在去2上操作。

[root@node1 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.0.179

[root@node1 ~]# iscsiadm --mode node --targetname  iqn.2016-10.com.pgfs:server.target  --portal 192.168.0.179 --login

Logging in to [iface: default, target: iqn.2016-10.com.pgfs:server.target, portal: 192.168.0.179,3260] (multiple)
Login to [iface: default, target: iqn.2016-10.com.pgfs:server.target, portal: 192.168.0.179,3260] successful.

[root@node1 ~]# fdisk -l   #这里为什么要一步一步加载判断原因在于2个节点最好盘符都一样,node2 也是/dev/sdd

第一个磁盘完毕后添加第2个磁盘,增加一段改个lun号即可

[root@bogon iscsi_disks]# egrep -v "^#|^$" /etc/tgt/targets.conf

服务重启会慢一点

[root@bogon iscsi_disks]# systemctl restart tgtd

在查询信息就可以了

[root@bogon iscsi_disks]# tgtadm --mode target --op show

在node1 和node2节点扫描一下就可以了

[root@node1 ~]# iscsiadm -m session --rescan

[root@node1 ~]# fdisk -l

同样方法增加第三个

增加nsd磁盘

下面的盘符可别错了

[root@node1 ~]# cat /etc/gpfsdisk_tiensd
/dev/sdd:node1.gpfs.com,node2.gpfs.com::dataAndMetadata::nsd_tb1
/dev/sde:node1.gpfs.com,node2.gpfs.com::dataAndMetadata::nsd_tb2
/dev/sdf:node1.gpfs.com,node2.gpfs.com::dataAndMetadata::nsd_tb3

转换成NSD磁盘

[root@node1 ~]# mmcrnsd -F /etc/gpfsdisk_tiensd

关闭集群

[root@node1 ~]# mmshutdown -a

设置仲裁盘

[root@node1 ~]# mmchconfig tiebreakerDisks="nsd_tb1;nsd_tb2;nsd_tb3"

启动集群

[root@node1 ~]# mmstartup -a
Mon Oct 10 12:04:17 CST 2016: mmstartup: Starting GPFS ...

补充个命令:

查看集群的配置

[root@node1 ~]# mmlsconfig

Configuration data for cluster gpfscluster.gpfs.com:
----------------------------------------------------
clusterName gpfscluster.gpfs.com
clusterId 13712495392530820069
autoload yes
dmapiFileHandleSize 32
minReleaseLevel 4.1.1.4
ccrEnabled yes
readReplicaPolicy local
restripeOnDiskFailure yes
unmountOnDiskFail meta
dataDiskCacheProtectionMethod 2
disableInodeUpdateOnFdatasync yes
forceLogWriteOnFdatasync no
minMissedPingTimeout 60
leaseRecoveryWait 65
maxMBpS 800
worker1Threads 72
nsdMinWorkerThreads 48
nsdMaxWorkerThreads 360
nsdInlineWriteMax 1M
nsdSmallThreadRatio 2
nsdThreadsPerQueue 10
maxStatCache 100000
maxFilesToCache 1000
metadataDiskWaitTimeForRecovery 60
dataDiskWaitTimeForRecovery 120
prefetchAggressivenessRead 2
prefetchAggressivenessWrite 0
syncBuffsPerIteration 1
enableRepWriteStream no
tiebreakerDisks nsd_tb1;nsd_tb2;nsd_tb3
adminMode central

File systems in cluster gpfscluster.gpfs.com:
---------------------------------------------
/dev/fpofs0

继续上个实验这次看看关闭一个节点

[root@node1 ~]# mmshutdown

这次在第2个节点验证,这次没有问题

[root@node2 ~]# cat /gpfs/fpofs0/hello.txt
11111
12123123

GPFS 安装测试的更多相关文章

  1. mahout 安装测试

    1 下载 在http://archive.apache.org/dist/mahout下载相应版本的mahout 版本,获取官网查看http://mahout.apache.org 相关的信息

  2. Hbase的安装测试工作

    Hbase的安装测试工作: 安装:http://www.cnblogs.com/neverwinter/archive/2013/03/28/2985798.html 测试:http://www.cn ...

  3. ubuntu下opencv2.4.9安装测试

    ubuntu下opencv2.4.9安装测试 whowhoha@outlook.com 一.依赖包安装 1.  build-essential 软件包 sudo apt-get install bui ...

  4. 如何在本地安装测试ECSHOP 转载

    如何在本地安装测试ECSHOP 如何在本地(自己的电脑)上先安装ECShop 一.创建PHP环境 1.下载AppServ 因为ECShop在线网上商店系统是用PHP语言开发的,所以,在本地架设网店之前 ...

  5. 谷歌Cartographer学习(1)-快速安装测试(转载)

    转载自谷歌Cartographer学习(1)-快速安装测试 代码放到个人github上,https://github.com/hitcm/ 如下,需要安装3个软件包,ceres solver.cart ...

  6. ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版

    主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...

  7. Centos 7.3 编译 & 安装 & 测试 facebook faiss

    许多 AI 系统训练完毕,正式上线时的基本操作往往可以抽象为:在高维向量空间中,给定一个向量,寻找与之最相近的 k 个向量.当向量数目异常巨大时,如何快速地执行这一基本操作,便成为 AI 系统在工程应 ...

  8. Python 3.6.3 官网 下载 安装 测试 入门教程 (windows)

    1. 官网下载 Python 3.6.3 访问 Python 官网 https://www.python.org/ 点击 Downloads => Python 3.6.3 下载 Python ...

  9. redis3.2.10单实例安装测试

    redis3.2.10单实例安装测试 主要是实际使用环境中使用,为了方便快速部署,特意记录如下: # root用户 yum -y install make gcc-c++ cmake bison-de ...

随机推荐

  1. 分析nginx日志脚本之python

    为了对每个月的切割过的30个日志文件统计出访问最多的ip地址进行排序,整理了下面的脚本,主要思路是处理每一个日志文件的ip排序,最后进行字典合并,计算出月ip排序. #!/usr/bin/env py ...

  2. 使用CSS3创建文字颜色渐变(CSS3 Text Gradient)

    考虑一下,如何在网页中达到类似以下文字渐变的效果? 传统的实现中,是用一副透明渐变的图片覆盖在文字上.具体实现方式可参考 http://www.qianduan.net/css-gradient-te ...

  3. [php]手动搭建php开发环境(排错)

    前提:针对自己的系统下载相应的php.apache.mysql,安装完毕后按照以下去配置httpd.conf和php.ini 本人用的是php5.6.4和apache2.4.4 一.Apache : ...

  4. Configure Always On Availability Group for SQL Server on Ubuntu——Ubuntu上配置SQL Server Always On Availability Group

    下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的填充方法. 目前在Linux上可以搭 ...

  5. 【洛谷 P4016】 负载平衡问题(费用流)

    题目链接 环形均分纸牌,既然是网络流23题的那就用网络流做把. 套路拆点. 供需平衡. 源点向大于平均数的点的入点连流量为这个数减去平均数的差,费用为0的边,表示需要移走这么多. 小于平均数的点的出点 ...

  6. NYOJ 133 子序列 (离散化)

    题目链接 描述 给定一个序列,请你求出该序列的一个连续的子序列,使原串中出现的所有元素皆在该子序列中出现过至少1次. 如2 8 8 8 1 1,所求子串就是2 8 8 8 1. 输入 第一行输入一个整 ...

  7. HNU Joke with permutation (深搜dfs)

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=13341&courseid=0 Joke with pe ...

  8. uboot1.1.6 start.s分析

    .Stage1 start.S代码结构 u-boot的stage1代码通常放在start.S文件中,他用汇编语言写成,其主要代码部分如下:(1)定义入口.由于一个可执行的Image必须有一个入口点,并 ...

  9. 美团实习Java岗面经,已拿offer

    作者:icysnowgx 链接:https://www.nowcoder.com/discuss/71954?type=2&order=3&pos=10&page=1 来源:牛 ...

  10. python基础===15条变量&方法命名的最佳实践

    不同的代码段采用不同的命名长度.通常来说,循环计数器(loop counters)采用1位的单字符来命名,循环判断变量(condition/loop variables)采用1个单词来命名,方法采用1 ...