实验环境:RHEL7.0

                服务器端   server1.example.com  172.25.254.1

                客户端1       server2.example.com  172.25.254.2

                客户端2       server3.example.com  172.25.254.3


1. iSCSI概念

    iSCSI(Internet SCSI)支持从客户端(发起端)通过IP向远程服务器上的SCSI存储设备(目标)发送SCSI命令。iSCSI限定名称用于确定发起端和目标,并采用iqn.yyyy-mm.{reverse domain}:label的格式。默认情况下,网络通信是至iSCSI目标上的端口3260/tcp的明文。


    iSCSI发起端:需要访问原始SAN存储的客户端。

    iSCSI目标:从iSCSI服务器提供的远程硬盘磁盘,或“目标门户”

    iSCSI目标门户:通过网络向发起端提供目标的服务器。

    IQN:“iSCSI限定名称”。每个发起端和目标需要唯一名称进行标识,最好的做法是使用一个在Internet上可能独一无二的名称


2.iSCSI目标配置实验

  《1》服务器端配置

    2.1添加硬盘新硬盘,不用格式化分区,用于做远程磁盘。

        我已经添加了一块磁盘vda

[root@server1 ~]# fdisk -l

Disk /dev/vda: 8589 MB, 8589934592 bytes, 16777216 sectors

       分区不用格式化

[root@server1 ~]# fdisk /dev/vda 

[root@server1 ~]# cat /proc/partitions 

    2.2安装iSCSI目标软件包:

# yum install -y targetcli

    启动服务:

# systemctl enable target; systemctl start target

     2.3 进入iSCSI目标交互式配置模式:

[root@server1 ~]# targetcli 

Warning: Could not load preferences file /root/.targetcli/prefs.bin.

targetcli shell version 2.1.fb34

Copyright 2011-2013 by Datera, Inc and others.

For help on commands, type 'help'.


/> ls

o- / ..................................................................... [...]

  o- backstores .......................................................... [...]

  | o- block .............................................. [Storage Objects: 0]

  | o- fileio ............................................. [Storage Objects: 0]

  | o- pscsi .............................................. [Storage Objects: 0]

  | o- ramdisk ............................................ [Storage Objects: 0]

  o- iscsi ........................................................ [Targets: 0]

  o- loopback ..................................................... [Targets: 0]

/> /backstores/block create server:disk /dev/vda1

Created block storage object server:disk using /dev/vda1.

/> /iscsi create iqn.2016-09.com.example.com:storage1

Created target iqn.2016-09.com.example.com:storage1.

Created TPG 1.

/> /iscsi/iqn.2016-09.com.example.com:storage1/tpg1/luns create /backstores/block/server:disk 

/> /iscsi/iqn.2016-06.com.example:storage1/tpg1/acls create iqn.2016-06.com.example:key

Created Node ACL for iqn.2016-06.com.example:key

Created mapped LUN 0.

Created LUN 0.

/> /iscsi/iqn.2016-09.com.example.com:storage1/tpg1/portals create 172.25.254.1

Using default IP port 3260

Created network portal 172.25.254.1:3260.

/> exit

Global pref auto_save_on_exit=true

Last 10 configs saved in /etc/target/backup.

Configuration saved to /etc/target/saveconfig.json

[root@server1 ~]# 

[root@server1 ~]# netstat -antple|grep 3260    ###查看端口

tcp        0      0 172.25.254.1:3260       0.0.0.0:*               LISTEN      0          35120   

[root@server1 ~]# firewall-cmd --permanent --add-port=3260/tcp  ##添加防火墙策略

[root@server1 ~]# firewall-cmd --reload


    《2》客户端1访问ISCSI存储

     2.1 安装iSCSI发起端软件包:

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

    2.2 在/etc/iscsi/initiatorname.iscsi中设置发起端的IQN:

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

    InitiatorName=iqn.2016-09.com.example:storage

    2.3 查找iSCSI服务器所提供的iSCSI目标(目标门户)

[root@server2 ~]# iscsiadm -m discovery -t st -p 172.25.254.1

172.25.254.1:3260,1 iqn.2016-09.com.example.com:key

    2.4 登录服务器上的一个或多个iscsi目标

[root@server2 ~]# systemctl restart iscsid

[root@server2 ~]# iscsiadm -m node -T iqn.2016-06.com.example:storage1 -p 172.25.254.1 -l

Logging in to [iface: default, target: iqn.2016-06.com.example:storage1, portal: 172.25.254.1,3260] (multiple)

Login to [iface: default, target: iqn.2016-06.com.example:storage1, portal: 172.25.254.1,3260] successful. 

[root@server2 ~]# fdisk -l     ###查看,多了一块磁盘

Disk /dev/sdb: 4294 MB, 4294967296 bytes, 8388608 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 4194304 bytes

    2.5 挂载使用

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

[root@server2 ~]# partprobe 

[root@server2 ~]# mkfs.xfs /dev/sdb1

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

[root@server2 ~]# cd /mnt/

[root@server2 mnt]# df -h

Filesystem             Size  Used Avail Use% Mounted on

/dev/mapper/rhel-root  8.5G  3.0G  5.6G  35% /

devtmpfs               488M     0  488M   0% /dev

tmpfs                  498M   92K  497M   1% /dev/shm

tmpfs                  498M  7.0M  491M   2% /run

tmpfs                  498M     0  498M   0% /sys/fs/cgroup

/dev/sda1              497M  119M  379M  24% /boot

/dev/sdb1              4.0G   33M  4.0G   1% /mnt

[root@server2 mnt]# ls

file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

[root@server2 mnt]# iscsiadm -m node -T iqn.2016-06.com.example:storage1 -p 172.25.254.1 -u   #登出iSCSI目标,以暂时断开连接。

Logging out of session [sid: 3, target: iqn.2016-06.com.example:storage1, portal: 172.25.254.1,3260]

Logout of [sid: 3, targ

[root@server2 mnt]# iscsiadm -m node -T iqn.2016-06.com.example:storage1 -p 172.25.254.1 -o delete      ##彻底断开连接


        《3》客户端2访问ISCSI存储

[root@server3 ~]# yum install iscsi-initiator-utils.x86_64 -y

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

        InitiatorName=iqn.2016-06.com.example:key

[root@server3 ~]# iscsiadm -m discovery -t st -p 172.25.254.1

172.25.254.1:3260,1 iqn.2016-06.com.example:storage1

[root@server3 ~]# iscsiadm -m node -T iqn.2016-06.com.example:storage1 -p 172.25.254.1 -l

Logging in to [iface: default, target: iqn.2016-06.com.example:storage1, portal: 172.25.254.1,3260] (multiple)

Login to [iface: default, target: iqn.2016-06.com.example:storage1, portal: 172.25.254.1,3260] successful.

[root@server3 ~]# fdisk -l      ###得到的磁盘已经是被分区格式化好的,可直接挂载使用

Disk /dev/sdb: 4294 MB, 4294967296 bytes, 8388608 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 4194304 bytes

Disk label type: dos

Disk identifier: 0x231cc8fa

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            8192     8388607     4190208   83  Linux

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

[root@server3 ~]# cd /mnt/

[root@server3 mnt]# ls   ###可以看到我们在客户大端1上创建的文件

file1  file10  file2  file3  file4  file5  file6  file7  file8  file9