网络存储的概述
随着企业中数据信息的不断增长,尤其当成百上千TB的数据需要备份、恢复,以及面临着扩容、灾难恢复等需求时,DAS(直接附加存储,就是通过与计算机主板的I/O接口,如IDE、SCSI相连接由本机操作系统负责读写及管理)方式使得数据的管理与维护日益困难。正因为如此,网络存储技术应运而生,其最常见的就是NAS和SAN
SAN(storage area network,存储区域网络)
SAN是通过光纤交换机、光纤路由器等设备将磁盘阵列、磁带机或独立的ISCSI设备与服务器连接,构成一个高速存储子网,存储的数据以数据块的形式通过ISCSI协议进行传输,从而优于普通的IP包传输。
NAS(network p_w_upload storage,网络附加存储)
NAS存储设备相当于一台独立的服务器,设备本身带有操作系统,也拥有网络接口,因此不依赖于其他服务器,在NAS设备中为客户机分配存储空间时,通常采用共享文件夹的方式进行发布,存储的数据以文件的形式进行传输,采用CIFS或者NFS等协议
iscsi(iscsi= internet Small Computer System Interface )是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用, ISCSI能够在LAN、WAN甚至internet上进行数据传送,使得数据的存储不再受地域的限制。
ISCSI技术的核心是在TCP/IP网络上传输SCSI协议,是指用TCP/IP报文、和ISCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输,如下图:
iSCSI协议定义了在 TCP/IP 网络发送、接收 block(数据块)级的存储数据的规则和方 法。发送端将SCSI命令和数据封装到 TCP/IP 包中再通过网络转发,接收端收到 TCP/IP 包之后,将其还原为SCSI命令和数据并执行,完成之后将返回的SCSI命令和数据再封装到 TCP/IP包中再传送回发送端。而整个过程在用户看来,使用远端的存储设备就像访问本地的 SCSI设备一样简单。
在RHEL6中搭建ISCSI存储服务器:
ISCSI服务器通常也称为Target端,负责定义存储对象、分配逻辑空间LUN(Logical Unit,逻辑单元)。在RHEL6服务器中需要安装scsi-target-utils软件包,对应的系统服务为tgtd,命令行管理工具为tgtadm.
下面依次讲解配置ISCSI的主要过程:准备存储设备、创建ISCSI对象、为客户机分配存储空间,客户机使用ISCSI。
此处所说的存储设备指将要分配给某一个客户机使用的设备文件,在RHEL6系统中,硬盘、分区、逻辑卷、软RAID等都可以用作ISCSI服务的存储设备,为了延续磁盘空间的可扩展性,建议以一个逻辑卷为单位分配给客户机使用,对于个别有特殊要求的客户机,也可以将一个软RAID阵列分配出去。
这里将Target主机一个逻辑卷作为iSCSI共享磁盘,共享给一台linux主机使用。
创建一个逻辑卷,名为lv00,将来分配给客户机使用。如下图所示:
ISCSI服务器配置推荐步骤:
1、在ISCSI存储服务器上安装iscsi target软件包,如下图所示:
2、iscsi target配置文件是/etc/tgt/targets.conf,此文件中的配置项默认全被注示掉了。编辑该文件,实现简单的ISCSI存储服务器配置。在文件尾部添加如下内容:
若要将多个存储设备分配给客户机可以在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
若是ISCSI服务器上开启了防火墙可以将iptables关闭或创建允许规则,如下图所示:
运行tgtadm --lld iscsi --op show --mode target查看target信息
至此,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对象的名称。
在RHEL6上iscsi客户端配置:
1、安装iscsi发起端软件:iscsi-initiator-utils和lsscsi软件包
#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可以省略不写。
3、登录服务器上的iscsi目标,即iscsi注册
执行iscsiadm -m node -T target名称 -p targetIP地址:端口号 --login
退出iscsi盘阵
执行iscsiadm -m node -T target名称 -p targetIP地址:端口号 --logout
4、查看/dev/disk/by-path目录中iscsi符号链接所指向的位置或fdisk -l查看磁盘情况或检查iscsi的状态:service iscsi status或dmesg |tail
此时,可以使用iscsi磁盘,就好像它是本地连接硬盘驱动器。
5、对连接的iscsi磁盘建立LVM并实现自动挂载
未分区前显示sdb信息如下, 执行fdisk -l /dev/sdb查看
在ISCSI客户机上执行fdisk /dev/sdb创建LVM类型分区并查看/dev/sdb新建分区后的信息
为了实现磁盘扩容,在客户机上可以将连接的ISCSI磁盘创建为LVM。
在建好的逻辑卷上创建文件系统。
创建挂载点目录并挂载
修改/etc/fstab文件实现自动挂载
执行blkid /dev/vg_data/lv_data获得逻辑卷lv_data的UUID
修改/etc/fstab文件自动挂载逻辑卷lv_data,如下图所示:
测试自动挂载:mount –a或重启系统后执行df –hT查看挂载情况
注意:
1、 使用blkid确定文件系统UUID并使用UUID挂载,而不是/dev/sd*设备名称。(每次引导时显示的设备名称都不同,具体取决于iscsi设备通过网络进行响应的顺序,如果按设备名称挂载,这会导致使用错误的设备)
2、 在/etc/fstab中使用_netdev作为挂载选项。(这将确保客户端不会尝试挂载文件系统,直至启用联网,否则,在引导时系统将出错)
3、 确保iscsi服务在引导时将启动
#chkconfig iscsi on