iSCSI的原理及配置

        iSCSI,即Internet Small Computer System Interface,Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术。也是一种在TCP/IP上进行数据块传输的标准。iSCSI可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行快速的数据存取备份操作。

优点:

        接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等。

工作流程:

        iSCSI系统由SCSI适配器发送一个SCSI命令。

        命令封装到TCP/IP包中并送入到以太网络。

        接收方从TCP/IP包中抽取SCSI命令并执行相关操作。

        把返回的SCSI命令和数据封装到TCP/IP包中,将它们发回到发送方。

        系统提取出数据或命令,并把它们传回SCSI子系统。

        通过iscsi实现存储共享,创建IQN用于识别启动器和目标,然后建立tpg共享存储组,设置相应的访问控制权限,然后在共享存储组添加lun逻辑单元(存储设备),然后建立实现共享portals入口(ip,port)。

概念:

        TPG:共享存储组,某个特定iSCSI目标要侦听的接口IP地址和TCP端口的集合。可以将目标配置添加到TPG以协调多个LUN的设置。

        ACL:访问权限控制列表,一种使用节点IQN(通常是启动器名称)来验证启动器的访问权限的访问限制。

        IQN:iSCSI限定名称,全球唯一名称,用于以强制命名格式来识别启动器和目标。

        IQN格式如下:

                iqn.YYYY-MM.com.reversed.domain[:optional_string]

                iqn:表示此名称使用域为标识符。

                YYYY-MM:表示拥有域名的年月时间。

                com.reversed.domain:拥有此iSCSI组织的逆向域名

                :optional_string:以冒号为前缀的可选字符串,全球唯一,由域所有者分配,其中可包含冒号为分割符的组织边界。

        LUN:逻辑单元号,带有编号的块设备,连接到目标且通过目标来使用。可以有一个或多个LUN连接到单个目标,但通常一个目标提供一个LUN。

        portals入口:目标或启动器上用于建立的IP地址和端口,默认3260端口。

具体配置:

一、服务器用Linux,客户端用Windows访问

1、准备一个分区
[[email protected] ~]# fdisk /dev/sda 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (3,4, default 3): 
First sector (50759680-83886079, default 50759680): +10G
Value out of range.
First sector (50759680-83886079, default 50759680): 
Using default value 50759680
Last sector, +sectors or +size{K,M,G} (50759680-83886079, default 83886079): 
Using default value 83886079
Partition 3 of type Linux and of size 15.8 GiB is set

Command (m for help): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b0f8f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648    50759679    25174016   8e  Linux LVM
/dev/sda3        50759680    83886079    16563200   83  Linux

Command (m for help): w
The partition table has been altered!
[[email protected] ~]# partprobe
2、装包,关闭防火墙和selinux
[[email protected] ~]# yum install targetcli
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
3、启动服务
[[email protected] ~]# systemctl start target
4、创建
[[email protected] ~]# targetcli
targetcli shell version 2.1.fb41
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
4.1、查看菜单结构
/> 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]
4.2、切进目录,创建LUN
/> cd backstores/block
/backstores/block> ls
o- block ............................................. [Storage Objects: 0] 
/backstores/block> create name=lun0 dev=/dev/sda3
Created block storage object lun0 using /dev/sda3.
/backstores/block> ls
o- block ............................................. [Storage Objects: 1]
  o- lun0 .................... [/dev/sda3 (15.8GiB) write-thru deactivated]
4.3、创建IQN
/backstores/block> cd /
/> cd iscsi 
/iscsi> ls
o- iscsi ..................................................... [Targets: 0]
关闭自动创建portal功能
/iscsi> set group=global auto_add_default_portal=false 
Parameter auto_add_default_portal is now 'false'.
创建IQN
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.e531d000cb15.
Created TPG 1.
/iscsi> ls
o- iscsi ..................................................... [Targets: 1]
  o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.e531d000cb15  [TPGs: 1]
    o- tpg1 ........................................ [no-gen-acls, no-auth]
      o- acls ................................................... [ACLs: 0]
      o- luns ................................................... [LUNs: 0]
      o- portals ............................................. [Portals: 0]
/iscsi> cd /
/> ls
o- / ................................................................ [...]
  o- backstores ..................................................... [...]
  | o- block ......................................... [Storage Objects: 1]
  | | o- lun0 ................ [/dev/sda3 (15.8GiB) write-thru deactivated]
  | o- fileio ........................................ [Storage Objects: 0]
  | o- pscsi ......................................... [Storage Objects: 0]
  | o- ramdisk ....................................... [Storage Objects: 0]
  o- iscsi ................................................... [Targets: 1]
  | o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4  [TPGs: 1]
  |   o- tpg1 ...................................... [no-gen-acls, no-auth]
  |     o- acls ................................................. [ACLs: 0]
  |     o- luns ................................................. [LUNs: 0]
  |     o- portals ........................................... [Portals: 0]
  o- loopback ................................................ [Targets: 0]
4.4、添加target
/> cd iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4/tpg1/
/iscsi/iqn.20...fd98d2f4/tpg1> set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1        #属性认证关闭
Parameter demo_mode_write_protect is now '0'.        #演示模式写保护关闭
Parameter authentication is now '0'.        
Parameter generate_node_acls is now '1'.        #生成节点acl
Parameter cache_dynamic_acls is now '1'.        #缓存动态acl
4.5、添加LUN
/iscsi/iqn.20...fd98d2f4/tpg1> cd luns 
/iscsi/iqn.20...2f4/tpg1/luns> ls
o- luns ......................................................... [LUNs: 0]
/iscsi/iqn.20...2f4/tpg1/luns> create /backstores/block/lun0 
Created LUN 0.
/iscsi/iqn.20...2f4/tpg1/luns> ls
o- luns ......................................................... [LUNs: 1]
  o- lun0 ........................................ [block/lun0 (/dev/sda3)]
4.6创建portal接口
/iscsi/iqn.20...2f4/tpg1/luns> cd ..
/iscsi/iqn.20...fd98d2f4/tpg1> cd portals 
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ................................................... [Portals: 0]
/iscsi/iqn.20.../tpg1/portals> create 192.168.100.160 3260
Using default IP port 3260
Created network portal 192.168.100.160:3260.
/iscsi/iqn.20.../tpg1/portals> cd /
/> ls
o- / ................................................................ [...]
  o- backstores ..................................................... [...]
  | o- block ......................................... [Storage Objects: 1]
  | | o- lun0 .................. [/dev/sda3 (15.8GiB) write-thru activated]
  | o- fileio ........................................ [Storage Objects: 0]
  | o- pscsi ......................................... [Storage Objects: 0]
  | o- ramdisk ....................................... [Storage Objects: 0]
  o- iscsi ................................................... [Targets: 1]
  | o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4  [TPGs: 1]
  |   o- tpg1 ......................................... [gen-acls, no-auth]
  |     o- acls ................................................. [ACLs: 0]
  |     o- luns ................................................. [LUNs: 1]
  |     | o- lun0 ................................ [block/lun0 (/dev/sda3)]
  |     o- portals ........................................... [Portals: 1]
  |       o- 192.168.100.160:3260 .................................... [OK]
  o- loopback ................................................ [Targets: 0]
4.7、退出targetcli
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
4.8、重启服务
[[email protected] ~]# systemctl restart target

 打开windows的iSCSI发起程序,根据端口和ip找到目标并连接:

iSCSI的原理及配置

在磁盘管理中打开后会发现该磁盘,格式化之后可以使用了。

iSCSI的原理及配置

 

二、服务器用Linux,客户端用Linux访问

        服务器的配置如上述,现在我们来看一下用Linux做客户端该怎么配置。

1、装包
[[email protected] ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[[email protected] ~]# yum install iscsi-initiator-utils.i686 -y
2、发现目标
[[email protected] ~]# iscsiadm -m discovery -t sendtargets -p 192.168.100.160192.168.100.160:3260,1 iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4
3、挂载磁盘
[[email protected] ~]# iscsiadm -mode node -T  iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4 -p 192.168.100.160:3260 -l
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4, portal: 192.168.100.160,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4, portal: 192.168.100.160,3260] successful.
4、查看挂载情况
[[email protected] ~]# fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b0f8f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648    50759679    25174016   8e  Linux LVM

Disk /dev/mapper/rhel-root: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rhel-swap: 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 / 512 bytes


Disk /dev/sdb: 17.0 GB, 16960716800 bytes, 33126400 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: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  4294967295  2147483647+  ee  GPT
[[email protected] ~]# lsscsi
[0:0:0:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sda 
[2:0:0:0]    cd/dvd  NECVMWar VMware SATA CD01 1.00  /dev/sr0 
[33:0:0:0]   disk    LIO-ORG  lun0             4.0   /dev/sdb 
5、查看分区
[[email protected] ~]# ll /dev/disk/by-path/
total 0
lrwxrwxrwx. 1 root root  9 Apr 16 11:29 ip-192.168.100.160:3260-iscsi-iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4-lun-0 -> ../../sdb
lrwxrwxrwx. 1 root root 10 Apr 16 11:29 ip-192.168.100.160:3260-iscsi-iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4-lun-0-part1 -> ../../sdb1
lrwxrwxrwx. 1 root root 10 Apr 16 11:29 ip-192.168.100.160:3260-iscsi-iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.1901fd98d2f4-lun-0-part2 -> ../../sdb2
lrwxrwxrwx. 1 root root  9 Apr 16  2019 pci-0000:00:10.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx. 1 root root 10 Apr 16  2019 pci-0000:00:10.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx. 1 root root 10 Apr 16  2019 pci-0000:00:10.0-scsi-0:0:0:0-part2 -> ../../sda2
lrwxrwxrwx. 1 root root  9 Apr 16  2019 pci-0000:02:04.0-ata-2.0 -> ../../sr0
6、查看日志
[[email protected] ~]# grep sdb /var/log/messages
Apr 16 11:29:02 localhost kernel: sd 33:0:0:0: [sdb] 33126400 512-byte logical blocks: (16.9 GB/15.7 GiB)
Apr 16 11:29:02 localhost kernel: sd 33:0:0:0: [sdb] Write Protect is off
Apr 16 11:29:02 localhost kernel: sd 33:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Apr 16 11:29:02 localhost kernel: sdb: sdb1 sdb2
Apr 16 11:29:02 localhost kernel: sd 33:0:0:0: [sdb] Attached SCSI disk
7、自动挂载
编辑文件,添加
[[email protected] ~]# vim /etc/fstab 
UUID=2bcbfdef-f655-4b96-90cd-9b5661995de6 /test xfs     defaults,_netdev 0 0
                    添加磁盘的UUID,通过blkid查看                                 开机启动关闭防火墙
重启查看效果。

删除:

        targetcli iscsi/ delete iqn....