• 转:在RHEL5系统中搭建iSCSI存储服务器


    ###################################################################
    系统环境:RHEL5.5 [2.6.18-194.el5]
    软件环境(使用RHEL5.5光盘自带的RPM包):
      服务器:
        ClusterStorage/scsi-target-utils-0.0.6.20091205snap.el5_.1.i386.rpm
        ClusterStorage/perl-Config-General-2.40-1.el5.noarch.rpm
        Server/libibverbs-1.1.3-2.el5.i386.rpm
        Server/openib-1.4.1-5.el5.noarch.rpm
        Server/librdmacm-1.0.10-1.el5.i386.rpm
        Server/libcxgb3-1.2.5-2.el5.i386.rpm
      客户端:
        Server/iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm
     
      —— 需要注意:
        1. scsi-target-utils包文件在RHEL5.0光盘中没有,好像从RHEL5.1开始才有。如果要下载源码包,可以从http://iscsitarget.sourceforge.net获得。
        2. libibverbs包的安装依赖于libibverbs-driver,可以通过安装libcxgb3包(或者libmthca、libmlx4、libnes,其中任何一个都可以)获得,否则可能出现报错:
    error: Failed dependencies:
            libibverbs-driver is needed by libibverbs-1.1.3-2.el5.i386
     
    ###################################################################
     
    一、配置存储服务器端 (iSCSI Target)
        主机名:host1
        IP地址:192.168.4.77
        
    1. 安装scsi-target-utils相关软件包
    [root@host1 ~]# mount /dev/cdrom /media/cdrom
    [root@host1 ~]# cd /media/cdrom
    [root@host1 cdrom]# rpm -ivh ClusterStorage/perl-Config-General-2.40-1.el5.noarch.rpm \
    > ClusterStorage/scsi-target-utils-0.0.6.20091205snap.el5_.1.i386.rpm \
    > Server/libibverbs-1.1.3-2.el5.i386.rpm \
    > Server/openib-1.4.1-5.el5.noarch.rpm \
    > Server/librdmacm-1.0.10-1.el5.i386.rpm \
    > Server/libcxgb3-1.2.5-2.el5.i386.rpm
        —— 服务器端配置过程可参考 /usr/share/doc/scsi-target-utils-0.0/README.iscsi 文件,命令行主要管理工具为tgtadm,系统服务为tgtd。
     
    2. 创建要输出的存储Target
        1) 启动tgtd服务 (Target Daemon)
    [root@host1 ~]# service tgtd start
    Starting SCSI target daemon: Starting target framework daemon
    [root@host1 ~]# chkconfig --level 35 tgtd on
     
        2) 定义两个target (给不同的客户机使用)
    [root@host1 ~]# tgtadm --lld iscsi --op new --mode target --tid 1 --targetname iqn.2010-
    09.cn.cnblog.selinux:target1.raid10.host1
    [root@host1 ~]# tgtadm --lld iscsi --op new --mode target --tid 2 --targetname iqn.2010-
    09.cn.cnblog.selinux:target2.disk6.host1
        —— 其中“iqn.2010-09......”用于指定符合iSCSi规范的target名称,格式为“iqn.YYYY-mm.反向域名:识别标记”
     
        3) 确认新定义的target信息,默认每个target中自动创建lun 0 (不可移除)
    [root@host1 ~]# tgtadm --lld iscsi --op show --mode target
    Target 1: iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1
        System information:
            Driver: iscsi
            State: ready
        I_T nexus information:
        LUN information:
            LUN: 0
                Type: controller
                SCSI ID: IET    00010000
                SCSI SN: beaf10
                Size: 0MB
                Online: Yes
                Removable media: No
                Backing store type: rdwr
                Backing store path: None
        Account information:
        ACL information:
    Target 2: iqn.2010-09.cn.cnblog.selinux:target2.disk6.host1
        System information:
            Driver: iscsi
    ……

    3. 划分lun (Logical Unit)
        在同一个Target中,可以划分多个lun,每个lun可以使用服务器端的RAID阵列、单个磁盘、分区、LVM或文件来充当。如果使用独立的整个
    磁盘作为lun分配给客户机,则映射到客户端后仍然是整个磁盘,客户端可以直接使用原有磁盘中的文件系统。反之,如果使用一个磁盘阵列、
    分区或文件作为lun分配给客户机,则映射到客户端后需要重新分区、格式化方可使用,原有数据无法保留。
        下面的操作把一个RAID10阵列划分给Target1中的lun 1,把一块单独的SCSI磁盘划分给Target2中的lun 1,分别给不同的客户机使用。
     
        1) 创建RAID10磁盘阵列 (软RAID,使用四块SCSI磁盘)
    [root@host1 ~]# mdadm --create --verbose /dev/md0 --auto yes  --raid-devices=4 --level=10 /dev/sd[b-e]
    mdadm: layout defaults to n1
    mdadm: chunk size defaults to 64K
    mdadm: size set to 8388544K
    mdadm: array /dev/md0 started

    [root@host1 ~]# ls -l /dev/md0        #//确认新建的阵列设备文件
    brw-r----- 1 root disk 9, 0 09-18 08:43 /dev/md0
    [root@host1 ~]# mdadm --detail --scan --verbose        #//确认阵列信息
    ARRAY        /dev/md0        level=raid10        num-devices=4        metadata=0.90
    UUID=90e8eb47:420a08e7:e9b43c55:2600513
        devices=/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde
    [root@host1 ~]# cat /proc/mdstat        #//查看阵列状态
    Personalities : [raid10]
    md0 : active raid10 sde[3] sdd[2] sdc[1] sdb[0]
            16777088 blocks 64K chunks 2 near-copies [4/4] [UUUU]
    unused devices: <none>
     
        2) 将/dev/md0划分给Target1中的lun 1,指定客户机192.168.4.99可以使用
    [root@host1 ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-store /dev/md0
    [root@host1 ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address 192.168.4.99

        3) 将/dev/sdf划分给Target2中的lun 1,指定客户机192.168.4.88可以使用
    [root@host1 ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 1 --backing-store /dev/sdf
    [root@host1 ~]# tgtadm --lld iscsi --op bind --mode target --tid 2 --initiator-address 192.168.4.88
     
        4) 再次查看target信息,确认分配的lun信息
    [root@host1 ~]# tgtadm --lld iscsi --op show --mode target
    Target 1: iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1
    ……
            LUN: 1        #//Target1中的lun 1信息
                Type: disk
                SCSI ID: IET    00010001
                SCSI SN: beaf11
                Size: 17180MB
                Online: Yes
                Removable media: No
                Backing store type: rdwr
                Backing store path: /dev/md0
        Account information:
        ACL information:
            192.168.4.99
    Target 2: iqn.2010-09.cn.cnblog.selinux:target2.disk6.host1
    ……
            LUN: 1        #//Target2中的lun 1信息
                Type: disk
                SCSI ID: IET    00020001
                SCSI SN: beaf21
                Size: 17180MB
                Online: Yes
                Removable media: No
                Backing store type: rdwr
                Backing store path: /dev/sdf
        Account information:
        ACL information:
            192.168.4.88
     
    4. 修改配置文件,保存上述关键配置
    [root@host1 ~]# vi /etc/tgt/targets.conf
    default-driver iscsi
    <target iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1>
        backing-store /dev/md0
        initiator-address 192.168.4.99
    </target>
    <target iqn.2010-09.cn.cnblog.selinux:target2.disk6.host1>
        backing-store /dev/sdf
        initiator-address 192.168.4.88
    </target>
     
     
    二、配置存储客户端 (iSCSI Initiator)
        主机名:host2
        IP地址:192.168.4.99
        主机名:host3
        IP地址:192.168.4.88
        —— 存储客户端的配置使用基本类似,以下仅以host2为例。
     
    1. 安装iscsi-intiator-utils软件包
    [root@host2 ~]# mount /dev/cdrom /media/cdrom
    [root@host2 ~]# cd /media/cdrom/Server
    [root@host2 Server]# rpm -ivh iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm
     
        —— 客户端配置过程可参考 /usr/share/doc/iscsi-initiator-utils-6.2.0-871/README 文件,命令行主要管理工具为iscsiadm,系统服务为iscsi。
     
    2. 查找iSCSI服务器端提供的Target信息
    [root@host2 ~]# chkconfig --level 35 iscsi on
    [root@host2 ~]# service iscsi start
    [root@host2 ~]# iscsiadm --mode discovery --type sendtargets --portal 192.168.4.77
    192.168.4.77:3260,1 iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1
     
    3. 登陆到iSCSI服务器端提供的Target
    [root@host2 ~]# iscsiadm --mode node --portal 192.168.4.77 --targetname iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1 -
    -login
    Logging in to [iface:default, target:iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1, portal:192.168.4.77,3260]
    Login to [iface:default, target:iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1, portal:192.168.4.77,3260]: successful
    [root@host2 ~]# lsscsi        #//确认已连接(新增)的iSCSI磁盘设备(原来已有一块SCSI磁盘,因此这里新增的为/dev/sdb)
    ……
    [1:0:0:0]    storage  IET    Controller    0001  -
    [1:0:0:1]    disk     IET    VIRUAL-DISK   0001  /dev/sdb
    [root@host2 ~]# sfdisk -s
    ……
    /dev/sdb: 16777088
    total: 33554304 blocks
     
    4. 分区、格式化iSCSI磁盘设备,并挂载使用
        若Target端分配的lun是独立的磁盘,且已包含有分区和文件系统则在initiator端无需再次分区、格式化。
    [root@host2 ~]# fdisk /dev/sdb        #//划分一个sdb1分区,过程略
    [root@host2 ~]# partprobe /dev/sdb
    [root@host2 ~]# mkfs -t ext3 /dev/sdb1
    [root@host2 ~]# mkdir /media/iscsi
    [root@host2 ~]# vi /etc/fstab
    ……
    /dev/sdb1    /media/iscsi    ext3    _netdev    0  0
    [root@host2 ~]# mount  /media/iscsi
    [root@host2 ~]# mount | grep iscsi        #//查看挂载情况
    /dev/sdb1 on /media/iscsi type ext3 (rw,_netdev)
     
    5. 确认生成的配置文件
    [root@host2 ~]# cd /var/lib/iscsi/nodes/
    [root@host2 ~]# cat iqn.2010-09.cn.cnblog.selinux\:target1.raid10.host1/192.169.4.77\,3260\,1/default
    # BEGIN RECORD 2.0-871
    node.name = iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1
    node.tpgt = 1
    node.startup = automatic
    iface.iscsi_ifacename = default
    iface.transport_name = tcp
    node.discovery_address= 192.168.4.77
    node.discovery_port = 3260
    node.discovery_type = send_targets
    ……
     

    三、iSCSI存储服务器的用户验证 (可选)
    1. 服务器端(Target)设置,以Target1为例
        1) 方法一:
    [root@host1 ~]# tgtadm --lld iscsi --op new --mode account --user tsengyia --password pwd@123
    [root@host1 ~]# tgtadm --lld iscsi --op bind --mode account --tid 1 --user tsengyia
    [root@host1 ~]# tgtadm --lld iscsi --op show --mode target
    Target 1: iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1        #//确认Target1的认证用户信息
    ……
        Account information:
            tsengyia
        ACL information:
            192.168.4.99
     
        2) 方法二:
    [root@host1 ~]# vi /etc/tgt/targets.conf
    default-driver iscsi
    <target iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1>
        backing-store /dev/md0
        incominguser tsengyia pwd@123
        initiator-address 192.168.4.99
    </target>
    ……
    [root@host1 ~]# service tgtd restart        #//注意先将所有Initiator端断开连接

    2. 客户端(Intiator)设置,以Host2中为例
    [root@host2 ~]# cd /var/lib/iscsi/nodes/
    [root@host2 ~]# vi iqn.2010-09.cn.cnblog.selinux\:target1.raid10.host1/192.169.4.77\,3260\,1/default
    # BEGIN RECORD 2.0-871
    node.name = iqn.2010-09.cn.cnblog.selinux:target1.raid10.host1
    node.tpgt = 1
    node.startup = automatic
    iface.iscsi_ifacename = default
    iface.transport_name = tcp
    node.discovery_address= 192.168.4.77
    node.discovery_port = 3260
    node.discovery_type = send_targets
    ……
    node.session.auth.authmethod = CHAP        #//默认为None,不使用认证
    node.session.auth.username = tsengyia
    node.session.auth.password = pwd@123
    ……
    [root@host2 ~]# service iscsi restart
  • 相关阅读:
    javaweb学习总结(二十三)——jsp自定义标签开发入门
    javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    MyEclipse使用总结——设置MyEclipse使用的Tomcat服务器
    XML学习总结(二)——XML入门
    XML学习总结(一)——XML介绍
    使用java中replaceAll方法替换字符串中的反斜杠
    MyEclipse使用总结——设置MyEclipse开发项目时使用的JDK
    MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
    使用js加载器动态加载外部Javascript文件
    JavaScript获取浏览器类型与版本
  • 原文地址:https://www.cnblogs.com/jjkv3/p/2771506.html
Copyright © 2020-2023  润新知