免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2454 | 回复: 0
打印 上一主题 下一主题

利用 GPFS 提升 TSM 对海量数据文件备份性能 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-18 15:21 |只看该作者 |倒序浏览
引言
IBM General Parallel File System(GPFS)是 IBM 公司高性能、可扩展、并行文件系统,被普遍应用于 IBM 大规模 AIX 或 Linux 集群系统中。GPFS 能把对文件集的查询分发到所有的 GPFS 节点上进行,每个节点对分发到的任务进行计算,最后把结果汇总返回到查询端。通过并行处理,能够为并行应用程序提供高性能的 I/O 存取访问,大幅度提高文件的查找、扫描性能。
Tivoli TSM(Tivoli Storage Manager)是一个企业级的 Client/Server 结构跨平台网络备份、恢复及存储管理软件。TSM 支持全盘备份和增量备份。部署在 AIX 上的文件系统,TSM 通过扫描数据块的改变,把改变的数据备份出来,达到增量备份的目的。与 TSM 传统的通过 AIX 文件系统扫描数据的方式相比,使用 GPFS 能够快速高效的遍历文件系统;特别是在海量文件系统中,能够极大的缩短定位单个文件或者文件集的时间,提高备份的性能。

TSM 备份的常见方案及其特点
TSM 能够提供企业级的存储数据管理功能, 集中地数据备份与恢复管理, 提供多种级别的数据备份,如文件系统备份,数据库备份, 操作系统备份等不同的备份类别。TSM 能够支持绝大多数主流操作系统平台, 并且可以根据用户需求为不同的用户定制合适的备份解决方案。和其它的备份产品类似,TSM 支持全备份和增量备份。而增量备份又分为下面四种类型,每种类型有其独特的特点:
增量备份
  • 首先做一次全备份,再备份子上次全备份以后新创建或者修改的文件、目录。
选择备份
  • 无条件地备份指定的文件或者目录 , 而不管它是否被修改
基于日志的备份(Journal-based 备份)
  • 用户需要在备份客户端启动日志服务引擎(Journal Service Engine)。该引擎会记录客户端自上次工作结束后,发生改变的所有独立文件。
  • 当进行备份的时候,备份客户端会直接从日志服务中获得要备份数据的信息,避免了两个文件特性列表的建立和比较工作
  • 不扫描本地文件系统或从 server 获得信息决定某个文件要处理
  • 减少 client 和 server 之间的网络传输
  • 基于以上特点,极大的提高了备份的速度
基于时间的增量备份
  • 仅仅备份那些自上次增量备份以来新的或者修改过的文件或目录
  • 花费较少时间和内存处理备份相对于完全增量备份
  • 与传统增量备份不同的是,它不包含当前 server 上的所有工作站文件的存储

AIX 中海量文件 TSM 备份的性能问题
大企业的生产环境,经过几年的积累会产生海量的数据文件,这些系统一般有如下特点:
  • 文件的数量非常庞大,经常有 TB 级别的文件集
  • 每个独立文件的大多都比较小,很多文件都在 100k 以下
  • 对文件的更新删除操作并不频繁,大部分文件甚至从不更新和删除
面对这种环境,使用常规的增量备份或者差异备份方式,不太容易取得完美的效果。这是由常规备份方式判断文件是否发生改变的方式造成的。常规备份方式判断文件是否改变,通常采用如下的判断方式,当备份请求发起时:
  • 客户端程序扫描整个需要备份的文件系统以建立一个客户端的文件特性描述列表
  • 服务器端程序也扫描整个文件系统,建立一个服务器端的的文件特性列表
  • 比较这两个列表,如果某一个文件符合备份条件,则执行相应的备份操作
显然,当用户客户端的数据属于海量小文件的时候,再继续使用这种判断方式,肯定会有相当的时间会花费在文件特性列表的建立和比较过程中。当然针对这种情况,TSM 推出了基于日志的增量备份,减少了文件的扫描,也减少了客户端和服务器端之间的网络传输开销。但有时候仍不能达到客户的需求,并且这种备份必须在客户端保存和备份一个日志文件系统,一旦日志文件丢失或损坏,将不得不再进行全备份。

GPFS 架构以及数据管理功能概述
GPFS 三层架构简介
GPFS 可以通过所有的集群节点来共享文件,并且可以充分利用集群系统中的“虚拟”共享磁盘,使得在多节点上运行的多个应用程序可以同时读写同一文件。GPFS 具有基于策略(policy-based)的数据管理功能,它能够对数据进行整个的生命周期管理,从数据产生,到根据生产需要或策略而移动到另一个存储层,再到其生命周期的最后需要删除。GPFS 这种由策略驱动的 ILM 功能利用文件虚拟化技术来分析和识别数据,它能够在数小时内完成数亿级别的基于策略的文件操作。
GPFS 文件系统基本上由三层架构组成:磁盘、网络共享磁盘(NSD)、GPFS 文件设备,详细的架构图可以参考 GPFS inforcenter。其中磁盘为 GPFS 文件系统最底层的是物理磁盘设备。原则上可以采用系统上任何块设备,包括磁盘、磁盘分区、逻辑卷。从物理连接上来看,GPFS 支持使用所有方式连接的磁盘。包括本地 IDE 磁盘、本地 SCSI 磁盘、光纤 SAN 磁盘、iSCSI 磁盘等等。而网络共享磁盘(NSD: network share disk) NSD 是由磁盘映射出来的虚拟设备,NSD 与磁盘是一一对应的关系。NSD 被标记了不同属性来区分其用途,我们可以将磁盘标记为 4 种用途:
  • Desc Only:这些磁盘只存储 GPFS 文件系统的描述信息
  • Data Only:只存储文件系统中的数据信息,不会存储文件系统本身的信息。
  • Meta data only: 只存储 GPFS 文件系统中的目录结构 inode 信息。
  • Meta and data: 存储所有信息(默认)。
GPFS 基于策略的数据管理功能
GPFS 提供了策略和规则来实现对文件管理的自动化、智能化。并且有丰富的应用程序接口来实现对文件的多样化管理。策略是一系列描述用户数据生命周期的规则集合。每个规则对应一个操作,当创建文件或恢复文件时,策略决定文件的存放位置,并根据这个策略被放到相应的存储池。管理策略决定文件的相关管理操作,比如迁移和删除等等,需要迁移和删除文件时,您必须使用 mmapplypolicy 命令来触发。规则是一系列的 SQL 命令,它主要用来告诉 GPFS 符合什么条件的文件需要在某个存储池里做什么操作。规则可以应用在文件集中的任何文件。当规则中描述的条件符合的时候,就会把这个规则应用到文件中。当有一系列规则时,GPFS 按顺序从上往下应用。比如有一系列规则的情况下,当扫描到有一个规则符合条件后,GPFS 就停止扫描,把相应文件根据规则分配到对应的存储池。规则文件是具有一定格式的文件,在后面的实例中我们会有详细的说明。

利用 GPFS 提高 TSM 备份海量文件的性能
在下面的实例中,我们介绍如何配置 GPFS,并且介绍怎样通过 GPFS 的命令来实现 TSM 的增量备份。GPFS 支持 AIX、Linux、Windows 平台,详细的信息可以参考 IBM inforcenter。本文所有示例均以 AIX 平台为例。
测试环境介绍
在我们的实例中,我们会使用三台 P520 AIX 5.1 服务器来创建 GPFS 集群
  • cmaix25,连接到光纤存储上,并且分配了 hdisk5 和 hdisk6 来存储数据
  • cmaix26,连接到光纤存储上,并且分配了 hdisk5 和 hdisk6 来存储数据
  • cmaix27,用来作为 tiebreaker,仅使用一个本地的逻辑卷
由于 GPFS 软件安装不是本文的重点 , 因此本文假设客户已经按照相关的文档已经正确安装 GPFS 软件。 请根据当前的服务器平台和版本 , 参考 IBM Infocenter 安装相应的 GPFS 软件。
创建 GPFS 集群
安装 GPFS 软件以后,我们可以配置 GPFS 集群,下面我们以 cmaix25 为例。创建一个 /etc/GPFS 目录,在目录下创建 2 个文件:NodeDescFile,diskDescFile,文件内容参考清单 1

清单 1. 定义了每个节点的属性和对应的磁盘的属性
[/etc/GPFS]  
root@cmaix25 # more NodeDescFile  
cmaix25:quorum-manager  
cmaix26:quorum-manager  
cmaix27:quorum-client  

[/etc/GPFS]  
root@cmaix25 # more DiskDescFile  
/dev/hdisk5:::dataAndMetadata:1  
/dev/hdisk6:::dataAndMetadata:2  
/dev/tielv:cmaix27::descOnly:3

下一步,使用 mmcrcluster 命令创建集群,其中 cmaix25 为主节点,cmaix26 为第二个节点,在主节点上执行如下命令:
root@cmaix25 # mmcrcluster -t lc -n NodeDescFile -p cmaix25 -s cmaix26  
mmcrcluster: Command successfully completed

继续使用 mmchconfig 命令更新配置文件,设置 autoload=no,参考如下:
root@cmaix25 # mmchconfig autoload=no  
mmchconfig: Command successfully completed


清单 2. 用 mmlscluster 命令检查集群是否已经创建成功
root@cmaix25 # mmlscluster  
GPFS cluster information  
========================   
GPFS cluster name:         cmaix25.cn.ibm.com   
GPFS cluster id:           683263769741021622   
GPFS UID domain:           cmaix25.cn.ibm.com   
Remote shell command:      /usr/bin/rsh   
Remote file copy command:  /usr/bin/rcp  
GPFS cluster configuration servers:  
-----------------------------------   
Primary server:    cmaix25.cn.ibm.com   
Secondary server:  cmaix2**.ibm.com

下一步需要为 GPFS 所有节点添加 license,参考清单 3

清单 3. 添加 license
root@cmaix26 # mmchlicense server -N cmaix25,cmaix26,cmaix27  
The following nodes will be designated as possessing GPFS server licenses:
         cmaix25.cn.ibm.com
         cmaix2**.ibm.com
         cmaix27.cn.ibm.com  
Please confirm that you accept the terms of the GPFS server Licensing Agreement.  
The full text can be found at www.ibm.com/software/sla  
Enter "yes" or "no": yes  
mmchlicense: Command successfully completed


清单 4. 用已经创建的 DiskDescFile 文件创建 NSD
root@cmaix25 # mmcrnsd -F DiskDescFile  
mmcrnsd: Processing disk hdisk5  
mmcrnsd: Processing disk hdisk6  
mmcrnsd: Processing disk tielv  
mmcrnsd: 6027-1371 Propagating the cluster configuration data to all

NSD 创建完成,使用 mmlsnsd 命令检查其是否正常 :
root@cmaix25 # mmlsnsd  
File system   Disk name    NSD servers                                    
---------------------------------------------------
(free disk)   gpfs1nsd     (directly attached)      
(free disk)   gpfs2nsd     (directly attached)      
(free disk)   gpfs3nsd     cmaix27.cn.ibm.com  

接下来再一次更新集群配置文件
root@cmaix25 # mmchconfig unmountOnDiskFail=yes cmaix27  
mmchconfig: Command successfully completed

如果上面所有操作已经成功,接下来可以创建一个 GPFS 文件系统了,这一步操作只需要在第一个节点上进行,我们的测试中是 cmaix25,参考清单 5

清单 5. 如何创建 GPFS 文件系统
root@cmaix25# mmcrfs /gpfs/fs0 fs0 -F DiskDescFile -m 2 -M 2 -r 2 -R 2  
GPFS: 6027-531 The following disks of fs0 will be formatted on node cmaix25.cn.ibm.com:
     gpfs1nsd: size 31457280 KB
     gpfs2nsd: size 31457280 KB
     gpfs3nsd: size 262144 KB  
GPFS: 6027-540 Formatting file system ...  
GPFS: 6027-535 Disks up to size 293 GB can be added to storage pool 'system'.  
Creating Inode File  
Creating Allocation Maps  
Clearing Inode Allocation Map  
Clearing Block Allocation Map  
Formatting Allocation Map for storage pool 'system'
GPFS: 6027-572 Completed creation of file system /dev/fs0.  
mmcrfs: 6027-1371 Propagating the cluster configuration data to all

返回信息显示 GPFS 文件系统已经创建完成。这时候再去检查开始定义的文件,发现文件已经被 GPFS 修改,示例如下:
[/etc/GPFS]  
root@cmaix25 # more NodeDescFile  
cmaix25:quorum-manager  
cmaix26:quorum-manager  
cmaix27:quorum-client  
[/etc/GPFS]  
root@cmaix25 # more DiskDescFile  
# /dev/hdisk5:::dataAndMetadata:1  
gpfs1nsd:::dataAndMetadata:1::  
# /dev/hdisk6:::dataAndMetadata:2  
gpfs2nsd:::dataAndMetadata:2::  
# /dev/tielv:cmaix27::descOnly:3  
gpfs3nsd:::descOnly:3::

用 mmmount 命令挂载 GPFS 文件系统到所有的节点上,命令如下:
root@cmaix25 # mmmount all  
[/etc/GPFS]  
root@cmaix25 # df -m  
Filesystem    MB blocks      Free %Used    Iused %Iused Mounted on  
/dev/hd4        2048.00   1967.46    4%     6327     2% /  
/dev/hd2        8192.00   4217.05   49%    70286     7% /usr  
/dev/hd9var     1024.00    942.57    8%     4779     3% /var  
/dev/hd3        1024.00    760.94   26%     5673     4% /tmp  
/dev/hd1        2048.00   2045.79    1%       51     1% /home  
/proc                 -         -    -         -     -  /proc  
/dev/hd10opt    4096.00   1448.14   65%    12426     4% /opt  
/dev/fs0       61440.00  61097.00    1%     4070     7% /gpfs/fs0

使用 AIX 的 df 命令显示 /GPFS/FS0 已经正常挂载,也可以使用 mmlsdisk 命令检查文件系统是否正常 :
root@cmaix25 # mmlsdisk fs0 -L

接下来测试 GPFS 文件系统是否是可用的,命令参考清单 6

清单 6. 用 AIX 的 dd 命令测试 GPFS 文件系统
root@cmaix25 # dd if=/dev/zero of=test.img bs=1m count=100  
root@cmaix25 # ls -l  
total 406528  
-rw-r--r--    1 root     system    104857600 Jan 15 17:16 test.img

至此,GPFS 文件系统已经可用使用。
在 GPFS 文件系统上生成测试需要的小文件
下面的步骤是如何在 GPFS 文件系统上生成大量的文件,随后的测试需要对这些文件进行备份操作。清单 7 是作者使用的一个 shell 脚本,随机生成多个文件夹 , 并且在每个文件夹下生成大量的小文件数据到 GPFS 文件系统,供参考

清单 7. 生成文件的脚本
#!/usr/bin/ksh  
file=1  
while [ true ]; do  
count=1  
folder=$RANDOM$RANDOM  
mkdir /gpfs/fs0/03/$folder  
while (( $count<=10000 )); do  
num=$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM  
echo $num > /gpfs/fs0/03/$folder/$num.txt  
let count=count+1  
done  
count=1  
let file=file+1  
if [[ file -gt 1000 ]]; then  
exit  
fi  
done


创建 GPFS 规则文件
大多数情况下,我们需要按照文件的生成时间、最后访问时间、最后更改时间以及最后改变状态的时间来扫描需要备份的文件,那么在 GPFS 文件系统中运用 mmapplypolicy 命令可以非常快速、灵活地搜索到需要的文件。并且除了文件中有最后访问时间 ACCESS_TIME 、最后更改时间 MODIFICATION_TIME 以及最后改变状态的时间 CHANGE_TIME 等文件属性以外,GPFS 还提供了许多日期和时间函数,如:YEAR、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND 等,这些函数可以更灵活的检索文件。具体函数内容可以参考 GPFS Infocenter。
下面介绍在 /gpfs/fs0 目录下查找最后修改时间在某一指定日期以前的文件的方法。这些操作可以在任意的一个 GPFS 节点进行。
首先创建 GPFS 规则文件 time_ rule.txt, 查找时会按照规则文件定义的修改时间来过滤文件

清单 8. time_rule.txt
RULE EXTERNAL LIST 'listfiles' EXEC '' OPTS ''
RULE 'ListLargeFiles' LIST 'listfiles' WHERE MODIFICATION_TIME < TIMESTAMP(mytime)

说明: mytime 是个宏变量,在引用这个 rule 的时候可以灵活的指定。
通过 GPFS 命令来取得需要备份的文件列表
我们的 GPFS 测试文件系统是 /GPFS/FS0,因此检索的文件目录就是 /GPFS/FS0,我们把满足规则的文件保存到一个备份文件列表中。

清单 9. 利用 mmapplypolicy 命令按条件查找文件
/usr/lpp/mmfs/bin/mmapplypolicy /gpfs/fs0 -P time_rule.txt \
-M "mytime=\'2011-07-28\'" -L 3|grep '^/gpfs/fs0/'  > backup.list

其中,time_rule.txt 是我们在上一步中定义的规则文件,mytime 是一个 GPFS 时间变量,参数 -L 代表把满足要求的文件列出来
GPFS 通过并行应用引擎去扫描文件,对比 AIX 上的 find 命令,GPFS 可以极大的提升文件的扫描效率,在我们的简单实验中,从 500 万数据中取 5 万的文件,只要 2 分钟左右。随着数据量的增大,GPFS 的优势会更加明显。
TSM 根据结果集进行增量备份
使用 TSM 的 selective backup 方法来备份给定的备份列表文件 backup.list,这种备份方式是指无条件地备份指定的文件或者目录, 而不管它是否被修改,通过这种方式,可以避免在大数据量情况下 TSM 通过文件系统扫描去得到备份列表的 I/O 开销。

清单 10 . 使用 dsmc 备份给定的结果集
root@cmaix25 # ./dsmc selective -filelist=/gpfs/fs0/backup.list  
Total number of objects inspected:   52,000  
Total number of objects backed up:   52,000  
Total number of objects updated:          0  
Total number of objects rebound:          0  
Total number of objects deleted:          0  
Total number of objects expired:          0  
Total number of objects failed:           0  
Total number of bytes transferred:    2.68 MB  
Data transfer time:                    0.12 sec  
Network data transfer rate:        22,453.23 KB/sec  
Aggregate data transfer rate:          4.28 KB/sec  
Objects compressed by:                    0%  
Elapsed processing time:           00:10:41

从备份的 log 看出,此次操作耗时 10 分钟左右,而直接使用 TSM 增量备份,需要时间要在 2 个小时以上。通过对比,可以看出使用 GPFS 的性能远高于直接用 TSM 增量备份。

总结
综上所述,本文用一个实例测试证明,使用 GPFS 来协助 TSM 完成增量备份,可以极大的缩短 TSM 增量备份的时间窗口,提升 TSM 的备份效率,满足客户的要求。


作者简介
刘健,IBM 高级软件工程师,现在 IBM 中国软件开发中心 ECM 产品部门,具有多年的数据库管理、性能调优经验。对操作系统和并行文件系统都有研究。

周博韬,IBM 高级软件工程师,现在 IBM 中国软件开发中心 LBS 部门, 对 ECM 产品和文件系统有较深的研究。




http://www.ibm.com/developerworks/cn/aix/library/1111_liujian_gpfstsm/index.html


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP