简介

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. JVM调优总结(4):分代垃圾回收

    为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象, ...

  2. AJAX获取服务器文件

    写一个按钮,点击后在指定的div里显示本地txt文件内容 在本地新建一个test.txt,里面随便写点内容就好. <!DOCTYPE html> <html> <head ...

  3. 用django框架做自己的blog

    说明:我的系统环境是ubuntu 14.10版本的,整理这篇博客,主要是自己记性太不好了,老忘东西,教训一下自己.哈哈 参考文章 createing blog 1,part-1-creating-bl ...

  4. 无聊js画了个菱形

    function repeat(str, count) { return count < 0 ? '' : (new Array(count)).join(str); } function di ...

  5. 指针A - 签到题(顺序三元组)

    给定一个长度为N的数组A=[A1, A2, ... AN],已知其中每个元素Ai的值都只可能是1, 2或者3. 请求出有多少下标三元组(i, j, k)满足1 ≤ i < j < k ≤ ...

  6. 【译】第一篇 SQL Server代理概述

    本篇文章是SQL Server代理系列的第一篇,详细内容请参考原文. SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量.SQL Serve ...

  7. 常见的bug

    常见bug 一. Android系统功能测试设计的测试用例: a.对所测APP划分模块 b.详细列出每个模块的功能点(使用Xmind绘制功能图) c.使用等价类划分.边界值.场景法等对各功能点编写测试 ...

  8. webgote的例子(2)Sql注入(SearchGET)

    Sql注入(Search/GET) 大家好!!! 现如今web服务在我们的网络上遍地都是,各个终端设备成为我们看不见的客户,web服务也成为公司的招牌.80 443为我们展现的视角也是多姿多彩但背后新 ...

  9. 记一个多线程使用libevent的问题

    前段时间使用libevent网络库实现了一个游戏服务器引擎,在此记录下其中遇到的一个问题. 我在设计服务器上选择把逻辑和网络分线程,线程之间通信使用队列.但是这样做会有个问题: 当逻辑线程想要主动的发 ...

  10. 清理oracle的用户中的日志垃圾以及修改sys用户的密码

    清理oracle的用户中的日志垃圾1.进入:/opt/oracle/product/11g/network/admin目录2.注释掉listener.ora文件中的TRACE_LEVEL_LISTEN ...