ITPub博客

首页 > Linux操作系统 > Linux操作系统 > GFS2集群文件系统测试指南 ---转

GFS2集群文件系统测试指南 ---转

原创 Linux操作系统 作者:andyxu 时间:2009-09-01 14:41:34 0 删除 编辑

文章转自:http://blog.chinaunix.net/u3/93425/showart_1864554.html

 

GFS2:Global File System

RHCS: Redhat Cluster Suite

DRBD:Distributed Replicated Block Device

PV: Physical Volume

VG: Volume Group

LV: Logical Volume

CLVM:Clustered LVM

LVM: Logical Volume Management

 

测试结构图
 
 
 
 

测试要求

1.         2台PC机,安装RHEL5.1,安装Cluster和GFS2包,安装开发包。

2.         系统安装完成后,至少有2个磁盘分区,大小约5G。

3.         DRBD 8.3.0 Source。

4.         每台PC有2网卡,其中一个作为drbd同步用,我的环境只有一个网卡。

 

测试步骤

安装操作系统

安装时,安装开发包,安装cluster,cluster storage

 

配置RHCS

测试发现RHCS好像是一个大杂烩,好像是还在整合的过程中,有点感觉不是一个完整的整体,刚开始有点乱,很多的概念和名词搞不明白,后来基本清楚了,现在的这个版本中你还是可以看到很多在整合中的迹象,比如service的提示和名字就有好多不一致的地方,不过没有关系不影响测试。

 

在配置cluster之前,把hostname和ip地址添加到/etc/hosts中。

172.16.48.65    hatest02

172.16.48.199   hatest01

 

用system-config-cluster这个图形界面配置cluster最简单。

# system-config-cluster

配置完成后,生成 配置文件/etc/cluster/cluster.conf (其中增加了一个IP Resource和www的services)

       

       

               

                       

                               

                                       

                               

                       

               

               

                       

                               

                                       

                               

                       

               

       

       

       

               

       

       

               

                       

                               

                                

                       

               

               

                       

                

               

                       

               

       

 

在hatest01上面,启动集群管理和资源管理。

# service cman start

# service rgmanager start

 

至于ricci和luci我没有用,所以不管它。 当然你可以使用luci来配置和管理rhcs。

 

在hatest02上面,scp hatest01:/etc/cluster/cluster.conf /etc/cluster/.

同样启动集群管理和资源管理,就是那2个命令了,上面有的。

 

在hatest02上面,打开system-config-cluster,在cluster-management中就可以看到hatest01,hatest02的状态就是member,而且看到services:www已经在运行了。

 

说明: rhcs对IP地址的管理不是采用eth0:0 这种index的方式来管理IP地址(heartbeat的方式),而是在eth0上直接添加ip地址的方式,ifconfig是不能看到该IP地址的, ip addr list 如下:

 

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:20:ed:1e:a5:fc brd ff:ff:ff:ff:ff:ff

    inet 172.16.48.199/24 brd 172.16.48.255 scope global eth0

    inet 172.16.48.15/32 scope global eth0

    inet6 fe80::220:edff:fe1e:a5fc/64 scope link

       valid_lft forever preferred_lft forever

 

在hatest02上面启动cman时,总是报告错误,刚开始以为是fence的问题,折腾了半天也没有结果,偶然ccs_test connect 发现connect refused,结果是iptables启动了,service iptables stop 之后,一切正常了,还是文档读的不够,admin文档上说的很详细哦。

 

Fence_manual还是没有搞的很清楚,还需要再详细了解一下,比如合适fence_manual,host reset后,还需要什么手工操作么来join cluster?

 

RHCS核心的服务就是cman,rgmanager,其它的没有关注,modclusterd(ricci的cluster monitor可以不要),saslauthd,lvm2-monitor

 

安装配置drbd

# tar zfvx drbd-8.3.0.tar.gz

# cd drbd-8.3.0

# make KDIR=/usr/src/linux

# make install

〔对于有多个内核的系统,请保证/usr/src/linux为你正在运行的内核,否则drbd模块将会加载失败,在测试过程中就遇到了这个问题,当时没有太在意内核导致了drbd模块不能加载,切换内核启动,编译就可以了〕

系统会缺省生成/etc/drbd.conf,第一次用drbd的可以好好阅读一下这个文件,了解一些drbd核心的东西,全面的了解对于将来很好的配置drbd是很有帮助的; 同时建议先浏览一下drbd的官方手册,有个大概的印象,在需要的时候再详细查手册,这个手册个人认为还是写的相当不错的:http://www.drbd.org/users-guide/。

 

Drbd的配置特别多,我们一般重点关注的如下:

Ø         usage-count no: 若是yes,则drbd启动的时候会去注册一个次数,其实是不需要的。

Ø         syncer { rate 10M; }: 如果是专用的同步网络,可以把rate设置大些。

Ø         outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5" :系统缺省会把这个打开,如果没有安装heartbeat的话,就把这个屏蔽吧,否则drbd启动时会报错。

Ø         become-primary-on both : 这个在drbd启动后,而且同步初始化完成后可以打开,在第一次启动时,并屏蔽掉。

Ø         size 5G : 定义一下需要同步的分区容量,在对于两边容量不同时(主要是测试环境,正式环境肯定要保证2边容量相同,否则不是浪费磁盘空间?)

Ø         allow-two-primaries : 这个开始就可以打开,这个是我们测试gfs2的基础哦。

 

配置后的参数文件(2台机器上的配置文件相同):/etc/drbd.conf

global {

    usage-count no;

}

common {

  syncer { rate 10M; }

}

resource r0 {

  protocol C;

  handlers {

    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";

    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";

    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";

  }

  startup {

    # become-primary-on both; # 在drbd同步初始化完成后再打开吧。

  }

  disk {

    on-io-error   detach;

    size 4G;

  }

  net {

    # allow-two-primaries; # 在drbd同步初始化完成后再打开吧。

    after-sb-0pri disconnect;

    after-sb-1pri disconnect;

    after-sb-2pri disconnect;

    rr-conflict disconnect;

  }

  syncer {

    rate 10M;

    al-extents 257;

  }

  on hatest02 {

    device     /dev/drbd0;

    disk       /dev/sda5;

    address    172.16.48.65:7788;

    flexible-meta-disk  internal;

  }

  on hatest01 {

    device    /dev/drbd0;

    disk      /dev/hda5;

    address   172.16.48.199:7788;

    meta-disk internal;

  }

}

resource r1 {

  protocol C;

  startup {

    # become-primary-on both; # 在drbd同步初始化完成后再打开吧。

  }

  disk {

    on-io-error detach;

    size 4G;

  }

  net {

    # allow-two-primaries; # 在drbd同步初始化完成后再打开吧。

  }

  syncer {

  }

  on hatest02 {

    device     /dev/drbd1;

    disk       /dev/sda6;

    address    172.16.48.65:7789;

    flexible-meta-disk  internal;

  }

  on hatest01 {

    device     /dev/drbd1;

    disk       /dev/hda6;

    address    172.16.48.199:7789;

    flexible-meta-disk  internal;

  }

}

 

分别在每台机器上建立drbd的metadata和drbd节点

# drbdadm create-md r0

# drbdadm create-md r1

# mknod /dev/drbd0 b 147 0

# mknod /dev/drbd1 b 147 1

 

在hatest01上面启动drbd

# service drbd start

在系统询问wait timeout时,yes,因为hatest02还没有启动呢,所以不需要让drbd去连接对方。

 

在hatest02上面启动drbd

系统正常启动

 

在hatest01上面,进行同步初始化

# drbdadm -- --overwrite-data-of-peer primary r0

这个需要一段时间,根据磁盘容量的大小,可以cat /proc/drbd 看到同步的进度,完成后同步drbd1

# drbdadm -- --overwrite-data-of-peer primary r1

 

同步完成后,开启become-primary-on both和allow-two-primaries,重新启动2台机器的drbd,cat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)

GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@hatest01, 2009-02-26 14:49:24

 0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r---

    ns:496 nr:402272 dw:402768 dr:17908 al:4 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0

 1: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r---

    ns:0 nr:84 dw:84 dr:12252 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0

 

drbd就基本配置完成了。

 

配置clvmd、LV、Mkfs.gfs2

Gfs2需要基于clvmd,所以只能用lvm2来管理分区,同时还要启动lvm的cluster模式

配置lvm,配置pv的检测范围:/etc/lvm/lvm.conf

locking_type=3

filter = [ "a|/dev/drbd*|", "r/.*/" ]

如果filter没有配置的话,那么lvm总是去寻找/dev/sd*,同时报告duplicated xxx,这个问题也折腾了我以阵子,drbd的文档还是没有看的很仔细哦,文档上已经作了说明:http://www.drbd.org/users-guide/s-lvm-drbd-as-pv.html

 

参考上述要求修改2台机器的/etc/lvm/lvm.conf

在2台机器上启动clvmd

# service clvmd start

 

在hatest01上面(任意一台机器都可以的)建立lv;clvmd会自动同步到其它机器的。

# pvcreate /dev/drbd0 /dev/drbd1

# vgcreate vgtest /dev/drbd0 /dev/drbd1

# lvcreate -- size 1.5G - - name oradata vgtest

# lvcreate -- size 1.0G - - name oraindex vgtest

# mkfs -t gfs2 -p lock_dlm -j 2 -t gfs_cluster:oradata /dev/vgtest/oradata

 

 

这个分区就1.5G,结果搞了30分钟才完成,不知道什么原因,其间看到drbd在疯狂同步,drbd在初始化时不是已经同步了么,还搞么事鬼?

 

跟踪一下系统各个服务的端口,做到各个服务心中有数,参考admin文档Page11。

 

mount gfs2,测试gfs2

在hatest01和hatest02上面:

# Mount –t gfs2 /dev/vgtest/oradata /mnt/oradata

 

Ø         在任何一台主机上面,生成一个文件,在另外一台主机上面就可以看到。

Ø         在hatest01上面编辑a.txt , 把hatest02上面编辑a.txt是报告该文件locked

 

问题列表

1.         没有测试RHCS是否可配置heartbeat的IP,应该是可行的

2.         Lvm的管理测试,resize,remove,move等

3.         RHCS的详细配置:基本完成,参考rhcs的2个官方文档。

4.         Drbd的详细配置:这个内容较多,要花点时间了。

5.         需要的service的列表,及其端口,通讯要求等:基本清楚,参考rhcs 的admin的文档

6.         DLM机制在哪里:rhcs的cluster infrastructure

7.         Gfs2进行grow时没有生效?

 

基础组件

Ø         Cluster Infrastructure:configuration-file management, membership management, lock management, and fencing(CMAN/DLM,CCS,fence)

Ø         HA Failover:提供服务切换

Ø         Cluster管理工具: GUI,conga(https方式)

Ø         LVS(Linux Virtual Server):IP-loading-balance

 

可选组件

Ø         GFS:Global File System

Ø         CLVMD:集群卷管理器

Ø         GNBD: Global Network Block Device,这个东西从属于GFS,现在要废掉了,基本停止开发了,关键是也没有什么应用。

 

详细组件说明

Ø         CMAN: 通过quorum来避免split-brain,quorum=50% node notes +1 ;quorum通过2中方式来通讯(ethernet or quorum disk)。缺省多播地址:239.192.62.242

Ø         DLM:共享存储访问的一种锁控制机制;供GFS和CLVMD使用。

Ø         FENCE:需要为每个设备定义fence Agent,就是说如果1个节点有2个设备那么要定义2个fence Agent。多个fence agent采取级联的方式进行fence,并且loop。

Ø         CCS(Cluster Configuration System):同步集群的配置文件。

Ø         Rgmanager:Node Fails,手工move资源。Agent目录:/usr/share/cluster/

Ø         Failover Domain:

 

 

GFS

Ø         分布式metadata

Ø         多journals

Ø         Lock_manager来协同IO

 

CLVMD

Ø         分布式lvm的metadata

Ø         Lock_manager

Ø         Locking_type=3

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/110321/viewspace-613697/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    167
  • 访问量
    324448