一、安装
   
    系统环境:CentOS release 5.5 – 2.6.18-194.el5xen
    安装iscsi-target,存储目标端即存储端
        在有共享磁盘的主机上安装iscsi-target
    安装iscsi-initiator,存储服务端
        在使用共享存储的主机上安装iscsi-initiator,所有GFS节点
    安装global file system,全局文件系统
        在使用共享存储的主机上安装gfs模块
        gfs主要组件有,集群卷管理、锁管理、集群管理、集群配置管理、围栏和恢复。
   
    在这里,假定有3台计算机,它们的IP分别是192.168.0.7  192.168.0.8  192.168.0.24
    192.168.0.24  192.168.0.7上各有一块可用磁盘,作为共享磁盘
    3台计算机都是GFS节点,即使用共享磁盘
    在192.168.0.24上,安装配置iscsi-target,iscsi-initiator,gfs
    在192.168.0.7上,安装配置iscsi-target,iscsi-initiator,gfs  
    在192.168.0.8上,安装配置iscsi-initiator,gfs
   1、安装iscsi-target
        #yum install scsi-target-utils
        #yum install libibverbs-devel libibverbs librdmacm librdmacm-devel
   
    2、安装iscsi-initiator
        #yum install iscsi-initiator-utils
   
    3、安装gfs
        #yum install -y gfs2-utils cman kmod-gfs kmod-dlm cluster-snmp lvm2-cluster rgmanager

二、配置共享存储
   
   配置iscsi-target
        建立target device
    配置iscsi-initiator
        记录并登录target device
    配置GFS共享
        利用GFS实现文件共享和同步

    1、配置iscsi-target
       
        #/etc/init.d/tgtd start
      
        在192.168.0.24新建分区(fdisk):/dev/sda9

        #tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2011-09.com.nfschina:nfs-storage24
            添加一个新的iscsi-target:iqn.2011-09.com.nfschina:nfs-storage
            --tid 目标id
            --T  相当于—targetname  目标名
            iqn(iSCSI Qualified Name)命名规则:
格式    意义    范例
yyyy-mm  年份-月份  2011-09
Reversed-domain-name  把域名反过来写,通常把公司域名反过来写  com.nfschina
identifier  识别字,通常注明这个存储空间的用途   nfs-storage

         #tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda9
            把磁盘分区添加到目标设备。
            #tgtadm --lld iscsi - -op show - -mode target  查看目标设备

        #tgtadm --lld --op bind –mode target –tid 1 -I initiator-ip
            如果需要对所有initiator可存取,则将initiator-ip换成ALL
            #tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.0.7
            #tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

        使用相同方法,在192.168.0.7上配置iscsi-target,target名为 iqn.2011-09.com.nfschina:nfs-storage07
        
    2、配置iscsi-initiator      
       
        3台计算机均安装配置iscsi-initiator
       
        #/etc/init.d/iscsi start
            启动iscsi模块           
       
        #iscsiadm -m discovery -t sendtargets -p 192.168.0.24
        #iscsiadm -m discovery -t sendtargets -p 192.168.0.7
            利用iscsiadm命令探测iscsi device
            命令执行完成后,将在本地的记录设备信息:/var/lib/iscsi/nodes/iqn.2011-09.com.nfschina:rhcs-storage08/
            下次启动iscsi时将会自动读取信息并登录到该设备,如需取消自动登录,则删掉对应文件夹

        #iscsiadm -m node -T  iqn.2011-09.com.nfschina:nfs-storage24 -p 192.168.0.24 -l       
        #iscsiadm -m node -T  iqn.2011-09.com.nfschina:nfs-storage07 -p 192.168.0.7 -l
             登录到target设备。
             登录成功后,利用fdisk -l可以发现多了两个硬盘分区sdb,sdc,这就是iscsi共享的分区。
             登出:#iscsiadm -m node -T  iqn.2011-09.com.nfschina:nfs-storage -p target-ip -u

      3、配置GFS
       
        首先在3台计算机上的/etc/hosts文件末尾添加如下内容
        192.168.0.24 gfs1
        192.168.0.8 gfs2
        192.168.0.7 gfs3 
        有几个GFS节点就添加几行,每个节点上都要添加
        
        下面以配置gfs1节点为例
        #echo ''initiatorAlias=gfs1''>> /etc/iscsi/initiatorname.iscsi
            指定initiator别名
       
        创建配置文件:/etc/cluster/cluster.conf,添加如下内容
<?xml version="1.0"?>                                                          

<cluster name="GFSCluster" config_version="1">
  <clusternodes>
  <clusternode name="gfs1" votes="1" nodeid="1">
  <fence>
  <method name="single">
  <device name="node1" nodename="gfs1"/>
  </method>
  </fence>
  </clusternode>
  <clusternode name="gfs2" votes="1" nodeid="2">
  <fence>
  <method name="single">
  <device name="node2" nodename="gfs2"/>
  </method>
  </fence>
  </clusternode>
  <clusternode name="gfs3" votes="1" nodeid="3">
  <fence>
  <method name="single">
  <device name="node3" nodename="gfs3"/>
  </method>
  </fence>
  </clusternode>
  </clusternodes>
  <fencedevices>
  <fencedevice name="node1" agent="fence_manual"/>
  <fencedevice name="node2" agent="fence_manual"/>
  <fencedevice name="node3" agent="fence_manual"/>
  </fencedevices>
  <rm>
    <failoverdomains/>
    <resources/>
  </rm>
</cluster>    

 
        #/etc/init.d/gfs start
        #/etc/init.d/gfs2 start
            启用gfs服务。
        #/etc/init.d/rgmanager start
            启用集群管理。
        #/etc/init.d/cman start
            启用集群。
        #/etc/init.d/clvm start
            启用集群卷管理。
ps:以上至“3、配置GFS” 部分须在每个GFS节点(3台计算机)执行。
        下面的配置内容任选一台计算机执行即可。
        
         假定登录节点登录到taget设备后,本地主机多出了/dev/sdb /dev/sdc磁盘

        #pvcreate -ff /dev/sdb                  通过pvdisplay查看物理卷详情
        #pvcreate -ff /dev/sdc

        #vgcreate gfsvg /dev/sdb /dev/sdc           通过vgscan探测物理卷组
            可以添加多个磁盘到组中  #vgcreate gfsvg /dev/sdb /dev/sdc /sdd

        #vgdisplay
            查看vg组信息,找到磁盘容量  Total PE    1126

        #lvcreate -l  1126 -n gfs gfsvg
            在组物理卷组gfsvg上建立逻辑卷gfs

        #gfs_mkfs -p lock_dlm -t GFSCluster:gfs -j 3 /dev/gfsvg/gfs
            -p后面跟gfs锁管理机制,lock_dlm锁实现了集群读写同步
            -t后面是ClusterName:FSName 即/etc/cluster/cluster.conf中的集群名及要给格式化好的gfs分区名字
            -j指定日志个数
            最后的参数是要格式化的设备名,如新建的逻辑卷名
           


三、使用GFS共享

    配置GFS后,可以在任一节点挂载使用共享卷
    GFS支持动态扩容
    由于GFS实现了读写同步,因此崩溃时数据已经保存到磁盘,恢复GFS服务即可

    1、挂载GFS
        #vim /etc/lvm/lvm.conf 修改下项
        locking_type = 3

        #lvscan 
           ACTIVE     '/dev/gfsvg/gfs' [4.80 GB] inherit
        #mount -t gfs /dev/gfsvg/gfs /mountpoint
            使用#df -h检查gfs是否挂在成功

        #vim /etc/lvm/lvm.conf
         locking_type = 1

    2、GFS扩容
        例如,要将sdc磁盘加入到/dev/gfsvg/gfs共享
        #pvcreate -ff /dev/sdd
        #vgextend gfsvg /dev/sdd
        #lvextend  /dev/gfsvg/gfs /dev/sdd
        #gfs_grow /dev/gfsvg/gfs

    3、GFS恢复
        iscsi-target配置是一次性的,重启tgtd或者主机断电重启后会失去所有配置。所以恢复GFS首先要
重新配置iscsi-target。

        #/etc/init.d/gfs start
        #/etc/init.d/gfs2 start
       
        按顺序启动服务:      
        #/etc/init.d/rgmanager start
        #/etc/init.d/cman start
        #/etc/init.d/clvm start
       
       #vim /etc/lvm/lvm.conf   ##locking_type = 3
        #lvscan
        #mount /dev/gfsvg/gfs /mountpoint
        #vim /etc/lvm/lvm.conf   ##locking_type = 1

四、问题解答

1、不能挂载gfs模块
    模块与内核版本不符,重新安装对应版本的gfs.
2、#lvscan
    Skipping Cluster Volume group
   修改/etc/lvm/lvm.conf  locking_type = 3
3、#lvscan
    inactive     '/dev/gfsvg/gfs' [4.86 GB] inherit
    #lvchange -ay /dev/gfsvg/gfs
4、启动cman服务时,不能启动fenced
    集群中,fenced设备不能单独使用。
    同时启动集群内超过半数的节点可以很快启动成功。

遇到其他问题请及时反馈。