linux-运维进阶-22 iSCSI网络存储服务

linux-运维进阶-22 iSCSI网络存储服务

概念解析

  iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。

​ iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。

  iSCSI使用 TCP/IP 协议(一般使用TCP端口860和3260)。 本质上,iSCSI 让两个主机通过 IP 网络相互协商然后交换SCSI命令。这样一来,iSCSI 就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)。

SCSI

  小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间的系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。

  为了进一步提升硬盘存储设备的读写速度和性能,人们一直在努力改进物理硬盘设备的接口协议。当前的硬盘接口类型主要有IDE、SCSI和SATA这3种。

IDE是一种成熟稳定、价格便宜的并行传输接口。

SATA是一种传输速度更快、数据校验更完整的串行传输接口。

SCSI是一种用于计算机和硬盘、光驱等设备之间系统级接口的通用标准,具有系统资源占用率低、转速高、传输速度快等优点。

  不论使用什么类型的硬盘接口,硬盘上的数据总是要通过计算机主板上的总线与CPU、内存设备进行数据交换,这种物理环境上的限制给硬盘资源的共享带来了各种不便。后来,IBM公司开始动手研发基于TCP/IP协议和SCSI接口协议的新型存储技术,这也就是我们目前能看到的互联网小型计算机系统接口(iSCSI,Internet Small Computer System Interface)。这是一种将SCSI接口与以太网技术相结合的新型存储技术,可以用来在网络中传输SCSI接口的命令和数据。这样,不仅克服了传统SCSI接口设备的物理局限性,实现了跨区域的存储资源共享,还可以在不停机的状态下扩展存储容量。

  为了让各位读者做到知其然,知其所以然,以便在工作中灵活使用这项技术,下面将讲解一下iSCSI技术在生产环境中的优势和劣势。首先,iSCSI存储技术非常便捷,在访问存储资源的形式上发生了很大变化,摆脱了物理环境的限制,同时还可以把存储资源分给多个服务器共同使用,因此是一种非常推荐使用的存储技术。但是,iSCSI存储技术受到了网速的制约。以往,硬盘设备直接通过主板上的总线进行数据传输,现在则需要让互联网作为数据传输的载体和通道,因此传输速率和稳定性是iSCSI技术的瓶颈。随着网络技术的持续发展,相信iSCSI技术也会随之得以改善。

  既然要通过以太网来传输硬盘设备上的数据,那么数据是通过网卡传入到计算机中的么?这就有必要向大家介绍iSCSI-HBA卡了(见图17-1)。与一般的网卡不同(连接网络总线和内存,供计算机上网使用),iSCSI-HBA卡连接的则是SCSI接口或FC(光纤通道)总线和内存,专门用于在主机之间交换存储数据,其使用的协议也与一般网卡有本质的不同。运行Linux系统的服务器会基于iSCSI协议把硬盘设备命令与数据打包成标准的TCP/IP数据包,然后通过以太网传输到目标存储设备,而当目标存储设备接收到这些数据包后,还需要基于iSCSI协议把TCP/IP数据包解压成硬盘设备命令与数据。

iSCSI网络存储服务

创建一个raid磁盘阵列

添加4个硬盘

开机,检查硬盘是否添加成功

1
2
3
4
5
6
7
[root@localhost ~]# ll /dev/sd?
brw-rw----. 1 root disk 8, 0 Feb 7 07:08 /dev/sda
brw-rw----. 1 root disk 8, 16 Feb 7 07:08 /dev/sdb
brw-rw----. 1 root disk 8, 32 Feb 7 07:08 /dev/sdc
brw-rw----. 1 root disk 8, 48 Feb 7 07:08 /dev/sdd
brw-rw----. 1 root disk 8, 64 Feb 7 07:08 /dev/sde
[root@localhost ~]#

创建raid阵列

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# yum install mdadm.x86_64 -y
[root@localhost ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd{b,c,d,e}
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Sep 22 14:06:23 2018
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
……………………………………………………………………………………………………略

配置ISCSI服务

安装iscsi服务端、iscsi初始化和配置服务所需的工具

1
[root@localhost ~]# yum -y install targetd targetcli iscsi-initiator-utils

开启并设置iscsi服务开机启动

1
2
3
4
[root@localhost ~]# systemctl start targetd
[root@localhost ~]# systemctl enable targetd
Created symlink from /etc/systemd/system/multi-user.target.wants/targetd.service to /usr/lib/systemd/system/targetd.service.
[root@localhost ~]#

进入交互式iSCSI子系统配置iSCSI服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
[root@localhost ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb46
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服务提供资源池

/> cd /backstores/block
/backstores/block> create disk0 /dev/md0
Created block storage object disk0 using /dev/md0.
/backstores/block> cd /
/> ls
o- / ............................................................................. [...]
o- backstores .................................................................. [...]
| o- block ...................................................... [Storage Objects: 1]
| | o- disk0 ............................. [/dev/md0 (40.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服务提供主机提供一个主机名,敲完create后将下面的iqn复制下来
/> cd iscsi
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.70683bd3ee6d.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

这里cd的就是上面复制下来的iqn
/iscsi> cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.70683bd3ee6d

# 为客户机划分出lun提供存储资源
/iscsi/iqn.20....70683bd3ee6d> cd tpg1/luns
/iscsi/iqn.20...e6d/tpg1/luns> create /backstores/block/disk0
Created LUN 0.
/iscsi/iqn.20...e6d/tpg1/luns> cd ..



# 设置允许访问服务器控制访问列表,这里的iqn是linux客户端装完iscsi-initiator-utils之后在/etc/iscsi/initiatorname.iscsi 文件中得到的客户机iqn,注意不是上面用过的iqn,为了与之前那个iqn区分,咱们称呼它为iqn2吧。如下图:

/iscsi/iqn.20...3bd3ee6d/tpg1> cd acls
/iscsi/iqn.20...e6d/tpg1/acls> create iqn.1994-05.com.redhat:0191b6bea67
Created Node ACL for iqn.1994-05.com.redhat:0191b6bea67
Created mapped LUN 0.
/iscsi/iqn.20...e6d/tpg1/acls> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@localhost ~]#

咱们在XShell那里复制一个会话,在新的窗口复制下来新的iqn作为iqn2,然后回到原来那个窗口即可粘贴使用。

防火墙放行服务端的3260端口

1
2
3
4
5
[root@localhost ~]# firewall-cmd --add-port=3260/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]#

现在再开一台linux虚拟机作为测试用的客户机,这里以client2为例:

Linux客户机挂载服务端上的ISCSI硬盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@localhost ~]# yum -y install iscsi-initiator-utils
[root@localhost ~]# vi /etc/iscsi/initiatorname.iscsi

这里将其iqn修改为咱们刚刚复制的iqn2
InitiatorName=iqn.1994-05.com.redhat:0191b6bea67
保存退出,重启iscsid服务
[root@localhost ~]# systemctl restart iscsid
[root@localhost ~]# systemctl enable iscsid
Created symlink from /etc/systemd/system/multi-user.target.wants/iscsid.service to /usr/lib/systemd/system/iscsid.service.
[root@localhost ~]#

# 没有挂载之前我们只有一块硬盘
[root@localhost ~]# ll /dev/sd?
brw-rw----. 1 root disk 8, 0 2月 7 22:18 /dev/sda
[root@localhost ~]#


挂载,再次检查,发现多出来一块硬盘,第二块就是我们挂载上来的iscsi硬盘(这里192.168.141.12是iscsi服务器的ip)
[root@localhost ~]# iscsiadm -m discovery -t st -p 192.168.141.12 --login
192.168.141.12:3260,1 iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.70683bd3ee6d
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.70683bd3ee6d, portal: 192.168.141.12,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.70683bd3ee6d, portal: 192.168.141.12,3260] successful.
[root@localhost ~]# ll /dev/sd?
brw-rw----. 1 root disk 8, 0 2月 7 22:18 /dev/sda
brw-rw----. 1 root disk 8, 16 2月 7 22:31 /dev/sdb
[root@localhost ~]#

windows客户机挂载iSCSI

首先,先看看我电脑本来有几个硬盘:

可以看到,本来我的电脑只有俩硬盘,一会咱们挂载成功后,理论上会多出一个硬盘来。

打开windows自带的iSCSI发起程序,在windows10搜索栏即可搜索

目标填上IP地址,选择快速连接点击完成(这里我已经连过一次了,下面那个可以不管,也可以刷新一下即可)

为了能连接上,修改配置中的客户端名,修改成之前我们所谓的iqn2

改完以后选择连接

显示已连接

现在再次看看我电脑上有几个硬盘:

我刚打开,就跳出个消息,说是要让我初始化磁盘2,点击确定即可,如下图:

现在将磁盘管理全屏显示(太小了磁盘2就被遮住了),如下图:

如上图,多出来的磁盘2就是咱们挂载上去的磁盘了。

右键磁盘2,新建简单卷,然后一直点击下一步即可建成。

接下来我们打开文件资源管理器,如下图,可以看到一个新加卷:

本篇到此结束

欢迎打赏,谢谢
------ 本文结束------
0%