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 :