iSCSI(一) iSCSI详解 及 iSCSI配置

1、各主机系统:RHEL 5.8 64bit

2、Target:

Soft:scsi-target-utils

IP:192.168.18.240

LUN1:/dev/sda5 50G(以分区代替)

LUN2:/dev/sda6 20G

2、三台节点主机node1,node2,node3:

Soft:iscsi-initiator-utils

Node1: IP:192.168.18.241 host name:node1.tjiyu,com;

Node2: IP:192.168.18.242 host name:node2.tjiyu.com;

Node3: IP:192.168.18.243 host name:node3.tjiyu.com;

2-2、配置前所需要的准备

各节点Initiator和Target端需要做以下准备:

1、配置IP、关闭防火墙/SELINUX;

2、配置各节点名称;

3、时间同步;

在前面《heartbeat v2 haresource 配置可用集群》说到的高可用集群已有详细介绍,这里就不再给出了。

当然我们这里可以用Target端主机作为跳板机,因为很多相同的命令都要在各节点上执行,可以另外加一台跳板机,可以SSH连接各节点,这样就可以在跳板机上给各节点分发命令了。

首先在Target上配置各节点的hostname,方便操作:

然后生成Target端的SSH KEY,再发给到各主机,如下:

    [root@localhost ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

    [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node3.tjiyu.com

    [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node3.tjiyu.com

    [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node3.tjiyu.com

接着为命令前面常规部分设置为别名,方便操作,最后尝试给各节点同步时间,如下:

        [root@localhost ~]# alias ssh_node='for I in {1..3}; do ssh node$I'

        [root@localhost ~]# ssh_node 'ntpdate cn.ntp.org.cn'; done

3、下载安装

配置好yum源,直接在target端安装scsi-target-utils,这个只是iSCSI软件的管理工具(类似ipvsadm),具体的数据处理模块已整合在内核中,如下:

[root@localhost ~]# yum install scsi-target-utils

各节点上分别执行安装iscsi-initiator-utils,当然也可以在Target上通过SSH执行,但那是串行的,不如分别在各节点上分别执行快,如下:

[root@node1 ~]# yum install iscsi-initiator-utils

4、认识配置工具

4-1、target端配置工具(tatadm)

Target端安装scsi-target-util后,提供了相应的管理配置工具tgtadm,可以用target、LUN、用户都进管理,不过因为iSCSI模块工作在内核,tgtadm的配置只在内存中,下次开机重启不会生效,所以可以用过配置文件/etc/tgt/targets.conf来配置,启动时另一个工具tgt-adm会读取该文件。

tatadm使用语法如下:

        tgtadm --lld [driver] --op [operation] --mode [mode] [OPTION]...

        (1)、添加一个新的 target 且其ID为 [id], 名字为 [name].

            --lld [driver] --op new --mode target --tid=[id] --targetname [name]

        (2)、显示所有或某个特定的target:

            --lld [driver] --op show --mode target [--tid=[id]]

        (3)、向某ID为[id]的设备上添加一个新的LUN,其号码为[lun],且此设备提供给initiator使用。[path]是某"块设备"的路径,此块设备也可以是raid或lvm设备。lun0已经被系统预留。

            --lld [driver] --op new --mode=logicalunit --tid=[id] --lun=[lun] --backing-store [path]

        (4)、删除ID为[id]的target:

            --lld [driver] --op delete --mode target --tid=[id]

        (5)、删除target [id]中的LUN [lun]:

            -lld [driver] --op delete --mode=logicalunit --tid=[id] --lun=[lun]

        (6)、定义某target的基于主机的访问控制列表,其中,[address]表示允许访问此target的initiator客户端的列表:

            --lld [driver] --op bind --mode=target --tid=[id] --initiator-address=[address]

        (7)、解除target [id]的访问控制列表中[address]的访问控制权限:

            --lld [driver] --op unbind --mode=target --tid=[id] --initiator-address=[address]
4-2、Initiator端配置工具(iscsiadm)

而Initiator各节点安装iscsi-initiator-utils后,也提供了一些配置管理工具,其中最主要的是iscsiadm 命令,提供了对 iSCSI 目标节点、会话、连接以及发现记录的操作,iscsiadm使用语法如下:

        iscsiadm

        -m, 同 --mode, 其选项有 discovery, node, fw(启动值), host, iface(iSCSI 接口)和 session。

        -I,同 --interface, 表示接口。

        -o, 同 --op, 可实现对数据库的操作,其选项有 new, delete, update 和 show。

        -n, 同 --name, 指定其数据记录里的名字。

        -t, 同 --type, 其选项有 sendtargets(st), fw 和 isns, 仅在 -m 模式为 discovery 时有效。

        -p, 同 --portal, 指定其目标主机的 IP 地址和端口,默认端口为 3260。

        -L, 同 --loginall,其选项有 all,manual 和 automatic,指定其登录会话时的类型。

        -T, 同 --targetname,表示其目标名字。

        -v, 同 --value,通常在 --op=update 时指定其值。

5、配置target端

5-1、创建分区当作LUN

按上面的资源分配,在target端创建两个分区/dev/sda5和/dev/sda6,分别当作LUN,注意这时并不需要格式化文件系统,因为文件系统不在target端,过程如下:

        [root@localhost ~]# fdisk /dev/sda

        [root@localhost ~]# partprobe /dev/sda

        [root@localhost ~]# fdisk -l

5-2、启动tgtd服务

启动target端的tgtd服务,并配置开机启动,查看网络连接情况,可以看到tgtd监听了tcp的3260端口,如下:

        [root@localhost ~]# chkconfig tgtd on

        [root@localhost ~]# chkconfig tgtd --list

        [root@localhost ~]# service tgtd start

        [root@localhost ~]# netstat -tunlp |grep tgtd

5-3、创建target及LUN,并绑定网络

先创建一个target,ID为1,名称为iqn.2016-10.com.tjiyu:mystore.disk1(全局唯一标识名);然后给该target绑定网络192.168.18.0/24,也就是对这个网络内的主机可以发现该target;接着给该target创建两个LUN,使用上面创建的两个分区,注意LUN的ID从1开始分配,因为0已经被target控制器占用了,如下:

         [root@localhost ~]# tgtadm --lld iscsi -o new -m target -t 1 -T iqn.2016-10.com.tjiyu:mystore.disk1

        [root@localhost ~]# tgtadm -L iscsi -o bind -m target -t 1 -I 192.168.18.0/24

        [root@localhost ~]# tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/sda5

        [root@localhost ~]# tgtadm -L iscsi -o new -m logicalunit -t 1 -l 2 -b /dev/sda6

查看下配置的信息,LUN的0已经被target控制器占用了,如下:

[root@localhost ~]# tgtadm -L iscsi -o show -m target

5-4、配置访问用户

iSCSI可以配置基于IP或基于用户(CHAP)的认证方式,基于IP像上面绑定开放网络就可以了;基于用户除了绑定网络,还需要配置访问用户(如果使用基于用户的认证,必须首先开放基于IP的认证),CHAP是双向的认证机制,我们这里只配置单向的用户认证。

先创建帐号tjiyu,并为其授予访问上面ID为1的target的权限(绑定),如下:

        [root@localhost ~]# tgtadm --lld iscsi --op new --mode account --user tjiyu --password 123456

        [root@localhost ~]# tgtadm --lld iscsi --op bind --mode account --tid 1 --user tjiyu

        [root@localhost ~]# tgtadm --lld iscsi --op show --mode account

6、配置各initiator节点

6-1、配置initiator名称

分别在各节点配置initiator名称,名称也是iqn格式的(可以用iscsi-name生成),直接配置在文件/etc/iscsi/initiatorname.iscsi中就好,如下:

        [root@node1 ~]# vim /etc/iscsi/initiatorname.iscsi

        [root@node1 ~]# cat /etc/iscsi/initiatorname.iscsi

        InitiatorName=iqn.2016-10.com.tjiyu:node1_4rs3r3

        InitiatorAlias=node1

6-2、配置target访问用户

因为上面在target端创建并绑定了用户tjiyu,所以各Initiator节点需要先开放CHAP认证,并配置该用户信息,initiator配置文件为/etc/iscsi/iscsid.conf,在文件中修改这三项即可,注意,看清楚是哪三项,因为有几个配置相似,过程如下:

[root@node1 ~]# vim /etc/iscsi/iscsid.conf

6-3、启动各节点iscsi服务

各节点执行的命令一样,可以在跳板机上执行,先配置开机启动,然后启动iscsi服务,注意,上面查看安装信息看到还有一个iscsid服务,它会随着iscsi服务一起启动的,如下:

        [root@localhost ~]# ssh_node 'chkconfig iscsi on'; done

        [root@localhost ~]# ssh_node 'service iscsi start'; done

6-4、各节点发现target,并登录

各节点要使用target的LUN必须先发现,再登录后才能用,发现操作指定target的IP地址,登录需要指定发现的target名称和IP/端口;注意,如果登录不成功,可能是因为上面的配置用户不对,修改正确后需要重启iscsi服务,重新发现target,不然还是登录不了,过程如下,

        [root@localhost ~]# ssh_node 'iscsiadm -m discovery -t st -p 192.168.18.240'; done

        [root@localhost ~]# ssh_node 'iscsiadm -m node -T iqn.2016-10.com.tjiyu:mystore.disk1 -p 192.168.18.240:3260 -l'; done

发现登录成功后,相关信息保存在/var/lib/iscsi/send_targets/目录下,下次启动会自动登录的;

查看会话相关信息:

        Initiator:[root@node1 ~]# iscsiadm -m session -s

        Target:[root@localhost ~]# tgtadm --lld iscsi --op show --mode target

7、测试

Target的两个LUN在initiator端识别为两个磁盘设备,可以在上面进行分区、格式化文件系统等操作,就是本地的磁盘设备一样。不过它们在各节点上的设备名称可能不一样,这里因为开始都是一个硬盘,所有都一样。

7-1、创建分区,并格式化

上面登录成功后,查看各节点的存储空间,发现各节点都多了两个磁盘设备,这两个磁盘设备就是我们上面创建target分区模拟的LUN,一个50G,另一个20G,如下:

[root@localhost ~]# ssh_node 'fdisk -l'; done

然后在node1上操作,在50G的/dev/sdb上创建一个10G的分区,并格式化为ext3文件系统,如下:

        [root@node1 ~]# fdisk /dev/sdb

        [root@node1 ~]# partprobe /dev/sdb

        [root@node1 ~]# fdisk –l

        [root@node1 ~]# mkfs.ext3 /dev/sdb1

7-2、各节点挂载测试

上面在node1上分区/dev/sdb1后,在另外两个节点上可以查看到分区及创建的文件系统,不过却挂载不上去,需要partprobe /dev/sdb内核识别后才能挂载,在node3上挂载如下:

        [root@node3 ~]# partprobe /dev/sdb

        [root@node3 ~]# mount /dev/sdb1 /mnt

        [root@node3 ~]# ls /mnt 

然后,在node1上复制/etc/fstab进去,然后在node2上也挂载,可以发现复制进去的文件,但在已经挂载的node3上却长时间看不到复制进去的文件,重新挂载后才能看到,如下:

这说明多个节点同时挂载后,一个节点的操作和另外节点不是实时同步的,是在内存中有缓存的,所以这样用同时操作一个文件很可能会发生成崩溃,待后面解决

8、删除操作及target端文件配置

8-1、删除各节点登录信息

先使各节点登出,然后再删除发现的的信息,最后把残留的目录也删除,过程如下:

        [root@localhost ~]# ssh_node 'iscsiadm -m node -T iqn.2016-10.com.tjiyu:mystore.disk1 -p 192.168.18.240:3260 -u'; done

        [root@localhost ~]# ssh_node 'iscsiadm -m node -T iqn.2016-10.com.tjiyu:mystore.disk1 -p 192.168.18.240:3260 -o delete'; done

        [root@localhost ~]# ssh_node 'rm -rf /var/lib/iscsi/send_targets/192.168.18.240*'; done

8-2、删除target端配置

先解除绑定,再删除LUN,最后删除target,过程如下:

        [root@localhost ~]# tgtadm -L iscsi -o unbind -m target -t 1 -I 192.168.18.0/24

        [root@localhost ~]# tgtadm -L iscsi -o delete -m logicalunit -t 1 -l 2

        [root@localhost ~]# tgtadm -L iscsi -o delete -m logicalunit -t 1 -l 1

        [root@localhost ~]# tgtadm -L iscsi -o delete -m target -t 1

        [root@localhost ~]# tgtadm -L iscsi -o show -m target

8-3、文件配置target信息

上面我们说过tgtadm配置的信息,重启后会失效,需要通过/etc/tgt//targets.conf配置文件来配置才不会;该配置文件里有很多样例,如配置不使用缓存等,配置信息如下:

        <target iqn.2016-10.com.tjiyu:mystore.disk1> #配置target名称

            <backing-store /dev/sda5> #配置共享磁盘

                vendor_id test #配置发行商(任意)

                lun 6 #配置LUN号

            </backing-store>

            <backing-store /dev/sda6> #配置共享磁盘

                vendor_id test #配置发行商(任意)

                lun 8 #配置LUN号

            </backing-store>

            incominguser tjiyu 123456 #配置认证的用户名和密码

            initiator-address 192.168.18.0/24 #配置允许的网段

        </target>

过程如下:

        [root@localhost ~]# vim /etc/tgt//targets.conf

        [root@localhost ~]# service tgtd restart

        [root@localhost ~]# tgtadm -L iscsi -o show -m target

8-4、各节点重新发现并登录

和上面6-4一样,各节点重新发现target,并登录,如下:

        [root@localhost ~]# ssh_node 'iscsiadm -m discovery -t st -p 192.168.18.240'; done

        [root@localhost ~]# ssh_node 'iscsiadm -m node -T iqn.2016-10.com.tjiyu:mystore.disk1 -p 192.168.18.240:3260 -l'; done

然后在node1上查看,可以看到前面测试格式化的分区还在,不过从/dev/sdb1变为了/dev/sdc1,重新挂载,发现复制进去的文件也还在,如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值