菜鸟学Linux 第092篇笔记 iscsi, gfs2, clvm




内容总览

iSCSI 概述

安装服务端scsi-target-utiles

安装客户端 iscsi-initiator-utils

配置iscsi基于用户密码认证

配置的iscsi所共享的硬盘使用集群文件系统gfs2

集群逻辑卷 lvm2-cluster







SCSI and iSCSI (small computer system interface)

lun (logical unit number)逻辑设备


iSCSI 

用来实现将scsi设备基于网络传送到其它客户端,并且映射到客户端为硬件设备,此种方式

和nfs有高大区别,它可以实现挂载共享的磁盘,分区等操作


存储区域网络

共享数据(基于块)

使SCSI的传输距离变长


三种iscsi innitiator

iscsi hba卡  可以实力完成数据封装,CPU利用率相对较低

iscsi toe卡  以软件方式动作的scsi指令,CPU利用率相对适中

iscsi 驱动程序 (软件方式实现,CPU利用率相对较高)


使用tcp 3260端口


iscsi会话



服务端

iSCSI Target: scsi-target-utils

3260

客户端认证方式:

1. 基于IP

2. 基于用户,chap


客户端

ISCSI Intiator: iscsi-initiator-utils

open-iscsi




安装服务端scsi-target-utiles (即提供iscsi硬盘的提供端)


1.安装和启动

# yum install scsi-target-utils

# rpm -ql scsi-target-utils

# service tgtd start

# netstat -tunlp

# chkconfig tgtd on


2.配置命令

tgtadm模式化的命令

常用模式: target, logicalunit, account

target --op

new, delete, show, bind, unbind, update


logicalunit --op

new, delete


account --op

new, delete, bind, unbind


选项简写

--lld, -L

--tid, -t

--lun, -l

--backing-store <path>, -b

--initiator-address <address>, -I

--targetname <targetname>, -T


targetname:

iqn.yyyy-mm.<reversed domain name>[:identifier]

iqn.2017-01.com.mysky:tstore.disk1


3.建立target

首先给服务器新安装一块硬盘不需要格式化(推荐)


创建target

# tgtadm --lld iscsi --mode target --op new --targetname 

iqn.2017-01.com.mysky:teststore.disk1 --tid 1 (一条命令)


# tgtadm --lld iscsi --mode target --op show


将target添加逻辑磁盘

# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 

--backing-store /dev/sdb (一条命令)


# tgtadm --lld iscsi --mode target --op show


绑定target使用范围

# tgtadm --lld iscsi --mode target --op bind --tid 1 

--initiator-address 192.168.11.0/24 (一条命令)





安装客户端 iscsi-initiator-utils


1. 客户端安装iscsi-initiator-utils

# yum -y install iscsi-initiator-utils

# rpm -ql iscsi-initiator-utils


2. 配置


配置initiatorName 

# echo "InitiatorName=`iscsi-iname -p iqn.2017-01.com.mysk`" > 

/etc/iscsi/initiatorname.iscsi  (一条命令)


# cat /etc/iscsi/initiatorname.iscsi


# service iscsi start

iscsiadm模式化命令

-m {discovery|node|session|iface}

discovery 发现某服务器是否有target输出,以及输出了哪些target

node 管理跟某target的关联关系

session 会话管理

iface 接口管理


发现某个服务器上的target

iscsiadm -m discovery [ -hV ] [ -d debug_level ] [ -P printlevel ] 

[ -I iface -t type -p ip:port [ -l ] ]

-d 0-8

-I 

-t type: SendTaget(st), SLP, iSNS

-p IP:port

iscsiadm -m discovery -d 2 -t st -p 192.168.11.200


查询完成后会保留记录在此文件夹下

# ls /var/lib/iscsi/send_targets/


连接到上边所发现的target

iscsiadm  -m node [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] 

[ [ -o operation ]  [ -n name ]  [-v value ] [ -p ip:port ] ] (一条命令)

-l loin

-u logout


    iscsiadm -m node -T iqn.2017-01.com.mysky:teststore.disk1 -p 192.168.11.200 -l



    此时使用fdisk -l查看磁盘,即可看到多了一块硬盘,

    可以对该硬盘进行分区,格式化,挂载等操作


    (此时,共享存储服务已经建立完成)


注意的是,如果多台客户端同时连接此台iscsi设置时,如果未使用集群文件系统的话,多台客户端

如果同时读写此台设备的同一个文件时,可能会出现文件系统崩溃






配置iscsi基于用户密码认证


iscsi-initiator-utils:

不支持discovery认证

如果例如基于用户的认证,必须首先开放基于IP的认证

直接使用tgtadm所配置的参数无法保存,因为是其工作在内核中,如果重启服务器,或重新启动

此服务后,tgtadm所配置的参数会被删除

如要保存,则需要修改/etc/tgt/targets.conf文件,此文件在启动时会被tgt-admin命令读取



1. 服务器端配置(永久生效)

# vim /etc/tgt/targets.conf

添加如下内容

<target iqn.2017-01.com.mysky:disk1>

       <backing-store /dev/sdb1>

               vender_id mysky

               lun 3

       </backing-store>

       incominguser iscsiuser iscsipw

       initiator-address 192.168.11.0/24

</target>


重新启动tgtd服务使其配置生效

# service tgtd restart  (注意客户端的连接必须全部断开)




2. 清除此前的iscsi连接(在客户端上)

# iscsiadm -m node -T iqn.2017-01.com.mysky:disk1 -p 192.168.11.200 -u

# iscsiadm -m node -T iqn.2017-01.com.mysky:disk1 -p 192.168.11.200 -o delete

# fdisk -l


修改/etc/iscsi/iscsid.conf文件

# vim /etc/iscsi/iscsid.conf

启用如下三项并修改其密码和用户的和服务器端保持一致(我这里是显示已经修改好的)

node.session.auth.authmethod = CHAP

node.session.auth.username = iscsiuser

node.session.auth.password = iscsipw

添加完成后重启scsi服务

# service iscsi restart

(完成基于用户密码认证)





将刚刚配置的iscsi所共享的硬盘使用集群文件系统

可以使用集群文件系统锁

可以实现集群的文件系统共享

可以实现一个节点上传一个文件,其它节点立即便可显示该文件


准备工作

要想使用集群文件系统所有iscsi客户端必须得有集群文件系统组件

cman rgmanager

并已经配置好集群节点可以互相通信fence addnode


1. 安装gfs2-utils

# yum install gfs2-utils


先为硬盘创建分区,并使用partprobe通知内核更新



2. 格式化文件系统为gfs2

# mkfs.gfs2 -j 2 -p lock_dlm -t clsgfs:mysqlstore /dev/sdb1

# mount /dev/sdb1 /mnt

(注意此文件系统不会显示lost+found文件)


添加journal

# gfs2_jadd -j 3 /dev/sdb1

-j后所跟的数表示要再添加几个journal


其它节点直接挂载即可



mkfs.gfs2

-j # 指定日志区域的个数,有几个就可以被几个节点所挂载

-J #MB 指定日志区域的大小,默认为128MB

-p {lock_dlm|lock_nolock} (当集群文件系统被一个节点使用时,就不需要使用分布锁)

-t <name> 锁表的名称, 格式为clustername:locktablename

clustername为当前节点所在的集群的名称

locktablename要在当前集群中唯一




安装集群逻辑卷 lvm2-cluster

与lvm类似,只是这是一个集群的逻辑卷

配置集群ha cman rgmanager gfs2-utils lvm2-cluster

同步时间

修改hosts文件


clvm 共享存储做成lvm

借用ha机制

/etc/lvm/lvm.conf

locking_type = 3

clvm




1.安装lvm2-cluster

在每个节点安装lvm2-cluster

# yum -y install lvm2-cluster


或者在跳板机执行安装lvm2-cluster

# alias ha='for I in {1..3}; do'

# ha ssh node$I 'yum -y install lvm2-cluster'; done


2. 配置clvm

跳板机执行

# ha ssh node$I 'lvmconf --enable-cluster'; done

# ha ssh node$I 'service clvmd start'; done

# ha ssh node$I 'chkconfig clvm on; chkconfig cman on; chkconfig rgmanager on'; done


3. 创建lvm逻辑卷

和使用本地磁盘创建逻辑卷相同,只是所对应的磁盘为iscsi

pvcreate /dev/sdb

vgcreate clustervg /dev/sdb

lvcreate -L 10G -n clusterlv clustervg


4. 为clvm逻辑卷创建gfs2文件系统

# mkfs.gfs2 -j 2 -p local_dlm -t tcluster:locktab1 /dev/clustervg/clusterlv


5. 挂载clvm

# mkdir /mydata

# mount -t gfs2 /dev/clustervg/clusterlv /mydata


查看gfs文件系统

# gfs2_tool df /mydata


# gfs2_tool gettune <mountpoint> 查看lvm可调参数

# gfs2_tool settune <mountpoint> <parameter> <value> 修改具体的某个参数

# gfs2_tool journals <mountpoint> 查看磁盘日志信息


6. 扩展clvm

先扩展clvm和lvm扩展相同,最后通知扩展使用如下命令

# gfs2_grow /dev/clustervg/clusterlv 扩展clvm


(完结)




总结

centOS 6.5 已经淘汰了 ccs_tool此工具 而是使用ccs

WARNING

       All  ccs_tool  editing  capabilities  are  now obsoleted and unsup-

       ported.  Please see also ccs package and documentation for  a  more

       complete implementation of cluster.conf CLI editor.