一、存储概述:

1)企业存储应用内容: 账号、图片、网页、计费、程序代码、电影等;

2)企业存储分类: DAS(直接存储)、SAN(网络区域存储)、NAS(网络附加存储);

三种方式的初衷都是存储,只是实现方式有些区别;

三者的存储效率:SAN > NAS > DAS ;

共享架构 存储 共享存储方案_IP

## 二、三种存储详解:
DAS直接附加存储:
一个你日思夜想,却不知芳名的姑娘
1)春日尚好,一阵风从学校的走廊吹过,吹起了她的发丝,从今以后,至此一秒宛若终生。
2)DAS就是这样的一个姑娘,你与她几乎每天都会相见,但却从来不知道她的名字。因为它是个人电脑中的存储,因为它是服务器中的一部分,将外置存储通设备通过SCSI或FC接口直接连接到应用服务器上;

共享架构 存储 共享存储方案_Storage_02


NAS网络附加存储: 遗世独立的“知心爱人”

1)可以理解为便捷的局域网存储装置,是一种通过网络达成存储目的的设备。NAS是标准的文件级存储方法,采用网络技术(TCP/IP、ATM、FDDI),通过网络交换机连接存储系统和服务器主机来建立存储私网网络附加存储。其主要特征是把存储设备、网络接口和以太网技术集成在一起,直接通过以太网网络存取数据。能够快速实现部门级存储容量需求与文件传输需求;

2)具有独立性与良好的兼容性。不但拥有自己的操作系统,同时也无需改造即可用于混合Unix/Windows NT局域网内,与各种操作系统兼容,同时具有很好的灵活性;

3)厂家: 群晖 威联通 希捷 FreeNAS 软件;

共享架构 存储 共享存储方案_Storage_03


SAN网络区域存储: 一个很会“拉帮结伙”的姑娘

1)不知道你有没有遇到过这样一种姑娘,大方、仗义、泼辣,身边还围着一群年纪相仿的小伙伴。SAN就是这种姑娘,而且正是因为SAN的这种特性,让楼上DAS的缺陷得到了弥补;

2)SAN是一个采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。适用于高效的企业级应用中,从理论上来讲,SAN支持数以百计的磁盘,提供了海量的存储空间,解决了大容量存储问题;从逻辑层面,这个海量空间可以按需要分成不同大小的LUN,再分配给服务器,也解决了只需要小容量存储的问题;

3)SAN实际是一种专门为存储建立的独立于TCP/IP网络之外的专用网络。目前一般的SAN提供2Gb/S到4Gb/S的传输数率,同时SAN网络独立于数据网络存在,因此存取速度很快,另外SAN一般采用高端的RAID阵列,使SAN的性能在几种专业存储方案中傲视群雄;

4)SAN由于其基础是一个专用网络,因此扩展性很强,不管是在一个SAN系统中增加一定的存储空间还是增加几台使用存储空间的服务器都非常方便。SAN系统可以方便高效的实现数据的集中备份;

5)SAN存储分类:FC-SAN和IP-SAN,其中FC-SAN为通过光纤通道协议转发SCSI协议,IP-SAN通过TCP协议转发SCSI协议;

共享架构 存储 共享存储方案_IP_04


总结:京东搜索NAS设备和SAN设备进行对比

共享架构 存储 共享存储方案_linux_05

三、ISCSI概念:

概述: ISCSI技术是一种由IBM公司2001年最先研究开发的,iSCSI技术实现了物理硬盘设备与TCP/TP网络传输协议的相互结合,使得用户可以通过互联网方便的获取到远程机房提供的共享存储资源,一种通过逻辑层面实现的NAS;

功能:iSCSI 的主要功能是在 TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。此外,iSCSI 提供了在 IP 网络封装 SCSI 命令,且让数据存储以数据块的形式运行在TCP上。

共享架构 存储 共享存储方案_共享架构 存储_06

核心概念:

1)iscsi target: 连接所用的目标器,提供数据存储的ISCSI磁盘阵列或具有iscsi功能的设备,许多的iscsi的target软件是收费且闭源的。

2)LUN: 连接target及设置客户端访问控制的一个逻辑单元。

3)iscsi Initiator: iscsi的客户端软件,支持Windows与linux连接iscsi target(目标)。

4)IQN: iSCSI协议中,initiator和target是通过名字进行通信的,因此,每一个iSCSI节点(即initiator)必须拥有一个iSCSI名字。iqn(iSCSI Qualified Name)格式是:“iqn”+“年月”+“.”+“域名颠倒”+“:”+“设备的具体名称”,之所以颠倒域名是为了避免可能的冲突。

共享架构 存储 共享存储方案_共享架构 存储_07

四、案例:配置ISCSI服务:

案例环境

系统

IP地址

主机名(角色)

备注

centos 7.4

192.168.100.101

server.iscsi.com

添加三块硬盘sdb、sdc、sdd,创建RAID 5卷/dev/md1

centos 6.5

192.168.100.150

client.iscsi.com

win7

192.168.100.222

client

实验步骤;
配置ISCSI服务端节点的底层存储服务;
配置ISCSI程序;
配置ISCSI客户端(Linux);
配置ISCSI客户端(Win);

配置ISCSI服务端节点的底层存储服务;

共享架构 存储 共享存储方案_共享架构 存储_08

fdisk /dev/sdb
#进入之后我就简写了
n   p   回车   回车   回车   t   fd   w

fdisk /dev/sdc
n   p   回车   回车   回车   t   fd   w

fdisk /dev/sdc
n   p   回车   回车   回车   t   fd   w
partx -a /dev/sdb
partx -a /dev/sdc
partx -a /dev/sdd
yum -y install mdadm
mdadm -C /dev/md1 -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1
cat /proc/mdstat

输出

................]  recovery =  8.6% (1810512/20954112) finish=1.5min speed=201168K/sec
      
unused devices: <none>
mkfs -t xfs /dev/md1 
#输出
meta-data=/dev/md1               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
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=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

之后我们reboot重启

mdadm -D /dev/md1

输出

/dev/md1:
           Version : 1.2
     Creation Time : Thu Jun 14 20:22:20 2018
        Raid Level : raid5
        Array Size : 41906176 (39.96 GiB 42.91 GB)
     Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
...

配置ISCSI程序;

yum -y install targetd targetcli					##安装iscsi目标器及管理工具
systemctl start targetd
systemctl enable targetd
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]
/> cd /backstores/block 			##配置共享存储设备disk0
/backstores/block> create disk0 /dev/md1 
Created block storage object disk0 using /dev/md1.
/backstores/block> ls
o- block .......................................................................... [Storage Objects: 1]
  o- disk0 ................................................. [/dev/md1 (40.0GiB) write-thru deactivated]
    o- alua ........................................................................... [ALUA Groups: 1]
      o- default_tg_pt_gp ............................................... [ALUA state: Active/optimized]
/backstores/block> cd /
/> ls
o- / .............................................................................................. [...]
  o- backstores ................................................................................... [...]
  | o- block ....................................................................... [Storage Objects: 1]
  | | o- disk0 .............................................. [/dev/md1 (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]
/> cd iscsi 						
/iscsi> create						##生成共享存储的默认名称
Created target iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> cd iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5/			##查看共享存储
/iscsi/iqn.20....86fd1469aed5> ls
o- iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5 ................................... [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 .............................................................................. [OK]
/iscsi/iqn.20....86fd1469aed5> cd tpg1/luns 
/iscsi/iqn.20...ed5/tpg1/luns> create /backstores/block/disk0 				##将共享存储名称与共享设备disk0相关联
Created LUN 0.
/iscsi/iqn.20...ed5/tpg1/luns> cd ..
/iscsi/iqn.20...1469aed5/tpg1> cd acls 						##配置ISCSI的acl访问
/iscsi/iqn.20...ed5/tpg1/acls> create iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5:client				##注册名称
Created Node ACL for iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5:client
Created mapped LUN 0.
/iscsi/iqn.20...ed5/tpg1/acls> cd ..
/iscsi/iqn.20...1469aed5/tpg1> cd portals/					##设置ISCSI共享服务监听的端口地址
/iscsi/iqn.20.../tpg1/portals> create 192.168.100.101
Using default IP port 3260
Could not create NetworkPortal in configFS					##可以忽略此错误
/iscsi/iqn.20.../tpg1/portals> ls /
o- / .............................................................................................. [...]
  o- backstores ................................................................................... [...]
  | o- block ....................................................................... [Storage Objects: 1]
  | | o- disk0 ................................................ [/dev/md1 (40.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.server.x8664:sn.86fd1469aed5 ............................... [TPGs: 1]
  |   o- tpg1 .................................................................... [no-gen-acls, no-auth]
  |     o- acls ............................................................................... [ACLs: 1]
  |     | o- iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5:client ........... [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ...................................................... [lun0 block/disk0 (rw)]
  |     o- luns ............................................................................... [LUNs: 1]
  |     | o- lun0 ........................................... [block/disk0 (/dev/md1) (default_tg_pt_gp)]
  |     o- portals ......................................................................... [Portals: 1]
  |       o- 0.0.0.0:3260 .......................................................................... [OK]
  o- loopback .............................................................................. [Targets: 0]
/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
systemctl restart targetd
netstat -utpln |grep 3260
 tcp        0      0 0.0.0.0:3260            0.0.0.0:*               LISTEN      -

配置ISCSI客户端(Linux);

yum -y install iscsi-initiator-utils
echo "InitiatorName=iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5:client" >/etc/iscsi/initiatorname.iscsi
/etc/init.d/iscsid start
chkconfig iscsid on
iscsiadm -m discovery -t st -p 192.168.100.101			##扫描存储
正在启动 iscsid:                                          [确定]
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5 -p 192.168.100.101 --login										##注册存储
##输出
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5, portal: 192.168.100.101,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.server.x8664:sn.86fd1469aed5, portal: 192.168.100.101,3260] successful.
file /dev/sdb 
 mkfs -t ext4 /dev/sdb
 mkdir /benet
 blkid | grep /dev/sdb
 echo "UUID=$(blkid | grep /dev/sdb |awk '{print $2}'|awk -F '"' '{print $2}') /benet ext4 defaults,_netdev 0 0" >>/etc/fstab
 tail -1 /etc/fstab 
 df -hT |grep sdb
 /dev/sdb                   ext4    40G  176M   38G   1% /benet

dd if=/dev/zero of=/benet/1.file bs=1G count=1
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,14.5888 秒,73.6 MB/秒

配置ISCSI客户端(Win);

共享架构 存储 共享存储方案_linux_09


共享架构 存储 共享存储方案_Storage_10


共享架构 存储 共享存储方案_Storage_11


共享架构 存储 共享存储方案_linux_12


共享架构 存储 共享存储方案_Storage_13


共享架构 存储 共享存储方案_IP_14


共享架构 存储 共享存储方案_IP_15

共享架构 存储 共享存储方案_共享架构 存储_16


总结:客户端操作系统不同,不同操作系统的客户端连接时,每次都需要格式化ISCSI设备,但是相同种类的操作系统不需要进行格式化,可以开启两台win 7进行测试挂载ISCSI设备;