IBM GPFS 仲裁机制

为维护数据一致性,防止集群出现“脑裂”的情况,GPFS设计了GPFS系统的仲裁机制:

节点仲裁:
将集群中的一些节点定义为仲裁节点(quorum nodes),每个节点如能和一半以上的仲裁节点成功通讯则GPFS可用,否则GPFS不可用。一半以上仲裁节点的意义是,1个要求1个、2个要求2个、3个要求2个、4个要求3个、5个要求3个,这样保证如果由于某些原因(如网络故障)导致集群分割,只有一个子集群GPFS可用。

节点仲裁和决胜磁盘(tiebreaker disks):
集群中仲裁节点不超过8个且应该包含集群主次配置服务器(primary and secondary cluster configuration servers),每个仲裁节点连接到所有决胜磁盘,则可以定义1-3个决胜磁盘但最好是奇数,只要有仲裁节点有一半以上的决胜磁盘可用则GPFS可用,否则GPFS不可用。这种模式适合小集群,特别只有两个NSD server和共享存储的情况,这时这两个NSD server还是cluster configuration servers和quorum nodes,共享存储上的某些LUN定义为决胜磁盘,这样两个NSD server坏一个整个GPFS还是可用的。

上面说的仲裁节点选择有一些原则:
一直开机稳定运行的节点
位于不同机架、不同供电来源、连接不同交换机的节点
最好包含这些节点:Primary configuration servers、Secondary configuration servers、Network Shared Disk servers
仲裁节点不是越多越好,最好奇数个且不要超过7,如3、5、7
仲裁节点应该是集群的核心节点,且能够代表集群

前面说的仲裁都是仲裁本地的GPFS是否可用,GPFS还有机制可以将一份数据复写2-3次,相当于做了NSD级别的Raid1,这样在损失一些NSD的情况下文件系统可能仍然可用,这个时候就需要对GPFS中的某个文件系统进行冲裁。

文件系统描述符(File system descriptor)仲裁:
在创建文件系统的时候,GPFS会根据NSD和故障组的情况在某些个NSD上面创建文件系统描述符,运行时根据可用的描述符数量来判断这个文件系统是否可用。
如果有至少5个不同的故障组则创建5个描述符副本,至少3个副本可用;

如果有至少3个NSD则创建3个描述符副本,至少2个副本可用;
如果只有1-2个NSD则每个NSD创建一个描述符副本,一个都不能少。
对于少于5个故障组,特别是只有2个故障组的情况,必定存在某一个故障组失效的情况下这个文件系统会不符合上述要求而被关闭的情况,可以通过创建专门的descOnly NSD来平衡描述符副本的分配,从而防止系统存在单点故障。

LSI MeagRAID CacheCade 测试

Dell R720xd,2*E5-2620,16GB RAM,PERC H720P Mini (LSI SAS2208 ROC)
Red Hat Enterprise Linux Server release 6.3
General Parallel File System (GPFS) 3.5.0.11
SSD: Intel SSD 530 Series (240GB, 2.5in SATA 6Gb/s, 20nm, MLC)
Iozone 3.414,测试命令iozone -i 0 -i 1 -i 2 -r 1m -s 64G,结果单位Kbytes/sec

Raid5:15个2.5" SAS2 10Krpm 900GB,每5个硬盘为一个Raid5共3个,每个Raid5在GPFS里面做成一个NSD,三个NSD做成一个GPFS文件系统

无CacheCade
write: 2157086
rewrite: 2164703
read: 1920239
reread: 2034515
random read: 126223
random write: 927219

有CacheCade
write: 2142893
rewrite: 2142537
read: 963505
reread: 970880
random read: 71778
random write: 862301

pagepool设置1GB或12GB测试了一下,对结果没有显著影响。

虽然结论仍然是当SSD性能落后于被加速的机械硬盘时性能反而下降,但是您肯定想问为啥测试结果和以前的这篇文章差距如此巨大?以前是刚装好就测试的,这次是高负载使用了一段时间以后测试的,还有就是GPFS的小版本有点不同。

LSI MeagRAID CacheCade 的 IO Policy

Dell R720xd,2*E5-2620,16GB RAM,PERC H720P Mini (LSI SAS2208 ROC)
Red Hat Enterprise Linux Server release 6.3
General Parallel File System (GPFS) 3.5.0.11
SSD: Intel SSD 530 Series (240GB, 2.5in SATA 6Gb/s, 20nm, MLC)

配置好CacheCade后,机械盘的IO Policy无论设置为Direct IO还是Cached IO,其结果都是一样的。
也就是说一旦配置好CacheCade后,所有机械盘阵列均能够被CacheCade加速

LSI MeagRAID SAS2208 性能测试

Dell R720,E5-2620,16GB RAM,PERC H720P Mini (LSI SAS2208 ROC)
Red Hat Enterprise Linux Server release 6.3
General Parallel File System (GPFS) 3.5.0.11
Raid5:5个2.5" SAS2 10Krpm 600GB为一个Raid5做成一个NSD,用这个NSD做成一个GPFS文件系统

Iozone 3.414,测试命令iozone -i 0 -i 1 -i 2 -r 1m -s 64G,结果单位Kbytes/sec
write: 393595
rewrite: 406162
read: 431798
reread: 434553
random read: 97135
random write: 238970

Veeam的备份方式

Veeam创建两种备份文件,vbk是一个完整的备份,vrb/vib是增量备份文件用来记录改变。

Reversed Incremental Backup

每次增量备份都会更新vbk文件,vbk中是最新的完整备份,恢复最新的备份只要恢复vbk就可以了。每次增量备份时vbk中修改的内容会被保存到vrb中,所以称之为Reversed,vrb中保存的不是修改的新数据,而是被覆盖的旧数据,恢复以前的备份需要将vrb和vbk合并出来。这种方法永远是增量备份,节省硬盘空间,这是磁盘上面备份的推荐方案。

Retention Policy

保留策略会立刻直接删除超期的增量vrb文件,最节约磁盘空间。

看这里的动画演示

Forward Incremental Backup

每次增量备份只将改变的部分保存成一个新的vib文件,如果需要将备份数据存储到磁带或远程,这种方法每次只要保存新的vib文件即可,或者有法规要求备份不得修改,那么这是最好的选择。显而易见,vib文件会越来越多,这会导致恢复的时候需要合并过多的vib文件,因此需要使用 active full 或 synthetic full backups 解决长链问题。

Forever forward incremental Backup

只有第一次备份时创建一个完整备份,以后备份只创建增量备份。到达所需的保留时间后,会将最早的增量备份和完整备份合并形成新的完整备份,就像完整备份向前移动一样,备份存储上只有一个完整的备份。

Synthetic Full Backup

使用active full backup是非常消耗源系统资源的过程,synthetic full backup则是使用以前的完整备份vbk和增量备份vib合并出一个新的完整备份。因为不需要读取源,因此对源系统的压力小得多。显然以后forward incremental backup会从这个新的完整备份为基础创建增量备份文件。

Transforming Incremental Backup Chains into Reversed Incremental Backup Chains

使用incremental backup时如果选择了synthetic full backups,那么就可以选择这种方式。系统只会保留一个完整备份,这个完整备份之前的备份会被转换成reversed incremental backup方式,只将被覆盖的数据保存到vrb中,完整备份之后数据还是正常incremental backup方式。

Active Full Backup

从源创建一个完整的备份,以后forward incremental backup会从这个新的完整备份为基础创建增量备份文件。

Retention Policy (forward incremental backup)

如果选择了Synthetic Full Backup或Active Full Backup,只有当一个增量备份链表的最后一个增量备份超期时才会删除整个增量备份链表。如果没有选择,则只会存在一个完整备份,每次备份将完整备份和前面的一个增量合并成新的完整备份。

看这里的动画演示

GPFS增加/dev/cciss/c0d0类设备解决方法

比如hp的dl380g5服务器,raid的逻辑盘在linux中不是/dev/sda而是/dev/cciss/c0d0,mmcrnsd的时候正常,但是mmcrfs的时候报错“Unable to open disk”,使用mmlsnsd -m则有如下显示:

 Disk name    NSD volume ID      Device         Node name                Remarks       
—————————————————————————————
 io00nsd01    0A01C866666C04EB   –              io00                     (not found) server node

解决方法:
cp /usr/lpp/mmfs/samples/nsddevices.sample /var/mmfs/etc/nsddevices
vim /var/mmfs/etc/nsddevices
在$osName = Linux 增加 echo "/dev/cciss/c0d0p4 generic",取消最后return 1的注释,echo中的/dev/cciss/c0d0p4必须和你的nsd描述文件中的device完全一致
chmod +x /var/mmfs/etc/nsddevices

RouterOS PPPoE和L2TP双拨策略路由

ROS 6.0rc12,先拨PPPoE上网,再拨L2TP VPN,上Internet走PPPoE,访问某些IP走VPN

PPP – Interface:增加PPPoE Client和L2TP Client两个Interface
PPPoE Client的MTU/MRU为1492,勾选Add Default Route 和 Use Peer DNS,Name就是pppoe
L2TP Client的MTU/MRU为1452(LT2P over PPPoE),不勾选Add Default Route,Name就是vpn

PPP – Profiles:编辑default,Change TCP MSS选择No

IP – DNS:勾选Allow Remote Requests

IP – Firewall – Address_Lists:增加需要走VPN访问的IP段,Name都取vpnip,Address填写需要走VPN的IP段,格式172.16.0.0/12,有几段就增加几个

IP – Firewall – NAT:
增加一个pppoe的NAT:Chain选srcnat,Out. Interface选pppoe,Action选masquerade
增加一个l2tp的NAT:Chain选srcnat,Out. Interface选l2tp,Dst. Address List选vpnip,Action选masquerade

IP – Firewall – Mangle:
增加对pppoe入TCP包的MSS修改:Chain选forward,Protocol选TCP,In. Interface选pppoe,TCP MSS输入1453-65535,TCP Flags选syn,Action选chang MSS,New TCP MSS输入1452,保持Passthrough选中
增加对pppoe出TCP包的MSS修改:Chain选forward,Protocol选TCP,Out. Interface选pppoe,TCP MSS输入1453-65535,TCP Flags选syn,Action选chang MSS,New TCP MSS输入1452,保持Passthrough选中
增加对l2tp入TCP包的MSS修改:Chain选forward,Protocol选TCP,In. Interface选l2tp,TCP MSS输入1413-65535,TCP Flags选syn,Action选chang MSS,New TCP MSS输入1412,保持Passthrough选中
增加对l2tp出TCP包的MSS修改:Chain选forward,Protocol选TCP,Out. Interface选l2tp,TCP MSS输入1413-65535,TCP Flags选syn,Action选chang MSS,New TCP MSS输入1412,保持Passthrough选中

IP – Routes:增加需要走VPN访问的IP段,Dst. Address填写需要走VPN的IP段,格式172.16.0.0/12,Gateway选择l2tp,有几段就增加几个

IP – Services:限制一下这些ROS服务的访问IP地址段,否则外网也能进行ROS管理

IP – UPnP:可以把UPnP打开,有些程序需要

System – Clock:设置一下时区

System – NTP Client:启用NTP Client以便自动对时

LSI MeagRAID CacheCade测试

Dell R720xd,E5-2620*2,32GB RAM,PERC H720P Mini (LSI SAS2208 ROC)
Red Hat Enterprise Linux Server release 6.3
General Parallel File System (GPFS) 3.5.0.7
SSD: Plextor M5pro 256GB
Iozone 3.414,测试命令iozone -i 0 -i 1 -i 2 -r 1m -s 64G,结果单位Kbytes/sec
说明:Dell PERC H720P是CacheCade 1.1,SSD只支持读缓存不支持写缓存

Raid1:2个2.5" SAS2 10Krpm 600GB组成Raid1,文件系统ext4

无CacheCade
write: 187650
rewrite: 186938
read: 175573
reread: 176657
random read: 70806
random write: 130185

有CacheCade
write: 189204
rewrite: 185290
read: 174780
reread: 175871
random read: 95549
random write: 129789

通过SSD缓存随机读取明显提升

Raid5:15个2.5" SAS2 10Krpm 900GB,每5个硬盘为一个Raid5共3个,每个Raid5在GPFS里面做成一个NSD,三个NSD做成一个GPFS文件系统

无CacheCade
write: 1017661
rewrite: 1010487
read: 1253673
reread: 1371768
random read: 103493
random write: 504399

有CacheCade
write: 469138
rewrite: 459371
read: 559042
reread: 566837
random read: 53655
random write: 362697

当SSD性能落后于被加速的机械硬盘时性能反而下降