Storage
企业存储往集中式管理必定是未来的方向,这可以很好的规避单机故障而导致数据丢失或出错。虽然到目前为止,iscsi存储应该在什么环境下使用,但是iscsi前途应该是光明的,他为中小企业以低廉的构建成本构建出优秀存储性能的存储提供了可行的解决方案。
在存储的世界中,有这各色各样的名词和术语,常见的SCSI,FC,NAS,DAS,SAN等。
- SCSI
SCSI是小型计算机系统接口(Small Computer System Interface)的简称,SCSI作为输入输出接口,主要用于硬盘、光盘、磁带机、扫描仪等设备 - FC
FC是光纤通道(Fibre Channel)的简称,是一种适合于千兆数据传输的、成熟而安全的解决方案。与传统的SCSI技术相比,FC提供更高的数据传输速率,更远的传输距离,更多的设备连接支持,更稳定的性能,更简易的安装。 - NAS
网络接入存储(Network-Attached Storage), 它通过网络连接存储系统,建立专门的数据存储的私有网络,用户通过TCP/IP协议访问数据,业界常见的共享协议有NFS,CIFS来实现文件级别数据共享。但是NAS也有一定的局限性,它会受到网络带宽和网络拥堵的影响,在一定程度上限制了NAS的网络传输能力 - DAS
直连式存储(Direct-Attached Storage),是指将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上。当服务器在地理上比较分散,很难通过远程进行互连时,DAS是比较好的解决方案。但是这种式存储只能通过与之连接的主机进行访问,不能实现数据与其他主机的共享,同时,DAS会占用服务器操作系统资源,例如CPU资源、IO资源等,并且数据量越大,占用操作系统资源就越严重。 - SAN
存储区域网络(Storage Area Network),SAN由3个部分组成,分别是连接设备(如路由器、光纤交换机和Hub)、接口(如SCSI、FC)、通信协议(如IP和SCSI)。这3个部分再加上存储设备和服务器就构成了一个SAN系统。SAN捉供了一个灵活的、高性能的和高扩展性的存储网络环境,它可以更加有效地传输海量的数据块。由于采用了光纤接口,因此SAN还具有更高的带宽,同时,SAN也使统一管理和集中控制实现简化。
ISCSI
iSCSI,即Internet SCSI,是IETF制订的一项标准,用于将SCSI数据块映射为以太网数据包。从根本上说,它是一种基于IP Storage理论的新型存储技术,该技术将存储行业广泛应用的SCSI接口技术与IP网络技术相结合,可以在IP网络上构建SAN。简单地说,iSCSI就是在IP网络上运行SCSI协议的一种网络存储技术。
iSCSI的优势主要表现为:首先,iSCSI沿用TCP/IP协议,而TCP/IP是在网络方面最通用、最成熟的协议,且IP网络的基础建设非常完善,同时,SCSI技术是被磁盘和磁带等设备广泛采用的存储标准,这两点使iSCSI的建设费用和维护成本非常低廉;其次,iSCSI支持一般的以太网交换机而不是特殊的光纤通道交换机,从而减少了异构网络带来的麻烦;还有,iSCSI是通过IP封包传输存储命令,因此可以在整个Internet上传输数据,没有距离的限制。
在iSCSI技术出现后,通过IP技术搭建的存储网络也应运而生,SAN技术也就出现了两种不同的实现方式,即FC SAN与IP SAN。简单来说,以光纤搭建的存储网络就是FC SAN.以iSCSI技术搭建的存储网络叫做IP SAN。
IP SAN
Linux提供了一整套的ISCSI的解决方法,下面我们来尝试构建一个IP SAN。
iSCSI 的主要功能是在TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。
- Target Server
1.准备磁盘设备
2、安装程序包、启动服务
3、创建target
4、创建lun
5、授权
1 | ~]# yum install -y scsi-target-utils |
2 | ~}# systemctl start tgtd |
3 | ~]# tgtadm --lld iscsi --mode target --op show |
4 | ~]# tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2017-05.com.jusene:t1 |
5 | ~]# tgtadm --lld iscsi --mode target --op show |
6 | Target 1: iqn.2017-05.com.jusene:t1 |
7 | System information: |
8 | Driver: iscsi |
9 | State: ready |
10 | I_T nexus information: |
11 | LUN information: |
12 | LUN: 0 |
13 | Type: controller |
14 | SCSI ID: IET 00010000 |
15 | SCSI SN: beaf10 |
16 | Size: 0 MB, Block size: 1 |
17 | Online: Yes |
18 | Removable media: No |
19 | Prevent removal: No |
20 | Readonly: No |
21 | SWP: No |
22 | Thin-provisioning: No |
23 | Backing store type: null |
24 | Backing store path: None |
25 | Backing store flags: |
26 | Account information: |
27 | ACL information: |
28 | ~]# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sdb |
29 | ~]# tgtadm --lld iscsi --mode target --op show |
30 | Target 1: iqn.2017-05.com.jusene:t1 |
31 | System information: |
32 | Driver: iscsi |
33 | State: ready |
34 | I_T nexus information: |
35 | LUN information: |
36 | LUN: 0 |
37 | Type: controller |
38 | SCSI ID: IET 00010000 |
39 | SCSI SN: beaf10 |
40 | Size: 0 MB, Block size: 1 |
41 | Online: Yes |
42 | Removable media: No |
43 | Prevent removal: No |
44 | Readonly: No |
45 | SWP: No |
46 | Thin-provisioning: No |
47 | Backing store type: null |
48 | Backing store path: None |
49 | Backing store flags: |
50 | LUN: 1 |
51 | Type: disk |
52 | SCSI ID: IET 00010001 |
53 | SCSI SN: beaf11 |
54 | Size: 21475 MB, Block size: 512 |
55 | Online: Yes |
56 | Removable media: No |
57 | Prevent removal: No |
58 | Readonly: No |
59 | SWP: No |
60 | Thin-provisioning: No |
61 | Backing store type: rdwr |
62 | Backing store path: /dev/sdb |
63 | Backing store flags: |
64 | Account information: |
65 | ACL information: |
66 | ~]# tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 10.211.55.0/24 |
67 | ~]# tgtadm --lld iscsi --mode target --op show |
68 | Target 1: iqn.2017-05.com.jusene:t1 |
69 | System information: |
70 | Driver: iscsi |
71 | State: ready |
72 | I_T nexus information: |
73 | LUN information: |
74 | LUN: 0 |
75 | Type: controller |
76 | SCSI ID: IET 00010000 |
77 | SCSI SN: beaf10 |
78 | Size: 0 MB, Block size: 1 |
79 | Online: Yes |
80 | Removable media: No |
81 | Prevent removal: No |
82 | Readonly: No |
83 | SWP: No |
84 | ▽ Thin-provisioning: No |
85 | Backing store type: null |
86 | Backing store path: None |
87 | Backing store flags: |
88 | LUN: 1 |
89 | Type: disk |
90 | SCSI ID: IET 00010001 |
91 | SCSI SN: beaf11 |
92 | Size: 21475 MB, Block size: 512 |
93 | Online: Yes |
94 | Removable media: No |
95 | Prevent removal: No |
96 | Readonly: No |
97 | SWP: No |
98 | Thin-provisioning: No |
99 | Backing store type: rdwr |
100 | Backing store path: /dev/sdb |
101 | Backing store flags: |
102 | Account information: |
103 | ACL information: |
104 | 10.211.55.0/24 |
这样一个target server就已经部署好了,接下来我们需要使用initiator来使用target。
- Initiator
1.安装程序包,配置initiator的名字,并启动服务
2.使用iscsiadm实现target的发现和注册
1 | ~]# yum install -y iscsi-initiator-utils |
2 | ~]# vim /etc/iscsi/initiatorname.iscsi |
3 | InitiatorName=iqn.2017-05.com.jusene:6ea0c4f895 |
4 | ~]# for i in iscsi iscsid;do systemctl start $i ;done |
5 | ~]# iscsiadm -m discovery -t st -p 10.211.55.39:3260 |
6 | 10.211.55.39:3260,1 iqn.2017-05.com.jusene:t1 |
7 | ~]# ls /var/lib/iscsi/send_targets/10.211.55.39,3260/ |
8 | iqn.2017-05.com.jusene:t1,10.211.55.39,3260,1,default/ st_config |
9 | ~]# iscsiadm -m node -T iqn.2017-05.com.jusene:t1 -p 10.211.55.39:3260 -l |
10 | Logging in to [iface: default, target: iqn.2017-05.com.jusene:t1, portal: 10.211.55.39,3260] (multiple) |
11 | Login to [iface: default, target: iqn.2017-05.com.jusene:t1, portal: 10.211.55.39,3260] successful. |
12 | ~]# fdisk /dev/sdb |
13 | Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors |
14 | Units = sectors of 1 * 512 = 512 bytes |
15 | Sector size (logical/physical): 512 bytes / 512 bytes |
16 | I/O size (minimum/optimal): 512 bytes / 512 bytes |
我们可以看到在initiator上看见了在target上设备,虽然initiator可以持久保持这个连接,但是target是通过tgtadm来配置的,它并不持久,我们需要通过写配置文件来实现target server。
先删除initialtor上的相关配置:
1 | ~]# iscsiadm -m node -T iqn.2017-05.com.jusene:t1 -p 10.211.55.39:3260 -u |
2 | Logging out of session [sid: 2, target: iqn.2017-05.com.jusene:t1, portal: 10.211.55.39,3260] |
3 | Logout of [sid: 2, target: iqn.2017-05.com.jusene:t1, portal: 10.211.55.39,3260] successful. |
4 | ~]# iscsiadm -m node -T iqn.2017-05.com.jusene:t1 -p 10.211.55.39:3260 -o delete |
5 | ~]# ls /var/lib/iscsi/send_targets/10.211.55.39,3260/ |
6 | st_config |
- Target Server
1
~]# tgtadm -L iscsi -m logicalunit -o delete -t 1 -l 1
2
~]# tgtadm -L iscsi -m target -o delete -t 1
3
~]# tgtadm -L iscsi -m target -o show
4
~]# cd /etc/tgt/
5
~]# vim targets.conf
6
<target iqn.2017-05.com.jusene:t2>
7
backing-store /dev/sdb
8
initiator-address 10.211.55.0/24
9
</target>
10
~]# systemctl restart tgtd
11
~]# tgtadm -L iscsi -m target -o show
12
Target 1: iqn.2017-05.com.jusene:t2
13
System information:
14
Driver: iscsi
15
State: ready
16
I_T nexus information:
17
LUN information:
18
LUN: 0
19
Type: controller
20
SCSI ID: IET 00010000
21
SCSI SN: beaf10
22
Size: 0 MB, Block size: 1
23
Online: Yes
24
Removable media: No
25
Prevent removal: No
26
Readonly: No
27
SWP: No
28
Thin-provisioning: No
29
Backing store type: null
30
Backing store path: None
31
Backing store flags:
32
LUN: 1
33
Type: disk
34
SCSI ID: IET 00010001
35
SCSI SN: beaf11
36
Size: 21475 MB, Block size: 512
37
Online: Yes
38
Removable media: No
39
Prevent removal: No
40
Readonly: No
41
SWP: No
42
Thin-provisioning: No
43
Backing store type: rdwr
44
Backing store path: /dev/sdb
45
Backing store flags:
46
Account information:
47
ACL information:
48
10.211.55.0/24
上面我们做了基于ip的访问认证,接下来我们做下基于用户的认证:
Target Server
1
~]# vim /etc/tgt/targets.conf
2
<target iqn.2017-05.com.jusene:t2>
3
backing-store /dev/sdb
4
backing-store /dev/sdc
5
initiator-address 10.211.55.0/24
6
incominguser jusene jusene
7
</target>
8
~]# tgtadm -L iscsi -m target -o show
9
Target 1: iqn.2017-05.com.jusene:t2
10
System information:
11
Driver: iscsi
12
State: ready
13
I_T nexus information:
14
LUN information:
15
LUN: 0
16
Type: controller
17
SCSI ID: IET 00010000
18
SCSI SN: beaf10
19
Size: 0 MB, Block size: 1
20
Online: Yes
21
Removable media: No
22
Prevent removal: No
23
Readonly: No
24
SWP: No
25
Thin-provisioning: No
26
Backing store type: null
27
Backing store path: None
28
Backing store flags:
29
LUN: 1
30
Type: disk
31
SCSI ID: IET 00010001
32
SCSI SN: beaf11
33
Size: 21475 MB, Block size: 512
34
Online: Yes
35
Removable media: No
36
Prevent removal: No
37
Readonly: No
38
SWP: No
39
Thin-provisioning: No
40
Backing store type: rdwr
41
Backing store path: /dev/sdb
42
Backing store flags:
43
Account information:
44
jusene
45
ACL information:
46
10.211.55.0/24
initatior
1
~]# vim /etc/iscsi/iscsi.conf
2
node.session.auth.username = jusene
3
node.session.auth.password = jusene
4
5
discovery.sendtargets.auth.username = jusene
6
discovery.sendtargets.auth.password = jusene