HOME 生活记录运维/编程
作者/来源:yixinu.com
栏目:运维/编程
日期:2012-05-24 08:56:00

ISCSI (iSCSI = internet Small Computer System Interface ,Internet 小型计算机系统接口)

    iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料

-----------------------------

        iSCSI 主要是透过 TCP/IP 的技术,将储存设备端透过 iSCSI target (iSCSI 目标) 功能,做成可以提供磁盘的服务器端,再透过 iSCSI initiator (iSCSI 初始化用户) 功能,做成能够挂载使用 iSCSI target 的客户端,如此便能透过 iSCSI 协议来进行磁盘的应用了。


iSCSI 这个架构主要将储存装置与使用的主机分为两个部分,分别是:

       1、 iSCSI target:就是储存设备端,存放磁盘或 RAID 的设备,目前也能够将 Linux 主机仿真成 iSCSI target 了!目的在提供其他主机使用的『磁盘』;

       2、iSCSI initiator:就是能够使用 target 的客户端,通常是服务器。


服务器主要通过以下三种方式取得磁盘或者是文件系统:

    1、直接存取 (direct-attached storage):例如本机上面的磁盘,就是直接存取设备;

    2、透过储存局域网络 (SAN Storage Area Networks):来自区网内的其他储存设备提供的磁盘;

    3、网络文件系统 (NAS Network Attached Storage):来自 NAS 提供的文件系统,只能立即使用,不可进行格式化。






1、iSCSI target 的设定

    所需要的软件与软件结构:

    a)    scsi-target-utils:用来将 Linux 系统仿真成为 iSCSI target 的功能;

    b)    iscsi-initiator-utils:挂载来自 target 的磁盘到 Linux 本机上。

  

2、scsi-target-utils提供了以下文件:

    a)    /etc/tgt/targets.conf:主要配置文件,设定要分享的磁盘格式与哪几块;

    b)    /usr/sbin/tgt-admin:在线查询、删除 target 等功能的设定工具;

    c)    /usr/sbin/tgt-setup-lun:建立 target 以及设定分享的磁盘与可使用的客户端等工具软件。
    d)    /usr/sbin/tgtadm:手动直接管理的管理员工具 (可使用配置文件取代);
    e)    /usr/sbin/tgtd:主要提供 iSCSI target 服务的主程序;
    f)     /usr/sbin/tgtimg:建置预计分享的映像文件装置的工具 (以映像文件仿真磁盘);

    .......


3、target 的实际设置    

    ISCSI 主要有以下类型的磁盘共享:    

        a)    使用 dd 指令所建立的大型文件可供仿真为磁盘 (无须预先格式化);

        b)    使用单一分区(partition) 分享为磁盘;

        c)    使用单一完整的磁盘 (无须预先分区);

        d)    使用磁盘阵列共享 (其实与单一磁盘相同方式);

        e)    使用软件磁盘阵列 (software raid) 共享成单一磁盘;

        f)    使用 LVM 的 LV 装置分享为磁盘。


4、规范共享的 ISCSI target 文件名


    例如:    iqn.2012-06.com.testserver002:disk1

    以 iqn 开头,表示[iSCSI Qualified Name (iSCSI 合格名称) ],后面接年月,然后是 ServerName 反转域名的写法,disk1是为共享的 iscsi 设备命的名。









example 1 :  

target端 与 initator 端联机。。

    1、配置 target 端


[root@testserver001 ~]# cat /etc/tgt/targets.conf 
……
 38 <target iqn.2012-06.com.testserver001:disk1>
 39     backing-store /dev/testmd/testmd_01
 40     initiator-address 192.168.73.173
 41 #    incominguser someuser secretpass12
 42 </target>
……




[root@testserver001 ~]# fdisk -l
Disk /dev/mapper/testmd-testmd_01: 6434 MB, 6434062336 bytes
255 heads, 63 sectors/track, 782 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1572864 bytes
Disk identifier: 0x00000000




[root@testserver001 ~]# /etc/init.d/tgtd start
……
[root@testserver001 ~]# netstat -tpln
……
tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      4432/tgtd
……
tcp        0      0 :::3260                     :::*                        LISTEN      4432/tgtd 




[root@testserver001 ~]# vim /etc/sysconfig/iptables
[root@testserver001 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
……
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:3260 


    2、配置 initiator 端


[root@testserver002 rc3.d]# iscsiadm -m discovery -t sendtargets -p 192.168.73.186
192.168.73.186:3260,1 iqn.2012-06.com.testserver001:disk1
[root@testserver002 rc3.d]# 



[root@testserver002 ~]# ls /var/lib/iscsi/nodes/ -lR
/var/lib/iscsi/nodes/:
total 4
drw-------. 3 root root 4096 Jun  6 19:28 iqn.2012-06.com.testserver001:disk1

/var/lib/iscsi/nodes/iqn.2012-06.com.testserver001:disk1:
total 4
drw-------. 2 root root 4096 Jun  6 19:28 192.168.73.186,3260,1

/var/lib/iscsi/nodes/iqn.2012-06.com.testserver001:disk1/192.168.73.186,3260,1:
total 4
-rw-------. 1 root root 1731 Jun  6 19:28 default



[root@testserver002 rc3.d]# iscsiadm -m node -T iqn.2012-06.com.testserver001:disk1 --login


    已经多了一个磁盘,和 target 端的大小一样


[root@testserver002 rc3.d]# fdisk -l
……
Disk /dev/sdb: 6434 MB, 6434062336 bytes
198 heads, 62 sectors/track, 1023 cylinders
Units = cylinders of 12276 * 512 = 6285312 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000



example 2:

更新/删除/新增 target

    1、注销登陆

[root@testserver002 ~]# iscsiadm -m node
192.168.73.186:3260,1 iqn.2012-06.com.testserver001:disk1
[root@testserver002 ~]# iscsiadm -m node -T iqn.2012-06.com.testserver001:disk1 --logout

    2、连接依然存在


[root@testserver002 ~]# ls /var/lib/iscsi/nodes/ 
iqn.2012-06.com.testserver001:disk1


    3、删除连接

        信息已经不存在


[root@testserver002 ~]# iscsiadm -m node -o delete -T  iqn.2012-06.com.testserver001:disk1
[root@testserver002 ~]# ls /var/lib/iscsi/nodes/
[root@testserver002 ~]# 



    4、再次查找可用的 target


[root@testserver002 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.73.186
192.168.73.186:3260,1 iqn.2012-06.com.testserver001:disk1



    5、已经找到可用的  target


[root@testserver002 ~]# ls /var/lib/iscsi/nodes
iqn.2012-06.com.testserver001:disk1


example 3 :

挂载使用  iscsi

    1、建立联机


[root@testserver002 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.73.186
192.168.73.186:3260,1 iqn.2012-06.com.testserver001:disk1
[root@testserver002 ~]# iscsiadm -m node -T iqn.2012-06.com.testserver001:disk1 --login
Logging in to [iface: default, target: iqn.2012-06.com.testserver001:disk1, portal: 192.168.73.186,3260] (multiple)
Login to [iface: default, target: iqn.2012-06.com.testserver001:disk1, portal: 192.168.73.186,3260] successful.
[root@testserver002 ~]# 




[root@testserver002 ~]# fdisk -l
……
Disk /dev/sdb: 6434 MB, 6434062336 bytes
198 heads, 62 sectors/track, 1023 cylinders
Units = cylinders of 12276 * 512 = 6285312 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
……
     OK



    2、格式化,使用


[root@testserver002 ~]# pvcreate /dev/sdb
  Writing physical volume data to disk "/dev/sdb"
  Physical volume "/dev/sdb" successfully created
[root@testserver002 ~]# vgcreate iscsitest /dev/sdb
  Volume group "iscsitest" successfully created



    3、挂载到目录


[root@testserver002 ~]# lvcreate -l 100%FREE iscsitest
  Logical volume "lvol0" created
[root@testserver002 ~]# mkdir /data/iscsi_vol0 -p
……
[root@testserver002 ~]# mkfs.ext4 /dev/mapper/iscsitest-lvol0 
mke2fs 1.41.12 (17-May-2010)
……
[root@testserver002 ~]# mount /dev/mapper/iscsitest-lvol0 /data/iscsi_vol0/
[root@testserver002 ~]# df -h /data/iscsi_vol0/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/iscsitest-lvol0
                      5.9G  140M  5.5G   3% /data/iscsi_vol0
[root@testserver002 ~]# 



    4、写入 fstab 表


[root@testserver002 ~]# vim /etc/fstab
/dev/mapper/iscsitest-lvol0      /data/iscsi_vol0/ ext4 defaults,_netdev 1 2
     加上 _netdev (最前面是下划线) 指的是,因为这个 partition 位于网络上, 所以得要网络开机启动完成后才会挂载的意思。


    5、去  target  端查看  ,哪 个主机联进来了

[root@testserver001 ~]# tgt-admin --show
Target 1: iqn.2012-06.com.testserver001:disk1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
        I_T nexus: 2
            Initiator: iqn.1994-05.com.redhat:e4a84a4fb464
            Connection: 0
                IP Address: 192.168.73.173      //显示这台服务器联进来了


example 4 :

分享到:

Copyright © 2013-2014 yixinu.com 湘ICP备14004402号

QQ:316686606  Email: 316686606@qq.com