本文详细描述了 AIX 5.3环境下安装配置 GPFS 3.1的步骤,对于第一次安装 GPFS 的同仁可以快速入门,对于有安装过的同仁,有一定的参考意义。
GPFS 是 IBM 公司第一个共享文件系统,起源于 IBM SP 系统上使用的虚拟共享磁盘技术( VSD )。作为这项技术的核心, GPFS 是一个并行的磁盘文件系统,它保证在资源组内的 所有节点可以并行访问整个文件系统;而且针对此文件系统的服务操作,可以同时安全地在使用此文件系统的多个节点上实现。 GPFS 允许客户共享文件,而这些文件可能分布在不同节点的不同硬盘上。与 NFS 相比,GPFS 在 SAN 环境下可以提供更好的性能。
实验室示意图
机器配置表
序号 |
主机名 |
用途 |
IP 地址 |
用户 |
系统环境 |
1 |
NSD1 |
主 NSD 服务器 |
10.66.3.98 |
| 2 CPU/4 G/AIX 5305 |
2 |
NSD2 |
备用 NSD 服务器 |
10.66.3.99 |
| 2 CPU/4 G/AIX 5305 |
3 |
App1 |
应用服务器 |
10.66.5.51 |
user1(501) |
2 CPU/4 G/AIX 5305 |
4 |
App2 |
应用服务器 |
10.66.5.52 |
user2(502) |
2 CPU/4 G/AIX 5305 |
5 |
App3 |
应用服务器 |
10.66.5.53 |
user3(503) |
2 CPU/4 G/AIX 5305 |
6 |
App4 |
应用服务器 |
10.66.5.54 |
user4(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 用户有权限进入并读取这个目录的文件。
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
…… |
实验中放在/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
[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 |
[NSD1][root][/]>vi /tmp/gpfs/nodefile
NSD1:quorum
NSD2:quorum
App1:client
App2:client
App3:client
App4:client |
先确保清理干净原先 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
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
-----------------------------------------------------------------------------------------
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 |
[NSD1][root][/tmp/gpfs]>vi /tmp/gpfs/nsdfile
添加
hdisk2:NSD1:NSD2: dataAndMetadata:4 |
[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 |
[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. |
[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
[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 |
[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台机器也有类似我们希望的结果。
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,并实现快速配置,进行简单维护的读者,相信应该具有非常大的帮助。