GPFS 3.1 for AIX 安装配置完全手册

本文详细描述了 AIX 5.3环境下安装配置 GPFS 3.1的步骤,对于第一次安装 GPFS 的同仁可以快速入门,对于有安装过的同仁,有一定的参考意义。

辛 旻 (xinmin@baosight.com), IBM 主机工程师, 上海宝信软件股份有限公司

辛 旻辛旻,拥有西安交通大学学士学位,上海宝信系统服务部技术支持中心 IBM 主机技术路线负责人,有从事 AIX 工作的多年实践经验,曾公开发表过《AIX 操作系统的内存调度机制剖析》一文,对 IBM psystem 平台有较为深入的掌握,已通过8门 AIX 相关认证,同时获得 CATE 高级认证。



2007 年 8 月 30 日

前言


GPFS 的简介

GPFS 是 IBM 公司第一个共享文件系统,起源于 IBM SP 系统上使用的虚拟共享磁盘技术( VSD )。作为这项技术的核心, GPFS 是一个并行的磁盘文件系统,它保证在资源组内的 所有节点可以并行访问整个文件系统;而且针对此文件系统的服务操作,可以同时安全地在使用此文件系统的多个节点上实现。 GPFS 允许客户共享文件,而这些文件可能分布在不同节点的不同硬盘上。 与 NFS 相比,GPFS 在 SAN 环境下可以提供更好的性能。


实验环境说明

实验室示意图

图1.实验环境
topology.jpg

机器配置表

表 1. 机器配置表
序号主机名用途IP 地址用户系统环境
1NSD1主 NSD 服务器10.66.3.982 CPU/4 G/AIX 5305
2NSD2备用 NSD 服务器10.66.3.992 CPU/4 G/AIX 5305
3App1应用服务器10.66.5.51user1(501)2 CPU/4 G/AIX 5305
4App2应用服务器10.66.5.52user2(502)2 CPU/4 G/AIX 5305
5App3应用服务器10.66.5.53user3(503)2 CPU/4 G/AIX 5305
6App4应用服务器10.66.5.54user4(504)2 CPU/4 G/AIX 5305

实验目的

由于应用软件有对共享文件系统读写的要求,需要建立一个/share 的共享文件系统,在上面建立不同目录供不同的用户读写使用。

实现方法

安装 GPFS 系统,并利用用户id的不同建立目录,区分权限。 举例来说:
1. /share/user1work 我们希望只有 App1 的 user1 用户能读写,那么我们在 App1 机器上设置所有者为 user1,权限为700,完成后其他机器上没有该用户 id,也就没有权限对该目录读写。
2./share/user1temp 我们希望其他用户 userx 可读进入该目录,则设置所有者为 user1,权限可设为750,由于 userx 的用户都是 bea 组的,所以该设置使得在其他机器上 bea 组的 userx 用户有权限进入并读取这个目录的文件。


准备工作

SAN 配置

1.在阵列端配置磁盘阵列盘,建立 gpfs 的 volume group

2.在光纤交换机配置所有服务器和阵列 host 口划分在一个 zone。

3.利用 DSCLI 将 volume group 设置和服务器做 hostconnect。

这个工作先用 mkgrou p建立一个 volume group v3,然后用 chvolgrp 将 fbvol 的 volume 磁盘加入该 group。最后用 hostconnect 将服务器的 wwn 号命令逐一通过指定的 IOPORT 和该 group 以及勾连起来。 确认安装结果:

Date/Time: August 13, 2007 7:40:05 PM GMT+08:00 IBM DSCLI Version: 5.2.400.426 DS:
 IBM.2107-75L3351
Name      ID                    WWPN      HostType Profile        portgrp volgrpID
ESSIOport
App1 IBM.2107-75L3351/0020 210000E08B9B4D48 pSeries IBM pSeries-AIX 0 IBM.2107-75L3351/V6 
I0232,I0032,I0302,I0102
App1 IBM.2107-75L3351/0021 210100E08BBB4D48 pSeries IBM pSeries-AIX 0 IBM.2107-75L3351/V6 
I0232,I0032,I0302,I0102
……

4.所有服务器安装 sddpcm 多通道软件

sddpcm 是IBM的高端存储的多路径软件,可以比 AIX 缺省的 MPIO 软件实现自动负载均衡和零时间 failover,性能也得到提高。 试验中安装了 sddpcm 的软件包
devices.fcp.disk.ibm.mpio.rte 1.0.0.7 # IBM MPIO FCP Disk Device
devices.sddpcm.53.rte 2.1.2.5 # IBM SDD PCM for AIX V53
确认安装结果,有4条通路连接主机和存储的逻辑盘。

[App1][root][/]>pcmpath query essmap
Disk  Path  P   Location  adapter  LUN SN  Type  Size  LSS  Vol  Rank  C/A  S Connection
port RaidMode
hdisk3 path0    01-10-01[FC] fscsi0  75L33510125  IBM 2107-900 65.5GB  1  37   fffb  17  
Y  R1-B1-H3-ZC   32   RAID5
hdisk3 path1    01-10-01[FC] fscsi0  75L33510125  IBM 2107-900 65.5GB  1  37   fffb  17  
Y  R1-B1-H3-ZC   32   RAID5
hdisk3 path2    01-10-01[FC] fscsi0  75L33510125  IBM 2107-900 65.5GB  1  37   fffb  17  
Y  R1-B1-H3-ZC   32   RAID5
hdisk3 path3    01-10-01[FC] fscsi0  75L33510125  IBM 2107-900 65.5GB  1  37   fffb  17  
Y  R1-B1-H3-ZC   32   RAID5

5.cfgmgr 最终扫描确认

结果:在所有服务器都可看到该磁盘。
以 App3 举例

[App3][root][/home/scripts]>lspv
hdisk3          none                                None
[App3][root][/]>pcmpath query essmap
Disk  Path  P   Location  adapter  LUN SN  Type  Size  LSS  Vol  Rank  C/A  S Connection
port RaidMode
hdisk3 path0    01-10-01[FC] fscsi0  75L33510125  IBM 2107-900 65.5GB  1  37   fffb  17  
Y  R1-B1-H3-ZC   32   RAID5
hdisk3 path1    01-10-01[FC] fscsi0  75L33510125  IBM 2107-900 65.5GB  1  37   fffb  17  
Y  R1-B1-H3-ZC   32   RAID5
hdisk3 path2    01-10-01[FC] fscsi0  75L33510125  IBM 2107-900 65.5GB  1  37   fffb  17  
Y  R1-B1-H3-ZC   32   RAID5
hdisk3 path3    01-10-01[FC] fscsi0  75L33510125  IBM 2107-900 65.5GB  1  37   fffb  17  
Y  R1-B1-H3-ZC   32   RAID5

访问配置

修改所有机器的/etc/hosts,将以下行加入,使得机器之间互相能解析主机名。

/etc/hosts
#gpfs start
10.66.3.98     NSD1
10.66.3.99     NSD2
10.66.5.51	   App1
10.66.5.52	   App2
10.66.5.53	   App3
10.66.5.54	   App4
#gpfs end

修改所有服务器的/.rhosts,将2个NSD服务器主机名加入

NSD1 root NSD2 root

编写几个 shell 脚本,方便以后安装

1.run_cmd.sh #该脚本可在所以服务器上运行同一条命令。

cat machines.list|awk '{print "rsh  "$1" \"hostname;$1 $2 $3 $4 $5\""}'>/tmp/test.sh
cat /tmp/test.sh
sh /tmp/test.sh  $1  $2 $3   $4   $5
rm /tmp/test.sh

2.machines.list #该文件为机器列表,供其他脚本使用,注意不能有空行。

10.66.5.51      App1
10.66.5.52      App2
10.66.5.53      App3
10.66.5.54      App4
10.66.3.98      NSD1
10.66.3.99      NSD2

3.rcp_file.sh #该脚本用来从 NSD 服务器上分发文件给各服务器做安装等用途。

cat machines.list|awk '{print "rcp $1  "$1":$1"}'>/tmp/test.sh
cat /tmp/test.sh
sh /tmp/test.sh $1
rm /tmp/test.sh

4.install_gpfs.sh #安装 GPFS 软件的脚本。实验中 GPFS 安装软件放在/soft_ins/gpfs3.1下

cd /soft_ins/gpfs3.1
installp -acYd . all

5.change_profile.sh 修改各服务器.proifle 的脚本,增加路径

echo "export PATH=\$PATH:/usr/lpp/mmfs/bin:."  >> /.profile

确认从2个 NSD 服务器rsh,rcp访问各个服务器设置 ok。

[NSD1][root][/home/scripts/gpfs]>run_cmd.sh date
App1
Thu Aug  2 19:37:00 BEIST 2007
App2
Thu Aug  2 19:37:00 BEIST 2007 NSD1
........
[NSD1][root][/home/scripts/gpfs]>run_cmd.sh mkdir /home/scripts/gpfs
[NSD1][root][ /home/scripts/gpfs]>rcp_file.sh  /home/scripts/gpfs/change_profile.sh
[NSD1][root][/home/scripts/gpfs]>run_cmd.sh ls -l /home/scripts/gpfs
App1
-rw-r--r--   1 root     system           37 Jun 28 14:08 change_profile.sh
……

安装 GPFS 及配置准备

将 install_gpfs.sh 和 GPFS 安装文件拷贝到所有服务器安装

实验中放在/soft_ins下,当然也可以建一个 NFS 服务器共享安装。

[NSD1][root][/home/scripts/gpfs]>rcp_file.sh /home/scripts/gpfs/install_gpfs.sh
[NSD1][root][/home/scripts/gpfs]> run_cmd.sh /home/scripts/gpfs/install_gpfs.sh

确认每台服务器安装显示 ok

添加所有.profile 的执行路径

[NSD1][root][/home/scripts/gpfs]>run_cmd.sh /home/scripts/gpfs/chang_profile.sh

目录准备

[NSD1][root][/home/scripts/gpfs]>run_cmd.sh mkdir /share  
[NSD1][root][/home/scripts/gpfs]>run_cmd.sh ln -s  /share /tmp/mmfs
[NSD1][root][/home/scripts/gpfs]>run_cmd.sh mkdir /tmp/gpfs

配置 GPFS 集群

配置节点文件

[NSD1][root][/]>vi /tmp/gpfs/nodefile
NSD1:quorum
NSD2:quorum
App1:client
App2:client
App3:client
App4:client

建立 GPFS 集群

先确保清理干净原先 GPFS 集群

[NSD1][root][/tmp/gpfs]>mmdelnode -f

建立集群

[NSD1][root][/tmp/gpfs]>mmcrcluster -C bgbcrun -U bgbc 
-N /tmp/gpfs/nodefile -p NSD1 -s NSD2
Thu Jun 28 15:42:57 BEIST 2007: 6027-1664 mmcrcluster: Processing node NSD1
Thu Jun 28 15:42:57 BEIST 2007: 6027-1664 mmcrcluster: Processing node NSD2
…..
mmcrcluster: Command successfully completed
mmcrcluster: 6027-1371 Propagating the cluster configuration data to all
affected nodes.  This is an asynchronous process.
其中参数含义
-C bgbcrun 设定集群名称
-U bgbc    定义域名
-N /tmp/gpfs/nodefile 指定节点文件名
-p NSD1 指定主NSD服务器为 NSD1
-s NSD1 指定备NSD服务器为 NSD1

确认查看

[NSD1][root][/tmp/gpfs]>mmlscluster

GPFS cluster information
========================
  GPFS cluster name:         bgbcrun.NSD1
  GPFS cluster id:           739157013761844865
  GPFS UID domain:           bgbc
  Remote shell command:      /usr/bin/rsh
  Remote file copy command:  /usr/bin/rcp

GPFS cluster configuration servers:
-----------------------------------
  Primary server:    NSD1
  Secondary server:  NSD2

 Node  Daemon node name            IP address       Admin node name    Designation    
----------------------------------------------------------------------------------
   1   NSD1                      10.66.3.98       NSD1                   quorum
   2   NSD2                      10.66.3.99       NSD2                   quorum
   3   App1                      10.66.5.51       App1                     
   4   App2                      10.66.5.52       App2                     
   5   App3                      10.66.5.53       App3                     
   6   App4                      10.66.5.54       App4

配置 GPFS 的共享盘

建立 NSD(Network Shared Disk)文件

[NSD1][root][/tmp/gpfs]>vi /tmp/gpfs/nsdfile
添加
hdisk2:NSD1:NSD2: dataAndMetadata:4

生成 NSD 盘

[NSD1][root][/tmp/gpfs]>mmcrnsd -F /tmp/gpfs/nsdfile
mmcrnsd: Processing disk hdisk2
mmcrnsd: 6027-1371 Propagating the cluster configuration data to all
affected nodes.  This is an asynchronous process.

此时,该文件作了转换

[NSD1][root][/tmp/gpfs]>cat nsdfile
# hdisk2:NSD2:NSD1: dataAndMetadata:4
gpfs1nsd:::dataAndMetadata:4:

确认结果

[NSD1][root][/tmp/gpfs]>lspv
hdisk3          00003e846ffa7a6e                    gpfs1nsd

启动 GPFS 系统

[NSD2][root][/tmp/gpfs]>mmstartup -a 
Thu Jun 28 15:52:12 BEIST 2007: 6027-1642 mmstartup: Starting GPFS ...
NSD2:  6027-2114 The GPFS subsystem is already active.
…
App4:  6027-2114 The GPFS subsystem is already active.

配置 GPFS 的共享文件系统

建立 GPFS 文件系统

[NSD2][root][/]>mmcrfs /share sharelv -F /tmp/gpfs/nsdfile  -A yes -B 64K -n 30 -v no
GPFS: 6027-531 The following disks of sharelv will be formatted on node NSD1:
    gpfs1nsd: size 67108864 KB
GPFS: 6027-540 Formatting file system ...
GPFS: 6027-535 Disks up to size 140 GB can be added to storage pool 'system'.
Creating Inode File
Creating Allocation Maps
Clearing Inode Allocation Map
Clearing Block Allocation Map
GPFS: 6027-572 Completed creation of file system /dev/sharelv.
mmcrfs: 6027-1371 Propagating the cluster configuration data to all
affected nodes.  This is an asynchronous process.
参数含义如下:
/share 文件系统 mount 点名
sharelv 指定文件系统 lv 名
-F   指定 NSD 的文件名
-A   自动 mount 选项为 yes
-B   块大小为64K
-n   挂载文件系统的节点估计数30个
-v   校验建立磁盘是否已有文件系统 为否

装载文件系统

[NSD2][root][/home/scripts/gpfs]>run_cmd.sh mount /share

建立目录

[App1][root][/]>mkdir /share/user1work
[App1][root][/]>chown user1:bea /share/user1work
[App1][root][/]>chmod 700 /share/user1work
[App1][root][/]>mkdir /share/user1temp
[App1][root][/]>chown user1:bea /share/user1temp
[App1][root][/]> chmod 750 /share/user1temp

同样在另3台机器建立其他目录并修改相应所有者即权限,即 work 目录只有所有者可操作,temp 目录可读可进入。


配置 GPFS 的属性

配置 GPFS 选项属性

在节点开机后自动启动 GPFS

[NSD1][root][/]>mmchconfig autoload=yes
mmchconfig: Command successfully completed
mmchconfig: 6027-1371 Propagating the cluster configuration data to all
affected nodes.  This is an asynchronous process.

采用多个 Quorum 盘

[NSD1][root][/]> mmchconfig singleNodeQuorum=no
mmchconfig: 6027-1119 Obsolete option: singleNodeQuorum

显示 GPFS 选项属性

[NSD1][root][/]>mmlsconfig
Configuration data for cluster bgbcrun.NSD2:
-----------------------------------------------
clusterName bgbcrun.NSD2
clusterId 739157013761844865
clusterType lc
autoload no
useDiskLease yes
uidDomain bgbc
maxFeatureLevelAllowed 912

至此 GPFS 的安装配置完成

[NSD1][root][/]>mmgetstate -a
 Node number  Node name        GPFS state 
------------------------------------------
       1      NSD1          active
       2      NSD2          active
       3      App1          active
       4      App2          active
       5      App3          active
      10      App4          active

实施结果

最终,通过 userid 的不同,在 App1 的共享目录 /share下,user1 只能读写自己文件夹的文件,对其它用户的 temp 目录可读,对其它用户的 work 目录不能读写。

[App1][/share]>ls -latr
drwx------   2 user1     bea         2048 Jun 28 17:21 user1work
drwxr--x--  2 user1     bea         2048 Jun 28 17:21 user1temp
drwx------   2 502      bea            2048 Jun 28 17:22 user2work
drwxr--x---   2 502      bea            2048 Jun 28 17:22 user2temp
drwx------   2 503      bea         2048 Jun 28 17:22 user3work
drwxr-x--   2 503      bea         2048 Jun 28 17:22 user3temp
drwxr----   2 504      bea         2048 Jun 28 17:22 user4work
drwxr-x---   2 504      bea         2048 Jun 28 17:23 user4temp
[App1][user1][/share]>cd user2work 
ksh: user2temp : Permission denied.
[App1][user1][/share]>cd user2temp 
[App1][user1][/share]>>a
The file access permissions do not allow the specified action.
ksh[2]: a: 0403-005 Cannot create the specified file.
[App1][user1][/share]>cd /user1temp
[App1][user1][/share/user1temp]>>a
[App1][user1][/share/user1temp]>ls -l
-rw-r-----   1 user1   bea               0 Aug 13 18:47 a
[App1][user1][/share/xhtemp]>rm a
[App1][user1][/share/xhtemp]>ls -l
[App1][/share]>ls -latr
drwxr------   2 user1     bea         2048 Jun 28 17:21 user1work
drwxr------   2 user1     bea         2048 Jun 28 17:21 user1temp
drwxr------   2 502      bea            2048 Jun 28 17:22 user2work
drwxr------   2 502      bea            2048 Jun 28 17:22 user2temp
drwxr------   2 503      bea         2048 Jun 28 17:22 user3work
drwxr------   2 503      bea         2048 Jun 28 17:22 user3temp
drwxr------   2 504      bea         2048 Jun 28 17:22 user4work
drwxr------   2 504      bea         2048 Jun 28 17:23 user4temp

同样,在其它3台机器也有类似我们希望的结果。


其他有用的 GPFS 操作

增加1个节点

1.新增一个节点

除所有准备和安装工作外,还需完成以下操作:

[NSD1][root][/home/scripts/gpfs]>mmaddnode -N bgbcw14:client 
Thu Jun 28 16:28:21 BEIST 2007: 6027-1664 mmaddnode: Processing node App3
mmaddnode: Command successfully completed
mmaddnode: 6027-1371 Propagating the cluster configuration data to all
  affected nodes.  This is an asynchronous process.

2.停掉节点

停掉所有节点

[NSD2][root][/home/scripts/gpfs]>mmshutdown -a
Mon Jul 30 09:56:02 BEIST 2007: 6027-1341 mmshutdown: Starting force unmount of 
GPFS file systems
NSD1:  forced unmount of /share
…
App4:  forced unmount of /share
Mon Jul 30 09:56:07 BEIST 2007: 6027-1344 mmshutdown: Shutting down GPFS daemons
NSD1:  Shutting down!
…
App3:  Shutting down!
NSD1:  'shutdown' command about to kill process 368890
….
App4:  'shutdown' command about to kill process 474040
Mon Jul 30 09:56:13 BEIST 2007: 6027-1345 mmshutdown: Finished

也可以用 mmshutdown -N 只停某个节点

清除 GPFS

1.	fuser –kcu /share
2.	unmount /share  #在所有节点
3.	mmdelfs sharelv,   
4.	mmlsfs sharelv #检查结果
5.	mmdelnsd –F /tmp/gpfs/nsdfile
6.	mmshutdown –a
7.	mmdelnode –n /tmp/gpfs/nodefile
8.	mdelnode –f 	#最后清除集群

总结

总的来说,如果一步步参照本文的步骤,GPFS 的安装配置包括日常管理并不复杂。对于用户对 GPFS 的使用权限的划分,提供了一个利用 userid 实现的简单易行的方法。 当然如果希望配置大型的超过50节点以上的 GPFS,建议还是需要参考相关的 GPFS 的红皮书。本文对于想快速入门 GPFS,并实现快速配置,进行简单维护的读者,相信应该具有非常大的帮助。

参考资料

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=252212
ArticleTitle=GPFS 3.1 for AIX 安装配置完全手册
publish-date=08302007