ISCSI

来源:互联网 发布:增长率的算法 编辑:程序博客网 时间:2024/05/08 00:05

本次实验在server(172.25.254.93)上和client(172.25.254.91)上完成
一,ISCSI的由来和简介:

SAN(StorageAreaNetworkd,存储区域网络)是真正专注于企业级的存储。SAN采用一个分离网络*(从传统的局域网中分离)连接所有的存储器和服务器*,这个网络可以采用高性能的实现技术,如光线通道(FiberChannel),也可容纳SCSI协议,使数据块的传送更快更有效,用户也可以自由增加磁盘阵列,磁带库等设备。

采用高速的FIBRECHANNEL作为传输媒介的SAN具有光纤信道在距离、性能和连接性等方面的优势,如果结合光纤通道交换机,则可以提供高达2Gb/s的数据传输速率,使独立于应用服务器网络系统之外的SAN几乎拥有了无限的存储能力。但是利用FIBRECHANNEL实现的SAN虽然性能优越,扩展性极佳,但价格却贵得惊人,管理起来也非常困难,让一般用户难以承受。

而iSCSI(互联网小型计算机系统接口)是一种在Internet协议网络上,特别是以太网上进行数据块传输的标准,是一种集成了IP和SCSI的技术。它最大的特点就是让标准的SCSI命令能够在TCP/IP网络上的主机系统(启动器)和存储设备(目标)之间传送。与光纤通道相比,iSCSI具有许多优势,用‘iSCSI=低廉+高性能’这个等式来表示再恰当不过了。iSCSI是基于IP协议的技术标准,实现了SCSI和TCP/IP协议的连接,那些以局域网为网络环境的用户只需要少量的投入,就可以方便、快捷地对信息和数据进行交互式传输和管理。相对于以往的网络接入存储,iSCSI的产生解决了开放性、容量、传输速度以及兼容性等许多问题,让用户可以通过现有的TCP/IP网络来构建存储区域网,能够更容易地管理SAN存储。

SAN与iSCSI做一比较,基本两者同属运行块协议的SAN架构,只不过前者透过FIBRECHANNEL,后者由IP传输数据罢了
这里写图片描述
iSCSI 的主要功能是在TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。

*SCSI简介:
SCSI的定义:小型计算机系统接口(Small Computer System Interface),SCSI是一种I/O技术,SCSI规范了一种并行的I/O总线和相关的协议,SCSI的数据传输是以块的方式进行的。

scsi和sata的区别:
sata其实是scsi体系里抽取出的一部分,也就是说scsi能兼容sata,但sata反过来就不行。scsi本质上还是为服务器准备的磁盘系统,它非常强调所有的控制可以由scsi体系自己完成,不需要cpu控制,所以scsi非常省资源,而sata需要cpu介入控制传输过程

二,ISCSI的配置
1,固定大小(/dev/vdb1)的存储共享配置

server上:
[root@server ~]# fdisk -l
[root@server ~]# fdisk /dev/vdb
[root@server ~]# partprobe
[root@server ~]# yum install -y targetcli
[root@server ~]# systemctl start target
[root@server ~]# targetcli

targetcli是用于管理iSCSI服务端存储资源的专用配置命令,它能够提供类似于前面学习过的fdisk命令的交互式配置功能,将iSCSI共享资源的配置内容抽象成了“目录”的形式,咱们只需要把各类配置信息写入到对应“目录”中即可。

下图是iscsi服务器的创建过程:
<1>
这里写图片描述
/backstores/block是iSCSI服务端对共享设备的配置位置,需要把刚刚创建的/dev/vdb1加入到资源池中并重新命名为share,这样用户不会知道是由服务器那块硬盘提供的共享存储资源,而只会看到叫做share的存储设备。

<2>
这里写图片描述
创建iSCSI target名称及配置共享资源,iSCSI target名称是由系统自动生成的当然也可以自己指定。这是一串用于描述共享资源的相对唯一的字符串,稍后用户扫描发现iSCSI服务端时可看到这串共享资源的信息,因此系统生成后同学们不需要记住它们。名称生成后还会在叫做/iscsi的参数目录中创建一个与其同名的新“目录”用来存放共享资源,咱们需要把刚刚加入到iSCSI共享资源池中的硬盘设备添加到此处,这样稍后用户登陆iSCSI服务端时即可默认使用这个设备提供的共享存储资源了。

<3>
这里写图片描述
设置ACL访问控制列表,iSCSI协议是通过客户端名称进行验证的,也就是说用户获取存储共享资源的时候不需要输入密码,而只要iSCSI客户端的名称与服务端中设置的ACL访问控制列表名称一致即可,因此需要在iSCSI服务端的配置文件中写入一串能够验证用户信息的名称,读者可以自己随意指定。

<4>
这里写图片描述
LUN的全称是Logical Unit Number,也就是逻辑单元号,是SCSI中的概念。 我们用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了.但对于现代的存储设备,这种个位数的ID识别号显然 不够用。目前生产环境上多产用RAID技术来规划存储,通过RAID组合后的磁盘不再能看到单独的磁盘信息,而是变成了一个巨大的存储空间。古老的 RAID技术只能将此存储空间整体分配,被指定了一个LUN后,成为了一个“逻辑”磁盘,供接驳的计算机使用。
也就是说LUN ID的作用就是扩充了Target ID。每个Target下都可以有多个LUN Device.显而易见的,我们描述设备的能力增强了

<5>
这里写图片描述
设置iSCSI服务端的监听IP地址和端口号,因为在生产环境的服务器上面可能有多块网卡,那么到底由那个网卡或IP地址对外提供共享存储资源呢?这就需要咱们手工的在配置文件中定义iSCSI服务器的信息,即在portals参数目录中写上服务器的IP地址即可,接下来会由系统自动提醒主机172.25.254.93的3260端口(如果不指定默认是3260)将向外提供iSCSI共享存储资源服务

配置妥当后检查配置信息,重启iSCSI服务端程序并配置防火墙策略,在配置妥当参数文件后可大致浏览下刚刚配置的信息,同学们也应该跟下面的信息基本保持一致。
[root@server ~]# systemctl restart target
[root@server ~]# firewall-cmd –permanent –add-port=3260/tcp
success
[root@server ~]# firewall-cmd –reload

浏览配置的iscsi共享信息:
这里写图片描述

下图展示了另一个iscsi配置信息,即自己指定target名称的例子:
这里写图片描述
查看:
这里写图片描述

client:在iSCSI客户端使用共享存储资源的步骤很简单,只需要记住一个小口诀“先发现,再登陆,最后挂载并使用”。iscsiadm是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具
[root@client ~]# yum install -y iscsi-initiator-utils.x86_64
[root@client ~]# systemctl start iscsi

    发现iscsi服务器:    [root@client ~]# iscsiadm -m discovery -t st -p 172.25.254.93 查看该服务器上面有那些可用的共享存储资源,-m discovery参数为定义操作目的是扫描发现可用存储资源,-t st参数为扫描发现操作的类型(sendtargets) ,-p 192.168.10.10参数为对方iSCSI服务端的IP地址:    172.25.254.93:3260,1 iqn.2017-12.com.example:iscsi1

[root@client ~]# vim /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2017-12.com.exmple:iscsikey 添加共享存储的名称用于客户端验证

[root@client ~]#systemctl restart iscsid.service
[root@client ~]#systemctl restart iscsi

[root@client nfspoint]# iscsiadm -m node -T iqn.2017-12.com.example:iscsi1 -p 172.25.254.93 -l  #登陆iscsi服务器,-m node参数为将本机作为一台节点服务器,-T  iqn.2017-12.com.example:iscsi1参数为要使用的存储资源名称,字符串很长手打容易错,同学们直接复制上面扫描发现到的结果即可,-p 192.168.10.10参数依然为对方iSCSI服务端的IP地址,最后使用--login或-l参数进行登陆验证Logging in to [iface: default, target: iqn.2017-12.com.example:iscsi1, portal: 172.25.254.93,3260] (multiple)Login to [iface: default, target: iqn.2017-12.com.example:iscsi1, portal: 172.25.254.93,3260] successful.

[root@client ~]# fdisk -l
这里写图片描述
可以看见iscsi共享的磁盘(/dev/sda)
格式化并挂载使用:
这里写图片描述

以树的形式查看iscsi的共享信息:
这里写图片描述

设置开机自动挂载:
vim /etc/fstab

UUID="76dcbc93-917b-4655-9e42-3a7b551c5962" /mnt xfs defaults,_netdev 0 0  #Linux系统重启后,磁盘设备的名称可能会发生飘移,从而引起文件系统不能挂载上来或者不能正确挂载, 使用UUID的方式进行挂载可以解决这个问题.

删除iscsi设备:
client:
[root@client ~]# umount /mnt/
这里写图片描述
server:
这里写图片描述

2,配置共享的存储是lvm
server:
[root@server ~]# fdisk /dev/vdb
[root@server ~]# partprobe
这里写图片描述
分出一个用于创建lvm设[root@server ~]# pvcreate /dev/vdb2
备的磁盘分区(/dev/vdb2)
[root@server ~]# pvcreate /dev/vdb2
[root@server ~]# vgcreate iscsi_vg0 /dev/vdb2
[root@server ~]# lvcreate -L 900M -n iscsi_lv0 iscsi_vg0
这里写图片描述
[root@server ~]# systemctl restart target
[root@server ~]# targetcli

/> /backstores/block/ create lvmstorage /dev/iscsi_vg0/iscsi_lv0
/> /iscsi/ create #可以在此处自己指定target名称
/> /iscsi/iqn.2003-01.org.linux-iscsi.server.x8664:sn.9aa65d3a536f/tpg1/acls create iqn.2003-01.org.linux-iscsi.server.x8664:sn.9aa65d3a536f:lvmstoragekey
/> /iscsi/iqn.2003-01.org.linux-iscsi.server.x8664:sn.9aa65d3a536f/tpg1/luns create /backstores/block/lvmstorage
/> iscsi/iqn.2003-01.org.linux-iscsi.server.x8664:sn.9aa65d3a536f/tpg1/portals create 172.25.254.93
/> exit

[root@server ~]# systemctl restart target
[root@server ~]# targetcli
/> ls
这里写图片描述
可以看见现在iscsi服务器有两个共享的设备,如果/dev/vdb1共享出去的不够用,可以共享/dev/vdb2,而/dev/vdb2是lvm类型的存储结构,还支持扩展。
client:
这里写图片描述
客户端可以同时发现两个共享的存储,也可以在/etc/iscsi/initiatorname.iscsi中添加两个认证,但是同时只有一个可以登陆成功,写在认证文件上面的可以登陆成功,令一个登陆不成功。
这里写图片描述
登陆成功后就可以格式化存储并挂载使用了。