一、安装
    
    系统环境: 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,添加如下内容
                                                           

 
   
   
   
   
   
 
 
 
 
 
 
   
   
   
   
 
 
 
 
 
 
   
   
   
   
 
 
 
 
 
 
 
 
   
   
   
   
  
 
   
     
     
  
 
     

 
        #/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设备不能单独使用。
    同时启动集群内超过半数的节点可以很快启动成功。