网络存储的概述

随着企业中数据信息的不断增长,尤其当成百上千TB的数据需要备份、恢复,以及面临着扩容、灾难恢复等需求时,DAS(直接附加存储,就是通过与计算机主板的I/O接口,如IDESCSI相连接由本机操作系统负责读写及管理)方式使得数据的管理与维护日益困难。正因为如此,网络存储技术应运而生,其最常见的就是NASSAN


SANstorage area network,存储区域网络)


SAN是通过光纤交换机、光纤路由器等设备将磁盘阵列、磁带机或独立的ISCSI设备与服务器连接,构成一个高速存储子网,存储的数据以数据块的形式通过ISCSI协议进行传输,从而优于普通的IP包传输。

NAS(network p_w_upload storage,网络附加存储)


NAS存储设备相当于一台独立的服务器,设备本身带有操作系统,也拥有网络接口,因此不依赖于其他服务器,在NAS设备中为客户机分配存储空间时,通常采用共享文件夹的方式进行发布,存储的数据以文件的形式进行传输,采用CIFS或者NFS等协议

iscsiiscsi= internet Small Computer System Interface )是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用, ISCSI能够在LANWAN甚至internet上进行数据传送,使得数据的存储不再受地域的限制。

ISCSI技术的核心是在TCP/IP网络上传输SCSI协议,是指用TCP/IP报文、和ISCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输,如下图:

iscsl网络存储服务_网络存储

iSCSI协议定义了在 TCP/IP 网络发送、接收 block(数据块)级的存储数据的规则和方 法。发送端将SCSI命令和数据封装到 TCP/IP 包中再通过网络转发,接收端收到 TCP/IP 包之后,将其还原为SCSI命令和数据并执行,完成之后将返回的SCSI命令和数据再封装到 TCP/IP包中再传送回发送端。而整个过程在用户看来,使用远端的存储设备就访问本地的 SCSI设备一样简单。

RHEL6中搭建ISCSI存储服务器:

ISCSI服务器通常也称为Target端,负责定义存储对象、分配逻辑空间LUNLogical Unit,逻辑单元)。在RHEL6服务器中需要安装scsi-target-utils软件包,对应的系统服务为tgtd,命令行管理工具为tgtadm.

下面依次讲解配置ISCSI的主要过程:准备存储设备、创建ISCSI对象、为客户机分配存储空间,客户机使用ISCSI

此处所说的存储设备指将要分配给某一个客户机使用的设备文件,在RHEL6系统中,硬盘、分区、逻辑卷、软RAID等都可以用作ISCSI服务的存储设备,为了延续磁盘空间的可扩展性,建议以一个逻辑卷为单位分配给客户机使用,对于个别有特殊要求的客户机,也可以将一个软RAID阵列分配出去。

这里将Target主机一个逻辑卷作为iSCSI共享磁盘,共享给一台linux主机使用。

创建一个逻辑卷,名为lv00,将来分配给客户机使用。如下图所示:

iscsl网络存储服务_网络存储_02

ISCSI服务器配置推荐步骤:

1、在ISCSI存储服务器上安装iscsi target软件包,如下图所示:

iscsl网络存储服务_iscsl_03

2iscsi target配置文件是/etc/tgt/targets.conf,此文件中的配置项默认全被注示掉了。编辑该文件,实现简单的ISCSI存储服务器配置。在文件尾部添加如下内容:

iscsl网络存储服务_iscsl_04

若要将多个存储设备分配给客户机可以在targets.conf文件中添加多个

<target ……>

……

</target>

注:Target的命名在同一子网内应该是唯一的,标准命名方式为:
iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:

iqn:表示“iSCSI Qualified Name”,简称iqn
yyyy-mm:表示年份-月份。这里是2011-08
reversed domain name:表示倒过来的域名,这里是com.example
identifier:表示识别代码,这里是disk

backing-store用于指定存储设备,一般指非实际的物理磁盘,如LVM卷、某个分区、raid磁盘阵列。

initiator-address 地址 于将target指派给指定的客户机使用。

然后启动tgtd服务,并设置系统启动时自动启动,iscsi通信的端口:3260/tcp,以明文传输数据

#service tgtd start

#chkconfig tgtd on

iscsl网络存储服务_iscsl_05

iscsl网络存储服务_iscsl_06

若是ISCSI服务器上开启了防火墙可以将iptables关闭或创建允许规则,如下图所示:

iscsl网络存储服务_iscsl_07

运行tgtadm --lld iscsi --op show --mode target查看target信息

iscsl网络存储服务_网络存储_08

iscsl网络存储服务_网络存储_09

至此,iscsi target存储服务器配置完成,使用iSCSI Initiator就可以连接iscsi target服务器了。

使用tgtadm工具创建ISCSI对象时,主要命令选项如下所述:

-L--lld:指定驱动类型,如“-L iscsi”表示ISCSI存储。

-o--op:指定操作类型,如“-o new”表示创建,“-o delete”表示删除,“-o show”表示查看信息。

-m--mode:指定管理目标,如“-m target”表示ISCSI对象。

-t--tid:指定对象ID号,如“-t 1”表示第一个对象。

-T,--targetname:指定ISCSI对象的名称。

RHEL6iscsi客户端配置:

1安装iscsi发起端软件:iscsi-initiator-utilslsscsi软件

iscsl网络存储服务_iscsl_10

#service iscsi start

#chkconfig iscsi on

2、查找iscsi服务器上的iscsi目标,即iscsi发现。

执行iscsiadm -m discovery t st p iscsi服务器的IP

iscsiadm -m discovery -t sendtargets -p targetIP地址:端口号

若是默认端口3260可以省略不写。

iscsl网络存储服务_iscsl_11

3、登录服务器上的iscsi目标,即iscsi注册

执行iscsiadm -m node -T target名称 -p targetIP地址:端口号 --login

iscsl网络存储服务_网络存储_12

退出iscsi盘阵

执行iscsiadm -m node -T target名称 -p targetIP地址:端口号 --logout

iscsl网络存储服务_网络存储_13


4、查看/dev/disk/by-path目录中iscsi符号链接所指向的位置或fdisk l查看磁盘情况或检查iscsi的状态:service iscsi statusdmesg |tail

iscsl网络存储服务_网络存储_14

iscsl网络存储服务_网络存储_15

此时,可以使用iscsi磁盘,就好像它是本地连接硬盘驱动器。

5、对连接的iscsi磁盘建立LVM并实现自动挂载

未分区前显示sdb信息如下, 执行fdisk -l /dev/sdb查看

iscsl网络存储服务_iscsl_16

ISCSI客户机上执行fdisk /dev/sdb创建LVM类型分区并查看/dev/sdb新建分区后的信息

iscsl网络存储服务_iscsl_17

为了实现磁盘扩容,在客户机上可以将连接的ISCSI磁盘创建为LVM

iscsl网络存储服务_iscsl_18

在建好的逻辑卷上创建文件系统。

iscsl网络存储服务_iscsl_19

创建挂载点目录并挂载

iscsl网络存储服务_iscsl_20

iscsl网络存储服务_网络存储_21

修改/etc/fstab文件实现自动挂载

执行blkid /dev/vg_data/lv_data获得逻辑卷lv_dataUUID

iscsl网络存储服务_网络存储_22

修改/etc/fstab文件自动挂载逻辑卷lv_data,如下图所示:

iscsl网络存储服务_网络存储_23

测试自动挂载:mount a或重启系统后执行df hT查看挂载情况

注意:

1、 使用blkid确定文件系统UUID并使用UUID挂载,而不是/dev/sd*设备名称。(每次引导时显示的设备名称都不同,具体取决于iscsi设备通过网络进行响应的顺序,如果按设备名称挂载,这会导致使用错误的设备)

2、 /etc/fstab中使用_netdev作为挂载选项。(这将确保客户端不会尝试挂载文件系统,直至启用联网,否则,在引导时系统将出错)

3、 确保iscsi服务在引导时将启动

#chkconfig iscsi on