随着信息技术及互联网的发展,越来越多的企业面临着大量非结构化数据的存储问题。这些非结构化数据包括视频、图片、文本以及其他一些不适宜以数据库方式存储的数据。比如在银行业会存在很多影像类、票据类、账务信息类数据;在互联网电商行业会存在很多文本数据类、静态网页类、商品信息类数据;在医药行业会存在很多医务影像类、药物信息类以及病人信息类数据。这些非结构化数据从传统的存储需求演变为越来越多的实时业务需求,不仅仅对存储数据量的苛刻要求,更多的是对存取性能提出了更高的要求,有些甚至影响乃至本身就是关键业务数据。
总而言之,基于此类业务数据,总结其业务要求有如下几点:
1.廉价存储空间;
2.灵活的存储扩展性;
3.数据存取性能要求较高;
4.具备分布式及高可用业务特征;
基于以上的分析,我们认为目前有几种解决方案可以满足该类业务需求。第一种方案是传统的NAS解决方案;第二种方案是IBM的GPFS解决方案或者Redhat的GFS解决方案;第三种是Hadoop大数据解决方案。对于第一种方案而言,它是通过NFS协议实现客户节点对存储空间的共享访问。实现起来相对容易,但是性能方面稍显逊色。第二种解决方案是通过GPFS的私有网络协议来实现客户端对存储空间的共享访问,它的实现并不困难,相对比较灵活,而且性能会比第一种方案好很多。第三种方案是互联网企业比较热衷的开源解决方案,他的实现和维护相对复杂一些,但是它的性能和扩展性具有很好的可塑性,并且有良好的生态发展空间。但是对于传统企业来讲,第三种方案的复杂度和维护成本让企业不容易接受。
本文基于第二种解决方案,接下来的章节将会从项目的规划设计以及具体的项目实施进行深入讨论。
如图1.1所示,整个GPFS划分为三层架构:虚拟存储. GPFS服务器. GPFS客户端。
1.虚拟存储层:
由存储网关以及物理存储设备构成虚拟存储层,提供虚拟存储卷共享给上层服务器使用。
2.GPFS服务器:
由两台IBM小型机组成GPFS双集群,可将存储层提供的虚拟存储卷识别为磁盘并做成NSD,再由NSD 创建出GPFS文件系统提供给NSD客户端使用。
3.GPFS客户端:
上层应用所依附的虚拟机,包括windows. linux. others等各种操作系统的客户机,他们通过网络私有协议共享GPFS文件系统。
如下表所示,GPFS服务器节点共有两个,组成NSD集群;客户端测试节点共有四个,分别为redhat和windows操作系统。
表1.1 GPFSNSD 服务节点规划设计
表1.2GPFS客户端节点规划设计
NSD的具体规划如下,四块NSD组成一个GPFS。
表1.3 GPFSNSD规划设计
表1.4 GPFSFS规划设计
两台NSD服务器上各有两块儿一个双口HBA卡,SAN环境当中共有两台核心光线交换机,具体ZONE配置信息如下所示,每一个HBA光线口会跟存储网关的两个引警分别划在不同的ZONE里面,每一个磁盘有八条路径。
F1_A_CFG
//主机光纤口别名
Alia:gpfs_nsds01_hba0,gpfs_nsds01_hba2,gpfs_nsds02_hba0,gpfs_nsds02_hba2
//存储网关光纤口别名
Alia: SGW_E1DA_FE0,SGW_E2DA_FE2
//主机和存储网关的逻辑Zone划分
Zone1:gpfs_nsds01_hba0_SGW_E1DA_FE0
Zone2:gpfs_nsds01_hba2_SGW_E2DA_FE2
Zone1:gpfs_nsds02_hba0_SGW_E1DA_FE0
Zone2:gpfs_nsds02_hba2_SGW_E2DA_FE2
F2_A_CFG
//主机光纤口别名
Alia:gpfs_nsds01_hba1,gpfs_nsds01_hba3,gpfs_nsds02_hba1,gpfs_nsds02_hba3
//存储网关光纤口别名
Alia: SGW_E1DA_FE1,SGW_E2DA_FE3
//主机和存储网关的逻辑Zone划分
Zone1:gpfs_nsds01_hba1_SGW_E1DA_FE1
Zone2:gpfs_nsds01_hba3_SGW_E2DA_FE3
Zone1:gpfs_nsds02_hba1_SGW_E1DA_FE1
Zone2:gpfs_nsds02_hba3_SGW_E2DA_FE3
3.1.1 调整系统参数
1.打开用户资源限制。
# vi/etc/security/limits
fsize = -1
data = -1
2.缩小SYNCD的数据刷新频率。
# vi/sbin/rc.boot
nohup/usr/sbin/syncd 20 >/dev/null 2>&1
3.1.2设置时间同步服务器
NTP服务器:10.1.102.100
NTP OS: Relhat 6.6
1.编辑NTP服务器配置文件。
# vi/etc/ntp.conf
restrictdefault nomodify
restrict127.0.0.1
driftfile/etc/ntp/drift
logfile/var/log/ntp.log
server127.127.1.1
fudge127.127.1.1 stratum 5
2.启动NTP服务。
# chkconfigntpd on
# service ntpdstart
3.1.3设置服务器时间同步
1.编辑NTP服务配置文件。
# vi/etc/ntp.conf
server 10.1.102.100
broadcastclient
driftfile/etc/ntp.drift
tracefile/etc/ntp.trace
2.启动NTP客户端服务。
#/usr/sbin/chrctcp -S -a xntpd
# lssrc –ls xntpd
3.时间同步验证。
# ntpdate 10.1.102.100
3.1.4配置服务器信任关系
1.配置基于用户的信任。
# viroot/.rhost
+
nsds01 root
nsds02 root
2.配置本地域名解析。
# vi/etc/hosts
10.9.0.101nsds01
10.9.0.102nsds02
3.验证互信是否成功。
# rsh hostnamepwd
4.配置SSH互信机制。
# ssh-keygen-t rsa
# cd /.ssh/
# scpid_dsa.pub root@nsds02:/.ssh/id_dsa.pub.nsds01
// 在NSDS02上执行。
# catid_dsa.pub.nsds01 >> authorized_keys
# scpauthorized_keys root@nsds01:/.ssh/authorized_keys
5.验证SSH互信是否成功。
# ssh hostname
1.在所有服务器上执行:
# instalp-agXYD.all或smittyinstall
2.添加GPFS环境变量以便于执行命令
# vi/etc/environment
XXX:/usr/lpp/mmfs/bin
3.3.1 配置集群节点
1.在tmp目录下创建node.list,包含下列内容。
# vi node.list
nsds01:quorum-manager
nsds02:quorum-manager
2.创建GPFS集群。
# mmcrcluster-n /tmp/gpfs/nodelist -p nsds01 -s nsds02 -C gpfs_clu.nsy –A
# mmchcluster-r /usr/bin/ssh -R /usr/bin/scp
# mmchlicenseserver --accept -N nsds01
# mmchlicenseserver --accept -N nsds02
3.3.2 配置NSD磁盘
1.在/tmp目录下创建disk.list
# vi/tmp/disk.list
hdiskpower0:nsds01:nsds02:dataAndMetadata::
hdiskpower1:nsds01:nsds02:dataAndMetadata::
hdiskpower2:nsds01:nsds02:dataAndMetadata::
hdiskpower3:nsds01:nsds02:dataAndMetadata::
2.创建NSD磁盘
# mmcrnsd –F /tmp/disk.list –v no
3.查看NSD磁盘mmlsnsd
# mmlsnsd
3.3.3 配置仲裁磁盘
# mmchconfigtiebreakerDisks="gpfs3nsd;gpfs4nsd"
# mmlsconfig
3.3.4启动GPFS
# mmstartup -a
3.3.5创建GPFS 文件系统
1.查看创建的磁盘配置文件。
# cat/tmp/gpfs/disk.list
gpfs1nsd:::dataAndMetadata:-1::system
#hdiskpower1:nsds01:nsds02:dataAndMetadata::
gpfs2nsd:::dataAndMetadata:-1::system
#hdiskpower2:nsds01:nsds02:dataAndMetadata::
gpfs3nsd:::dataAndMetadata:-1::system
# hdiskpower3:nsds01:nsds02:dataAndMetadata::
gpfs4nsd:::dataAndMetadata:-1::system
2.创建gpfs01 文件系统
# mmcrfs/gpfs01 /dev/gpfs01 –F/tmp/disk.list –A yes –B 1M –m 2 –M 2 –R 2 –n 8 –v no
3.3.6挂载GPFS文件系统
# mmmount /dev/gpfs01 /gpfs01 -a
3.3.7参数调整
# mmchconfig maxMBpS=600
# mmchconfig worker 1 Treads=550
# mmchconfig autoload=yes
# mmchconfig maxFilesCache=4000
# mmchconfig pagepool=1024M
1.具体安装命令及步骤请参考IBM官方安装说明:
2.配置环境变量
# vi/etc/profile
PATH=$PATH:/usr/lpp/mmfs/bin
3.配置主机SSH互信机制
# ssh-keygen-t rsa
# cd /.ssh/
# scpid_dsa.pub root@nsds01:/.ssh/id_dsa.pub.nsdc01
# catid_dsa.pub.nsdc01 >> authorized_keys
4.将密钥文件发送到集群所有节点, 在服务器节点上执行。
# scpauthorized_keys root@nsds02:/.ssh/authorized_keys
# scpauthorized_keys root@nsdc01:/.ssh/authorized_keys
# scpauthorized_keys root@nsdc02:/.ssh/authorized_keys
# scpauthorized_keys root@nsdc03:/.ssh/authorized_keys
# scpauthorized_keys root@nsdc04:/.ssh/authorized_keys
检查互信配置是否生效:
# ssh nsdc04
# ssh nsds01
5.配置域名解析文件
# vi/etc/hosts
10.9.0.101 nsds01
10.9.0.102 nsds02
10.1.102.106 nsdc02
10.1.102.107 nsdc03
6.配置rhosts互信
+
nsds01 root
nsds02 root
nsdc02 root
nsdc03 root
7.配置NTP客户端
# echo “0 0 * * * “/usr/sbin/ntpdate10.1.102.100””> /var/spool/cron/root
8.增加节点到集群中, 在服务器节点上执行。
# mmaddnode -Nnsdc04:client
# mmchlicenseclient --accept -N nsdc02
9.编辑文件系统挂载配置文件
# vi/etc/fstab
/dev/gpfs01 /gpfs01 gpfs rw,mtime,atime,dev=gpfs01,noauto 0 0
11.文件系统挂载
# mount -a
1.GPFS集群测试目的主要包括以下几点:
· 验证多节点并发读写同一个文件系统功能;
· 验证GPFS集群的高可用功能;
· 测试GPFS并发读写的性能;
2.测试主要涉及到GPFS的基本功能,GPFS集群高可用性。具体测试项目如下:
· 客户节点并发读写GPFS文件系统
· 数据节点故障
· 元数据节点故障
· 数据节点磁盘故障
· 集群节点容错性测试
· 集群扩展测试
· GPFS读写性能测试
3.总体测试方法:(略)
4.测试主要用的工具:(略)
本文基于非结构化数据存取业务需求以及其中的一种解决方案(GPFS)进行了深入探讨。从解决方案的架构设计规划以及到具体的项目实施,再到项目的关键功能点的测试都进行了详细的探讨。最终认为GPFS解决方案是传统架构下非结构化数据业务的一个相对较好的解决方案,既解决了客户端的分布式部署及高可用条件,同时也能得到较好的性能目标。希望本文能为面临如此业务场合的各位提供参考。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论