Linux iSCSI 网络磁盘

ISCSI网络磁盘是一种利用TCP/IP协议在网络上传输SCSI命令的技术,可以实现远程访问存储设备的功能。ISCSI网络磁盘可以用于存储整合和灾难恢复的场景,也可以节省专用光纤网络的成本。

介绍

如果你想使用ISCSI网络磁盘,你需要在服务器端安装和配置ISCSI目标服务,然后在客户端安装和配置ISCSI发起程序,通过IP地址或DNS名称连接到服务器上的虚拟磁盘,并进行格式化和使用。

iSCSI 优缺点

ISCSI网络磁盘的优点有:

  • 成本低廉:ISCSI网络磁盘可以利用现有的以太网和IP网络,无需额外的光纤网络和设备,节省了硬件和维护的费用。
  • 部署简单:ISCSI网络磁盘可以通过IP地址或DNS名称进行连接,无需复杂的配置和调试,也方便了远程管理和扩展。
  • 灵活性高:ISCSI网络磁盘可以支持多种类型的存储设备,如SCSI和SATA,也可以与传统的RAID磁盘阵列结合使用,提供更大的存储容量。

ISCSI网络磁盘的缺点有:

  • 性能较低:ISCSI网络磁盘的数据传输速度受到以太网和TCP/IP协议的限制,比光纤通道存储网络要慢得多。
  • 安全性较差:ISCSI网络磁盘的数据在网络上可能会遭到拦截或篡改,需要额外的加密和验证机制来保证安全性。
  • 技术不成熟:ISCSI网络磁盘是一种相对较新的技术,市场上支持该技术的软硬件产品还不够多,可能会遇到兼容性或稳定性的问题。

ISCSI网络磁盘如何提高性能?

ISCSI网络磁盘的性能受到多种因素的影响,如果想要提高性能,可以从以下几个方面进行优化:

  • 提高网络带宽:ISCSI网络磁盘的数据传输速度取决于网络的带宽,如果网络拥塞或者带宽不足,会导致数据包的丢失或延迟,影响性能。因此,可以通过升级网络设备,使用千兆网卡和交换机,或者使用多路径技术,来提高网络的带宽和可靠性。
  • 使用专用网络:ISCSI网络磁盘的数据在网络上可能会与其他类型的流量发生冲突,造成干扰和抖动,影响性能。因此,可以通过使用专用的网络或者虚拟局域网(VLAN),来隔离ISCSI流量和其他流量,减少网络的负载和竞争。
  • 使用硬件加速:ISCSI网络磁盘的数据在传输过程中需要进行封装和解封装,以及加密和验证等操作,这些操作会消耗服务器的CPU资源和内存资源,影响性能。因此,可以通过使用硬件加速设备,如ISCSI HBA或者TCP/IP卸载引擎(TOE),来减轻服务器的负担,提高数据处理的效率。

部署

Server 端

初始化配置

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

#关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

安装 iSCSI 服务端软件包

yum -y install targetcli

配置 iSCSI 服务端

[root@Demo01 ~]# targetcli
targetcli shell version 2.1.53
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]
/>

创建iSCSI target名称及配置共享资源。

/> cd /backstores/block
/backstores/block> create disk01 /dev/sdb
Created block storage object disk0 using /dev/md0.
/backstores/block> cd /
/> ls
o- / ............................................................................ [...]
o- backstores ................................................................. [...]
| o- block ..................................................... [Storage Objects: 1]
| | o- disk0 ............................ [/dev/sdb (20.0GiB) write-thru deactivated]
| |   o- alua ...................................................... [ALUA Groups: 1]
| |     o- default_tg_pt_gp ...........................[ALUA state: Active/optimized]
| o- fileio .................................................... [Storage Objects: 0]
| o- pscsi ..................................................... [Storage Objects: 0]
| o- ramdisk ................................................... [Storage Objects: 0]
o- iscsi ............................................................... [Targets: 0]
o- loopback ............................................................ [Targets: 0]
/>

创建iSCSI target名称及配置共享资源。

/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi ................................................................... [Targets: 1]
o- iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be ............. [TPGs: 1]
  o- tpg1 ...................................................... [no-gen-acls, no-auth]
    o- acls ................................................................. [ACLs: 0]
    o- luns ................................................................. [LUNs: 0]
    o- portals ........................................................... [Portals: 1]
      o- 0.0.0.0:3260 ......................

创建一个设备目录

/iscsi> cd iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be /
/iscsi/iqn.20....745b21d6cad5> cd tpg1/luns
/iscsi/iqn.20...ad5/tpg1/luns> create /backstores/block/disk0
Created LUN 0.

设置控制访问ACL

/iscsi/iqn.20...ad5/tpg1/luns> cd ..
/iscsi/iqn.20...21d6cad5/tpg1> cd acls
/iscsi/iqn.20...ad5/tpg1/acls> create iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be
Created Node ACL for iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be
Created mapped LUN 0.

设置iSCSI服务端的监听IP地址和端口号。

/iscsi/iqn.20...ad5/tpg1/acls> cd ../portals/
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ................................................................... [Portals: 1]
o- 0.0.0.0:3260 .................................................................... [OK]
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/iqn.20.../tpg1/portals> create 192.168.10.10
Using default IP port 3260
Created network portal 192.168.10.10:3260.

配置完成最后 ls 查看

/> ls
o- / .......................................................... [...]
o- backstores ............................................... [...]
| o- block ................................... [Storage Objects: 1]
| | o- disk01 ........... [/dev/sdb (20.0GiB) write-thru activated]
| |   o- alua .................................... [ALUA Groups: 1]
| |     o- default_tg_pt_gp ........ [ALUA state: Active/optimized]
| 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.demo01.x8664:sn.c9eccc3e35be [TPGs: 1]
|   o- tpg1 ................................ [no-gen-acls, no-auth]
|     o- acls ........................................... [ACLs: 1]
|     | o- iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be [Mapped LUNs: 1]
|     |   o- mapped_lun0 ................. [lun0 block/disk01 (rw)]
|     o- luns ........................................... [LUNs: 1]
|     | o- lun0 ...... [block/disk01 (/dev/sdb) (default_tg_pt_gp)]
|     o- portals ..................................... [Portals: 1]
|       o- 192.168.10.25:3260 ................................ [OK]
o- loopback .......................................... [Targets: 0

Client 端

安装客户端iSCSI 软件

yum -y install iscsi-initiator-utils

配置客户端

[root@linuxprobe ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be
[root@linuxprobe ~]# systemctl restart iscsid
[root@linuxprobe ~]# systemctl enable iscsid

连接访问iSCSI

iscsiadm -m discovery -t st -p 192.168.10.25
192.168.10.25:3260,1 iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be

iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.demo01.x8664:sn.c9eccc3e35be -p 192.168.10.25 --login

格式化

mkfs.xfs /dev/sdb
meta-data=/dev/sdb               isize=512    agcount=16, agsize=654720 blks
        =                       sectsz=512   attr=2, projid32bit=1
        =                       crc=1        finobt=1, sparse=1, rmapbt=0
        =                       reflink=1
data    =                       bsize=4096   blocks=10475520, imaxpct=25
        =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
        =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

挂载

mkdir /data
mount /dev/sdb /data

查看挂载情况

df -TH
Filesystem             Type     Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs       19G  1.4G   17G   8% /
devtmpfs               devtmpfs 942M     0 942M   0% /dev
tmpfs                   tmpfs     954M     0 954M   0% /dev/shm
tmpfs                   tmpfs     954M   11M 944M   2% /run
tmpfs                   tmpfs     954M     0 954M   0% /sys/fs/cgroup
/dev/sda2               xfs       1.1G 144M 920M  14% /boot
/dev/sda1               vfat     210M   12M 198M   6% /boot/efi
tmpfs                   tmpfs     191M     0 191M   0% /run/user/0
/dev/sdb               xfs     20G  19M 20G   1% /data